Tempus: Add Ability to Integrate Auxiliary Variables
Created by: ccober6
@trilinos/tempus
Expectations
Have the ability to time integrate auxiliary variables.
There is a difference between the PhysicsState, p, and an auxiliary variable, y. The PhysicState is physics data that does not need time integration. It is just data at each time step that is needed to evaluate f(x,xDot,t,p). An auxiliary variable, y, however does need time integration, but has been separated from the solution variable, x, because it is a simple update or has a different time-integration.
To start with we will assume that the solution, x, and the auxiliary variables, y, are integrated with the same Stepper, but is a simple update from the SolutionState (e.g., x_{n-1}, x_{n}, xDot_{n-1}, xDot_{n}, y_{n-1}, yDot_{n-1}, and RK stage values) and other values available from the TimeDerivative class.
Motivation and Context
The ability to segregate the solution, x, and auxiliary variables, y, can be a substantial computational savings because of the reduction in size of the solution vector from {x, y} to just {x} and simple update of {y}.
Definition of Done
- Add auxiliary variables, y, to SolutionState.
- Incorporate y to TimeDerivative class.
- Develop means for application to provide update function to Stepper. (This may be a prototype for a new ModelEvaluator).
- Have TempusWrapperModelEvaluator use y and compute yDot.
- Either implement the new auxiliary variables in every Stepper, or have the Stepper error out if auxiliary variables are used.
- Add test to cover this new capability.