integrator_object Derived Type

type, public, abstract :: integrator_object

Abstract type of FOODIE ODE integrators.

Inherited By

type~~integrator_object~~InheritedByGraph type~integrator_object integrator_object type~integrator_multistep_object integrator_multistep_object type~integrator_object->type~integrator_multistep_object type~integrator_multistage_multistep_object integrator_multistage_multistep_object type~integrator_object->type~integrator_multistage_multistep_object type~integrator_multistage_object integrator_multistage_object type~integrator_object->type~integrator_multistage_object type~integrator_adams_bashforth integrator_adams_bashforth type~integrator_multistep_object->type~integrator_adams_bashforth type~integrator_leapfrog integrator_leapfrog type~integrator_multistep_object->type~integrator_leapfrog type~integrator_adams_moulton integrator_adams_moulton type~integrator_multistep_object->type~integrator_adams_moulton type~integrator_adams_bashforth_moulton integrator_adams_bashforth_moulton type~integrator_multistep_object->type~integrator_adams_bashforth_moulton type~integrator_lmm_ssp_vss integrator_lmm_ssp_vss type~integrator_multistep_object->type~integrator_lmm_ssp_vss type~integrator_back_df integrator_back_df type~integrator_multistep_object->type~integrator_back_df type~integrator_lmm_ssp integrator_lmm_ssp type~integrator_multistep_object->type~integrator_lmm_ssp type~integrator_ms_runge_kutta_ssp integrator_ms_runge_kutta_ssp type~integrator_multistage_multistep_object->type~integrator_ms_runge_kutta_ssp type~integrator_runge_kutta_lssp integrator_runge_kutta_lssp type~integrator_multistage_object->type~integrator_runge_kutta_lssp type~integrator_euler_explicit integrator_euler_explicit type~integrator_multistage_object->type~integrator_euler_explicit type~integrator_runge_kutta_ssp integrator_runge_kutta_ssp type~integrator_multistage_object->type~integrator_runge_kutta_ssp type~integrator_runge_kutta_emd integrator_runge_kutta_emd type~integrator_multistage_object->type~integrator_runge_kutta_emd type~integrator_runge_kutta_ls integrator_runge_kutta_ls type~integrator_multistage_object->type~integrator_runge_kutta_ls type~integrator_adams_bashforth->type~integrator_adams_bashforth_moulton predictor type~integrator_adams_moulton->type~integrator_adams_bashforth_moulton corrector
Help

Source Code


Components

TypeVisibility AttributesNameInitial
character(len=:), public, allocatable:: description_

Informative description of the integrator.

integer(kind=I_P), public :: error =0

Error status code.

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

Error message, hopefully meaningful.


Type-Bound Procedures

procedure, public, pass(lhs) :: assign_abstract

Assign ony members of abstract integrator_object type.

generic, public :: assignment(=) => integr_assign_integr

Overload =.

procedure, public, pass(self) :: check_error

Check for error occurrencies.

  • private subroutine check_error(self, is_severe)

    Check for error occurencies.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    logical, intent(in), optional :: is_severe

    Flag to activate severe faliure, namely errors trigger a stop.

procedure(class_name_interface), public, deferred, pass(self) :: class_name

Return the class name of schemes.

  • pure function class_name_interface(self) result(class_name) Prototype

    Return the class name of schemes.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value character(len=99)

    Class name.

procedure, public, pass(self) :: description

Return informative integrator description.

  • private pure function description(self, prefix) result(desc)

    Return informative integrator description.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    character(len=*), intent(in), optional :: prefix

    Prefixing string.

    Return Value character(len=:), allocatable

    Description.

procedure, public, pass(self) :: destroy_abstract

Destroy only members of abstract integrator_object type.

procedure(has_fast_mode_interface), public, deferred, pass(self) :: has_fast_mode

Return .true. if the integrator class has fast mode integrate.

  • elemental function has_fast_mode_interface(self) result(has_fast_mode) Prototype

    Return .true. if the integrator class has fast mode integrate.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value logical

    Inquire result.

procedure(assignment_interface), public, deferred, pass(lhs) :: integr_assign_integr

Operator =.

procedure(is_multistagestep_interface), public, deferred, pass(self) :: is_multistage

