[petsc-dev] Gathering information: types of interpolations in PETSc and which ones are supported?

Smith, Barry F. bsmith at mcs.anl.gov
Fri Aug 31 13:20:10 CDT 2018

    PETSc developers,

       There are a variety of "interpolation" modules in PETSc but the documentation is scattered (mostly missing). Could everyone who knows anything about the various modules provide a little information about which modes exist as interfaces and which have actual supporting code and expected usage? Anything duplicative?

1) nested DM to DM (mesh to mesh) of the same type of DM seems to be supported for DMDA and DMPLEX using DMCreateInterpolation(). But what is DMPlexComputeInterpolatorNested(DM, DM, Mat, void *), how is it different? (Note usr context is not used)

2) non-nested DM to DM. DMPlexComputeInterpolatorGeneral(DM, DM, Mat, void *); (and what does "local portion" mean?) (also the usr context? is not used).

3) DM to a set of points (mesh to points)  with DMInterpolationInfo and the routines  DMInterpolationEvaluate() etc. Is this fully implemented for DMPLEX, DMDA? Parallel, does the user need to know which process the points are on or is that all figured out?

4) Points to a DM. Is this supported (should be?) by DMSWARM? In fact should 3) work with DMSWARM as the set of points and not have its own construct (DMInterpolationInfo)?

5) Points to points? (Done indirectly by interpolating to a DM then back to the other points)?

There is a routine DMPlexInterpolate() is this mis-named/confusing thing? Interpolate seems to mean something slight different here.

   All of this explanation could go into the users manual (or FAQ for now).

   Thanks for any explanations,



More information about the petsc-dev mailing list