Catalyst.jl
Catalyst.jl copied to clipboard
Spatial Required updates list
Will add stuff here as I come up with them.
Internal improvements
- Currently, we loop through all edges when we figure out spatial interactions. We should create a matrix of all vertexes, make it two layers (for both directions) and loop through this one.
- Parameters tied to edges are used at the beginning, but not stored. This prevents callbacks that affect these rates. Should be fixed.
- We should cache a Matrix corresponding to the well-mixed (non-spatial) Jacobian, and update its value in each timestep (and fecth from there.
- Consider switching the order of unknowns i.e. varying space then species instead of species then space.
- Using a view of a slice of a sparse Jacobian; is this bad for performance?
- Properly utilise various matrix forms for reducing hopping rate storage for various Jump simulations.
Missing features
- Support for cartesian grids (both as a NxMxL block, and as a 3d-Matrix with Bools indicating existence of vertexes).
- support for defining a continuous domain that is then discretized as a PDE.
- Integration with structures declared for MoL. E.g use its representation for e.g. PDE solutions.
- Matrix-free jacobian calculations.
- Support for removing (non-spatial) conserved quantities in the ODESystem.
- Declaring spatial reaction as a part of a
ReactionSystem. - Spatial reactions (that are not just
TransportReactions). - Spatial reactions (transport and other) with rates depending on other spcies.
- Boundary condition stuff.
Othe stuff
- Utilise PDESolution to create a new way to interface with the output.
- Create plotting animation interface for displaying the output.
- Create documentation.
Other things I mentioned today
- consider switching the order of unknowns i.e. varying space then species instead of species then space.
- using a view of a slice of a sparse Jacobian; is this bad for performance?
We need to see how MOL is representing PDE solutions under the hood and tie into that ideally.
updated
Support accessing variables via the system lrs.A and such, and support getproperty. Then fix _symbol_to_var to work like MTK.