OuterMetaComponent Derived Type

type, public :: OuterMetaComponent


Inherits

type~~outermetacomponent~~InheritsGraph type~outermetacomponent OuterMetaComponent ESMF_Geom ESMF_Geom type~outermetacomponent->ESMF_Geom geom ESMF_GridComp ESMF_GridComp type~outermetacomponent->ESMF_GridComp self_gridcomp ESMF_HConfig ESMF_HConfig type~outermetacomponent->ESMF_HConfig hconfig type~abstractusersetservices AbstractUserSetServices type~outermetacomponent->type~abstractusersetservices user_setservices type~componentspec ComponentSpec type~outermetacomponent->type~componentspec component_spec type~griddedcomponentdriver GriddedComponentDriver type~outermetacomponent->type~griddedcomponentdriver user_gc_driver type~griddedcomponentdrivermap GriddedComponentDriverMap type~outermetacomponent->type~griddedcomponentdrivermap children type~innermetacomponent InnerMetaComponent type~outermetacomponent->type~innermetacomponent inner_meta type~logger Logger type~outermetacomponent->type~logger lgr type~methodphasesmap MethodPhasesMap type~outermetacomponent->type~methodphasesmap user_phases_map type~stateregistry StateRegistry type~outermetacomponent->type~stateregistry registry type~verticalgrid VerticalGrid type~outermetacomponent->type~verticalgrid vertical_grid type~componentspec->ESMF_HConfig geom_hconfig type~childspecmap ChildSpecMap type~componentspec->type~childspecmap children type~connectionvector ConnectionVector type~componentspec->type~connectionvector connections type~geometryspec GeometrySpec type~componentspec->type~geometryspec geometry_spec type~variablespecvector VariableSpecVector type~componentspec->type~variablespecvector var_specs type~griddedcomponentdriver->ESMF_GridComp gridcomp ESMF_Clock ESMF_Clock type~griddedcomponentdriver->ESMF_Clock clock type~componentdriver ComponentDriver type~griddedcomponentdriver->type~componentdriver type~componentdrivervector ComponentDriverVector type~griddedcomponentdriver->type~componentdrivervector export_couplers, import_couplers type~multistate MultiState type~griddedcomponentdriver->type~multistate states type~omap_map omap_Map type~griddedcomponentdrivermap->type~omap_map map type~omap_vector omap_Vector type~griddedcomponentdrivermap->type~omap_vector ordered_keys type~innermetacomponent->ESMF_GridComp outer_gc, self_gc type~genericgrid GenericGrid type~innermetacomponent->type~genericgrid generic_grid type~map_set~2 map_Set type~methodphasesmap->type~map_set~2 tree type~abstractregistry AbstractRegistry type~stateregistry->type~abstractregistry type~registryptrmap RegistryPtrMap type~stateregistry->type~registryptrmap subregistries type~stateitemextensionvector StateItemExtensionVector type~stateregistry->type~stateitemextensionvector owned_items type~virtualptfamilymap VirtualPtFamilyMap type~stateregistry->type~virtualptfamilymap family_map

Constructor

public interface OuterMetaComponent

  • private interface new_outer_meta()

    Arguments

    None

Type-Bound Procedures

generic, public :: add_child => add_child_by_name

  • private interface add_child_by_name()

    Arguments

    None

procedure, public :: connect_all

  • interface

    private module subroutine connect_all(this, src_comp, dst_comp, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    character(len=*), intent(in) :: src_comp
    character(len=*), intent(in) :: dst_comp
    integer, intent(out), optional :: rc

procedure, public :: finalize

  • interface

    private recursive module subroutine finalize(this, importState, exportState, clock, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    type(ESMF_State) :: importState
    type(ESMF_State) :: exportState
    type(ESMF_Clock) :: clock
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

generic, public :: get_child => get_child_by_name

  • private interface get_child_by_name()

    Arguments

    None

procedure, public :: get_component_spec

  • interface

    private module function get_component_spec(this) result(component_spec)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in), target :: this

    Return Value type(ComponentSpec), pointer

procedure, public :: get_geom

  • interface

    private module function get_geom(this) result(geom)

    Arguments

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

    Return Value type(ESMF_Geom)

procedure, public :: get_gridcomp

  • interface

    private module function get_gridcomp(this) result(gridcomp)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in) :: this

    Return Value type(ESMF_GridComp)

procedure, public :: get_hconfig

  • interface

    private module function get_hconfig(this) result(hconfig)

    Arguments

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

    Return Value type(ESMF_HConfig)

procedure, public :: get_internal_state

  • interface

    private module function get_internal_state(this) result(internal_state)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in) :: this

    Return Value type(ESMF_State)

procedure, public :: get_lgr

  • interface

    private module function get_lgr(this) result(lgr)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in), target :: this

    Return Value class(Logger), pointer

procedure, public :: get_name

  • interface

    private module function get_name(this, rc) result(name)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in) :: this
    integer, intent(out), optional :: rc

    Return Value character(len=:), allocatable

procedure, public :: get_phases

  • interface

    private module function get_phases(this, method_flag) result(phases)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    type(ESMF_Method_Flag), intent(in) :: method_flag

    Return Value type(StringVector), pointer

procedure, public :: get_registry

  • interface

    private module function get_registry(this) result(registry)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in), target :: this

    Return Value type(StateRegistry), pointer

