This example demonstrates the numerical integration of simple Differtial Algebraic Equations (DAEs). Similar to ODE integrators in MATLAB, it can handle ODE stiff systems as well as high index (Index 2+) DAE systems. See the following YouTube video for a step-by-step tutorial.
The directory contains a folder (apm) that contains the library of functions for working with APM. The model file (demo.apm) contains the following text:
tau = 5
K = 3
x = 0
y = 0
tau * $x + x = K * u
y = 2 * x
The data file (demo.csv) specifies the time points and any inputs to the model. In this case, the input 'u' is specified at the following time intervals:
The function 'apm_solve' receives an input of the application name (in this case 'demo') and returns a structure with the results of the simulation. In this case, the solution is returned into a structure named 'z'.
z = apm_solve('demo');
The structure contains all of the parameters and variables defined in the model file as well as the time points. A plot of 'time' and 'x' is provided with the demo and these are referenced as 'z.time' and 'z.x'.
The APMonitor Modeling Language (http://apmonitor.com) is optimization software for ODEs and DAEs. It is a full-featured modeling language with interfaces to MATLAB and Python. It is coupled with large-scale nonlinear programming solvers (including APOPT and IPOPT) for parameter estimation, nonlinear optimization, simulation, and model predictive control. There is a discussion group as well as regular webinars for those interested in dynamic modeling and simulation.