foodie_integrator_object Module

module~~foodie_integrator_object~~UsesGraph module~foodie_integrator_object foodie_integrator_object penf penf penf->module~foodie_integrator_object iso_fortran_env iso_fortran_env iso_fortran_env->module~foodie_integrator_object
Help

Define the abstract type integrator_object of FOODIE ODE integrators.

Used By

module~~foodie_integrator_object~~UsedByGraph module~foodie_integrator_object foodie_integrator_object module~foodie_integrator_adams_bashforth foodie_integrator_adams_bashforth module~foodie_integrator_object->module~foodie_integrator_adams_bashforth module~foodie_integrator_multistage_multistep_object foodie_integrator_multistage_multistep_object module~foodie_integrator_object->module~foodie_integrator_multistage_multistep_object module~foodie_integrator_backward_differentiation_formula foodie_integrator_backward_differentiation_formula module~foodie_integrator_object->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_lmm_ssp foodie_integrator_lmm_ssp module~foodie_integrator_object->module~foodie_integrator_lmm_ssp module~foodie_integrator_multistep_object foodie_integrator_multistep_object module~foodie_integrator_object->module~foodie_integrator_multistep_object module~foodie_integrator_runge_kutta_emd foodie_integrator_runge_kutta_emd module~foodie_integrator_object->module~foodie_integrator_runge_kutta_emd module~foodie_integrator_adams_bashforth_moulton foodie_integrator_adams_bashforth_moulton module~foodie_integrator_object->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_euler_explicit foodie_integrator_euler_explicit module~foodie_integrator_object->module~foodie_integrator_euler_explicit module~foodie_integrator_adams_moulton foodie_integrator_adams_moulton module~foodie_integrator_object->module~foodie_integrator_adams_moulton module~foodie_integrator_runge_kutta_lssp foodie_integrator_runge_kutta_lssp module~foodie_integrator_object->module~foodie_integrator_runge_kutta_lssp module~foodie_integrator_runge_kutta_ssp foodie_integrator_runge_kutta_ssp module~foodie_integrator_object->module~foodie_integrator_runge_kutta_ssp module~foodie foodie module~foodie_integrator_object->module~foodie module~foodie_integrator_runge_kutta_low_storage foodie_integrator_runge_kutta_low_storage module~foodie_integrator_object->module~foodie_integrator_runge_kutta_low_storage module~foodie_integrator_leapfrog foodie_integrator_leapfrog module~foodie_integrator_object->module~foodie_integrator_leapfrog module~foodie_integrator_ms_runge_kutta_ssp foodie_integrator_ms_runge_kutta_ssp module~foodie_integrator_object->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_integrator_lmm_ssp_vss foodie_integrator_lmm_ssp_vss module~foodie_integrator_object->module~foodie_integrator_lmm_ssp_vss module~foodie_integrator_multistage_object foodie_integrator_multistage_object module~foodie_integrator_object->module~foodie_integrator_multistage_object module~foodie_integrator_adams_bashforth->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_adams_bashforth->module~foodie module~foodie_integrator_multistage_multistep_object->module~foodie module~foodie_integrator_multistage_multistep_object->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_integrator_backward_differentiation_formula->module~foodie module~foodie_integrator_lmm_ssp->module~foodie module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth module~foodie_integrator_multistep_object->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_multistep_object->module~foodie_integrator_adams_moulton module~foodie_integrator_multistep_object->module~foodie module~foodie_integrator_multistep_object->module~foodie_integrator_leapfrog module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp_vss module~foodie_integrator_runge_kutta_emd->module~foodie module~foodie_integrator_adams_bashforth_moulton->module~foodie module~foodie_integrator_euler_explicit->module~foodie module~foodie_integrator_adams_moulton->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_adams_moulton->module~foodie module~foodie_integrator_runge_kutta_lssp->module~foodie module~foodie_integrator_runge_kutta_ssp->module~foodie program~integrate_burgers integrate_burgers module~foodie->program~integrate_burgers program~integrate_lorenz integrate_lorenz module~foodie->program~integrate_lorenz module~type_euler_1d type_euler_1D module~foodie->module~type_euler_1d module~foodie_test_integrand_tester_object foodie_test_integrand_tester_object module~foodie->module~foodie_test_integrand_tester_object module~foodie_test_lcce_test foodie_test_lcce_test module~foodie->module~foodie_test_lcce_test module~type_euler_1d_openmp type_euler_1D_openmp module~foodie->module~type_euler_1d_openmp program~integrate_euler_1d_caf~2 integrate_euler_1D_caf module~foodie->program~integrate_euler_1d_caf~2 module~foodie_test_oscillation_test foodie_test_oscillation_test module~foodie->module~foodie_test_oscillation_test program~integrate_euler_1d integrate_euler_1D module~foodie->program~integrate_euler_1d module~foodie_test_object foodie_test_object module~foodie->module~foodie_test_object module~foodie_test_integrand_oscillation foodie_test_integrand_oscillation module~foodie->module~foodie_test_integrand_oscillation module~foodie_test_integrand_lcce foodie_test_integrand_lcce module~foodie->module~foodie_test_integrand_lcce module~type_euler_1d_caf type_euler_1D_caf module~foodie->module~type_euler_1d_caf module~type_burgers type_burgers module~foodie->module~type_burgers module~foodie_test_integrand_ladvection foodie_test_integrand_ladvection module~foodie->module~foodie_test_integrand_ladvection program~integrate_euler_1d_openmp integrate_euler_1D_openmp module~foodie->program~integrate_euler_1d_openmp module~type_lorenz type_lorenz module~foodie->module~type_lorenz module~foodie_integrator_runge_kutta_low_storage->module~foodie module~foodie_integrator_leapfrog->module~foodie module~foodie_integrator_ms_runge_kutta_ssp->module~foodie module~foodie_integrator_lmm_ssp_vss->module~foodie module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_emd module~foodie_integrator_multistage_object->module~foodie_integrator_euler_explicit module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_lssp module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_ssp module~foodie_integrator_multistage_object->module~foodie module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_low_storage module~type_euler_1d->program~integrate_euler_1d module~foodie_test_integrand_tester_object->module~foodie_test_object module~foodie_test_integrand_tester_object->module~foodie_test_integrand_oscillation module~foodie_test_integrand_tester_object->module~foodie_test_integrand_lcce module~foodie_test_integrand_tester_object->module~foodie_test_integrand_ladvection program~foodie_test_lcce foodie_test_lcce module~foodie_test_lcce_test->program~foodie_test_lcce module~type_euler_1d_openmp->program~integrate_euler_1d_openmp program~foodie_test_oscillation foodie_test_oscillation module~foodie_test_oscillation_test->program~foodie_test_oscillation program~foodie_tester foodie_tester module~foodie_test_object->program~foodie_tester module~foodie_test_integrand_oscillation->module~foodie_test_oscillation_test module~foodie_test_integrand_oscillation->module~foodie_test_object module~foodie_test_integrand_lcce->module~foodie_test_lcce_test module~foodie_test_integrand_lcce->module~foodie_test_object module~type_euler_1d_caf->program~integrate_euler_1d_caf~2 module~type_burgers->program~integrate_burgers module~foodie_test_integrand_ladvection->module~foodie_test_object module~type_lorenz->program~integrate_lorenz
Help


