> Other suggestions on how to best integrate staggered finite differences > within the current PETSc framework are ofcourse also highly welcome. > Our current thinking was to pack it into a DMSHELL (which has the problem > of not having a restriction interface). > > Using DMShell is the cleanest approach.
An alternative is to have you user code simply take control of all of the configuration of the PCMG object. E.g. you call your user code which creates the restriction operator, you pull out the PC and call PCMGSetRestriction() on etc. This can be done easily performed in the context of linear problems. For non-linear problems, you could jam this setup code inside your ComputeJacobian function. This is all possible, albeit clunky and kinda ugly. It works though if you need something before Barry adds the required support in PCMG. Cheers Dave