rklib_module Module

Runge-Kutta integration.

Note

The default real kind (wp) can be changed using optional preprocessor flags. This library was built with real kind: real(kind=real64) [8 bytes]


Uses

  • module~~rklib_module~~UsesGraph module~rklib_module rklib_module iso_fortran_env iso_fortran_env module~rklib_module->iso_fortran_env root_module root_module module~rklib_module->root_module

Used by


Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: rk_module_rk = real64

real kind used by this module [8 bytes]

integer, private, parameter :: wp = rk_module_rk

local copy of rk_module_rk with a shorter name

real(kind=wp), private, parameter :: zero = 0.0_wp
integer, private, parameter :: max_error_len = 100

max size of error message strings

integer, private, parameter :: dense_form_polynomial = 1

integer, private, parameter :: dense_form_dopri = 2

the form used in DOPRI5 and DOP853

integer, public, parameter :: RKLIB_ERROR_DENSE_NOT_AVAILABLE = -16
integer, public, parameter :: RKLIB_ERROR_DENSE_STEP_DISABLED = -15
integer, public, parameter :: RKLIB_ERROR_DENSE_NOT_ENABLED = -14
integer, public, parameter :: RKLIB_ERROR_DENSE_RECURSIVE = -13
integer, public, parameter :: RKLIB_ERROR_DENSE_OUT_OF_RANGE = -12
integer, public, parameter :: RKLIB_ERROR_NO_DENSE_OUTPUT = -11
integer, public, parameter :: RKLIB_ERROR_TOO_MANY_STEPS = -10
integer, public, parameter :: RKLIB_ERROR_INVALID_RTOL_SIZE = -9
integer, public, parameter :: RKLIB_ERROR_INVALID_ATOL_SIZE = -8
integer, public, parameter :: RKLIB_ERROR_INVALID_H = -7
integer, public, parameter :: RKLIB_ERROR_USER_STOPPED = -6
integer, public, parameter :: RKLIB_ERROR_MIN_STEP_SIZE = -5
integer, public, parameter :: RKLIB_ERROR_TOO_MANY_REDUCTIONS = -4
integer, public, parameter :: RKLIB_ERROR_INVALID_HINIT_METHOD = -3
integer, public, parameter :: RKLIB_ERROR_G_NOT_ASSOCIATED = -2
integer, public, parameter :: RKLIB_ERROR_F_NOT_ASSOCIATED = -1
integer, public, parameter :: RKLIB_ERROR_NONE = 0
character(len=max_error_len), private, parameter, dimension(RKLIB_ERROR_DENSE_NOT_AVAILABLE:RKLIB_ERROR_NONE) :: rklib_error_messages = ['No step is available for the dense output   ', 'dense_output_step requires dense output     ', 'Dense output was not enabled                ', 'Interpolate called from within interpolate  ', 'Dense output time is outside the last step  ', 'The method does not have a dense output     ', 'Too many steps                              ', 'Invalid size for rtol array                 ', 'Invalid size for atol array                 ', 'Step size cannot be zero                    ', 'User stopped the integration                ', 'Minimum step size reached                   ', 'Too many attempts to reduce step size       ', 'Invalid initial step size estimation method ', 'The event procedure g is not associated     ', 'The function procedure f is not associated  ', 'Success                                     ']

Status message strings that go with the status codes. The index in this array is the istatus code.


Interfaces

interface

interface

