Refactors Var types, SFCC methods, and differentiation methods
This PR includes several breaking changes:
- Prognostic/diagnostic variables have changed. Units are specified directly rather than via the debug macro. All debug macros will be removed in a future PR.
- SFCC function arguments are re-ordered under the new convention that all fields which are present in the
SFCCFunction
struct should come last with the default argument values being the struct fields. This should simplify usage of the SFCC functions. -
sfccparams
is renamed tosfccargs
to avoid confusion with the usage of "param" elsewhere. - SFCC code no longer uses symbolic derivatives; this removes the (somewhat heavy) dependency on Symbolics.jl. The freeze-curve derivative is instead determined using ForwardDiff.
- Freeze/thaw related code is now implemented in a
freezethaw!
method rather than as a callable SFCC struct. This is intended to simplify the method interface since the callable-struct style used for the SFCC before was a bit inconsistent with the design elsewhere. - Adds the TDMA solver from CryoGridLite which can now optionally be used by integrators instead of the default tridiagonal factorization algorithm (although it doesn't seem to make a huge difference in most cases).
Edited by Brian Groenke