This PR implements jacobian() methods for nonparametric operator classes and all ROM classes. The Jacobian of a function f: R^n -> R^m is an n x m matrix whose (ij)th entry is d fi / dxj. For quadratic H[q ⊗ q] and cubic G[q ⊗ q ⊗ q], we have
The implementation is efficient (no Kronecker products) but requires storing an (r, r, r) or (r, r, r, r) array.
The Jacobian is used automatically in ContinuousOpInfROM.predict() when the specified method of scipy.integrate.solve_ivp() requires it (BDF, Radau, LSODA). This can result in huge speedups for stiff problems.
This PR implements
jacobian()
methods for nonparametric operator classes and all ROM classes. The Jacobian of a function f: R^n -> R^m is an n x m matrix whose (ij)th entry is d fi / dxj. For quadratic H[q ⊗ q] and cubic G[q ⊗ q ⊗ q], we haveJac(H)[q] = H[(I ⊗ q) + (q ⊗ I)]
Jac(G)[q] = H[(I ⊗ q ⊗ q) + (q ⊗ I ⊗ q) + (q ⊗ q ⊗ I)].
The implementation is efficient (no Kronecker products) but requires storing an
(r, r, r)
or(r, r, r, r)
array.The Jacobian is used automatically in
ContinuousOpInfROM.predict()
when the specifiedmethod
ofscipy.integrate.solve_ivp()
requires it (BDF, Radau, LSODA). This can result in huge speedups for stiff problems.