[petsc-users] Using the fieldsplit/schur/selfp preconditoner

Justin Chang jychang48 at gmail.com
Sat Aug 29 16:41:36 CDT 2015


Hi all,

I am attempting to solve Darcy's equation:

u + grad[p] = g
div[u] = f

The weak form under the least-squares finite element method (LSFEM)
looks like this:

(u + grad[p]; v + grad[q]) + div[u]*div[v] = (g; v + grad[q]) + (f; div[v])

The classical mixed formulations using H(div) elements has the
following weak form:

(u; v) - (p; div[v]) - (div[v]; q) = (g; v) - (f; q)

For H(div) elements like RT0 and BDM, I was told that I could use these options:

-ksp_type gmres
-pc_type fieldsplit
-pc_fieldsplit_type schur
-pc_fieldsplit_schur_precondition selfp
-fieldsplit_0_ksp_type preonly
-fieldsplit_0_pc_type bjacobi
-fieldsplit_0_sub_pc_type ilu
-fieldsplir_1_ksp_type preonly
-fieldsplit_1_pc_type hypre

This works nicely for the  classical mixed form if g was zero and f
was nonzero. It also works if f was zero and g was non-zero although
it seems to me the solver requires a few more iterations. Now when I
attempt to apply these options to the LSFEM, my u solution is
nonsensical while my p is correct for nonzero g. For nonzero f, the
solver doesn't converge at all.

II have used CG/Jacobi with success for small LSFEM problems, but I
was wondering if it's possible (or even necessary) to do a
fieldsplit/schur complement for this kind of problem and how I could
modify the above options. Or what other preconditioner would work best
for this type of problem where its symmetric and positive definite?

Thanks,
Justin


More information about the petsc-users mailing list