[petsc-users] Fieldsplit schur complement with preonly solves

Luc luc.berger.vergiat at gmail.com
Tue Mar 11 11:05:38 CDT 2014


Hum,
would a *-pc_fieldsplit_schur_precondition self *use the full Schur as 
preconditioner for itself?
I made some special choices in order to keep A diagonal which makes it 
cheap to inverse.
Actually I am assuming that Schur will be blazing fast with my type of 
discretization...

Best,
Luc

On 03/11/2014 11:36 AM, Matthew Knepley wrote:
> On Tue, Mar 11, 2014 at 9:56 AM, Luc Berger-Vergiat 
> <luc.berger.vergiat at gmail.com <mailto:luc.berger.vergiat at gmail.com>> 
> wrote:
>
>     Hi all,
>     I am testing some preconditioners for a FEM problem involving
>     different types of fields (displacements, temperature, stresses
>     and plastic strain).
>     To make sure that things are working correctly I am first solving
>     this problem with:
>
>         -ksp_type preonly -pc_type lu, which works fine obviously.
>
>
>     Then I move on to do:
>
>         -ksp_type gmres -pc_type lu, and I get very good convergence
>         (one gmres linear iteration per time step) which I expected.
>
>
>     So solving the problem exactly in a preconditioner to gmres leads
>     to optimal results.
>     This can be done using a Schur complement, but when I pass the
>     following options:
>
>         -ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
>         -pc_fieldsplit_schur_factorization_type full
>         -pc_fieldsplit_0_fields 2,3 -pc_fieldsplit_1_fields 0,1
>         -fieldsplit_0_ksp_type preonly -fieldsplit_0_pc_type
>         lu -fieldsplit_1_ksp_type preonly -fieldsplit_1_pc_type lu
>
>     My results are terrible, gmres does not converge and my FEM code
>     reduces the size of the time step in order to converge.
>     This does not make much sense to me...
>
>
> The problem is the Schur complement block. We have
>
>   S = C A^{-1} B
>
> PETSc does not form S explicitly, since it would require forming the dense
> inverse of A explicitly. Thus we only calculate the action of A. If 
> you look in
> -ksp_view, you will see that the preconditioner for S is formed from A_11,
> which it sounds like is 0 in your case, so the LU of that is a crud 
> preconditioner.
> Once you wrap the solve in GMRES, it will eventually converge.
>
> You can try using the LSC stuff if you do not have a preconditioner matrix
> for the Schur complement.
>
>   Thanks,
>
>      Matt
>
>     Curiously if I use the following options:
>
>         -ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
>         -pc_fieldsplit_schur_factorization_type full
>         -pc_fieldsplit_0_fields 2,3 -pc_fieldsplit_1_fields 0,1
>         -fieldsplit_0_ksp_type gmres -fieldsplit_0_pc_type
>         lu -fieldsplit_1_ksp_type gmres -fieldsplit_1_pc_type lu
>
>     then the global gmres converges in two iterations.
>
>     So using a pair of ksp gmres/pc lu on the A00 block and the Schur
>     complements works, but using lu directly doesn't.
>
>     Because I think that all this is quite strange, I decided to dump
>     some matrices out. Namely, I dumped the complete FEM jacobian, I
>     also do a MatView on jac->B, jac->C and the result of
>     KSPGetOperators on kspA. These returns three out of the four
>     blocks needed to do the Schur complement. They are correct and I
>     assume that the last block is also correct.
>     When I import jac->B, jac->C and the matrix corresponding to kspA
>     in MATLAB to compute the inverse of the Schur complement and pass
>     it to gmres as preconditioner the problem is solved in 1 iteration.
>
>     So MATLAB says:
>
>         -ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
>         -pc_fieldsplit_schur_factorization_type full
>         -pc_fieldsplit_0_fields 2,3 -pc_fieldsplit_1_fields 0,1
>         -fieldsplit_0_ksp_type preonly -fieldsplit_0_pc_type
>         lu -fieldsplit_1_ksp_type preonly -fieldsplit_1_pc_type lu
>
>     should yield only one iteration (maybe two depending on
>     implementation).
>
>     Any ideas why the Petsc doesn't solve this correctly?
>
>     Best,
>     Luc
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140311/f79fd7f1/attachment.html>


More information about the petsc-users mailing list