# DMTSSetSolutionFunction
set TS solution evaluation function 
## Synopsis
```
#include "petscts.h" 
PetscErrorCode DMTSSetSolutionFunction(DM dm, TSSolutionFunction func, void *ctx)
```
Not Collective


## Input Parameters

- ***dm -*** DM to be used with TS
- ***func -*** solution function evaluation routine
- ***ctx -*** context for solution evaluation



## Calling sequence of f
```none
PetscErrorCode f(TS ts,PetscReal t,Vec u,void *ctx);
```


- ***ts -*** timestep context
- ***t -*** current timestep
- ***u -*** output vector
- ***ctx -*** [optional] user-defined function context





## Note
TSSetSolutionFunction() is normally used, but it calls this function internally because the user context is actually
associated with the DM.  This makes the interface consistent regardless of whether the user interacts with a DM or
not. If DM took a more central role at some later date, this could become the primary method of setting the residual.


## See Also
 `DMTSSetContext()`, `TSSetFunction()`, `DMTSSetJacobian()`, `DMTSGetSolutionFunction()`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/utils/dmts.c.html#DMTSSetSolutionFunction">src/ts/utils/dmts.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ts/utils/dmts.c)


[Index of all TS routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
