Saving the value of parameterized functions in DifferentialEquations.jl

Hello all,

I have the following ODE system in which p is a parameterized function:

function fcd!(du, u, p, t)
    du[1] = p(t) - u[1]
    du[2] = p(t) / u[1] - u[2]

I wish to solve the ODE using DifferentialEquations.jl and also save the value of p(t) at all time points.

Right now I did so in a data frame, conc is p(t) in the ODE.

DataFrame(sol) |>
@mutate(u = conc.(_.timestamp))

Is there a more elegant way to save p(t)?

Hello, ModelingToolkit.jl (the symbolic part of DifferentialEquations.jl) provides tracing for non-state variables right in the solution interface and plot recipes. Specifying a time-variable forcing function is possibly the closest to what you want.

1 Like

Unfortunately I need to dynamically redefine the function to save time on Julia’s start-up overhead time. This does not work with Symbolics.jl.

1 Like

Perhaps SavingCallback could meet your needs. It can save extra information in the simulation.

1 Like