On Mon, 25 Jul 2016, [email protected] wrote:

> --                         --
> |  -laplace     grad  |
> |    div          0       |
> --                         --
>
> I use bjacobi+ilu as the preconditioner for GMRES in PETSc to solve
> the system. Sometimes it works, but most of time it does not
> converges.  My code is just like the example:
> /systems_of_equations_ex2.
>
> I wonder if I try the way in example: /systems_of_equations_ex3,
> would it be better?

That's an ideal way to get rid of the null space (assuming you have
one - it depends on your boundary conditions).  In my experience you
do want to get rid of the null space *somehow* to make things easier
on your solver, but simply pinning the pressure at a point has always
worked for me.

> Or should I use other solver/perconditioner ?

Assuming you're using PETSc then I would try different preconditioner
options first, simply because they make it so easy to do.  In
decreasing order of usefulness:

I usually tell ILU to do a handful (4 is pretty robust) of levels of
fill.  The extra cost setting up a more expensive preconditioner
usually pays for itself in fewer Krylov steps, even aside from
robustness concerns.  I've used as many as 10 levels on some problems.

"-sub_pc_factor_shift_type nonzero" is sometimes necessary with new
PETSc versions.

ASM with a little overlap works better for me than block Jacobi: not
always enough to bother, but I've hit lots of problems where just one
level of overlap increased overall performance, and I've hit some
problems where 10 levels of overlap kept solves robust on a wide range
of processor counts and partitionings.

Futzing with "-sub_pc_factor_mat_ordering_type 1wd" and other ordering
options sometimes makes ILU-based preconditioners much more robust for
me, but other times much less.

libMesh does expose enough information to PETSc to allow you to do a
variable-based block decomposition.  In my experience I've always
managed to get the fastest solves out of hand-tweaked ASM+ILU, but if
you can't then Schur complement might be worth trying next.
---
Roy

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to