SurrogateFrameworkComponent.F90 Source File


Files dependent on this one

sourcefile~~surrogateframeworkcomponent.f90~~AfferentGraph sourcefile~surrogateframeworkcomponent.f90 SurrogateFrameworkComponent.F90 sourcefile~abstractframeworkcomponent.f90 AbstractFrameworkComponent.F90 sourcefile~abstractframeworkcomponent.f90->sourcefile~surrogateframeworkcomponent.f90 sourcefile~baseframeworkcomponent.f90 BaseFrameworkComponent.F90 sourcefile~baseframeworkcomponent.f90->sourcefile~surrogateframeworkcomponent.f90 sourcefile~baseframeworkcomponent.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~compositecomponent.f90 CompositeComponent.F90 sourcefile~baseframeworkcomponent.f90->sourcefile~compositecomponent.f90 sourcefile~decoratorcomponent.f90 DecoratorComponent.F90 sourcefile~decoratorcomponent.f90->sourcefile~surrogateframeworkcomponent.f90 sourcefile~maplcomponent.f90 MaplComponent.F90 sourcefile~decoratorcomponent.f90->sourcefile~maplcomponent.f90 sourcefile~maplcomponent.f90->sourcefile~surrogateframeworkcomponent.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 driver.F90 sourcefile~driver.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~driver.f90->sourcefile~compositecomponent.f90 sourcefile~driver.f90->sourcefile~concretecomposite.f90 sourcefile~maplgenericcomponent.f90 MaplGenericComponent.F90 sourcefile~driver.f90->sourcefile~maplgenericcomponent.f90 sourcefile~usercomponent.f90 UserComponent.F90 sourcefile~driver.f90->sourcefile~usercomponent.f90 sourcefile~maplgeneric.f90 MaplGeneric.F90 sourcefile~maplgeneric.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~maplgeneric.f90->sourcefile~maplcomponent.f90 sourcefile~maplgeneric.f90->sourcefile~maplgenericcomponent.f90 sourcefile~stubcomponent.f90 StubComponent.F90 sourcefile~maplgeneric.f90->sourcefile~stubcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~abstractframeworkcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~baseframeworkcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~maplcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~compositecomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~concretecomposite.f90 sourcefile~stubcomponent.f90->sourcefile~maplcomponent.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~usercomponent.f90->sourcefile~maplcomponent.f90 sourcefile~mapl.f90 MAPL.F90 sourcefile~mapl.f90->sourcefile~stubcomponent.f90 sourcefile~mapl_capgridcomp.f90 MAPL_CapGridComp.F90 sourcefile~mapl_capgridcomp.f90->sourcefile~stubcomponent.f90 sourcefile~mapl_generic.f90 MAPL_Generic.F90 sourcefile~mapl_generic.f90->sourcefile~concretecomposite.f90 sourcefile~mapl_generic.f90->sourcefile~maplgeneric.f90

Source Code

module mapl_SurrogateFrameworkComponent
   implicit none
   private

   public :: SurrogateFrameworkComponent
   
   type, abstract :: SurrogateFrameworkComponent
   contains
      procedure(i_Run), deferred :: initialize
      procedure(i_Run), deferred :: run
      procedure(i_Run), deferred :: finalize
      procedure(i_RunChild), deferred :: run_child
   end type SurrogateFrameworkComponent

   abstract interface

      subroutine i_Run(this, clock, phase, unusable, rc)
         use mapl_KeywordEnforcerMod
         use ESMF
         import SurrogateFrameworkComponent
         class(SurrogateFrameworkComponent), intent(inout) :: this
         type(ESMF_Clock), intent(inout) :: clock
         character(*), intent(in) :: phase
         class(KeywordEnforcer), optional, intent(in) :: unusable
         integer, optional, intent(out) :: rc
      end subroutine i_Run

      subroutine i_RunChild(this, name, clock, phase, unusable, rc)
         use mapl_KeywordEnforcerMod
         use ESMF
         import SurrogateFrameworkComponent
         class(SurrogateFrameworkComponent), intent(inout) :: this
         character(*), intent(in) :: name
         type(ESMF_Clock), intent(inout) :: clock
         character(*), intent(in) :: phase
         class(KeywordEnforcer), optional, intent(in) :: unusable
         integer, optional, intent(out) :: rc
      end subroutine i_RunChild

   end interface


end module mapl_SurrogateFrameworkComponent