have you tried
'fieldsplit_1_ksp_convergence_test':'skip'
? I think then it only does a V-cycle to precondition the Schur-complement.
Sorry, didn't read your email carefully enough, I've only tried those options for HDiv.
Eike
This is a tricky system to precondition in general. Approaches that are known to work well are:
1) Use a block H(div) preconditioner, i.e. precondition by the operator
( 1 - grad(div .) 0 )
( 0 1 )
This converges fast with direct solvers to obtain the inverse of this operator, but classical iterative methods do not converge well for the top block, and so you need to use Schwartz preconditioners to get a fast parallel implementation. We don't currently have Firedrake support for that.
2) Hybridise the equation. The resulting reduced system behaves well with classical iterative methods or AMG. We have been able to construct the hybridised system using petsc4py.
all the best
--cjc
On 15 October 2015 at 14:18, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
As usual, the Firedrake person in the best position to answer your question is Lawrence, but he's currently on holiday.
I won't try to answer your question, but in an old email, Lawrence suggested you try using multigrid on the blocks; e.g.
'fieldsplit_0_pc_type': 'gamg',
'fieldsplit_1_pc_type': 'gamg',My linear solver knowledge is pretty dire, so I'll stop talking here :)
Andrew
On 15 October 2015 at 13:58, Justin Chang <jychang48@gmail.com> wrote:
I did ask them, but it went unanswered for the last 1.5 months...Let me clarify my question a bit though, I tried using -ksp_type cg -pc_type hypre -pc_hypre_type boomeramg, but it is not supported for matnest. I added nest=False but it seems to break my solver somehow.
The only thing that works for me is -ksp_type cg -pc_type bjacobi plus MixedVectorSpaceBasis(W, ...) but the number of solver iterations increases with problem size...
Thanks,
Justin
On Thu, Oct 15, 2015 at 6:50 AM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
_______________________________________________I think the PETSc mailing list is a much better place to ask questions like this?
On 15 October 2015 at 13:47, Justin Chang <jychang48@gmail.com> wrote:
Hi all,
I am attempting to solve Darcy's equation:
u + grad[p] = 0
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] = (f; div[v])
For H(div) elements like RT0, these options worked nicely:
-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
but for the above LSFEM, it does not work (get a DIVERGED_MAX_IT error). I heard multigrid methods are good for these types of problems, so how do I tweak the above parameters?
Thanks,
Justin
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake
--
_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake