equations Module

Module that defines the abstract interface of an equation class.


Uses

  • module~~equations~~UsesGraph module~equations equations module~kinds kinds module~equations->module~kinds

Used by

  • module~~equations~~UsedByGraph module~equations equations module~ode_equations ode_equations module~ode_equations->module~equations module~analytic_circular_orbit analytic_circular_orbit module~analytic_circular_orbit->module~equations module~method_of_lines method_of_lines module~method_of_lines->module~equations module~pde_equations pde_equations module~pde_equations->module~equations module~analytic_circular_orbit_implementation analytic_circular_orbit_implementation module~analytic_circular_orbit_implementation->module~analytic_circular_orbit module~rk4_integrator rk4_integrator module~rk4_integrator->module~method_of_lines program~test test program~test->module~analytic_circular_orbit module~osculating_schwarzschild osculating_schwarzschild program~test->module~osculating_schwarzschild module~geodesic_schwarzschild geodesic_schwarzschild program~test->module~geodesic_schwarzschild module~scalar_schw scalar_schw program~test->module~scalar_schw module~all_integrators all_integrators program~test->module~all_integrators module~self_force_observer self_force_observer program~test->module~self_force_observer module~ode_equations_implementation ode_equations_implementation module~ode_equations_implementation->module~ode_equations module~pde_equations_implementation pde_equations_implementation module~pde_equations_implementation->module~pde_equations module~rk5_integrator rk5_integrator module~rk5_integrator->module~method_of_lines module~osculating_schwarzschild->module~ode_equations module~geodesic_schwarzschild->module~ode_equations module~abmv5_integrator abmv5_integrator module~abmv5_integrator->module~method_of_lines module~scalar_schw->module~pde_equations module~rk5_implementation rk5_implementation module~rk5_implementation->module~rk5_integrator module~all_integrators->module~rk4_integrator module~all_integrators->module~rk5_integrator module~all_integrators->module~abmv5_integrator module~abmv5_implementation abmv5_implementation module~abmv5_implementation->module~abmv5_integrator module~scalar_schw_implementation scalar_schw_implementation module~scalar_schw_implementation->module~scalar_schw module~osculating_schwarzschild_implementation osculating_schwarzschild_implementation module~osculating_schwarzschild_implementation->module~osculating_schwarzschild proc~scal_schw_eff_init scal_schw_eff_init proc~scal_schw_eff_init->module~scalar_schw proc~abmv5_init abmv5_init proc~abmv5_init->module~rk4_integrator module~self_force_observer->module~scalar_schw module~geodesic_schwarzschild_implementation geodesic_schwarzschild_implementation module~geodesic_schwarzschild_implementation->module~geodesic_schwarzschild module~rk4_implementation rk4_implementation module~rk4_implementation->module~rk4_integrator proc~osc_schw_init osc_schw_init proc~osc_schw_init->module~all_integrators proc~geod_schw_init geod_schw_init proc~geod_schw_init->module~all_integrators proc~scal_schw_save_globals_2 scal_schw_save_globals_2 proc~scal_schw_save_globals_2->module~self_force_observer proc~scal_schw_init scal_schw_init proc~scal_schw_init->module~all_integrators module~self_force_observer_implementation self_force_observer_implementation module~self_force_observer_implementation->module~self_force_observer

Contents


Abstract Interfaces

abstract interface

  • public subroutine eq_init_interface(this)

    The initialization routine. There are no additional input arguments. The routine gets it's input from the run-time parameters.

    Arguments

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

    The equation that is being initialized.

abstract interface

  • public subroutine eq_rhs_interface(this)

    The RHS routine that sets the RHS variables from the current state of the system.

    Arguments

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

    The equation for which the RHS is calculated.

abstract interface

  • public subroutine eq_set_to_zero_interface(this, dest)

    Set either the main, RHS or temporary variables to zero.

    Arguments

    Type IntentOptional AttributesName
    class(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).

abstract interface

  • public subroutine eq_update_vars_interface(this, source, dest, source2, scalar, scalar2)

    The routine that updates the variables defined in an equation. This is used to make the time integrator agnostic to how storage for the variables in the system of equations are set up.

    Read more…

    Arguments

    Type IntentOptional AttributesName
    class(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.

abstract interface

  • public subroutine eq_save_globals_1(this)

    The routine where the equation can set global variables (for communication with other equations) for the first time.

    Arguments

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

    The routine is called on this equation.

abstract interface

  • public subroutine eq_save_globals_2(this)

    The routine where the equation can set global variables (for communication with other equations) for the first time.

    Arguments

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

    The routine is called on this equation.

abstract interface

  • public subroutine eq_load_globals(this)

    The routine where the equation can get global variables (for communication with other equations).

    Arguments

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

    The routine is called on this equation.

abstract interface

  • public subroutine eq_output(this)

    The routine where output of the equation's variables is done.

    Arguments

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

    The routine is called on this equation.

abstract interface

  • public subroutine eq_print_data(this)

    The routine where debug output (to stdout) of the equation's variables is done.

    Arguments

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

    The routine is called on this equation.


Derived Types

type, public, abstract :: equation

An abstract equation interface.

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

Type-Bound Procedures

procedure(eq_init_interface), public, pass :: init

The initialization routine. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_rhs_interface), public, pass :: rhs

The right hand side (RHS) routine. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_set_to_zero_interface), public, pass :: set_to_zero

Routine to set the main, rhs or temporary variables to zero. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_update_vars_interface), public, pass :: update_vars

Routine to update the main or temporary variables. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_save_globals_1), public, pass :: save_globals_1

First of 2 routines to set global variables to interact with other equation systems. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_save_globals_2), public, pass :: save_globals_2

Second of 2 routines to set global variables to interact with other equation systems. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_load_globals), public, pass :: load_globals

Routine to get global variables from other equation systems. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_output), public, pass :: output

Routine to perform output of the equation systems variables. Implementation is deferred to the derived class that actually implements an equation system.

procedure(eq_print_data), public, pass :: print_data

Routine to perform debug output of the equation systems variables. Implementation is deferred to the derived class that actually implements an equation system.

type, public :: equation_pointer

A type with pointer that can point to the equation class and any derived class.

Components

TypeVisibility AttributesNameInitial
class(equation), public, pointer:: p

A pointer to the equation class.