ServiceSpec Derived Type

type, public, extends(StateItemSpec) :: ServiceSpec


Inherits

type~~servicespec~~InheritsGraph type~servicespec ServiceSpec ESMF_FieldBundle ESMF_FieldBundle type~servicespec->ESMF_FieldBundle payload ESMF_TypeKind_Flag ESMF_TypeKind_Flag type~servicespec->ESMF_TypeKind_Flag typekind type~stateitemspec StateItemSpec type~servicespec->type~stateitemspec type~stateitemspecptr StateItemSpecPtr type~servicespec->type~stateitemspecptr dependency_specs type~stateregistry StateRegistry type~servicespec->type~stateregistry registry type~variablespec VariableSpec type~servicespec->type~variablespec variable_spec StringVector StringVector type~stateitemspec->StringVector raw_dependencies type~actualptvector ActualPtVector type~stateitemspec->type~actualptvector dependencies type~aspectcollection AspectCollection type~stateitemspec->type~aspectcollection aspects type~stateitemspecptr->type~stateitemspec ptr 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 ESMF_StateIntent_Flag ESMF_StateIntent_Flag type~variablespec->ESMF_StateIntent_Flag state_intent ESMF_StateItem_Flag ESMF_StateItem_Flag type~variablespec->ESMF_StateItem_Flag itemtype type~variablespec->StringVector service_items, attributes, dependencies type~variablespec->type~aspectcollection aspects type~horizontaldimsspec HorizontalDimsSpec type~variablespec->type~horizontaldimsspec horizontal_dims_spec type~verticaldimspec VerticalDimSpec type~variablespec->type~verticaldimspec vertical_dim_spec type~vector_wrapper~10 vector_wrapper type~actualptvector->type~vector_wrapper~10 elements type~attributesaspect AttributesAspect type~aspectcollection->type~attributesaspect attributes_aspect type~frequencyaspect FrequencyAspect type~aspectcollection->type~frequencyaspect frequency_aspect type~geomaspect GeomAspect type~aspectcollection->type~geomaspect geom_aspect type~typekindaspect TypekindAspect type~aspectcollection->type~typekindaspect typekind_aspect type~ungriddeddimsaspect UngriddedDimsAspect type~aspectcollection->type~ungriddeddimsaspect ungridded_dims_aspect type~unitsaspect UnitsAspect type~aspectcollection->type~unitsaspect units_aspect type~verticalgridaspect VerticalGridAspect type~aspectcollection->type~verticalgridaspect vertical_grid_aspect type~map_set~5 map_Set type~registryptrmap->type~map_set~5 tree type~vector_wrapper~24 vector_wrapper type~stateitemextensionvector->type~vector_wrapper~24 elements type~map_set~16 map_Set type~virtualptfamilymap->type~map_set~16 tree

Constructor

public interface ServiceSpec

  • private function new_ServiceSpec(variable_spec, registry) result(spec)

    Arguments

    Type IntentOptional Attributes Name
    type(VariableSpec), intent(in) :: variable_spec
    type(StateRegistry), intent(in), pointer :: registry

    Return Value type(ServiceSpec)


Type-Bound Procedures

procedure, public :: add_to_bundle

  • private subroutine add_to_bundle(this, bundle, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ServiceSpec), intent(in) :: this
    type(ESMF_FieldBundle), intent(inout) :: bundle
    integer, intent(out), optional :: rc

procedure, public :: add_to_state

  • private subroutine add_to_state(this, multi_state, actual_pt, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ServiceSpec), intent(in) :: this
    type(MultiState), intent(inout) :: multi_state
    type(ActualConnectionPt), intent(in) :: actual_pt
    integer, intent(out), optional :: rc

procedure, public :: allocate

  • private subroutine allocate(this, rc)

    Arguments

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

procedure, public :: can_connect_to

  • private function can_connect_to(this, src_spec, rc)

    Arguments

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

    Return Value logical

procedure, public :: connect_to

  • private subroutine connect_to(this, src_spec, actual_pt, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ServiceSpec), intent(inout) :: this
    class(StateItemSpec), intent(inout) :: src_spec
    type(ActualConnectionPt), intent(in) :: actual_pt
    integer, intent(out), optional :: rc

procedure, public :: create

  • private subroutine create(this, rc)

    Arguments

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

procedure, public :: destroy

  • private subroutine destroy(this, rc)

    Arguments

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

