-
Notifications
You must be signed in to change notification settings - Fork 89
Transient Sensitivities
Irina K. Tezaur edited this page Oct 12, 2021
·
2 revisions
In 2020-21, a new capability to calculate transient forward and adjoint sensitivities was added to Albany, making heavy use of the Tempus time-integration package in Trilinos. The following is some documentation on this capability:
- The following is a report by S. Li and L. Petzold on the theory of transient sensitivity analysis.
- The following is a running document created by @ikalash that was created in implementing the transient sensitivities in Albany.
- Some results describing verification of adjoint transient sensitivities in Albany are provided in the following slides.
For documentation purposes, it is noted here that there are a couple capabilities missing in the current implementation in Piro pertaining to the transient adjoint sensitivities:
- The Piro::InvertMassMatrixDecorator does not implement DfDp. This is needed in order to run forward transient sensitivities with an explicit time-stepper, and also to run the adjoint transient sentivities with the 'Mass Matrix Is Identity = true' option. The latter option would only be relevant for the case when an explicit time-stepper is used with mass lumping. In the current implementation, mass lumping is used for the forward solve, but is not fully taken advantage of for the adjoint solve, as 'Mass Matrix Is Identity' is set to false even with mass lumping enabled.
- To make the 'Mass Matrix Is Identity = true' case work, one additionally needs to implement
DfDx^T*M^(-T)
in the Piro::MassMatrixDecorator class. - The code will abort gracefully if run in one of the above unsupported cases (it will throw a relevant error message).