Hi Jed, thanks for your reply.
On 01/02/2012 16:32, Jed Brown wrote: > On Wed, Feb 1, 2012 at 04:47, gouarin <loic.gouarin at math.u-psud.fr > <mailto:loic.gouarin at math.u-psud.fr>> wrote: > > Hi, > > I sent some email on Stokes solver using DMComposite grid (one for > the velocity and an other one for the pressure). > > Now, I try to use PCMG to precondition the velocity part with > fieldsplit and PETSc command line options only. > > This is an example of my options: > > ./test -stokes_ksp_type fgmres > -stokes_pc_type fieldsplit > -stokes_fieldsplit_0_ksp_type preonly > -stokes_fieldsplit_0_pc_type mg > -stokes_fieldsplit_0_pc_mg_ levels 2 > -stokes_fieldsplit_0_pc_mg_ galerkin > ... > -stokes_fieldsplit_1_ksp_type preonly > -stokes_fieldsplit_1_pc_type jacobi > > It doesn't work because we need to call PCFieldSplitGetSubKSP to > get the subpc[0] to create the interpolation matrices. So, we > have to call KSPSetUp before PCFieldSplitGetSubKSP. But, if we > call KSPSetUp, we have an error because the interpolation matrices > are not created ! > > > The interpolation matrices for PCMG? Those should be constructed by > the DM. It looks from your code like you have a DMComposite, in which > case you shouldn't have to do anything special. > > Try "make runex28_4". (It's broken with a change that went into > petsc-dev a few days ago. I'll be able to push the fix whenever I find > a wireless network in this airport that doesn't block ssh.) It seems that I have forgotten to initialize DMSetInitialGuess, DMSetFunction, DMSetJacobian. I don't understand what is the best way to use 4Q1-Q1 elements for the Stokes problem: - Construct the matrices for each DM in the DMComposite - Construct the global matrix and the global preconditioner - Use MatNest There are a lot of possibilities with PETSc with new add-ons and it is difficult to find our way with only the documentation. Best regards, Loic > > But If I do: > > ------ > PCSetDM(pc, dom->get_pack()); > PCSetType(pc, PCFIELDSPLIT); > KSPSetUp(solver); > PCFieldSplitGetSubKSP(pc, &nsplits, &subksp); > PetscMalloc(sizeof(PC)* nsplits, &subpc); > > KSPSetType(subksp[0], KSPPREONLY); > KSPGetPC(subksp[0], &subpc[0]); > PCSetType(subpc[0], PCMG); > > create the interpolation matrices > > KSPSetFromOptions(solver); > ------ > > It works but we can't set the mg_levels with the command line > options anymore. Moreover, I have some warning of this type: > > Option left: name:-stokes_fieldsplit_0_pc_ > mg_multiplicative_cycles value: 3 > > Is there a way to do that only with the command line option ? > > Thanks, > Loic > > -- > Loic Gouarin > Laboratoire de Math?matiques > Universit? Paris-Sud > B?timent 425 > 91405 Orsay Cedex > France > Tel: (+33) 1 69 15 60 14 <tel:%28%2B33%29%201%2069%2015%2060%2014> > Fax: (+33) 1 69 15 67 18 <tel:%28%2B33%29%201%2069%2015%2067%2018> > > -- Loic Gouarin Laboratoire de Math?matiques Universit? Paris-Sud B?timent 425 91405 Orsay Cedex France Tel: (+33) 1 69 15 60 14 Fax: (+33) 1 69 15 67 18 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120202/cb12b22d/attachment.htm>
