[petsc-users] Moving from KSPSetNullSpace to MatSetNullSpace
Olivier Mesnard
olivier.mesnard8 at gmail.com
Tue Oct 25 16:38:28 CDT 2016
Hi all,
We develop a CFD code using the PETSc library that solves the Navier-Stokes
equations using the fractional-step method from Perot (1993).
At each time-step, we solve two systems: one for the velocity field, the
other, a Poisson system, for the pressure field.
One of our test-cases is a 2D lid-driven cavity flow (Re=100) on a 20x20
grid using 1 or 2 procs.
For the Poisson system, we usually use CG preconditioned with GAMG.
So far, we have been using PETSc-3.5.4, and we would like to update the
code with the latest release: 3.7.4.
As suggested in the changelog of 3.6, we replaced the routine
`KSPSetNullSpace()` with `MatSetNullSpace()`.
Here is the list of options we use to configure the two solvers:
* Velocity solver: prefix `-velocity_`
-velocity_ksp_type bcgs
-velocity_ksp_rtol 1.0E-08
-velocity_ksp_atol 0.0
-velocity_ksp_max_it 10000
-velocity_pc_type jacobi
-velocity_ksp_view
-velocity_ksp_monitor_true_residual
-velocity_ksp_converged_reason
* Poisson solver: prefix `-poisson_`
-poisson_ksp_type cg
-poisson_ksp_rtol 1.0E-08
-poisson_ksp_atol 0.0
-poisson_ksp_max_it 20000
-poisson_pc_type gamg
-poisson_pc_gamg_type agg
-poisson_pc_gamg_agg_nsmooths 1
-poissonksp_view
-poisson_ksp_monitor_true_residual
-poisson_ksp_converged_reason
With 3.5.4, the case runs normally on 1 or 2 procs.
With 3.7.4, the case runs normally on 1 proc but not on 2.
Why? The Poisson solver diverges because of an indefinite preconditioner
(only with 2 procs).
We also saw that the routine `MatSetNullSpace()` was already available in
3.5.4.
With 3.5.4, replacing `KSPSetNullSpace()` with `MatSetNullSpace()` led to
the Poisson solver diverging because of an indefinite matrix (on 1 and 2
procs).
Thus, we were wondering if we needed to update something else for the KSP,
and not just modifying the name of the routine?
I have attached the output files from the different cases:
* `run-petsc-3.5.4-n1.log` (3.5.4, `KSPSetNullSpace()`, n=1)
* `run-petsc-3.5.4-n2.log`
* `run-petsc-3.5.4-nsp-n1.log` (3.5.4, `MatSetNullSpace()`, n=1)
* `run-petsc-3.5.4-nsp-n2.log`
* `run-petsc-3.7.4-n1.log` (3.7.4, `MatSetNullSpace()`, n=1)
* `run-petsc-3.7.4-n2.log`
Thank you for your help,
Olivier
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.5.4-n1.log
Type: text/x-log
Size: 9513 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0006.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.5.4-n2.log
Type: text/x-log
Size: 9535 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0007.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.5.4-nsp-n1.log
Type: text/x-log
Size: 10348 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0008.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.5.4-nsp-n2.log
Type: text/x-log
Size: 11348 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0009.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.7.4-n1.log
Type: text/x-log
Size: 12085 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0010.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run-petsc-3.7.4-n2.log
Type: text/x-log
Size: 11424 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161025/dd0d20a0/attachment-0011.bin>
More information about the petsc-users
mailing list