Description
For ParameterizedVDomain jacobiany
evaluation we get:
Note that the little zeros bit on the left won't show up normally since we use in-place evaluation.
Most of our time is spent calculating the dn_i/dT and dn_i/dP columns using ForwardDiff. However it isn't too hard to derive analytic equations down to the dGf/dT, dkf/dT and dkf/dP level. dGf/dT for NASA polynomials is the derivative of the polynomial expressions we already have formulas for. dkf/dT and dkf/dP are trivial for arrhenius reusing kf from the calculation: dkf/dT = kf*((n*Ea)/(RT^3))
and dkf/dP = 0
, which represents the vast majority of our rates. The next-most common kf(T) for RMG mechanisms is Chebyshev, which is a bit more tricky, but I think it should be possible to write nice analytic expressions for. This isn't hard to do for 3rd body and even Lindemann forms. PdepArrhenius shouldn't be hard either. Troe is a bit difficult, but doing a few of these numerically shouldn't be a big deal compared to the original calcthermo evaluation. If we add functions associated with calculating dkf/dT and dkf/dP for most kinetics objects and then fallback to something numerical I suspect we can get rid of most of the jacobianytherm! evaluation time and get ~2x speed up from doing this.