ComponentSpecParser.F90 Source File


This file depends on

sourcefile~~componentspecparser.f90~~EfferentGraph sourcefile~componentspecparser.f90 ComponentSpecParser.F90 sourcefile~childspec.f90 ChildSpec.F90 sourcefile~componentspecparser.f90->sourcefile~childspec.f90 sourcefile~childspecmap.f90 ChildSpecMap.F90 sourcefile~componentspecparser.f90->sourcefile~childspecmap.f90 sourcefile~componentspec.f90 ComponentSpec.F90 sourcefile~componentspecparser.f90->sourcefile~componentspec.f90 sourcefile~connection.f90 Connection.F90 sourcefile~componentspecparser.f90->sourcefile~connection.f90 sourcefile~connectionpt.f90 ConnectionPt.F90 sourcefile~componentspecparser.f90->sourcefile~connectionpt.f90 sourcefile~connectionvector.f90 ConnectionVector.F90 sourcefile~componentspecparser.f90->sourcefile~connectionvector.f90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~componentspecparser.f90->sourcefile~errorhandling.f90 sourcefile~esmf_utilities.f90 ESMF_Utilities.F90 sourcefile~componentspecparser.f90->sourcefile~esmf_utilities.f90 sourcefile~geom_mgr.f90 geom_mgr.F90 sourcefile~componentspecparser.f90->sourcefile~geom_mgr.f90 sourcefile~geometryspec.f90 GeometrySpec.F90 sourcefile~componentspecparser.f90->sourcefile~geometryspec.f90 sourcefile~matchconnection.f90 MatchConnection.F90 sourcefile~componentspecparser.f90->sourcefile~matchconnection.f90 sourcefile~reexportconnection.f90 ReexportConnection.F90 sourcefile~componentspecparser.f90->sourcefile~reexportconnection.f90 sourcefile~simpleconnection.f90 SimpleConnection.F90 sourcefile~componentspecparser.f90->sourcefile~simpleconnection.f90 sourcefile~stateitem.f90 StateItem.F90 sourcefile~componentspecparser.f90->sourcefile~stateitem.f90 sourcefile~ungriddeddim.f90 UngriddedDim.F90 sourcefile~componentspecparser.f90->sourcefile~ungriddeddim.f90 sourcefile~ungriddeddims.f90 UngriddedDims.F90 sourcefile~componentspecparser.f90->sourcefile~ungriddeddims.f90 sourcefile~usersetservices.f90 UserSetServices.F90 sourcefile~componentspecparser.f90->sourcefile~usersetservices.f90 sourcefile~variablespec.f90 VariableSpec.F90 sourcefile~componentspecparser.f90->sourcefile~variablespec.f90 sourcefile~variablespecvector.f90 VariableSpecVector.F90 sourcefile~componentspecparser.f90->sourcefile~variablespecvector.f90 sourcefile~verticaldimspec.f90 VerticalDimSpec.F90 sourcefile~componentspecparser.f90->sourcefile~verticaldimspec.f90 sourcefile~virtualconnectionpt.f90 VirtualConnectionPt.F90 sourcefile~componentspecparser.f90->sourcefile~virtualconnectionpt.f90

Files dependent on this one

sourcefile~~componentspecparser.f90~~AfferentGraph sourcefile~componentspecparser.f90 ComponentSpecParser.F90 sourcefile~add_child_by_name.f90 add_child_by_name.F90 sourcefile~add_child_by_name.f90->sourcefile~componentspecparser.f90 sourcefile~parse_child.f90 parse_child.F90 sourcefile~parse_child.f90->sourcefile~componentspecparser.f90 sourcefile~parse_children.f90 parse_children.F90 sourcefile~parse_children.f90->sourcefile~componentspecparser.f90 sourcefile~parse_component_spec.f90 parse_component_spec.F90 sourcefile~parse_component_spec.f90->sourcefile~componentspecparser.f90 sourcefile~parse_connections.f90 parse_connections.F90 sourcefile~parse_connections.f90->sourcefile~componentspecparser.f90 sourcefile~parse_geometry_spec.f90 parse_geometry_spec.F90 sourcefile~parse_geometry_spec.f90->sourcefile~componentspecparser.f90 sourcefile~parse_setservices.f90 parse_setservices.F90 sourcefile~parse_setservices.f90->sourcefile~componentspecparser.f90 sourcefile~parse_var_specs.f90 parse_var_specs.F90 sourcefile~parse_var_specs.f90->sourcefile~componentspecparser.f90 sourcefile~setservices.f90 SetServices.F90 sourcefile~setservices.f90->sourcefile~componentspecparser.f90 sourcefile~test_componentspecparser.pf Test_ComponentSpecParser.pf sourcefile~test_componentspecparser.pf->sourcefile~componentspecparser.f90

Source Code

#include "MAPL_ErrLog.h"