Return .true. for multistage integrator.

  • elemental function is_multistagestep_interface(self) result(is_multistagestep) Prototype

    Return .true. for multistage or multistep integrator.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value logical

    Inquire result.

procedure(is_multistagestep_interface), public, deferred, pass(self) :: is_multistep

Return .true. for multistep integrator.

  • elemental function is_multistagestep_interface(self) result(is_multistagestep) Prototype

    Return .true. for multistage or multistep integrator.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value logical

    Inquire result.

procedure(is_supported_interface), public, deferred, pass(self) :: is_supported

Return .true. if the integrator class support the given scheme.

  • elemental function is_supported_interface(self, scheme) result(is_supported) Prototype

    Return .true. if the integrator class support the given scheme.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    character(len=*), intent(in) :: scheme

    Queried scheme.

    Return Value logical

    Inquire result.

procedure(stagesteps_number_interface), public, deferred, pass(self) :: stages_number

Return number of stages used.

  • elemental function stagesteps_number_interface(self) result(stagesteps_number) Prototype

    Return number of stages/steps used.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value integer(kind=I_P)

    Inquire result.

procedure(stagesteps_number_interface), public, deferred, pass(self) :: steps_number

Return number of steps used.

  • elemental function stagesteps_number_interface(self) result(stagesteps_number) Prototype

    Return number of stages/steps used.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value integer(kind=I_P)

    Inquire result.

procedure(supported_schemes_interface), public, deferred, pass(self) :: supported_schemes

Return the list of supported schemes.

  • pure function supported_schemes_interface(self) result(schemes) Prototype

    Return the list of supported schemes.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(in) :: self

    Integrator.

    Return Value character(len=99), allocatable, (:)

    Queried scheme.

procedure, public, pass(self) :: trigger_error

Trigger an error.

  • private subroutine trigger_error(self, error, error_message, is_severe)

    Check for error occurencies.

    Arguments

    Type IntentOptional AttributesName
    class(integrator_object), intent(inout) :: self

    Integrator.

    integer(kind=I_P), intent(in) :: error

    Error status code.

    character(len=*), intent(in), optional :: error_message

    Error message, hopefully meaningful.

    logical, intent(in), optional :: is_severe

    Flag to activate severe faliure, namely errors trigger a stop.

Source Code

type, abstract :: integrator_object
  !< Abstract type of FOODIE ODE integrators.
  character(len=:), allocatable :: description_  !< Informative description of the integrator.
  integer(I_P)                  :: error=0       !< Error status code.
  character(len=:), allocatable :: error_message !< Error message, hopefully meaningful.
  contains
    ! public methods
    procedure, pass(lhs)  :: assign_abstract  !< Assign ony members of abstract [[integrator_object]] type.
    procedure, pass(self) :: check_error      !< Check for error occurrencies.
    procedure, pass(self) :: description      !< Return informative integrator description.
    procedure, pass(self) :: destroy_abstract !< Destroy only members of abstract [[integrator_object]] type.
    procedure, pass(self) :: trigger_error    !< Trigger an error.
    ! deferred methods
    procedure(class_name_interface),        pass(self), deferred :: class_name           !< Return the class name of schemes.
    procedure(has_fast_mode_interface),     pass(self), deferred :: has_fast_mode        !< Return .true. if the integrator class
                                                                                         !< has *fast mode* integrate.
    procedure(assignment_interface),        pass(lhs),  deferred :: integr_assign_integr !< Operator `=`.
    procedure(is_multistagestep_interface), pass(self), deferred :: is_multistage        !< Return .true. for multistage integrator.
    procedure(is_multistagestep_interface), pass(self), deferred :: is_multistep         !< Return .true. for multistep integrator.
    procedure(is_supported_interface),      pass(self), deferred :: is_supported         !< Return .true. if the integrator class
                                                                                         !< support the given scheme.
    procedure(stagesteps_number_interface), pass(self), deferred :: stages_number        !< Return number of stages used.
    procedure(stagesteps_number_interface), pass(self), deferred :: steps_number         !< Return number of steps used.
    procedure(supported_schemes_interface), pass(self), deferred :: supported_schemes    !< Return the list of supported schemes.
    ! operators
    generic :: assignment(=) => integr_assign_integr !< Overload `=`.
endtype integrator_object