procedure, public :: get_aspect

  • private function get_aspect(this, name, rc) result(aspect)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(in), target :: this
    character(len=*), intent(in) :: name
    integer, intent(out), optional :: rc

    Return Value class(StateItemAspect), pointer

procedure, public :: get_aspect_order

  • private function get_aspect_order(src_spec, dst_spec) result(names)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(in) :: src_spec
    class(StateItemSpec), intent(in) :: dst_spec

    Return Value type(StringVector)

procedure, public :: get_aspect_priorities

  • private function get_aspect_priorities(src_spec, dst_spec) result(order)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(in) :: src_spec
    class(StateItemSpec), intent(in) :: dst_spec

    Return Value character(len=:), allocatable

procedure, public :: get_aspects

  • private function get_aspects(this) result(aspects)

    Arguments

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

    Return Value type(AspectCollection), pointer

procedure, public :: get_dependencies

  • private function get_dependencies(this) result(dependencies)

    Arguments

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

    Return Value type(ActualPtVector)

procedure, public :: get_raw_dependencies

  • private function get_raw_dependencies(this) result(raw_dependencies)

    Arguments

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

    Return Value type(StringVector)

procedure, public, non_overridable :: is_active

  • private pure function is_active(this)

    Arguments

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

    Return Value logical

procedure, public, non_overridable :: is_allocated

  • private pure function is_allocated(this)

    Arguments

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

    Return Value logical

procedure, public :: make_extension

  • private function make_extension(this, aspect_name, aspect, rc) result(new_spec)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(in) :: this
    character(len=*), intent(in) :: aspect_name
    class(StateItemAspect), intent(in) :: aspect
    integer, intent(out), optional :: rc

    Return Value class(StateItemSpec), allocatable

procedure, public, non_overridable :: set_active

  • private pure subroutine set_active(this, active)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(inout) :: this
    logical, intent(in), optional :: active

procedure, public, non_overridable :: set_allocated

  • private pure subroutine set_allocated(this, allocated)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(inout) :: this
    logical, intent(in), optional :: allocated

procedure, public :: set_aspect

  • private subroutine set_aspect(this, aspect, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(inout), target :: this
    class(StateItemAspect), intent(in) :: aspect
    integer, intent(out), optional :: rc

procedure, public :: set_dependencies

  • private subroutine set_dependencies(this, dependencies)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(inout) :: this
    type(ActualPtVector), intent(in) :: dependencies

procedure, public :: set_geometry

  • private subroutine set_geometry(this, geom, vertical_grid, timestep, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(ServiceSpec), intent(inout) :: this
    type(ESMF_Geom), intent(in), optional :: geom
    class(VerticalGrid), intent(in), optional :: vertical_grid
    type(ESMF_TimeInterval), intent(in), optional :: timestep
    integer, intent(out), optional :: rc

procedure, public :: set_raw_dependencies

  • private subroutine set_raw_dependencies(this, raw_dependencies)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemSpec), intent(inout) :: this
    type(StringVector), intent(in) :: raw_dependencies

generic, public :: write(formatted) => write_formatted

  • private subroutine write_formatted(this, unit, iotype, v_list, iostat, iomsg)

    Arguments

    Type IntentOptional Attributes Name
    class(BracketSpec), intent(in) :: this
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: v_list(:)
    integer, intent(out) :: iostat
    character(len=*), intent(inout) :: iomsg

procedure, public :: write_formatted

$ procedure :: check_complete

  • private subroutine write_formatted(this, unit, iotype, v_list, iostat, iomsg)

    Arguments

    Type IntentOptional Attributes Name
    class(ServiceSpec), intent(in) :: this
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: v_list(:)
    integer, intent(out) :: iostat
    character(len=*), intent(inout) :: iomsg

Source Code

   type, extends(StateItemSpec) :: ServiceSpec
      private
      type(StateRegistry), pointer :: registry
      type(VariableSpec) :: variable_spec
      type(ESMF_Typekind_Flag), allocatable :: typekind
      type(ESMF_FieldBundle) :: payload
      type(StateItemSpecPtr), allocatable :: dependency_specs(:)

   contains
      procedure :: create
      procedure :: destroy
      procedure :: allocate

      procedure :: connect_to
      procedure :: can_connect_to

      procedure :: add_to_state
      procedure :: add_to_bundle
      procedure :: set_geometry

      procedure :: write_formatted
!!$      procedure :: check_complete
   end type ServiceSpec