Block-implicit assembly abstraction
- Modify block-implicit matrix assembly to work through a four-part abstraction:
- chain rule assembly
- matrix mod/transformation (one transformation for now, possibly an arbitrary number later)
- augment matrix for the time integration
- preconditioner (performed as a mod)
-
Add matrix mod interface, time integration augmentation mod, identity adder mod, and some simple examples for a test
-
Add chain rule assembler interface, direct accumulator of sensitivities (no special indexing), and a test with a custom assembler class
-
Add a virtual method for setting sensitivity calculations in the BDF integrators, because block-implicit needs sensitivities determined by the chain rule assembler while variable-implicit needs residual sensitivities to the nonlinear iteration variables
-
In dual time tests: move variable and rhs tag construction ahead of the integrator construction because block-implicit needs it for chain rule assembly