Thank you for your email Jed, this is very helpfull. Just in case you would know some specific references: the physics we are working with are very common: turbulent low-Mach gas dynamics; since part of the systems stiffness is created by the turbulent variables, i am trying to couple a first system with 5 fields (density, momentum, energy) and a second one with 2 fields (turbulence), within the preconditioner. The motivation is the diminution of the factorization memory requirement, compare to when the fields are not split. Regards, francois pacull.
Jed Brown a ?crit : > On Tue, 24 Nov 2009 17:46:01 +0100, francois pacull <fpacull at fluorem.com> > wrote: > > >> PCFieldSplitGetSubKSP(SubPC,number_of_split,&FieldSplitKSP); >> > > Note that Schur currently only works when number_of_split=2. > > I think this is the culprit: > > >> PCSetType(FieldSplitPC1,PCILU); >> > ^^^^^^ > Here you are trying to precondition the Schur complement, but ... > > >> So far I did not turn on the Schur complement preconditioner option: >> PCFieldSplitSchurPrecondition(subpc,PETSC_FALSE); >> > > There should be a check for this so that you get a better error. When > not PCFieldSplitSchurPrecondition, we set PCNONE for the Schur > complement. > > >> Is there a book or article describing the methods implemented in this >> FieldSplit option? >> > > Not really, it implements "physics-based" relaxation > (additive/multiplicative) and factorization (Schur), the former is a > fairly traditional idea, for the latter you generally have to look at > references for your application area. We might be able to refer you to > specific references if you explain the physics you are working with. > > There are two classes of problems for which the factorization option is > to be preferred (because usually nothing else works): > > * indefinite systems such as incompressible flow or LNK optimization > > * stiff wave problems like shallow water, low-Mach gas dynamics, MHD > > A while ago, I started extending PCFieldSplit to do hybrid factorization > and relaxation with no restriction on the number of splits, and with the > appropriate hooks to get preconditioners in all the places you might > want them. Sadly, I have not yet gotten it cleaned up enough to push to > PETSc-dev, but it is still on my to do list. > > Jed > >