procedure, public :: get_user_gc_driver

  • interface

    private module function get_user_gc_driver(this) result(user_gc_driver)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(in), target :: this

    Return Value type(GriddedComponentDriver), pointer

procedure, public :: init_meta

  • interface

    private module subroutine init_meta(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    integer, intent(out), optional :: rc

procedure, public :: initialize_advertise

  • interface

    private recursive module subroutine initialize_advertise(this, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: initialize_modify_advertised

  • interface

    private recursive module subroutine initialize_modify_advertised(this, importState, exportState, clock, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    type(ESMF_State) :: importState
    type(ESMF_State) :: exportState
    type(ESMF_Clock) :: clock
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: initialize_modify_advertised2

  • interface

    private recursive module subroutine initialize_modify_advertised2(this, importState, exportState, clock, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    type(ESMF_State) :: importState
    type(ESMF_State) :: exportState
    type(ESMF_Clock) :: clock
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: initialize_realize

  • interface

    private recursive module subroutine initialize_realize(this, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: initialize_user

  • interface

    private recursive module subroutine initialize_user(this, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: read_restart

  • interface

    private recursive module subroutine read_restart(this, importState, exportState, clock, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    type(ESMF_State) :: importState
    type(ESMF_State) :: exportState
    type(ESMF_Clock) :: clock
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

generic, public :: run_child => run_child_by_name

  • private interface run_child_by_name()

    Arguments

    None

generic, public :: run_children => run_children_

  • private interface run_children_()

    Arguments

    None

procedure, public :: run_clock_advance

  • interface

    private recursive module subroutine run_clock_advance(this, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: run_custom

  • interface

    private module subroutine run_custom(this, method_flag, phase_name, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    type(ESMF_Method_Flag), intent(in) :: method_flag
    character(len=*), intent(in) :: phase_name
    integer, intent(out), optional :: rc

procedure, public :: run_user

  • interface

    private recursive module subroutine run_user(this, phase_name, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    character(len=*), intent(in), optional :: phase_name
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: setServices => SetServices_

  • interface

    private recursive module subroutine SetServices_(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    integer, intent(out) :: rc

procedure, public :: set_entry_point

  • interface

    private module subroutine set_entry_point(this, method_flag, userProcedure, unusable, phase_name, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    type(ESMF_Method_Flag), intent(in) :: method_flag
    procedure(I_Run) :: userProcedure
    class(KeywordEnforcer), intent(in), optional :: unusable
    character(len=*), intent(in), optional :: phase_name
    integer, intent(out), optional :: rc

procedure, public :: set_geom

  • interface

    private module subroutine set_geom(this, geom)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    type(ESMF_Geom), intent(in) :: geom

procedure, public :: set_hconfig

  • interface

    private module subroutine set_hconfig(this, hconfig)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    type(ESMF_HConfig), intent(in) :: hconfig

procedure, public :: set_vertical_grid

  • interface

    private module subroutine set_vertical_grid(this, verticaL_grid)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout) :: this
    class(VerticalGrid), intent(in) :: verticaL_grid

procedure, public :: write_restart

  • interface

    private recursive module subroutine write_restart(this, importState, exportState, clock, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(OuterMetaComponent), intent(inout), target :: this
    type(ESMF_State) :: importState
    type(ESMF_State) :: exportState
    type(ESMF_Clock) :: clock
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

Source Code

   type :: OuterMetaComponent
      private

      type(ESMF_GridComp)                         :: self_gridcomp
      type(GriddedComponentDriver)                :: user_gc_driver
      class(AbstractUserSetServices), allocatable :: user_setservices
      type(MethodPhasesMap)                       :: user_phases_map
      type(ESMF_HConfig)                          :: hconfig

      type(ESMF_Geom), allocatable                :: geom
      class(VerticalGrid), allocatable            :: vertical_grid

      type(InnerMetaComponent), allocatable       :: inner_meta

      ! Hierarchy
      type(GriddedComponentDriverMap)             :: children
      type(StateRegistry) :: registry

      class(Logger), pointer :: lgr  => null() ! "MAPL.Generic" // name

      type(ComponentSpec)                         :: component_spec

      integer :: counter

   contains

      procedure :: get_user_gc_driver
      procedure :: set_hconfig
      procedure :: get_hconfig
      procedure :: get_geom
      procedure :: get_registry
      procedure :: get_lgr

      procedure :: get_phases

      ! Generic methods
      procedure :: setServices => setservices_

      procedure :: init_meta  ! object

      procedure :: run_custom
      procedure :: initialize_user
      procedure :: initialize_advertise
      procedure :: initialize_modify_advertised
      procedure :: initialize_modify_advertised2
      procedure :: initialize_realize

      procedure :: run_user
      procedure :: run_clock_advance
      procedure :: finalize
      procedure :: read_restart
      procedure :: write_restart

      ! Hierarchy
      procedure, private :: add_child_by_name
      procedure, private :: get_child_by_name
      procedure, private :: run_child_by_name
      procedure, private :: run_children_

      generic :: add_child => add_child_by_name
      generic :: get_child => get_child_by_name
      generic :: run_child => run_child_by_name
      generic :: run_children => run_children_

      procedure :: set_entry_point
      procedure :: set_geom
      procedure :: get_name
      procedure :: get_gridcomp

      procedure :: get_component_spec
      procedure :: get_internal_state

      procedure :: set_vertical_grid

      procedure :: connect_all

   end type OuterMetaComponent