用户定义状态的 PETSc SNES

计算科学 非线性方程 迭代法 宠物
2021-12-03 13:25:24

当解决方案不是向量而是用户定义的状态时,如何使用 PETSc SNES(可扩展非线性方程求解器)?

我正在实现一个非线性力学问题(几何精确的壳 5 参数模型),更新

X(k+1)=X(k)+ΔX

不是附加的,需要使用指数映射。

更具体地说,我上面提到的状态存储X

X={Φ,Λ}
Φ(大小为 3 的向量)是中间表面坐标并且具有直接更新,即
Φn+1=Φn+ΔΦ
尽管Λ,旋转矩阵(对应于中间面的导向器),通过指数映射更新(更新增量是一个大小为2的向量,它是在利用SO3和S2的切线空间之间的一对一连接并固定参考后获得的向量)。中间表面(节点)每个点的残差是一个大小为 5 的向量,包括Λ,Φ及其衍生物。

我正在使用 Newton-Raphson,并且很多时候解决方案无法使用完整的步长收敛。因此,我想到了使用 PETSc SNES(线搜索)。

在任何状态下,我都知道残差向量和刚度矩阵。鉴于我有自己的更新程序,我无法弄清楚如何理解从 SNES 求解器获得的解向量(或将数据发送到 SNES)。

0个回答
没有发现任何回复~