:orphan:
# DMInterpolateSolution
Interpolates a solution from a coarse mesh to a fine mesh.
## Synopsis
```
#include "petscdm.h"
#include "petscdmlabel.h"
#include "petscds.h"
PetscErrorCode DMInterpolateSolution(DM coarse, DM fine, Mat interp, Vec coarseSol, Vec fineSol)
```
Collective
## Input Parameters
- ***coarse -*** coarse `DM`
- ***fine -*** fine `DM`
- ***interp -*** (optional) the matrix computed by `DMCreateInterpolation()`. Implementations may not need this, but if it
is available it can avoid some recomputation. If it is provided, `MatInterpolate()` will be used if
the coarse `DM` does not have a specialized implementation.
- ***coarseSol -*** solution on the coarse mesh
## Output Parameter
- ***fineSol -*** the interpolation of coarseSol to the fine mesh
## Note
This function exists because the interpolation of a solution vector between meshes is not always a linear
map. For example, if a boundary value problem has an inhomogeneous Dirichlet boundary condition that is compressed
out of the solution vector. Or if interpolation is inherently a nonlinear operation, such as a method using
slope-limiting reconstruction.
## Developer Note
This doesn't just interpolate "solutions" so its API name is questionable.
## See Also
[](ch_dmbase), `DM`, `DMInterpolate()`, `DMCreateInterpolation()`
## Level
developer
## Location
src/dm/interface/dm.c
## Implementations
DMInterpolateSolution_Plex in src/dm/impls/plex/plex.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/interface/dm.c)
[Index of all DM routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)