interface

  • private pure module function heun_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(heun_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

interface

  • private pure module function rk3_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rk3_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

interface

interface

  • private pure module function rk4_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rk4_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rks4_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rks4_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rkr4_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rkr4_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

interface

interface

interface

  • private pure module function rks5_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rks5_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rk5_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rk5_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rkc5_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rkc5_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rkl5_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rkl5_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

interface

interface

  • private pure module function rkb6_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rkb6_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

  • private pure module function rk7_properties(me) result(p)

    Arguments

    Type IntentOptional Attributes Name
    class(rk7_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

interface

  • private module subroutine euler(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(euler_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine midpoint(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(midpoint_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine heun(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(heun_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkssp22(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkssp22_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk3(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk3_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkssp33(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkssp33_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkssp53(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkssp53_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk4(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk4_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rks4(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rks4_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkr4(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkr4_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkls44(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkls44_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkls54(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkls54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkssp54(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkssp54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rks5(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rks5_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk5(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk5_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkc5(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkc5_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkl5(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkl5_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rklk5a(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rklk5a_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rklk5b(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rklk5b_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkb6(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkb6_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk7(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk7_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk8_10(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk8_10_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkcv8(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkcv8_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rk8_12(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rk8_12_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rks10(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rks10_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkz10(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkz10_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rko10(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rko10_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkh10(me, t, x, h, xf)

    Arguments

    Type IntentOptional Attributes Name
    class(rkh10_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

interface

  • private module subroutine rkbs32(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkbs32_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkssp43(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkssp43_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf45(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf45_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkck54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkck54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkdp54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkt54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkt54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rks54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rks54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkpp54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkpp54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkpp54b(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkpp54b_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkbs54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkbs54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkss54(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkss54_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkdp65(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp65_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkc65(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkc65_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktp64(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktp64_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv65e(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65e_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv65r(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65r_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv65(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine dverk65(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(dverk65_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktf65(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktf65_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktp75(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktp75_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktmy7(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktmy7_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktmy7s(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktmy7s_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv76e(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76e_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv76r(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76r_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkss76(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkss76_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf78(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf78_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv78(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv78_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine dverk78(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(dverk78_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkdp85(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp85_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rktp86(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rktp86_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkdp87(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp87_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv87e(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87e_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv87r(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87r_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkev87(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkev87_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkk87(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkk87_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf89(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf89_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv89(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv89_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkt98a(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkt98a_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv98e(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98e_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkv98r(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98r_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rks98(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rks98_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf108(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf108_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkc108(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkc108_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkb109(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkb109_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rks1110a(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rks1110a_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf1210(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf1210_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rko129(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rko129_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private module subroutine rkf1412(me, t, x, h, xf, xerr)

    Arguments

    Type IntentOptional Attributes Name
    class(rkf1412_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    state at time t+h

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate for x

interface

  • private pure module subroutine rkdp54_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp54_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private pure module subroutine rkv65e_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65e_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv65e_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65e_class), intent(inout) :: me

interface

  • private pure module subroutine rkv65r_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65r_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv65r_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv65r_class), intent(inout) :: me

interface

  • private pure module subroutine rkv76e_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76e_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv76e_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76e_class), intent(inout) :: me

interface

  • private pure module subroutine rkv76r_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76r_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv76r_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv76r_class), intent(inout) :: me

interface

  • private pure module subroutine dverk78_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(dverk78_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine dverk78_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(dverk78_class), intent(inout) :: me

interface

  • private pure module subroutine rkdp85_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp85_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkdp85_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp85_class), intent(inout) :: me

interface

  • private pure module subroutine rkdp87_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp87_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkdp87_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkdp87_class), intent(inout) :: me

interface

  • private pure module subroutine rkv87e_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87e_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv87e_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87e_class), intent(inout) :: me

interface

  • private pure module subroutine rkv87r_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87r_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv87r_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv87r_class), intent(inout) :: me

interface

  • private pure module subroutine rkev87_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkev87_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkev87_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkev87_class), intent(inout) :: me

interface

  • private pure module subroutine rkv98e_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98e_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv98e_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98e_class), intent(inout) :: me

interface

  • private pure module subroutine rkv98r_dense_coefficients(me, b, form)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98r_class), intent(in) :: me
    real(kind=wp), intent(out), dimension(:,:), allocatable :: b

    dense output coefficients

    integer, intent(out) :: form

    the form of b

interface

  • private module subroutine rkv98r_dense_extra_stages(me)

    Arguments

    Type IntentOptional Attributes Name
    class(rkv98r_class), intent(inout) :: me

Abstract Interfaces

abstract interface

  • private pure function norm_func(x) result(xmag)

    Vector norm function. Must return a value .

    Arguments

    Type IntentOptional Attributes Name
    real(kind=wp), intent(in), dimension(:) :: x

    a vector

    Return Value real(kind=wp)

    the magnitude of the vector

abstract interface

  • private pure function properties_func(me) result(p)

    Returns the properties of the method.

    Arguments

    Type IntentOptional Attributes Name
    class(rk_class), intent(in) :: me

    Return Value type(rklib_properties)

    properties of the method

abstract interface

  • private subroutine begin_func(me)

    routine called before integration begins to set up internal variables.

    Arguments

    Type IntentOptional Attributes Name
    class(rk_class), intent(inout) :: me

abstract interface

  • private subroutine deriv_func(me, t, x, xdot)

    derivative function

    Arguments

    Type IntentOptional Attributes Name
    class(rk_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    time

    real(kind=wp), intent(in), dimension(:) :: x

    state vector

    real(kind=wp), intent(out), dimension(:) :: xdot

    derivative of state vector

abstract interface

  • private subroutine event_func(me, t, x, g)

    event function

    Arguments

    Type IntentOptional Attributes Name
    class(rk_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    time

    real(kind=wp), intent(in), dimension(:) :: x

    state vector

    real(kind=wp), intent(out) :: g

    g(t,x). The goal is to stop the integration when g=0.

abstract interface

  • private subroutine report_func(me, t, x)

    report function

    Arguments

    Type IntentOptional Attributes Name
    class(rk_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    time

    real(kind=wp), intent(in), dimension(:) :: x

    state vector

abstract interface

  • private subroutine step_func_fixed(me, t, x, h, xf)

    rk step function for the fixed-step methods.

    Arguments

    Type IntentOptional Attributes Name
    class(rk_fixed_step_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state vector

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    final state vector

abstract interface

  • private subroutine step_func_variable(me, t, x, h, xf, xerr)

    rk step function for the variable-step methods.

    Arguments

    Type IntentOptional Attributes Name
    class(rk_variable_step_class), intent(inout) :: me
    real(kind=wp), intent(in) :: t

    initial time

    real(kind=wp), intent(in), dimension(me%n) :: x

    initial state vector

    real(kind=wp), intent(in) :: h

    time step

    real(kind=wp), intent(out), dimension(me%n) :: xf

    final state vector

    real(kind=wp), intent(out), dimension(me%n) :: xerr

    truncation error estimate


Derived Types

type, public ::  rklib_properties

Properties of an RK method.

Components

Type Visibility Attributes Name Initial
integer, public :: order = 0

order of the method

integer, public :: number_of_stages = 0

number of stages

logical, public :: fsal = .false.

if it is a FSAL method

logical, public :: low_storage = .false.

if it is a LS method

logical, public :: strong_stability_preserving = .false.

if it is a SSP method

logical, public :: dense = .false.

if the method has a dense output (continuous extension)

integer, public :: number_of_registers = 0

number of f vectors used

real(kind=wp), public :: cfl = zero

Courant-Friedrichs-Lewy number

character(len=:), public, allocatable :: short_name

short version of the method name

character(len=:), public, allocatable :: long_name

longer description of the method

type, public ::  stepsize_class

Algorithms for adjusting the step size for variable-step Runge-Kutta integrators.

Read more…

Components

Type Visibility Attributes Name Initial
logical, private :: fixed_step_mode = .false.

if true, then the method runs in fixed step mode with not error estimation

real(kind=wp), private :: hmax = 1.0e+6_wp

maximum allowed step size

real(kind=wp), private :: hmin = 1.0e-6_wp

minimum allowed step size

real(kind=wp), private :: hfactor_reject = 0.5_wp

minimum allowed factor for decreasing step size after rejected step

real(kind=wp), private :: hfactor_accept = 2.0_wp

maximum allowed factor for increasing step size after accepted step

integer, private :: accept_mode = 2

method to determine if step is accepted [1,2]

integer, private :: max_attempts = 10000

maximum number of attempts to decrease step size before giving up

logical, private :: relative_err = .false.

if true, use the error per unit step: . otherwise, use the error per step: . (The scaled error is then proportional to one less power of h, so p_exponent_offset should be one less than for the error per step.)

real(kind=wp), private :: safety_factor = 0.9_wp

for hfactor equation (>0)

integer, private :: p_exponent_offset = 1

the exponent of the hfactor equation is 1/(p + p_exponent_offset) (-1, 0, or 1; p + p_exponent_offset is limited to be at least 1). It should be one over the power of h that the scaled error is proportional to. For a p(p-1) pair, the error estimate is proportional to (where q=p-1 is the order of the error estimate), so 0 for the error per step, and -1 for the error per unit step (relative_err).

procedure(norm_func), private, nopass, pointer :: norm => maxval_func

routine for computing the norm of the scaled error (e.g., maxval_func, norm2_func, rms_func, or a user function)

integer, private :: rtol_scaling = 1

the state used to scale the relative tolerance: 1: tol = rtol*|x(t+h)| + atol, 2: tol = rtol*max(|x(t)|,|x(t+h)|) + atol (as in DOPRI5 and DOP853)

integer, private :: error_combination = 1

for methods with two error estimates that are combined (currently rkdp85, which uses the 5th and 3rd order estimates of DOP853, see rkdp85): 1: combined for each component, 2: combined using the scaled norms of the two estimates (as in DOP853)

real(kind=wp), private :: pi_beta = 0.0_wp

the parameter of the PI (Lund) step size control (stabilized step size control, see Hairer & Wanner, Solving ODEs I, section IV.2). 0 (the default) is the standard controller. Values up to 0.04 are recommended for DOPRI5.

real(kind=wp), private :: pi_beta_mult = 0.75_wp

the error exponent is reduced by pi_beta_mult*pi_beta (0.75 is used in DOPRI5, 0.2 in DOP853)

logical, private :: no_increase_after_reject = .false.

if true, the step size is not increased for the step after a rejected step (as in DOPRI5 and DOP853)

real(kind=wp), private :: err_old = 1.0e-4_wp

scaled error of the last accepted step (for the PI control)

logical, private :: last_rejected = .false.

if the last step was rejected

Type-Bound Procedures

procedure, public :: initialize => stepsize_class_constructor
procedure, public :: compute_stepsize
procedure, public :: destroy => destroy_stepsize_class
procedure, public :: reset => stepsize_class_reset
procedure, public :: tolerance => stepsize_class_tolerance

type, public, abstract ::  rk_class

main integration class

Components

Type Visibility Attributes Name Initial
integer, private :: istatus = 0

status code

logical, private :: stopped = .false.

if user has stopped the integration in f or report.

integer, private :: num_steps = 0

number of accepted steps taken

integer, private :: max_number_of_steps = huge(1)

maximum number of steps to take

integer, private :: report_rate = 1

how often to call report function: 0 : no reporting (same as not associating report), 1 : report every point, 2 : report every other point, etc. The first and last point are always reported.

logical, private :: stop_on_errors = .false.

if true, then errors will stop the program

integer, private :: n = 0

user specified number of variables

procedure(deriv_func), private, pointer :: f => null()

user-specified derivative function

procedure(report_func), private, pointer :: report => null()

user-specified report function

procedure(event_func), private, pointer :: g => null()

event function (stop when this is zero)

type(root_method), private :: solver = root_method_brent

the root solver method to use for even finding

real(kind=wp), private, dimension(:,:), allocatable :: funcs

matrix to store the function evaluations in the step function. this will be size (n x number_of_registers). If the dense output is enabled, and the method needs extra function evaluations for it (see dense_extra_stages), these are stored in additional columns after the ones for the step, so the size is (n x the number of rows of dense_b).

logical, private :: dense_enabled = .false.

if the dense output was enabled by the user (see initialize_variable_step)

integer, private :: dense_form = 0

the form of the dense_b coefficients (dense_form_polynomial or dense_form_dopri)

real(kind=wp), private, dimension(:,:), allocatable :: dense_b

dense output coefficients (allocated if the method has a dense output, even if it is not enabled) (number_of_stages x degree). See dense_coefficients.

logical, private :: dense_available = .false.

if the dense output data for the last step is valid

logical, private :: dense_computed = .false.

if dense_r has been computed for the last step

logical, private :: dense_computing = .false.

if dense_r is being computed (to detect recursive calls to interpolate from f)

real(kind=wp), private :: dense_t = zero

initial time of the last accepted step

real(kind=wp), private :: dense_h = zero

size of the last accepted step

real(kind=wp), private, dimension(:), allocatable :: dense_x

initial state of the last accepted step (n)

real(kind=wp), private, dimension(:), allocatable :: dense_xf

final state of the last accepted step (n)

real(kind=wp), private, dimension(:,:), allocatable :: dense_r

interpolating polynomial coefficients for the last accepted step (n x degree)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, private :: init => initialize_rk_class
procedure, private :: begin => begin_integration_rk_class
procedure, private :: raise_exception
procedure, private :: clear_exception
procedure, private :: export_point
procedure, private :: dense_coefficients

dense output coefficients for the method

procedure, private :: dense_extra_stages

additional function evaluations for the dense output

procedure, private :: dense_save
procedure, private :: dense_check
procedure, private :: dense_invalidate
procedure(begin_func), private, deferred :: begin_integration
procedure(properties_func), public, deferred :: properties

type, public, abstract, extends(rk_class) ::  rk_fixed_step_class

fixed step size class

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure(properties_func), public, deferred :: properties
procedure(step_func_fixed), private, deferred :: step

the step routine for the rk method

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, private :: begin_integration => begin_integration_rk_fixed_step_class

type, public, abstract, extends(rk_class) ::  rk_variable_step_class

Main integration class for variable step size Runge-Kutta methods

Components

Type Visibility Attributes Name Initial
type(stepsize_class), private :: stepsize_method

the method for varying the step size

real(kind=wp), private, dimension(:), allocatable :: rtol

relative tolerance (size(n))

real(kind=wp), private, dimension(:), allocatable :: atol

absolute tolerance (size(n))

integer, private :: hinit_method = 1

if automatically computing the inital step size, which method to use. 1 = hstart, 2 = hinit.

integer, private :: num_rejected_steps = 0

number of rejected steps

real(kind=wp), private :: last_accepted_step_size = zero

the last accepted step size dt from the integration (positive or negative)

real(kind=wp), private :: dense_output_step = zero

if > 0, the points are reported at this fixed time interval using the dense output (see initialize_variable_step)

logical, private :: dense_reporting = .false.

if the dense output is used for reporting in the current integration

real(kind=wp), private :: dense_output_t0 = zero

initial time of the current integration

integer(kind=int64), private :: dense_output_k = 0

index of the last dense output point reported: t = dense_output_t0 + k*dense_output_step (with the sign for the direction of integration)

real(kind=wp), private, allocatable :: t_saved

cached t

real(kind=wp), private, dimension(:), allocatable :: x_saved

cached x

real(kind=wp), private, dimension(:), allocatable :: f_saved

cached f

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure(properties_func), public, deferred :: properties
procedure(step_func_variable), private, deferred :: step

the step routine for the rk method

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, private :: hstart

for automatically computing the initial step size [this is from DDEABM]

procedure, private :: hinit

for automatically computing the initial step size [this is from DOP853]

procedure, private :: begin_integration => begin_integration_rk_variable_step_class
procedure, private :: compute_initial_step
procedure, private :: export_step
procedure, private :: export_dense_output
procedure, private :: order

returns p, the order of the method

procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache

type, public, abstract, extends(rk_variable_step_class) ::  rk_variable_step_fsal_class

a variable step method with the "first same as last" (FSAL) property: the last function evaluation of a step (at the final t and x) is the first one of the next step. It is reused by means of the function evaluation cache (see set_fsal_cache and check_fsal_cache).

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure(properties_func), public, deferred :: properties
procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache

type, public, extends(rk_fixed_step_class) ::  euler_class

Euler

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => euler
procedure, public :: properties => euler_properties

type, public, extends(rk_fixed_step_class) ::  midpoint_class

Midpoint

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => midpoint
procedure, public :: properties => midpoint_properties

type, public, extends(rk_fixed_step_class) ::  heun_class

Heun

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => heun
procedure, public :: properties => heun_properties

type, public, extends(rk_fixed_step_class) ::  rkssp22_class

2-stage, 2nd order TVD Runge-Kutta Shu-Osher

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkssp22
procedure, public :: properties => rkssp22_properties

type, public, extends(rk_fixed_step_class) ::  rk3_class

3th order Runge-Kutta

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk3
procedure, public :: properties => rk3_properties

type, public, extends(rk_fixed_step_class) ::  rkssp33_class

3-stage, 3rd order TVD Runge-Kutta Shu-Osher

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkssp33
procedure, public :: properties => rkssp33_properties

type, public, extends(rk_fixed_step_class) ::  rkssp53_class

5-stage, 3rd order SSP Runge-Kutta Spiteri-Ruuth

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkssp53
procedure, public :: properties => rkssp53_properties

type, public, extends(rk_fixed_step_class) ::  rk4_class

Classic 4th order Runge-Kutta

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk4
procedure, public :: properties => rk4_properties

type, public, extends(rk_fixed_step_class) ::  rks4_class

4th order Runge-Kutta Shanks

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rks4
procedure, public :: properties => rks4_properties

type, public, extends(rk_fixed_step_class) ::  rkr4_class

4th order Runge-Kutta Ralston

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkr4
procedure, public :: properties => rkr4_properties

type, public, extends(rk_fixed_step_class) ::  rkls44_class

4-stage, 4th order low storage non-TVD Runge-Kutta Jiang-Shu

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkls44
procedure, public :: properties => rkls44_properties

type, public, extends(rk_fixed_step_class) ::  rkls54_class

5-stage, 4th order low storage Runge-Kutta Carpenter-Kennedy

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkls54
procedure, public :: properties => rkls54_properties

type, public, extends(rk_fixed_step_class) ::  rkssp54_class

5-stage, 4th order SSP Runge-Kutta Spiteri-Ruuth

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkssp54
procedure, public :: properties => rkssp54_properties

type, public, extends(rk_fixed_step_class) ::  rks5_class

5th order Runge-Kutta Shanks

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rks5
procedure, public :: properties => rks5_properties

type, public, extends(rk_fixed_step_class) ::  rk5_class

5th order Runge-Kutta

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk5
procedure, public :: properties => rk5_properties

type, public, extends(rk_fixed_step_class) ::  rkc5_class

5th order Runge-Kutta Cassity

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkc5
procedure, public :: properties => rkc5_properties

type, public, extends(rk_fixed_step_class) ::  rkl5_class

5th order Runge-Kutta Lawson

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkl5
procedure, public :: properties => rkl5_properties

type, public, extends(rk_fixed_step_class) ::  rklk5a_class

5th order Runge-Kutta Luther-Konen 1

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rklk5a
procedure, public :: properties => rklk5a_properties

type, public, extends(rk_fixed_step_class) ::  rklk5b_class

5th order Runge-Kutta Luther-Konen 2

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rklk5b
procedure, public :: properties => rklk5b_properties

type, public, extends(rk_fixed_step_class) ::  rkb6_class

6th order Runge-Kutta Butcher

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkb6
procedure, public :: properties => rkb6_properties

type, public, extends(rk_fixed_step_class) ::  rk7_class

7th order Runge-Kutta Shanks

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk7
procedure, public :: properties => rk7_properties

type, public, extends(rk_fixed_step_class) ::  rk8_10_class

10-stage, 8th order Runge-Kutta Shanks

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk8_10
procedure, public :: properties => rk8_10_properties

type, public, extends(rk_fixed_step_class) ::  rkcv8_class

11-stage, 8th order Runge-Kutta Cooper-Verner

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkcv8
procedure, public :: properties => rkcv8_properties

type, public, extends(rk_fixed_step_class) ::  rk8_12_class

12-stage, 8th order Runge-Kutta Shanks

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rk8_12
procedure, public :: properties => rk8_12_properties

type, public, extends(rk_fixed_step_class) ::  rks10_class

10th order Runge-Kutta Stepanov

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rks10
procedure, public :: properties => rks10_properties

type, public, extends(rk_fixed_step_class) ::  rkz10_class

10th order Runge-Kutta Zhang

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkz10
procedure, public :: properties => rkz10_properties

type, public, extends(rk_fixed_step_class) ::  rko10_class

10th order Runge-Kutta Ono

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rko10
procedure, public :: properties => rko10_properties

type, public, extends(rk_fixed_step_class) ::  rkh10_class

10th order Runge-Kutta Hairer

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_fixed_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_fixed_step
procedure, public :: integrate_to_event => integrate_to_event_fixed_step
procedure, public :: step => rkh10
procedure, public :: properties => rkh10_properties

type, public, extends(rk_variable_step_fsal_class) ::  rkbs32_class

Bogacki & Shampine 3(2)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkbs32
procedure, public :: properties => rkbs32_properties

type, public, extends(rk_variable_step_class) ::  rkssp43_class

4-stage, 3rd order SSP

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkssp43
procedure, public :: properties => rkssp43_properties

type, public, extends(rk_variable_step_class) ::  rkf45_class

Fehlberg 4(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf45
procedure, public :: properties => rkf45_properties

type, public, extends(rk_variable_step_class) ::  rkck54_class

Cash & Karp 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkck54
procedure, public :: properties => rkck54_properties

type, public, extends(rk_variable_step_fsal_class) ::  rkdp54_class

Dormand-Prince 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkdp54
procedure, public :: properties => rkdp54_properties
procedure, public :: dense_coefficients => rkdp54_dense_coefficients

type, public, extends(rk_variable_step_fsal_class) ::  rkt54_class

Tsitouras 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkt54
procedure, public :: properties => rkt54_properties

type, public, extends(rk_variable_step_fsal_class) ::  rks54_class

Stepanov 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rks54
procedure, public :: properties => rks54_properties

type, public, extends(rk_variable_step_fsal_class) ::  rkpp54_class

Papakostas-PapaGeorgiou 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkpp54
procedure, public :: properties => rkpp54_properties

type, public, extends(rk_variable_step_fsal_class) ::  rkpp54b_class

Papakostas-PapaGeorgiou 5(4) b

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkpp54b
procedure, public :: properties => rkpp54b_properties

type, public, extends(rk_variable_step_class) ::  rkbs54_class

Bogacki & Shampine 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkbs54
procedure, public :: properties => rkbs54_properties

type, public, extends(rk_variable_step_class) ::  rkss54_class

Sharp & Smart 5(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkss54
procedure, public :: properties => rkss54_properties

type, public, extends(rk_variable_step_class) ::  rkdp65_class

Dormand-Prince 6(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkdp65
procedure, public :: properties => rkdp65_properties

type, public, extends(rk_variable_step_class) ::  rkc65_class

Calvo 6(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkc65
procedure, public :: properties => rkc65_properties

type, public, extends(rk_variable_step_class) ::  rktp64_class

Tsitouras & Papakostas NEW6(4)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktp64
procedure, public :: properties => rktp64_properties

type, public, extends(rk_variable_step_fsal_class) ::  rkv65e_class

Verner efficient (9,6(5))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv65e
procedure, public :: properties => rkv65e_properties
procedure, public :: dense_coefficients => rkv65e_dense_coefficients
procedure, public :: dense_extra_stages => rkv65e_dense_extra_stages

type, public, extends(rk_variable_step_fsal_class) ::  rkv65r_class

Verner robust (9,6(5))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv65r
procedure, public :: properties => rkv65r_properties
procedure, public :: dense_coefficients => rkv65r_dense_coefficients
procedure, public :: dense_extra_stages => rkv65r_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkv65_class

Verner 6(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv65
procedure, public :: properties => rkv65_properties

type, public, extends(rk_variable_step_class) ::  dverk65_class

Verner 6(5) "DVERK"

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => dverk65
procedure, public :: properties => dverk65_properties

type, public, extends(rk_variable_step_fsal_class) ::  rktf65_class

Tsitouras & Famelis 6(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktf65
procedure, public :: properties => rktf65_properties

type, public, extends(rk_variable_step_class) ::  rktp75_class

Tsitouras & Papakostas NEW7(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktp75
procedure, public :: properties => rktp75_properties

type, public, extends(rk_variable_step_class) ::  rktmy7_class

7th order Tanaka-Muramatsu-Yamashita

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktmy7
procedure, public :: properties => rktmy7_properties

type, public, extends(rk_variable_step_class) ::  rktmy7s_class

7th order Stable Tanaka-Muramatsu-Yamashita

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktmy7s
procedure, public :: properties => rktmy7s_properties

type, public, extends(rk_variable_step_class) ::  rkv76e_class

Verner efficient (10:7(6))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv76e
procedure, public :: properties => rkv76e_properties
procedure, public :: dense_coefficients => rkv76e_dense_coefficients
procedure, public :: dense_extra_stages => rkv76e_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkv76r_class

Verner robust (10:7(6))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv76r
procedure, public :: properties => rkv76r_properties
procedure, public :: dense_coefficients => rkv76r_dense_coefficients
procedure, public :: dense_extra_stages => rkv76r_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkss76_class

Sharp & Smart 7(6)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkss76
procedure, public :: properties => rkss76_properties

type, public, extends(rk_variable_step_class) ::  rkf78_class

Fehlberg 7(8)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf78
procedure, public :: properties => rkf78_properties

type, public, extends(rk_variable_step_class) ::  rkv78_class

Verner 7(8)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv78
procedure, public :: properties => rkv78_properties

type, public, extends(rk_variable_step_class) ::  dverk78_class

Verner "Maple" 7(8)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => dverk78
procedure, public :: properties => dverk78_properties
procedure, public :: dense_coefficients => dverk78_dense_coefficients
procedure, public :: dense_extra_stages => dverk78_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkdp85_class

Dormand-Prince 8(5)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkdp85
procedure, public :: properties => rkdp85_properties
procedure, public :: dense_coefficients => rkdp85_dense_coefficients
procedure, public :: dense_extra_stages => rkdp85_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rktp86_class

Tsitouras & Papakostas NEW8(6)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rktp86
procedure, public :: properties => rktp86_properties

type, public, extends(rk_variable_step_class) ::  rkdp87_class

Dormand & Prince RK8(7)13M

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkdp87
procedure, public :: properties => rkdp87_properties
procedure, public :: dense_coefficients => rkdp87_dense_coefficients
procedure, public :: dense_extra_stages => rkdp87_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkv87e_class

Verner efficient (8)7

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv87e
procedure, public :: properties => rkv87e_properties
procedure, public :: dense_coefficients => rkv87e_dense_coefficients
procedure, public :: dense_extra_stages => rkv87e_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkv87r_class

Verner robust (8)7

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv87r
procedure, public :: properties => rkv87r_properties
procedure, public :: dense_coefficients => rkv87r_dense_coefficients
procedure, public :: dense_extra_stages => rkv87r_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkev87_class

Enright-Verner (8)7

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkev87
procedure, public :: properties => rkev87_properties
procedure, public :: dense_coefficients => rkev87_dense_coefficients
procedure, public :: dense_extra_stages => rkev87_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkk87_class

Kovalnogov-Fedorov-Karpukhina-Simos-Tsitouras 8(7)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkk87
procedure, public :: properties => rkk87_properties

type, public, extends(rk_variable_step_class) ::  rkf89_class

Fehlberg 8(9)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf89
procedure, public :: properties => rkf89_properties

type, public, extends(rk_variable_step_class) ::  rkv89_class

Verner 8(9)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv89
procedure, public :: properties => rkv89_properties

type, public, extends(rk_variable_step_class) ::  rkt98a_class

Tsitouras 9(8) A

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkt98a
procedure, public :: properties => rkt98a_properties

type, public, extends(rk_variable_step_class) ::  rkv98e_class

Verner efficient (16:9(8))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv98e
procedure, public :: properties => rkv98e_properties
procedure, public :: dense_coefficients => rkv98e_dense_coefficients
procedure, public :: dense_extra_stages => rkv98e_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rkv98r_class

Verner robust (16:9(8))

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkv98r
procedure, public :: properties => rkv98r_properties
procedure, public :: dense_coefficients => rkv98r_dense_coefficients
procedure, public :: dense_extra_stages => rkv98r_dense_extra_stages

type, public, extends(rk_variable_step_class) ::  rks98_class

Sharp 9(8)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rks98
procedure, public :: properties => rks98_properties

type, public, extends(rk_variable_step_class) ::  rkf108_class

Feagin 8(10)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf108
procedure, public :: properties => rkf108_properties

type, public, extends(rk_variable_step_class) ::  rkc108_class

Curtis 10(8)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkc108
procedure, public :: properties => rkc108_properties

type, public, extends(rk_variable_step_class) ::  rkb109_class

Baker 10(9)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkb109
procedure, public :: properties => rkb109_properties

type, public, extends(rk_variable_step_class) ::  rks1110a_class

Stone 11(10)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rks1110a
procedure, public :: properties => rks1110a_properties

type, public, extends(rk_variable_step_class) ::  rkf1210_class

Feagin 12(10)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf1210
procedure, public :: properties => rkf1210_properties

type, public, extends(rk_variable_step_class) ::  rko129_class

Ono 12(9)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rko129
procedure, public :: properties => rko129_properties

type, public, extends(rk_variable_step_class) ::  rkf1412_class

Feagin 14(12)

Type-Bound Procedures

procedure, public :: destroy

destructor

procedure, public :: stop => rk_class_stop

user-callable method to stop the integration

procedure, public :: status => rk_class_status

get status code and message

procedure, public :: failed
procedure, public :: interpolate

dense output for the last accepted step

procedure, public :: dense_interval

interval of the last accepted step for the dense output

procedure, public :: initialize => initialize_variable_step

initialize the class (set n,f, and report)

procedure, public :: integrate => integrate_variable_step
procedure, public :: integrate_to_event => integrate_to_event_variable_step
procedure, public :: info => info_variable_step
procedure, public :: destroy_fsal_cache
procedure, public :: check_fsal_cache
procedure, public :: set_fsal_cache
procedure, public :: step => rkf1412
procedure, public :: properties => rkf1412_properties

Functions

private pure function order(me) result(p)

Returns the order of the RK method

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(in) :: me

Return Value integer

order of the method

private function failed(me)

Returns true if there was an error. Can use rk_class_status to get more info.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(in) :: me

Return Value logical

private function dense_check(me)

Check that the dense output can be used: the method has one, and it was enabled. If not, an error is raised.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

Return Value logical

public pure function norm2_func(x) result(xmag)

Use intrinsic norm2(x) for computing the vector norm.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(:) :: x

Return Value real(kind=wp)

public pure function rms_func(x) result(xmag)

Use the root mean square, , for computing the vector norm. This is the norm used in Hairer's DOPRI5 and DOP853 codes.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(:) :: x

Return Value real(kind=wp)

public pure function maxval_func(x) result(xmag)

Use maxval(abs(x)) for computing the vector norm.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(:) :: x

Return Value real(kind=wp)

private pure function stepsize_class_tolerance(me, rtol, atol, x, xf) result(tol)

The error tolerance vector for a step from x to xf: rtol*s + atol, where s depends on the rtol_scaling option.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(in) :: me
real(kind=wp), intent(in), dimension(:) :: rtol

relative tolerance

real(kind=wp), intent(in), dimension(:) :: atol

absolute tolerance

real(kind=wp), intent(in), dimension(:) :: x

state at the start of the step

real(kind=wp), intent(in), dimension(:) :: xf

state at the end of the step

Return Value real(kind=wp), dimension(size(x))

the error tolerance for each component

private function compute_initial_step(me, t0, tf, x0, h0) result(dt)

Compute the initial step size.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t0

initial time

real(kind=wp), intent(in) :: tf

final time

real(kind=wp), dimension(me%n) :: x0

initial state

real(kind=wp), intent(in) :: h0

user-input initial step size (if zero, then one is computed)

Return Value real(kind=wp)

step size to use

private function hinit(me, x, y, posneg, f0, hmax, atol, rtol)

computation of an initial step size guess

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: x
real(kind=wp), intent(in), dimension(:) :: y

dimension(n)

real(kind=wp), intent(in) :: posneg

posneg = sign(1.0_wp,xend-x)

real(kind=wp), intent(in), dimension(:) :: f0

dimension(n)

real(kind=wp), intent(in) :: hmax
real(kind=wp), intent(in), dimension(:) :: atol
real(kind=wp), intent(in), dimension(:) :: rtol

Return Value real(kind=wp)


Subroutines

private subroutine clear_exception(me)

Clear any exception.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

private subroutine raise_exception(me, error_code)

Raise an exception.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
integer, intent(in) :: error_code

the error to raise

private subroutine destroy(me)

Destructor for rk_class.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(out) :: me

private subroutine rk_class_stop(me)

User-callable method to stop the integration (e.g., from f, g, or report). No further function evaluations are done, and the integrator returns, with the status set to RKLIB_ERROR_USER_STOPPED. This is not treated as an error (i.e., it does not stop the program if stop_on_errors is true).

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

private subroutine rk_class_status(me, istatus, message)

Get the status of an integration.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(in) :: me
integer, intent(out), optional :: istatus

status code (<0 means an error)

character(len=:), intent(out), optional, allocatable :: message

status message

private subroutine export_point(me, t, x, first_or_last)

Wrapper for exporting points during integration.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in), dimension(:) :: x
logical, intent(in), optional :: first_or_last

if this is the first or last point (always reported)

private pure subroutine dense_coefficients(me, b, form)

Returns the dense output coefficients for the method. This is the default for methods that do not have a dense output (b is not allocated).

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(in) :: me
real(kind=wp), intent(out), dimension(:,:), allocatable :: b

dense output coefficients

integer, intent(out) :: form

the form of b (dense_form_polynomial or dense_form_dopri)

private subroutine dense_extra_stages(me)

Compute any additional function evaluations needed for the dense output of the last accepted step, and store them in me%funcs (after the ones used by the step function). This is the default for methods that don't need any.

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

private subroutine dense_save(me, t, x, h, xf)

Save the data needed for the dense output of a step that was just accepted. The function evaluations of the step are taken from me%funcs when interpolate is called, so this is only valid until the next step is taken.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
real(kind=wp), intent(in) :: t

initial time of the step

real(kind=wp), intent(in), dimension(:) :: x

initial state of the step

real(kind=wp), intent(in) :: h

size of the step

real(kind=wp), intent(in), dimension(:) :: xf

final state of the step

private subroutine dense_invalidate(me)

Mark the dense output data as invalid. This must be called before me%funcs is overwritten by a new step.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

private recursive subroutine interpolate(me, t, x, istatus)

Dense output: compute the state at a time within the last accepted step, using the continuous extension of the method (if it has one, see rklib_properties dense).

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
real(kind=wp), intent(in) :: t

time at which to compute the state

real(kind=wp), intent(out), dimension(me%n) :: x

state at t

integer, intent(out), optional :: istatus

status of this call

private subroutine dense_interval(me, available, t0, tf, x0, xf)

Returns the interval of the last accepted step, which is where interpolate can be used. For example, this can be called from the report function to get the previous time and state, so that points in between can be computed.

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
logical, intent(out) :: available

if dense output is available

real(kind=wp), intent(out), optional :: t0

initial time of the step

real(kind=wp), intent(out), optional :: tf

final time of the step

real(kind=wp), intent(out), optional, dimension(me%n) :: x0

initial state of the step

real(kind=wp), intent(out), optional, dimension(me%n) :: xf

final state of the step

private subroutine destroy_fsal_cache(me)

Destructor for the function evaluation cache.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me

private subroutine check_fsal_cache(me, t, x, f)

Compute the function at t and x, or get it from the function evaluation cache if it is there (see set_fsal_cache). This is used by all the variable-step methods for the first stage of a step. It may already be in the cache because:

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in), dimension(:) :: x
real(kind=wp), intent(out), dimension(:) :: f

private subroutine set_fsal_cache(me, t, x, f)

Compute the function and add it to the function evaluation cache, so that it can be reused by the next step (see check_fsal_cache). This is used for f at the end of a step: by the first-same-as-last (FSAL) methods (the last stage of the step), and by the methods whose dense output needs it as one of its extra stages (see dense_extra_stages).

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in), dimension(:) :: x
real(kind=wp), intent(out), dimension(:) :: f

private subroutine initialize_rk_class(me, n, f, report, g, stop_on_errors, max_number_of_steps, report_rate, solver, dense_output)

Initialize the rk_class.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me
integer, intent(in) :: n

number of variables

procedure(deriv_func) :: f

derivative function

procedure(report_func), optional :: report

for reporting the steps

procedure(event_func), optional :: g

for stopping at an event

logical, intent(in), optional :: stop_on_errors

stop the program for any errors (default is False)

integer, intent(in), optional :: max_number_of_steps

max number of steps allowed

integer, intent(in), optional :: report_rate

how often to call report function: 0 : no reporting (same as not associating report), 1 : report every point, 2 : report every other point, etc. The first and last point are always reported.

class(root_method), intent(in), optional :: solver

the root-finding method to use for even finding. if not present, then brent_solver is used.

logical, intent(in), optional :: dense_output

to enable the dense output (default is False). This is ignored if the method does not have one.

private subroutine begin_integration_rk_class(me)

Begin an integration.

Arguments

Type IntentOptional Attributes Name
class(rk_class), intent(inout) :: me

private subroutine begin_integration_rk_fixed_step_class(me)

Begin a rk_fixed_step_class integration.

Arguments

Type IntentOptional Attributes Name
class(rk_fixed_step_class), intent(inout) :: me

private subroutine initialize_fixed_step(me, n, f, report, g, stop_on_errors, max_number_of_steps, report_rate, solver)

Initialize the rk_fixed_step_class.

Arguments

Type IntentOptional Attributes Name
class(rk_fixed_step_class), intent(inout) :: me
integer, intent(in) :: n

number of variables

procedure(deriv_func) :: f

derivative function

procedure(report_func), optional :: report

for reporting the steps

procedure(event_func), optional :: g

for stopping at an event

logical, intent(in), optional :: stop_on_errors

stop the program for any errors (default is False)

integer, intent(in), optional :: max_number_of_steps

max number of steps allowed

integer, intent(in), optional :: report_rate

how often to call report function: 0 : no reporting (same as not associating report), 1 : report every point, 2 : report every other point, etc. The first and last point are always reported.

class(root_method), intent(in), optional :: solver

the root-finding method to use for even finding. if not present, then brent_solver is used.

private subroutine integrate_fixed_step(me, t0, x0, h, tf, xf)

Main integration routine for the rk_class.

Arguments

Type IntentOptional Attributes Name
class(rk_fixed_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t0

initial time

real(kind=wp), intent(in), dimension(:) :: x0

initial state

real(kind=wp), intent(in) :: h

abs(time step)

real(kind=wp), intent(in) :: tf

final time

real(kind=wp), intent(out), dimension(:) :: xf

final state

private subroutine integrate_to_event_fixed_step(me, t0, x0, h, tmax, tol, tf, xf, gf)

Event-finding integration routine for the rk_class. Integrates until g(t,x)=0, or until t=tf (whichever happens first).

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_fixed_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t0

initial time

real(kind=wp), intent(in), dimension(:) :: x0

initial state

real(kind=wp), intent(in) :: h

abs(time step)

real(kind=wp), intent(in) :: tmax

max final time if event not located

real(kind=wp), intent(in) :: tol

function tolerance for root finding

real(kind=wp), intent(out) :: tf

actual final time reached

real(kind=wp), intent(out), dimension(:) :: xf

final state (at tf)

real(kind=wp), intent(out) :: gf

g value at tf

private subroutine stepsize_class_constructor(me, hmin, hmax, hfactor_reject, hfactor_accept, norm, accept_mode, relative_err, safety_factor, p_exponent_offset, max_attempts, fixed_step_mode, rtol_scaling, error_combination, pi_beta, pi_beta_mult, no_increase_after_reject)

Constructor for a stepsize_class.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(out) :: me

(all options not specified are set to their defaults)

real(kind=wp), intent(in), optional :: hmin

minimum allowed step size (>0)

real(kind=wp), intent(in), optional :: hmax

maximum allowed step size (>0)

real(kind=wp), intent(in), optional :: hfactor_reject

minimum allowed factor for decreasing step size after rejected step (>0)

real(kind=wp), intent(in), optional :: hfactor_accept

maximum allowed factor for decreasing step size after accepted step (>0)

procedure(norm_func), optional :: norm

the user-specified function

integer, intent(in), optional :: accept_mode

method to determine if step is accepted [1,2]

logical, intent(in), optional :: relative_err

if true, use the error per unit step: . Otherwise (the default), use the error per step: . Note that, for the error per unit step, the scaled error is proportional to one less power of h, so p_exponent_offset should be one less than for the error per step (e.g., -1 rather than 0 for a p(p-1) pair).

real(kind=wp), intent(in), optional :: safety_factor

for hfactor equation (>0)

integer, intent(in), optional :: p_exponent_offset

the exponent of the step size factor is 1/(p + p_exponent_offset) (-1, 0, or 1). See stepsize_class for details.

integer, intent(in), optional :: max_attempts

max step size change attempts after rejected step

logical, intent(in), optional :: fixed_step_mode

if true, then the method runs in fixed step mode with not error estimation. All the other inputs are ignored. Note that this requires a dt /= 0 input for the integrator.

integer, intent(in), optional :: rtol_scaling

the state used to scale the relative tolerance: 1: |x(t+h)| (the default), 2: max(|x(t)|,|x(t+h)|) (as in DOPRI5 and DOP853).

integer, intent(in), optional :: error_combination

for methods with two error estimates (rkdp85): 1: combined for each component (the default), 2: combined using their scaled norms (as in DOP853).

real(kind=wp), intent(in), optional :: pi_beta

the parameter for the PI (Lund) stabilized step size control (0 to disable, which is the default). Values up to 0.04 are recommended for DOPRI5.

real(kind=wp), intent(in), optional :: pi_beta_mult

the error exponent is reduced by pi_beta_mult*pi_beta (0.75 is the default, and is used in DOPRI5, 0.2 is used in DOP853).

logical, intent(in), optional :: no_increase_after_reject

if true, the step size is not increased for the step after a rejected step (default is false).

private pure subroutine stepsize_class_reset(me)

Reset the internal state of the step size control. This is called at the start of each integration.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(inout) :: me

private subroutine destroy_stepsize_class(me)

Destructor for stepsize_class.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(out) :: me

private subroutine compute_stepsize(me, n, h, tol, err, p, hnew, accept)

Compute the new step size using the specific method.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(inout) :: me

(inout since it has some state, see pi_beta and no_increase_after_reject)

integer, intent(in) :: n

number of variables

real(kind=wp), intent(in) :: h

current step size (<>0)

real(kind=wp), intent(in), dimension(n) :: tol

abs error tolerance (>0)

real(kind=wp), intent(in), dimension(n) :: err

truncation error estimate (>0)

integer, intent(in) :: p

order of the method

real(kind=wp), intent(out) :: hnew

new step size (<>0)

logical, intent(out) :: accept

if the step is accepted

Begin a rk_variable_step_class integration.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me

private subroutine initialize_variable_step(me, n, f, rtol, atol, stepsize_method, hinit_method, report, g, stop_on_errors, max_number_of_steps, report_rate, solver, dense_output, dense_output_step)

Initialize the rk_variable_step_class.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
integer, intent(in) :: n

number of equations

procedure(deriv_func) :: f

derivative function

real(kind=wp), intent(in), optional, dimension(:) :: rtol

relative tolerance (if size=1, then same tol used for all equations). If not present, a default of 100*eps is used

real(kind=wp), intent(in), optional, dimension(:) :: atol

absolute tolerance (if size=1, then same tol used for all equations). If not present, a default of 100*eps is used

type(stepsize_class), intent(in), optional :: stepsize_method

method for varying the step size

integer, intent(in), optional :: hinit_method

which method (1 or 2) to use for automatic initial step size computation. 1 = use hstart, 2 = use hinit.

procedure(report_func), optional :: report

for reporting the steps

procedure(event_func), optional :: g

for stopping at an event

logical, intent(in), optional :: stop_on_errors

stop the program for any errors (default is False)

integer, intent(in), optional :: max_number_of_steps

max number of steps allowed

integer, intent(in), optional :: report_rate

how often to call report function: 0 : no reporting (same as not associating report), 1 : report every point, 2 : report every other point, etc. The first and last point are always reported.

class(root_method), intent(in), optional :: solver

the root-finding method to use for even finding. if not present, then brent_solver is used.

logical, intent(in), optional :: dense_output

to enable the dense output (default is False, unless dense_output_step is present and not zero). If enabled, interpolate can be used (e.g., from the report function), and the dense output is also used for event location in integrate_to_event_variable_step. The method must have a dense output. When not enabled, there is no overhead for the dense output.

real(kind=wp), intent(in), optional :: dense_output_step

if present and not zero, the points are reported at this fixed time interval (starting from the initial time), using the dense output of the method, rather than at the steps taken by the integrator. The first and last point are also reported (so the last interval will generally be shorter). This is only used if report is present and report_rate>0 (report_rate is otherwise ignored). The method must have a dense output. This automatically enables the dense output (it is an error if dense_output=.false. is also specified).

private subroutine info_variable_step(me, num_steps, num_rejected_steps, last_accepted_step_size)

Return some info about the integration.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(in) :: me
integer, intent(out), optional :: num_steps

number of steps taken

integer, intent(out), optional :: num_rejected_steps

number of rejected steps

real(kind=wp), intent(out), optional :: last_accepted_step_size

the last accepted step size dt from the integration (positive or negative)

private subroutine export_step(me, t, x, ok)

Export the point(s) after a step has been accepted (other than the last step). Either the end of the step, or the dense output points within the step (see export_dense_output).

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t

time at the end of the step

real(kind=wp), intent(in), dimension(:) :: x

state at the end of the step

logical, intent(out) :: ok

false if there was an error (the integration should not continue)

private subroutine export_dense_output(me, t_stop, ok)

Report the dense output points (at the fixed dense_output_step interval) within the last accepted step, that are before t_stop.

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t_stop

report points up to (but not including) this time

logical, intent(out) :: ok

false if there was an error (the integration should not continue)

private subroutine integrate_variable_step(me, t0, x0, h, tf, xf)

Main integration routine for the rk_variable_step_class.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t0

initial time

real(kind=wp), intent(in), dimension(:) :: x0

initial state

real(kind=wp), intent(in) :: h

initial abs(time step)

real(kind=wp), intent(in) :: tf

final time

real(kind=wp), intent(out), dimension(:) :: xf

final state

private subroutine integrate_to_event_variable_step(me, t0, x0, h, tmax, tol, tf, xf, gf)

Event-finding integration routine for the rk_variable_step_class. Integrates until g(t,x)=0, or until t=tf (whichever happens first).

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: t0

initial time

real(kind=wp), intent(in), dimension(me%n) :: x0

initial state

real(kind=wp), intent(in) :: h

abs(time step)

real(kind=wp), intent(in) :: tmax

max final time if event not located

real(kind=wp), intent(in) :: tol

function tolerance for root finding

real(kind=wp), intent(out) :: tf

actual final time reached

real(kind=wp), intent(out), dimension(me%n) :: xf

final state (at tf)

real(kind=wp), intent(out) :: gf

g value at tf

private subroutine hstart(me, a, b, y, yprime, etol, h)

Computes a starting step size to be used in solving initial value problems in ordinary differential equations.

Read more…

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_class), intent(inout) :: me
real(kind=wp), intent(in) :: a

the initial point of integration.

real(kind=wp), intent(in) :: b

a value of the independent variable used to define the direction of integration. a reasonable choice is to set b to the first point at which a solution is desired. you can also use b, if necessary, to restrict the length of the first integration step because the algorithm will not compute a starting step length which is bigger than abs(b-a), unless b has been chosen too close to a. (it is presumed that hstart has been called with b different from a on the machine being used. also see the discussion about the parameter small.)

real(kind=wp), intent(in), dimension(me%n) :: y

the vector of initial values of the neq solution components at the initial point a.

real(kind=wp), intent(in), dimension(me%n) :: yprime

the vector of derivatives of the neq solution components at the initial point a. (defined by the differential equations in subroutine me%f)

real(kind=wp), intent(in), dimension(me%n) :: etol

the vector of error tolerances corresponding to the neq solution components. it is assumed that all elements are positive. following the first integration step, the tolerances are expected to be used by the integrator in an error test which roughly requires that abs(local error) <= etol for each vector component.

real(kind=wp), intent(out) :: h

appropriate starting step size to be attempted by the differential equation method.