[petsc-users] Nullspace issue
Thomas Witkowski
thomas.witkowski at tu-dresden.de
Tue Jun 12 01:32:22 CDT 2012
I've some trouble to setup the nullspace for my equation correctly. It
is an implicit coupled Navier-Stokes / Cahn-Hilliard equation (for two
phase flow simulation) in 2D. To simulate an "infinite" domain, the
upper and lower boundaries are periodic for all 5 components. The
pressure and the two variables from the Cahn-Hilliard equation are
null-flux (Neumann) on the other two boundaries, the velocity is set to
0 (Dirichlet) on them. I would expect to have a non-empty nullspace.
When using richardson/lu, I see the following behavior:
1 KSP preconditioned resid norm 3.130958085604e+04 true resid norm
1.339173230263e-11 ||r(i)||/||b|| 2.249831332702e-16
2 KSP preconditioned resid norm 5.987054624984e+04 true resid norm
8.900173028027e-12 ||r(i)||/||b|| 1.495242564025e-16
3 KSP preconditioned resid norm 8.159870664335e+04 true resid norm
7.429941832854e-12 ||r(i)||/||b|| 1.248241493927e-16
4 KSP preconditioned resid norm 7.087492912608e+04 true resid norm
7.066574102540e-12 ||r(i)||/||b|| 1.187195164260e-16
5 KSP preconditioned resid norm 1.075156685382e+05 true resid norm
6.963290776604e-12 ||r(i)||/||b|| 1.169843408895e-16
6 KSP preconditioned resid norm 9.260088828115e+04 true resid norm
6.996993371924e-12 ||r(i)||/||b|| 1.175505496012e-16
So, in principle the system is solvable, but the preconditioned norm is
wrong. I created a nullspace basis that is 1 on all pressure unknowns
and 0 on all of the other four components. I can easily verify that this
vector is at least an element of the nullspace, as the norm of the
vector resulting from MatMult with the assembled matrix and the
nullspace basis vector is in the order of 1e-16. I set the nullspace to
the system matrix, and rerun with richardson/lu:
0 KSP preconditioned resid norm 6.025198436485e+09 true resid norm
5.952327229149e+04 ||r(i)||/||b|| 1.000000000000e+00
1 KSP preconditioned resid norm 3.436455497312e+09 true resid norm
9.795164213312e-09 ||r(i)||/||b|| 1.645602440226e-13
2 KSP preconditioned resid norm 3.365625775916e+09 true resid norm
7.488946142386e-09 ||r(i)||/||b|| 1.258154307396e-13
3 KSP preconditioned resid norm 2.543011385543e+09 true resid norm
5.719959416026e-09 ||r(i)||/||b|| 9.609618550566e-14
4 KSP preconditioned resid norm 4.406639844892e+08 true resid norm
6.417414971975e-09 ||r(i)||/||b|| 1.078135446007e-13
5 KSP preconditioned resid norm 2.741735667402e+09 true resid norm
5.646995693759e-09 ||r(i)||/||b|| 9.487038390809e-14
6 KSP preconditioned resid norm 2.427193596206e+09 true resid norm
1.327430895972e-08 ||r(i)||/||b|| 2.230104033043e-13
7 KSP preconditioned resid norm 1.603502416252e+09 true resid norm
1.338139212677e-08 ||r(i)||/||b|| 2.248094167478e-13
8 KSP preconditioned resid norm 1.646847388237e+09 true resid norm
1.287770565938e-08 ||r(i)||/||b|| 2.163474077218e-13
9 KSP preconditioned resid norm 2.136833312630e+09 true resid norm
1.261183165000e-08 ||r(i)||/||b|| 2.118806840498e-13
10 KSP preconditioned resid norm 1.405267823532e+09 true resid norm
2.499790590170e-08 ||r(i)||/||b|| 4.199686095765e-13
The system at all is not solvable anymore. What could be the problem?
Some technical issue I forgot about? Or my be the nullspace be wrong?
Thanks for any hint!
Thomas
More information about the petsc-users
mailing list