我正在使用牛顿法求解耦合非线性方程组,类似于
with非线性函数,取决于和。
为了计算雅可比矩阵,我使用了 AD 工具(Sacado/ADOL-C)。
当一次只计算一个方程(并将另一个方程设置为常数值)时,程序运行良好。当同时计算两个方程时,求解器迟早会在迭代 0(GMRES 求解器)中失败,“残差等于NaN
”。为例)
,也会发生这种情况
调试此问题的最佳方法是什么?我认为它与竞争条件无关,因为无论使用多少线程,它总是同时出现。
我正在测试的一个想法是使用 AD 为第一个方程生成雅可比,并手动添加第二个方程的雅可比。
这种行为还有其他原因吗?