StateItemExtension Derived Type

type, public :: StateItemExtension


Inherits

type~~stateitemextension~~InheritsGraph type~stateitemextension StateItemExtension type~componentdriver ComponentDriver type~stateitemextension->type~componentdriver producer type~componentdrivervector ComponentDriverVector type~stateitemextension->type~componentdrivervector consumers type~stateitemspec StateItemSpec type~stateitemextension->type~stateitemspec spec type~vector_wrapper~20 vector_wrapper type~componentdrivervector->type~vector_wrapper~20 elements StringVector StringVector type~stateitemspec->StringVector raw_dependencies type~actualptvector ActualPtVector type~stateitemspec->type~actualptvector dependencies type~aspectcollection AspectCollection type~stateitemspec->type~aspectcollection aspects 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~vector_wrapper~20->type~componentdriver item type~attributesaspect->StringVector attribute_names type~stateitemaspect StateItemAspect type~attributesaspect->type~stateitemaspect ESMF_TimeInterval ESMF_TimeInterval type~frequencyaspect->ESMF_TimeInterval timestep_ type~frequencyaspect->type~stateitemaspect ESMF_Geom ESMF_Geom type~geomaspect->ESMF_Geom geom EsmfRegridderParam EsmfRegridderParam type~geomaspect->EsmfRegridderParam regridder_param type~horizontaldimsspec HorizontalDimsSpec type~geomaspect->type~horizontaldimsspec horizontal_dims_spec type~geomaspect->type~stateitemaspect ESMF_TypeKind_Flag ESMF_TypeKind_Flag type~typekindaspect->ESMF_TypeKind_Flag typekind type~typekindaspect->type~stateitemaspect type~ungriddeddimsaspect->type~stateitemaspect type~ungriddeddims UngriddedDims type~ungriddeddimsaspect->type~ungriddeddims ungridded_dims type~unitsaspect->type~stateitemaspect type~actualconnectionpt ActualConnectionPt type~vector_wrapper~10->type~actualconnectionpt item type~verticalgridaspect->ESMF_Geom geom type~verticalgridaspect->ESMF_TypeKind_Flag typekind type~verticalgridaspect->type~stateitemaspect type~verticaldimspec VerticalDimSpec type~verticalgridaspect->type~verticaldimspec vertical_dim_spec type~verticalgrid VerticalGrid type~verticalgridaspect->type~verticalgrid vertical_grid type~verticalregridmethod VerticalRegridMethod type~verticalgridaspect->type~verticalregridmethod regrid_method

Inherited by

type~~stateitemextension~~InheritedByGraph type~stateitemextension StateItemExtension type~stateitemextensionptr StateItemExtensionPtr type~stateitemextensionptr->type~stateitemextension ptr type~vector_wrapper~24 vector_wrapper type~vector_wrapper~24->type~stateitemextension item type~stateitemextensionvector StateItemExtensionVector type~stateitemextensionvector->type~vector_wrapper~24 elements type~stateitemextensionvectoriterator StateItemExtensionVectorIterator type~stateitemextensionvectoriterator->type~vector_wrapper~24 elements type~vector_wrapper~23 vector_wrapper type~vector_wrapper~23->type~stateitemextensionptr item type~stateitemextensionptrvector StateItemExtensionPtrVector type~stateitemextensionptrvector->type~vector_wrapper~23 elements type~stateitemextensionptrvectoriterator StateItemExtensionPtrVectorIterator type~stateitemextensionptrvectoriterator->type~vector_wrapper~23 elements type~stateregistry StateRegistry type~stateregistry->type~stateitemextensionvector owned_items type~vectorriterator~19 VectorRIterator type~vectorriterator~19->type~stateitemextensionvectoriterator iterator type~extensionfamily ExtensionFamily type~extensionfamily->type~stateitemextensionptrvector extensions type~modelverticalgrid ModelVerticalGrid type~modelverticalgrid->type~stateregistry registry type~outermetacomponent OuterMetaComponent type~outermetacomponent->type~stateregistry registry type~servicespec ServiceSpec type~servicespec->type~stateregistry registry type~vectorriterator~18 VectorRIterator type~vectorriterator~18->type~stateitemextensionptrvectoriterator iterator

Constructor

public interface StateItemExtension

  • private function new_StateItemExtension_spec(spec) result(ext)

    Arguments

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

    Return Value type(StateItemExtension)


Type-Bound Procedures

procedure, public :: add_consumer

procedure, public :: get_consumers

  • private function get_consumers(this) result(consumers)

    Arguments

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

    Return Value type(ComponentDriverVector), pointer

procedure, public :: get_producer

  • private function get_producer(this) result(producer)

    Arguments

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

    Return Value class(ComponentDriver), pointer

procedure, public :: get_spec

  • private function get_spec(this) result(spec)

    Arguments

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

    Return Value class(StateItemSpec), pointer

procedure, public :: has_consumers

  • private function has_consumers(this)

    Arguments

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

    Return Value logical

procedure, public :: has_producer

  • private function has_producer(this)

    Arguments

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

    Return Value logical

procedure, public :: make_extension

  • private recursive function make_extension(this, goal, rc) result(extension)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemExtension), intent(inout), target :: this
    class(StateItemSpec), intent(in), target :: goal
    integer, intent(out) :: rc

    Return Value type(StateItemExtension)

procedure, public :: set_producer

  • private subroutine set_producer(this, producer, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateItemExtension), intent(inout) :: this
    class(ComponentDriver), intent(in), pointer :: producer
    integer, intent(out), optional :: rc

Source Code

   type StateItemExtension
      private
      class(StateItemSpec), allocatable :: spec
      type(ComponentDriverVector) :: consumers ! couplers that depend on spec
      class(ComponentDriver), pointer :: producer => null() ! coupler that computes spec
   contains
      procedure :: get_spec

      procedure :: has_producer
      procedure :: get_producer
      procedure :: set_producer

      procedure :: has_consumers
      procedure :: add_consumer
      procedure :: get_consumers

      procedure :: make_extension
   end type StateItemExtension