Simbody
|
This is an Integrator based on the CPODES library. More...
#include <CPodesIntegrator.h>
Public Member Functions | |
~CPodesIntegrator () | |
CPodesIntegrator (const System &sys, CPodes::LinearMultistepMethod method=CPodes::BDF) | |
Create a CPodesIntegrator for integrating a System. | |
CPodesIntegrator (const System &sys, CPodes::LinearMultistepMethod method, CPodes::NonlinearSystemIterationType iterationType) | |
Create a CPodesIntegrator for integrating a System. | |
void | setUseCPodesProjection () |
CPODES provides its own mechanism for projecting the system onto the constraint manifold. | |
void | setOrderLimit (int order) |
Restrict the integrator to lower orders than it is otherwise capable of (up to 12 for Adams, 5 for BDF). |
This is an Integrator based on the CPODES library.
It is an error controlled, variable order implicit integrator. It provides a good combination of accuracy, stability, and speed, and is a good choice for integrating stiff problems.
When creating a CPodesIntegrator, you can specify various options for how to perform the implicit integration: the linear multistep method to use (Adams or BDF), and the nonlinear system iteration type (Newton iteration or functional iteration). For stiff problems, the recommended choices are BDF with Newton iteration. For non-stiff problems, using Adams and/or functional iteration may provide better performance. Note that Adams is never recommended for systems that include constraints.
SimTK::CPodesIntegrator::~CPodesIntegrator | ( | ) |
SimTK::CPodesIntegrator::CPodesIntegrator | ( | const System & | sys, |
CPodes::LinearMultistepMethod | method = CPodes::BDF |
||
) | [explicit] |
Create a CPodesIntegrator for integrating a System.
SimTK::CPodesIntegrator::CPodesIntegrator | ( | const System & | sys, |
CPodes::LinearMultistepMethod | method, | ||
CPodes::NonlinearSystemIterationType | iterationType | ||
) |
Create a CPodesIntegrator for integrating a System.
The nonlinear system iteration type is chosen automatically based on the linear multistep method: Newton iteration for BDF (the default), and functional iteration for Adams.
void SimTK::CPodesIntegrator::setUseCPodesProjection | ( | ) |
CPODES provides its own mechanism for projecting the system onto the constraint manifold.
By default, CPodesIntegrator uses the System's project() method for doing projection, which is usually more efficient. Invoking this method tells it to use the CPODES mechanism instead.
This method must be invoked before the integrator is initialized. Invoking it after initialization will produce an exception.
void SimTK::CPodesIntegrator::setOrderLimit | ( | int | order | ) |
Restrict the integrator to lower orders than it is otherwise capable of (up to 12 for Adams, 5 for BDF).
This method may only be used to decrease the maximum order permitted, never to increase it. Once you specify an order limit, calling it again with a larger value will fail.