:orphan: # DMProjectField This projects the given function of the input fields into the function space provided, putting the coefficients in a global vector. ## Synopsis ``` #include "petscdm.h" #include "petscdmplex.h" #include "petscksp.h" PetscErrorCode DMProjectField(DM dm, PetscReal time, Vec U, void (**funcs)(PetscInt, PetscInt, PetscInt, const PetscInt[], const PetscInt[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscInt[], const PetscInt[], const PetscScalar[], const PetscScalar[], const PetscScalar[], PetscReal, const PetscReal[], PetscInt, const PetscScalar[], PetscScalar[]), InsertMode mode, Vec X) ``` Collective ## Input Parameters - ***dm -*** The `DM` - ***time -*** The time - ***U -*** The input field vector - ***funcs -*** The functions to evaluate, one per field - ***mode -*** The insertion mode for values ## Output Parameter - ***X -*** The output vector ## Calling sequence of `func` ```none void funcs(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f[]); ``` - ***dim -*** The spatial dimension - ***Nf -*** The number of input fields - ***NfAux -*** The number of input auxiliary fields - ***uOff -*** The offset of each field in u[] - ***uOff_x -*** The offset of each field in u_x[] - ***u -*** The field values at this point in space - ***u_t -*** The field time derivative at this point in space (or `NULL`) - ***u_x -*** The field derivatives at this point in space - ***aOff -*** The offset of each auxiliary field in u[] - ***aOff_x -*** The offset of each auxiliary field in u_x[] - ***a -*** The auxiliary field values at this point in space - ***a_t -*** The auxiliary field time derivative at this point in space (or `NULL`) - ***a_x -*** The auxiliary field derivatives at this point in space - ***t -*** The current time - ***x -*** The coordinates of this point - ***numConstants -*** The number of constants - ***constants -*** The value of each constant - ***f -*** The value of the function at this point in space ## Note There are three different `DM`s that potentially interact in this function. The output `DM`, dm, specifies the layout of the values calculates by funcs. The input `DM`, attached to U, may be different. For example, you can input the solution over the full domain, but output over a piece of the boundary, or a subdomain. You can also output a different number of fields than the input, with different discretizations. Last the auxiliary `DM`, attached to the auxiliary field vector, which is attached to dm, can also be different. It can have a different topology, number of fields, and discretizations. ## See Also [](ch_ksp), `DM`, `DMProjectFieldLocal()`, `DMProjectFieldLabelLocal()`, `DMProjectFunction()`, `DMComputeL2Diff()` ## Level advanced ## Location src/ksp/ksp/utils/dmproject.c ## Examples src/snes/tutorials/ex12.c
src/snes/tutorials/ex13.c
src/ts/tutorials/ex76.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/utils/dmproject.c) [Index of all KSP routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)