在 PCSetOperators 之后我需要 KSPSetOperators 吗?

计算科学 宠物
2021-11-27 15:23:30

我所做的是

  1. 创建一些名为 pc 的 PC 和 PCSetOperators(pc,A,A,..);
  2. 创建名为 ksp 的 KSP;
  3. KSPSetPC(ksp,pc);

在上述过程之后,我是否仍然必须使用 KSPSetOperators(ksp,A,A,..),或者我可以跳过这个?从 Petsc 的源代码来看,似乎不需要。只是想确定一下。

谢谢!

1个回答

虽然在某些用例中并非绝对必要,但请KSPSetOperators()无论如何调用(也许代替PCSetOperators())。这确保了零空间和设置信息是一致的,并管理线性系统重复解的初始猜测(“Fischer 猜测”)。使用相同的接线员拨打电话KSPSetOperators()基本上是免费的。

请注意,您始终可以KSPGetPC()然后配置PC,而不是自己创建并使用KSPSetPC().