solver_obj Derived Type

type, public, abstract :: solver_obj

Base solver object


Inherits

type~~solver_obj~~InheritsGraph type~solver_obj solver_obj type~parallel_obj parallel_obj type~solver_obj->type~parallel_obj parallel type~parser_obj parser_obj type~solver_obj->type~parser_obj parser type~timer_obj timer_obj type~solver_obj->type~timer_obj timer MPI_Datatype MPI_Datatype type~parallel_obj->MPI_Datatype REAL_SP, REAL_DP, REAL_WP, COMPLEX_SP, COMPLEX_DP, COMPLEX_WP, INTEGER, INT8, LOGICAL type~communicators communicators type~parallel_obj->type~communicators comm type~patch patch type~parallel_obj->type~patch rank type~entry_obj entry_obj type~parser_obj->type~entry_obj entries type~timer_obj->type~parallel_obj parallel type~timer_obj->type~parser_obj parser type~hashtbl_obj hashtbl_obj type~timer_obj->type~hashtbl_obj tbl MPI_Comm MPI_Comm type~communicators->MPI_Comm w, g type~sllist_obj sllist_obj type~hashtbl_obj->type~sllist_obj vec type~sllist_obj->type~sllist_obj child

Inherited by

type~~solver_obj~~InheritedByGraph type~solver_obj solver_obj type~cdifs_obj cdifs_obj type~cdifs_obj->type~solver_obj type~grans_obj grans_obj type~grans_obj->type~solver_obj

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: name

Solver's name.

type(parallel_obj), public, pointer :: parallel => null()

Associated parallel structure

type(parser_obj), public, pointer :: parser => null()

Associated parser

type(timer_obj), public, pointer :: timer => null()

Associated timer


Type-Bound Procedures

procedure(solver_Advance), public, deferred :: AdvanceSolution

  • impure subroutine solver_Advance(this) Prototype

    Advances solution from t to t+dt.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

procedure(solver_Finalize), public, deferred :: Finalize

  • impure subroutine solver_Finalize(this) Prototype

    Finalizes solver and frees its associated memory.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

procedure(solver_Initialize), public, deferred :: Initialize

  • impure subroutine solver_Initialize(this, timer, parallel, parser) Prototype

    Initializes the solver.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

    type(timer_obj), intent(in), target :: timer

    Timer utility

    type(parallel_obj), intent(in), target :: parallel

    Parallel machinery

    type(parser_obj), intent(in), target :: parser

    Parser for input file

procedure(solver_LinkHDF5Object), public, deferred :: LinkHDF5Object

  • impure subroutine solver_LinkHDF5Object(this, hdf5) Prototype

    Links an HDF5 object to this solver.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this
    type(hdf5_obj), intent(in), target :: hdf5

    HDF5 Object

procedure(solver_Monitor), public, deferred :: Monitor

  • impure subroutine solver_Monitor(this) Prototype

    Computes and write monitored values.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

procedure(solver_Prepare), public, deferred :: PrepareSolver

  • impure subroutine solver_Prepare(this) Prototype

    Prepares data before run.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

procedure(solver_Output), public, deferred :: WriteOutputData

  • impure subroutine solver_Output(this) Prototype

    Writes single precision data needed for visualizations.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

procedure(solver_Restart), public, deferred :: WriteRestartData

  • impure subroutine solver_Restart(this) Prototype

    Writes simulation data to disk required for restarts.

    Arguments

    Type IntentOptional Attributes Name
    class(solver_obj), intent(inout) :: this

    A LEAP solver

Source Code

  type,abstract :: solver_obj
    !> Base solver object
    character(len=:), allocatable :: name                                      !! Solver's name.
    type(parser_obj),     pointer :: parser   => null()                        !! Associated parser
    type(parallel_obj),   pointer :: parallel => null()                        !! Associated parallel structure
    type(timer_obj),      pointer :: timer    => null()                        !! Associated timer
    contains
      procedure(solver_initialize), deferred :: Initialize
      procedure(solver_finalize),   deferred :: Finalize
      procedure(solver_prepare),    deferred :: PrepareSolver
      procedure(solver_advance),    deferred :: AdvanceSolution
      procedure(solver_monitor),    deferred :: Monitor
      procedure(solver_restart),    deferred :: WriteRestartData
      procedure(solver_output),     deferred :: WriteOutputData
      procedure(solver_LinkHDF5Object),&
                                    deferred :: LinkHDF5Object
  end type solver_obj