Abstract Interfaces

abstract interface

Abstract interfaces of deferred methods of integrator_object.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    Return the class name of schemes.

    Arguments

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

    Integrator.

    Return Value character(len=99)

    Class name.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    Return a pretty-formatted object 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.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    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.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    Return .true. for multistage or multistep integrator.

    Arguments

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

    Integrator.

    Return Value logical

    Inquire result.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    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.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    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.

abstract interface

Abstract interfaces of deferred methods of integrator_object.

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

    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.


Derived Types

type, public, abstract :: integrator_object

Abstract type of FOODIE ODE integrators.

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.

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

Return the class name of schemes.

procedure, public, pass(self) :: description

Return informative integrator description.

procedure, public, pass(self) :: destroy_abstract

Destroy only members of abstract integrator_object type.

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

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

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

Operator =.

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

Return .true. for multistage integrator.

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

Return .true. for multistep integrator.

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

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

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

Return number of stages used.

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

Return number of steps used.

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

Return the list of supported schemes.

procedure, public, pass(self) :: trigger_error

Trigger an error.


Functions

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.


Subroutines

private subroutine assign_abstract(lhs, rhs)

Assign ony members of abstract integrator_object type.

Arguments

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

Left hand side.

class(integrator_object), intent(in) :: rhs

Right hand side.

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.

private elemental subroutine destroy_abstract(self)

Destroy only members of abstract integrator_object type.

Arguments

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

Integrator.

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.