Skip to content

Tempus: Add combined, staggered, and pseudotransient FSA methods

James Willenbring requested to merge tempus_fsa into develop

Created by: etphipp

This pull-request adds integrators supporting the combined, staggered, and pseudotransient forward sensitivity analysis methods where the sensitivity equations are solved alongside the forward equations. The different methods refer to how the solves between states/sensitivities are partitioned:

  • combined: solved together (best for explicit)
  • staggered: solve state equations and then sensitivity equations for each time step (best for implicit)
  • pseudotransient: do full state equation integration followed by full sensitivity equation integration (for when time integrator is used as a steady-state solver)

In all cases there is an option, "Use DfDp as Tangent", that controls whether the DfDp out-arg is interpreted as the tangent df/dp + df/dxdx/dp + df/dxdotdxdot/dp, or not (which is not regular model evaluator behavior). If the model supports it, it is a much simpler and more efficient way to assemble the sensitivity equations.

It also supports options to reuse the linear solver from the state equations when solving the sensitivity equations. This saves Jacobian assembly time and preconditioner generation time. Supporting it required one small change to the NOX-Thyra interface to not throw when accessing the preconditioner RCP if it is null (because there is no way to know beforehand if it is null or not until you access it).

Tests were added for Backward Euler, Explicit RK, and BDF2 time integration methods for all of the above methods and options.

@trilinos/tempus @trilinos/nox

Checklist

  • My commit messages mention the appropriate GitHub issue numbers.
  • [ x] My code follows the code style of the affected package(s).
  • [ x] My change requires a change to the documentation.
  • [x ] I have updated the documentation accordingly.
  • I have read the code contribution guidelines for this project.
  • [ x] I have added tests to cover my changes.
  • [x ] All new and existing tests passed.
  • [x ] No new compiler warnings were introduced.
  • These changes break backwards compatibility.

Merge request reports