AbstractFrameworkComponent.F90 Source File


This file depends on

sourcefile~~abstractframeworkcomponent.f90~~EfferentGraph sourcefile~abstractframeworkcomponent.f90 AbstractFrameworkComponent.F90 sourcefile~surrogateframeworkcomponent.f90 SurrogateFrameworkComponent.F90 sourcefile~abstractframeworkcomponent.f90->sourcefile~surrogateframeworkcomponent.f90

Files dependent on this one

sourcefile~~abstractframeworkcomponent.f90~~AfferentGraph sourcefile~abstractframeworkcomponent.f90 AbstractFrameworkComponent.F90 sourcefile~baseframeworkcomponent.f90 BaseFrameworkComponent.F90 sourcefile~baseframeworkcomponent.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~compositecomponent.f90 CompositeComponent.F90 sourcefile~baseframeworkcomponent.f90->sourcefile~compositecomponent.f90 sourcefile~compositecomponent.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~concretecomposite.f90 ConcreteComposite.F90 sourcefile~compositecomponent.f90->sourcefile~concretecomposite.f90 sourcefile~concretecomposite.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~driver.f90~2 driver.F90 sourcefile~driver.f90~2->sourcefile~abstractframeworkcomponent.f90 sourcefile~driver.f90~2->sourcefile~compositecomponent.f90 sourcefile~driver.f90~2->sourcefile~concretecomposite.f90 sourcefile~maplgenericcomponent.f90 MaplGenericComponent.F90 sourcefile~driver.f90~2->sourcefile~maplgenericcomponent.f90 sourcefile~maplgeneric.f90 MaplGeneric.F90 sourcefile~maplgeneric.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~maplgeneric.f90->sourcefile~maplgenericcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~baseframeworkcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~compositecomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~concretecomposite.f90 sourcefile~test_compositecomponent.pf Test_CompositeComponent.pf sourcefile~test_compositecomponent.pf->sourcefile~abstractframeworkcomponent.f90 sourcefile~test_compositecomponent.pf->sourcefile~compositecomponent.f90 sourcefile~test_concretecomposite.pf Test_ConcreteComposite.pf sourcefile~test_concretecomposite.pf->sourcefile~abstractframeworkcomponent.f90 sourcefile~test_concretecomposite.pf->sourcefile~concretecomposite.f90 sourcefile~test_concretecomposite.pf->sourcefile~maplgenericcomponent.f90 sourcefile~mapl_generic.f90~2 MAPL_Generic.F90 sourcefile~mapl_generic.f90~2->sourcefile~concretecomposite.f90 sourcefile~mapl_generic.f90~2->sourcefile~maplgeneric.f90 sourcefile~comp_testing_driver.f90 Comp_Testing_Driver.F90 sourcefile~comp_testing_driver.f90->sourcefile~mapl_generic.f90~2 sourcefile~extdatagridcompmod.f90 ExtDataGridCompMod.F90 sourcefile~extdatagridcompmod.f90->sourcefile~mapl_generic.f90~2 sourcefile~extdatagridcompng.f90 ExtDataGridCompNG.F90 sourcefile~extdatagridcompng.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl.f90 MAPL.F90 sourcefile~mapl.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_capgridcomp.f90 MAPL_CapGridComp.F90 sourcefile~mapl_capgridcomp.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_geosatmaskmod.f90 MAPL_GeosatMaskMod.F90 sourcefile~mapl_geosatmaskmod.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_historycollection.f90 MAPL_HistoryCollection.F90 sourcefile~mapl_historycollection.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_historygridcomp.f90 MAPL_HistoryGridComp.F90 sourcefile~mapl_historygridcomp.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_orbgridcompmod.f90 MAPL_OrbGridCompMod.F90 sourcefile~mapl_orbgridcompmod.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_stationsamplermod.f90 MAPL_StationSamplerMod.F90 sourcefile~mapl_stationsamplermod.f90->sourcefile~mapl_generic.f90~2 sourcefile~mapl_trajectorymod.f90 MAPL_TrajectoryMod.F90 sourcefile~mapl_trajectorymod.f90->sourcefile~mapl_generic.f90~2

Source Code

module mapl_AbstractFrameworkComponent
   use mapl_SurrogateFrameworkComponent
   implicit none
   private

   public :: AbstractFrameworkComponent

   type, abstract, extends(SurrogateFrameworkComponent) :: AbstractFrameworkComponent
   contains
      procedure(i_AddChildComponent), deferred :: add_child_component
      ! accessors
      procedure(i_SetComponent), deferred :: set_component
      procedure(i_GetComponent), deferred :: get_component
      procedure(i_SetComposite), deferred :: set_composite
      procedure(i_GetState), deferred :: get_internal_state
   end type AbstractFrameworkComponent

   abstract interface

      function i_AddChildComponent(this, name, user_component) result(child)
         use mapl_AbstractComponent
         import AbstractFrameworkComponent
         class(AbstractFrameworkComponent), pointer :: child
         class(AbstractFrameworkComponent), target, intent(inout) :: this
         character(*), intent(in) :: name
         class(AbstractComponent), intent(in) :: user_component
      end function i_AddChildComponent

      subroutine i_SetComponent(this, component)
         use mapl_AbstractComponent
         import AbstractFrameworkComponent
         class(AbstractFrameworkComponent), target, intent(inout) :: this
         class(AbstractComponent), intent(in) :: component
      end subroutine i_SetComponent


      function i_GetComponent(this) result(component)
         use mapl_AbstractComponent
         import AbstractFrameworkComponent
         class(AbstractComponent), pointer :: component
         class(AbstractFrameworkComponent), target, intent(in) :: this
      end function i_GetComponent

      subroutine i_SetComposite(this, composite)
         use mapl_AbstractComposite
         import AbstractFrameworkComponent
         implicit none
         class(AbstractFrameworkComponent), intent(inout) :: this
         class(AbstractComposite), target, intent(in) :: composite
      end subroutine i_SetComposite

      function i_GetState(this) result(state)
         use ESMF
         import AbstractFrameworkComponent
         type(ESMF_State), pointer :: state
         class(AbstractFrameworkComponent), target, intent(in) :: this
      end function i_GetState
   end interface

end module mapl_AbstractFrameworkComponent