ode_equation Derived Type

type, public, abstract, extends(equation) :: ode_equation

A class derived from equation specific for ODE equations.


Inherits

type~~ode_equation~~InheritsGraph type~ode_equation ode_equation type~equation equation type~ode_equation->type~equation

Inherited by

type~~ode_equation~~InheritedByGraph type~ode_equation ode_equation type~geod_schw geod_schw type~geod_schw->type~ode_equation type~osc_schw osc_schw type~osc_schw->type~ode_equation

Contents

Source Code


Components

TypeVisibility AttributesNameInitial
integer(kind=ip), public :: ntmp

The number of temporary storage variables to allocate.

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

The name of the system of equations

integer(kind=ip), public :: nvars

The number of variables in the ODE system.

real(kind=wp), public, dimension(:), allocatable:: var_data

A 1d array of reals that contains the data variables.

real(kind=wp), public, dimension(:), allocatable:: rhs_data

A 1d array of reals that contains the RHS variables.

real(kind=wp), public, dimension(:,:), allocatable:: tmp_data

A 2d array of reals that contains the temporary variables needed by the time integrator.

integer(kind=ip), public :: io_id

The file unit id used for output for this system of ODE's.


Type-Bound Procedures

procedure(ode_eq_init_interface), public, deferred, pass :: init

The init routine is deferred.

  • subroutine ode_eq_init_interface(this) Prototype

    The interface for the ODE version of init. This interface is consistent with eq_init_interface.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout), target:: this

    The equation that is being initialized.

procedure(ode_eq_rhs_interface), public, deferred, pass :: rhs

The rhs routine is deferred.

  • subroutine ode_eq_rhs_interface(this) Prototype

    The interface for the ODE version of rhs. This interface is consistent with eq_rhs_interface.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The equation for which the RHS is calculated.

procedure, public :: set_to_zero => ode_set_to_zero

The set_to_zero routine is provided by ode_set_to_zero.

  • interface

    public module subroutine ode_set_to_zero(this, dest)

    The interface for the ODE version of set_to_zero. This interface is consistent with eq_set_to_zero_interface.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

    integer(kind=ip), intent(in) :: dest

    Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary).

procedure, public :: update_vars => ode_update_vars

The update_vars routine is provided by ode_update_vars.

  • interface

    public module subroutine ode_update_vars(this, source, dest, source2, scalar, scalar2)

    The interface for the ODE version of update_vars. This interface is consistent with eq_update_vars_interface.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout), target:: this

    The routine is called on this equation.

    integer(kind=ip), intent(in) :: source

    The first source for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary).

    integer(kind=ip), intent(in) :: dest

    The destination for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary).

    integer(kind=ip), intent(in), optional :: source2

    The second source for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary).

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

    The scalar multiplying the first source.

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

    The scalar multiplying the second source.

procedure(ode_eq_save_globals_1), public, deferred, pass :: save_globals_1

The save_globals_1 routine is deferred.

  • subroutine ode_eq_save_globals_1(this) Prototype

    The interface for the ODE version of save_globals_1. This interface is consistent with eq_save_globals_1.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

procedure(ode_eq_save_globals_2), public, deferred, pass :: save_globals_2

The save_globals_2 routine is deferred.

  • subroutine ode_eq_save_globals_2(this) Prototype

    The interface for the ODE version of save_globals_2. This interface is consistent with eq_save_globals_2.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

procedure(ode_eq_load_globals), public, deferred, pass :: load_globals

The load_globals routine is deferred.

  • subroutine ode_eq_load_globals(this) Prototype

    The interface for the ODE version of load_globals. This interface is consistent with eq_load_globals.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

procedure(ode_eq_output), public, deferred, pass :: output

The output routine is deferred.

  • subroutine ode_eq_output(this) Prototype

    The interface for the ODE version of output. This interface is consistent with eq_output.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

procedure, public :: print_data => ode_print_data

The print_data routine is provided by ode_print_data.

  • interface

    public module subroutine ode_print_data(this)

    The interface for the ODE version of print_data. This interface is consistent with eq_print_data.

    Arguments

    Type IntentOptional AttributesName
    class(ode_equation), intent(inout) :: this

    The routine is called on this equation.

Source Code

  type, abstract, extends(equation) :: ode_equation
  !! A class derived from [[equation]] specific for ODE equations.
    integer(ip) :: nvars
    !! The number of variables in the ODE system.
    real(wp), dimension(:), allocatable :: var_data
    !! A 1d array of reals that contains the data variables.
    real(wp), dimension(:), allocatable :: rhs_data
    !! A 1d array of reals that contains the RHS variables.
    real(wp), dimension(:,:), allocatable :: tmp_data
    !! A 2d array of reals that contains the temporary variables needed by the
    !! time integrator.
    integer(ip) :: io_id
    !! The file unit id used for output for this system of ODE's.
  contains
    procedure (ode_eq_init_interface), deferred, pass :: init
    !! The [[equation:init]] routine is deferred.
    procedure (ode_eq_rhs_interface), deferred, pass :: rhs
    !! The [[equation:rhs]] routine is deferred.
    procedure :: set_to_zero => ode_set_to_zero
    !! The [[equation:set_to_zero]] routine is provided by
    !! [[ode_set_to_zero]].
    procedure :: update_vars => ode_update_vars
    !! The [[equation:update_vars]] routine is provided by
    !! [[ode_update_vars]].
    procedure (ode_eq_save_globals_1), deferred, pass :: save_globals_1
    !! The [[equation:save_globals_1]] routine is deferred.
    procedure (ode_eq_save_globals_2), deferred, pass :: save_globals_2
    !! The [[equation:save_globals_2]] routine is deferred.
    procedure (ode_eq_load_globals), deferred, pass :: load_globals
    !! The [[equation:load_globals]] routine is deferred.
    procedure (ode_eq_output), deferred, pass :: output
    !! The [[equation:output]] routine is deferred.
    procedure :: print_data => ode_print_data
    !! The [[equation:print_data]] routine is provided by [[ode_print_data]].
  end type ode_equation