[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