Implementation Details for Built-in Solvers (Control Design and Simulation Module)
- Updated2023-03-14
- 4 minute(s) read
Before you simulate a dynamic system model, you must choose a solver that is appropriate for the model and application. The following sections contain details about the ordinary differential equation (ODE) and differential algebraic equations (DAE) solvers the Control & Simulation Loop provides.
Adams-Moulton Solver
The Adams-Moulton solver is a variable step-size, multi-step variable order (orders 1 through 12) implementation of the Adams-Moulton predictor-corrector pair in predict-evaluate-correct-evaluate (PECE) mode. This implementation adapts the classic Shampine-Gordon design, which uses modified divided differences in its implementation of Adams-Moulton formulas. This solver provides for efficient and accurate solutions for non-stiff ODEs.
Refer to the works of Shampine, Lawrence F., and M. K. Gordon for more information about this solver.
BDF Solver
The BDF solver is a variable step-size, variable order (orders 1 through 5) implementation of the multi-step backwards differentiation formula (BDF). This method is suitable for moderately stiff problems. The BDF solver properly integrates index–1 DAEs.
Discrete States Only
The Control & Simulation Loop provides this algorithm, but it is not an ODE solver because you use this algorithm for simulations that contain no continuous functions and therefore no differential equations. This algorithm has a fixed step size and uses a single step.
External Solvers
You can use a fixed or variable step-size solver that you create using the External Solver Interface (ESI). You can use an external solver for a simulation only if the shared library corresponding to the external solver is in the labview\vi.lib\Simulation\ContinuousLinear\Implementation\Shared\Solvers\Plugins directory. Use the Information function to define the name of the external solver that appears in the ODE Solver pull-down menu in the Configure Simulation Parameters dialog box.
Gear's Method Solver
The Gear's Method solver is a variable step-size, variable order DAE solver that implements a multi-step BDF. This solver is efficient for stiff problems and suitable for DAEs with implicit linear and nonlinear algebraic constraints.
Refer to the works of Gear, C. William, and of Brown, R. L., and C. W. Gear for more information about this solver.
Radau Solvers
The Radau solvers are efficient implicit Runge-Kutta methods that increase in order by increments of four, as indicated by their names. However, the computational resources these solvers require do not increase in proportion to the order.
The Control & Simulation Loop provides the following variable step-size Radau DAE solvers:
- Radau 5—A solver of the fifth order.
- Radau 9—A solver of the ninth order.
- Radau 13—A solver of the thirteenth order.
- Radau [Variable Order]—A variable step-size, variable order DAE solver.
These solvers implement suggestions from Hairer and Wanner to transform the math into the complex domain so that for every increment of four in order, the solvers require only one more Runge-Kutta stage.
Refer to the works of Hairer, E., S. P. Nørsett, and G. Wanner and of Hairer, E., and G. Wanner for more information about these solvers.
Rosenbrock Solver
The Rosenbrock solver is a variable step-size, single-step explicit solver. This solver is a second order method with third order error estimates. This solver derives from an singly diagonal implicit Runge-Kutta method scheme whose diagonal element is as follows:
The solver derives a Rosenbrock method by linearizing the quadrature rules of an implicit Runge-Kutta scheme. Since the ODE is generally a function of two variables, time and the states, the linearized equations utilize two Jacobians. One Jacobian is with respect to time and the other with respect to the states. The resulting linearized rules are implicit in nature, so the solver still has a Newton iteration.
Refer to the works of Hairer, E., and G. Wanner for more information about this solver.
Runge-Kutta Solvers
Runge-Kutta solvers use explicit methods that execute equations in a particular order when a given equation depends on only the results from the equations that execute previously.
The Control & Simulation Loop provides the following fixed step-size, single-step explicit Runge-Kutta ODE solvers:
- Runge-Kutta 1 (Euler)—A solver of first order.
- Runge-Kutta 2—A solver of second order.
- Runge-Kutta 3—A solver of third order.
- Runge-Kutta 4—A solver of fourth order.
The Control & Simulation Loop also provides the following variable step-size, single-step explicit Runge-Kutta ODE solvers, which provide formulas for two orders:
- Runge-Kutta 23—This solver starts with a third order method and embeds a set of Bogacki-Shampine coefficients for a second order method. The solver advances to the third order solution.
- Runge-Kutta 45—This solver starts with a fifth order method and embeds a set of Dormand-Prince coefficients for a fourth order method. The solver advances to the fifth order solution.
The Runge-Kutta 23 and 45 solvers embed the lower order method in the higher order method such that both methods evaluate the ODE at the same time increments. The solver computes the difference between the solutions and uses that value to decide how to vary the step size.
Refer to the works of Ralston, A., and of Bogacki, P., and Lawrence F. Shampine for more information about the Runge-Kutta 23 solver. Refer to the works of Hairer, E., S. P. Nørsett, and G. Wanner for more information about Runge-Kutta 45 solver.
SDKIRK 4 Solver
The SDIRK 4 solver is a variable step-size ODE solver of the fourth order. This solver is a singly diagonal implicit Runge-Kutta method (SDIRK). The SDIRK methods are characterized by the diagonal element in the Butcher tableau, whose value is 4/15 in this implementation. This solver develops an implicit Runge-Kutta scheme with a single value on the diagonal for efficiency. For example, when a single value exists on the diagonal, no matter how many stages are in the Runge-Kutta scheme, the solver must form only one iteration matrix. This design results in one matrix inversion per integration step instead of one matrix inversion per stage of the Runge-Kutta process. The 4/15 value given to the diagonal in the Butcher tableau is directly related to the accuracy and stability of the method.
Refer to the works of Hairer, E., and G. Wanner for more information about this solver.