module mapl3g_ComponentSpecParser
   use mapl3g_ComponentSpec
   use mapl3g_ChildSpec
   use mapl3g_ChildSpecMap
   use mapl3g_UserSetServices
   use mapl_ErrorHandling
   use mapl3g_VariableSpec
   use mapl3g_Connection
   use mapl3g_ConnectionPt
   use mapl3g_VirtualConnectionPt
   use mapl3g_VariableSpecVector
   use mapl3g_SimpleConnection
   use mapl3g_MatchConnection
   use mapl3g_ReexportConnection
   use mapl3g_ConnectionVector
   use mapl3g_VerticalDimSpec
   use mapl3g_UngriddedDims
   use mapl3g_UngriddedDim
   use mapl3g_GeometrySpec
   use mapl3g_geom_mgr
   use mapl3g_Stateitem
   use mapl3g_ESMF_Utilities
   use mapl3g_UserSetServices
   use gftl2_StringVector, only: StringVector
   use esmf
   implicit none
   private

   !
   public :: parse_component_spec

   ! The following interfaces are public only for testing purposes.
   public :: parse_children
   public :: parse_child
   public :: parse_SetServices
   public :: parse_geometry_spec

!!$   public :: parse_ChildSpecMap
!!$   public :: parse_ChildSpec

   character(*), parameter :: MAPL_SECTION = 'mapl'
   character(*), parameter :: COMPONENT_GEOMETRY_SECTION = 'geometry'
   character(*), parameter :: COMPONENT_ESMF_GEOM_SECTION = 'esmf_geom'
   character(*), parameter :: COMPONENT_VERTICAL_GRID_SECTION = 'vertical_grid'
   character(*), parameter :: COMPONENT_VERTGEOM_SECTION = 'vert_geom'
   character(*), parameter :: COMPONENT_STATES_SECTION = 'states'
   character(*), parameter :: COMPONENT_IMPORT_STATE_SECTION = 'import'
   character(*), parameter :: COMPONENT_EXPORT_STATE_SECTION = 'export'
   character(*), parameter :: COMPONENT_INTERNAL_STATE_SECTION = 'internal'
   character(*), parameter :: COMPONENT_CONNECTIONS_SECTION = 'connections'
   character(*), parameter :: COMPONENT_CHILDREN_SECTION = 'children'

   character(*), parameter :: KEY_DEFAULT_VALUE = 'default_value'
   character(*), parameter :: KEY_UNGRIDDED_DIMS = 'ungridded_dims'
   character(*), parameter :: KEY_UNGRIDDED_DIM_NAME = 'dim_name'
   character(*), parameter :: KEY_UNGRIDDED_DIM_UNITS = 'dim_units'
   character(*), parameter :: KEY_UNGRIDDED_DIM_EXTENT = 'extent'
   character(*), parameter :: KEY_UNGRIDDED_DIM_COORDINATES = 'coordinates'
   character(*), parameter :: KEY_VERTICAL_DIM_SPEC = 'vertical_dim_spec'

   !>
   ! Submodule declarations
   INTERFACE
      module function parse_component_spec(hconfig, rc) result(spec)
         type(ComponentSpec) :: spec
         type(ESMF_HConfig), target, intent(inout) :: hconfig
         integer, optional, intent(out) :: rc
      end function parse_component_spec

      module function parse_geometry_spec(mapl_cfg, rc) result(geometry_spec)
         type(GeometrySpec) :: geometry_spec
         type(ESMF_HConfig), intent(in) :: mapl_cfg
         integer, optional, intent(out) :: rc
      end function parse_geometry_spec

      module function parse_var_specs(hconfig, rc) result(var_specs)
         type(VariableSpecVector) :: var_specs
         type(ESMF_HConfig), optional, intent(in) :: hconfig
         integer, optional, intent(out) :: rc
      end function parse_var_specs

      module function parse_connections(hconfig, rc) result(connections)
         type(ConnectionVector) :: connections
         type(ESMF_HConfig), optional, intent(in) :: hconfig
         integer, optional, intent(out) :: rc
      end function parse_connections

      module function parse_setservices(config, rc) result(user_ss)
         type(DSOSetServices) :: user_ss
         type(ESMF_HConfig), target, intent(in) :: config
         integer, optional, intent(out) :: rc
      end function parse_setservices

      module function parse_children(hconfig, rc) result(children)
         type(ChildSpecMap) :: children
         type(ESMF_HConfig), intent(in) :: hconfig
         integer, optional, intent(out) :: rc
      end function parse_children

      module function parse_child(hconfig, rc) result(child)
         type(ChildSpec) :: child
         type(ESMF_HConfig), intent(in) :: hconfig
         integer, optional, intent(out) :: rc
      end function parse_child

   END INTERFACE

end module mapl3g_ComponentSpecParser