[petsc-dev] Problem with DMKSP/DMSNES and GMG

Matthew Knepley knepley at gmail.com
Fri Oct 26 09:48:00 CDT 2018


I am having a problem, and every solution I can think of would seem to do
violence to encapsulation or to DMKSP/DMSNES.

I want to have GMG automatically work on the velocity part of Stokes. So I
give

  -fieldsplit_velocity_pc_type mg

in SNES ex62. This complains that the KSP has a DM but
KSPSetComputeOperator() has not been called. It is fine on the global
system because SNES called that in SNESSetupMatrices(). Thus in FieldSplit,
I inserted

          {
            PetscErrorCode (*func)(KSP,Mat,Mat,void*);
            void            *ctx;

            ierr = DMKSPGetComputeOperators(pc->dm, &func,
&ctx);CHKERRQ(ierr);
            ierr = DMKSPSetComputeOperators(dms[i],  func,
ctx);CHKERRQ(ierr);
          }

where we call KSPSetDM(). However, this does not work, because the subDM
has a new DMSNES, which does not have the information about the problem.

Solution #1:

  Copy the info from the old DMSNES to the subDMSNES. This inserts a
dependence between KSP and SNES which we do not want.

Solution #2:

  Have DMCreateSubDM() copy everything from the solvers. This also inserts
dependencies, unless we have a "copy everything" mechanism, but is this
what we want.

Solution #3:

  Rethink DMKSP/DMSNES. Is this how we should store problem information.
Dave already had another problem with the organization.

What should be done? I have never understood this construct very well.
Right now, this is holding up doing some computations I need.

  Thanks,

     Matt
-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20181026/2af71b78/attachment.html>


More information about the petsc-dev mailing list