当解决方案不是向量而是用户定义的状态时,如何使用 PETSc SNES(可扩展非线性方程求解器)?
我正在实现一个非线性力学问题(几何精确的壳 5 参数模型),更新
不是附加的,需要使用指数映射。
更具体地说,我上面提到的状态存储:
(大小为 3 的向量)是中间表面坐标并且具有直接更新,即
尽管,旋转矩阵(对应于中间面的导向器),通过指数映射更新(更新增量是一个大小为2的向量,它是在利用SO3和S2的切线空间之间的一对一连接并固定参考后获得的向量)。中间表面(节点)每个点的残差是一个大小为 5 的向量,包括,及其衍生物。
我正在使用 Newton-Raphson,并且很多时候解决方案无法使用完整的步长收敛。因此,我想到了使用 PETSc SNES(线搜索)。
在任何状态下,我都知道残差向量和刚度矩阵。鉴于我有自己的更新程序,我无法弄清楚如何理解从 SNES 求解器获得的解向量(或将数据发送到 SNES)。