Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Controlled Stepper
PrevUpHomeNext

This concept specifies the interface a controlled stepper has to fulfill to be used within integrate functions.

Description

A controlled stepper following this Controlled Stepper concept provides the possibility to perform one step of the solution x(t) of an ODE with step-size dt to obtain x(t+dt) with a given step-size dt. Depending on an error estimate of the solution the step might be rejected and a smaller step-size is suggested.

Associated types
  • state_type

    Stepper::state_type

    The type characterizing the state of the ODE, hence x.

  • deriv_type

    Stepper::deriv_type

    The type characterizing the derivative of the ODE, hence d x/dt.

  • time_type

    Stepper::time_type

    The type characterizing the dependent variable of the ODE, hence the time t.

  • value_type

    Stepper::value_type

    The numerical data type which is used within the stepper, something like float, double, complex< double >.

  • stepper_category

    Stepper::stepper_category

    A tag type characterizing the category of the stepper. This type must be convertible to controlled_stepper_tag.

Notation

ControlledStepper

A type that is a model of Controlled Stepper

State

A type representing the state x of the ODE

Time

A type representing the time t of the ODE

stepper

An object of type ControlledStepper

x

Object of type State

t, dt

Objects of type Time

sys

An object defining the ODE, should be a model of System, Symplectic System, Simple Symplectic System or Implicit System.

Valid Expressions

Name

Expression

Type

Semantics

Do step

stepper.try_step( sys , x , t , dt )

controlled_step_result

Tries one step of step size dt. If the step was successful, success is returned, the resulting state is written to x, the new time is stored in t and dt now contains a new (possibly larger) step-size for the next step. If the error was too big, rejected is returned and the results are neglected - x and t are unchanged and dt now contains a reduced step-size to be used for the next try.

Models
  • controlled_error_stepper< runge_kutta_cash_karp54 >
  • controlled_error_stepper_fsal< runge_kutta_dopri5 >
  • controlled_error_stepper< runge_kutta_fehlberg78 >
  • rosenbrock4_controller
  • bulirsch_stoer

PrevUpHomeNext