A simple-to-use modeling tool doesn’t mean you’re limited to building simple models. Under the hood of Magnolia are powerful engines for solving large systems of differential equations quickly.
The ODE solvers used in Magnolia are descendants of the CVODE model codes developed at Lawrence Livermore National Laboratory. The CVODE algorithms are powerful, efficient solvers for both stiff and non-stiff systems. In addition, model specifications in Magnolia are translated into compilable code. While Python scripts are interpreted, the performance-critical model code is compiled. Large, complex models don’t come at the cost of poor performance.
Modelers should spend their time focusing on the equations which comprise their model, not writing boilerplate code to interface with an ODE solver or optimization package, making sure data types are consistent, massaging variables into and out of arrays, logging variables at each time step to collect variable trajectories, or manually sorting their equations. Magnolia aims to make getting a model up and running as simple as possible. Once the equations are specified, an interactive plot for exploring model behavior is one click away. But if you’d like to build scripts to create reusable analyses, or perform specialized results manipulation, Magnolia can do that too with the embedded Python interpreter.
constant g = 9.8, k = 2.0, L = 1.0
constant r0 = 1.2, theta0 = 0.5
constant vr0 = 0.0, vtheta0 = 0.0
cinterval cint = 0.02
rdot = vr
thetadot = vtheta
vrdot = r*vtheta^2 + g*cos(theta) - k*(r - L)
vthetadot = -(2*vr*vtheta + g*sin(theta))/r
r = integ(rdot, r0)
theta = integ(thetadot, theta0)
vr = integ(vrdot, vr0)
vtheta = integ(vthetadot, vtheta0)
constant tstop = 100.0
termt(t >= tstop, 'Time limit')
If you want to build basic scripts without having to learn Python, Magnolia has a simple command-based language for that as well.
Magnolia uses robust, mature solvers that have been thoroughly tested over a diverse set of applications and model types. In addition, Magnolia performs syntactical and semantic checks at compile time and run time that help reveal modeling errors which would otherwise lead to erroneous results. No manual equation sorting is required for derivative calculations. Discrete event handling accurately respects time and state crossing regardless of time step size. A good modeling tool should help prevent modeling errors, not provide a multitude of ways to make them.
To see some examples of how models and scripts can be built in Magnolia, visit our examples page.