AlgebraicJulia / Decapodes.jl

A framework for composing and simulating multiphysics systems
https://algebraicjulia.github.io/Decapodes.jl/dev/
MIT License
46 stars 14 forks source link

Support SciMLStructure Interface #233

Open lukem12345 opened 1 month ago

lukem12345 commented 1 month ago

Currently, performing sensitivity analysis on Decapodes simulations requires edits to generated simulation code. We should use the SciMLStructure.jl interface.

We cannot use the MTKParameters struct which already supports the interface without adding generated code that does manual buffer management.

So, this PR adds support for passing parameters as the NamedTuples that we normally use, wrapping values to mark them as "tunable" or "constant".

If the overhead of making NamedTuples is found to be too high, then we can switch to manually managing our buffers.

Relatedly, it is probably more performant to define a struct that silos Tunables into their own field, Constants into their own field, and so on.