Skip to main content
`Ctrl`+`K`

# DMTSSetTransientVariable

sets function to transform from state to transient variables into a `DMTS`

## Synopsis

    #include "petscts.h"
    PetscErrorCode DMTSSetTransientVariable(DM dm, TSTransientVariableFn *tvar, PetscCtx ctx)

Logically Collective

## Input Parameters

- dm - `DM` to be used with `TS`

- tvar - a function that transforms to transient variables, see `TSTransientVariableFn` for the calling sequence

- ctx - a context for tvar

## Notes

Normally `TSSetTransientVariable()` is used

This is typically used to transform from primitive to conservative variables so that a time integrator (e.g., `TSBDF`) can be conservative. In this context, primitive variables P are used to model the state (e.g., because they lead to well-conditioned formulations even in limiting cases such as low-Mach or zero porosity). The transient variable is C(P), specified by calling this function. An IFunction thus receives arguments (P, Cdot) and the IJacobian must be evaluated via the chain rule, as in

\[ dF/dP + shift * dF/dCdot dC/dP. \]

## See Also

TS: Scalable ODE and DAE Solvers, `DMTS`, `TS`, `TSBDF`, `TSSetTransientVariable()`, `DMTSGetTransientVariable()`, `DMTSSetIFunction()`, `DMTSSetIJacobian()`, `TSTransientVariableFn`

## Level

developer

## Location

src/ts/utils/dmts.c

Index of all TS routines
Table of Contents for all manual pages
Index of all manual pages