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

  • module~~rklib_module~~UsedByGraph module~rklib_module rklib_module module~rklib_fixed_properties rklib_fixed_properties module~rklib_fixed_properties->module~rklib_module module~rklib_fixed_steps rklib_fixed_steps module~rklib_fixed_steps->module~rklib_module module~rklib_variable_properties rklib_variable_properties module~rklib_variable_properties->module~rklib_module module~rklib_variable_steps rklib_variable_steps module~rklib_variable_steps->module~rklib_module program~rklib_example rklib_example program~rklib_example->module~rklib_module

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, 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_TOO_MANY_STEPS:RKLIB_ERROR_NONE) :: rklib_error_messages = ['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

  • 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 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


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

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.

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.

to use tol*h in the hfactor equation

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

for hfactor equation (>0)

integer, private :: p_exponent_offset = 1

p + this value in the exponent (0 or 1)

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

routine for computing the norm of the state

Type-Bound Procedures

procedure, public :: initialize => stepsize_class_constructor
procedure, public :: compute_stepsize
procedure, public :: destroy => destroy_stepsize_class

type, public ::  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 evalutaions in the step function. this will be size (n x number_of_registers)

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, 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(begin_func), private, deferred :: begin_integration
procedure(properties_func), public, deferred :: properties

type, public, 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(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, 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)

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(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 :: order ../../

returns p, the order of the method

a variable step method with the "first same as last" (FSAL) property. Cache the last f and x vectors to use for the next step.

Read more…

Components

Type Visibility Attributes Name Initial
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(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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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) ::  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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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

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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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

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 :: 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

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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: step => rkv76e
procedure, public :: properties => rkv76e_properties

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 :: 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 :: step => rkv76r
procedure, public :: properties => rkv76r_properties

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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: step => dverk78
procedure, public :: properties => dverk78_properties

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 :: 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 :: step => rkdp85
procedure, public :: properties => rkdp85_properties

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 :: 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 :: 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 :: 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 :: step => rkdp87
procedure, public :: properties => rkdp87_properties

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 :: 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 :: step => rkv87e
procedure, public :: properties => rkv87e_properties

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 :: 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 :: step => rkv87r
procedure, public :: properties => rkv87r_properties

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 :: 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 :: step => rkev87
procedure, public :: properties => rkev87_properties

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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: step => rkv98e
procedure, public :: properties => rkv98e_properties

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 :: 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 :: step => rkv98r
procedure, public :: properties => rkv98r_properties

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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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

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 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 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.

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 subroutine destroy_fsal_cache(me)

Destructor for the FSAL variables.

Arguments

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

private subroutine check_fsal_cache(me, t, x, f)

Check the FSAL cache.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_fsal_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 FSAL cache.

Arguments

Type IntentOptional Attributes Name
class(rk_variable_step_fsal_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)

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.

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 pure 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)

Constructor for a stepsize_class.

Arguments

Type IntentOptional Attributes Name
class(stepsize_class), intent(inout) :: me
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

to use tol*h in the hfactor equation

real(kind=wp), intent(in), optional :: safety_factor

for hfactor equation (>0)

integer, intent(in), optional :: p_exponent_offset

p + this value in the exponent (0 or 1)

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.

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(in) :: me
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)

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.

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 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.