我正在尝试解决复值泊松方程
我将这个 eqn 分解为真正有价值的问题,其形式为
其中“r”和“i”分别表示实部和虚部。A我通过定义 MAT和 Vec编写了一个 Preconditioner (PC),它具有与上述方程相同的形式。我通过求解上述方程作为示例验证了 PC 工作正常。我还定义了一个壳矩阵算子,它计算A算子对向量的作用,并用 ksp 注册壳矩阵和 PC。当我尝试使用壳矩阵和 PC 解决方程时,我得到了错误的解决方案。我正在使用 Dirichlet 边界条件(bcs)和和齐次 bcs 用于传递给 PC 的残差方程。作为我-ksp_type preonly对 PC 版 Dirichlet bcs 所做的健全性检查,我确实得到了正确的解决方案。PC 和 Shell 矩阵的 ksp 均为gmres.
关于可能出现问题的任何建议?