[petsc-users] Nullspace issue

Jed Brown jedbrown at mcs.anl.gov
Tue Jun 12 07:31:43 CDT 2012


A known null space doesn't really "fix" LU for a singular problem [1]. You
need a preconditioner that is *stable*. Also, it sounds like you may have
additional vectors in the null space coming from the Cahn-Hilliard
variables.

[1] One could create a new matrix with space for Lagrange multipliers
enforcing the null space and perform the factorization there. But doing
this automatically isn't implemented in the library so you'd have to write
it.

On Tue, Jun 12, 2012 at 1:32 AM, Thomas Witkowski <
thomas.witkowski at tu-dresden.de> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120612/ce8e3b9d/attachment.html>


More information about the petsc-users mailing list