MaplComponent.F90 Source File


This file depends on

sourcefile~~maplcomponent.f90~~EfferentGraph sourcefile~maplcomponent.f90 MaplComponent.F90 sourcefile~basecomponent.f90 BaseComponent.F90 sourcefile~maplcomponent.f90->sourcefile~basecomponent.f90 sourcefile~mapl_errorhandling.f90 MAPL_ErrorHandling.F90 sourcefile~maplcomponent.f90->sourcefile~mapl_errorhandling.f90 sourcefile~mapl_keywordenforcer.f90 MAPL_KeywordEnforcer.F90 sourcefile~maplcomponent.f90->sourcefile~mapl_keywordenforcer.f90 sourcefile~pflogger_stub.f90 pflogger_stub.F90 sourcefile~maplcomponent.f90->sourcefile~pflogger_stub.f90 sourcefile~surrogateframeworkcomponent.f90 SurrogateFrameworkComponent.F90 sourcefile~maplcomponent.f90->sourcefile~surrogateframeworkcomponent.f90 sourcefile~basecomponent.f90->sourcefile~pflogger_stub.f90 sourcefile~abstractcomponent.f90 AbstractComponent.F90 sourcefile~basecomponent.f90->sourcefile~abstractcomponent.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~mapl_errorhandling.f90->sourcefile~mapl_throw.f90 sourcefile~pfl_keywordenforcer.f90 PFL_KeywordEnforcer.F90 sourcefile~pflogger_stub.f90->sourcefile~pfl_keywordenforcer.f90 sourcefile~wraparray.f90 WrapArray.F90 sourcefile~pflogger_stub.f90->sourcefile~wraparray.f90

Files dependent on this one

sourcefile~~maplcomponent.f90~~AfferentGraph sourcefile~maplcomponent.f90 MaplComponent.F90 sourcefile~decoratorcomponent.f90 DecoratorComponent.F90 sourcefile~decoratorcomponent.f90->sourcefile~maplcomponent.f90 sourcefile~maplgeneric.f90 MaplGeneric.F90 sourcefile~maplgeneric.f90->sourcefile~maplcomponent.f90 sourcefile~maplgenericcomponent.f90 MaplGenericComponent.F90 sourcefile~maplgeneric.f90->sourcefile~maplgenericcomponent.f90 sourcefile~stubcomponent.f90 StubComponent.F90 sourcefile~maplgeneric.f90->sourcefile~stubcomponent.f90 sourcefile~maplgenericcomponent.f90->sourcefile~maplcomponent.f90 sourcefile~stubcomponent.f90->sourcefile~maplcomponent.f90 sourcefile~usercomponent.f90 UserComponent.F90 sourcefile~usercomponent.f90->sourcefile~maplcomponent.f90 sourcefile~driver.f90 driver.F90 sourcefile~driver.f90->sourcefile~maplgenericcomponent.f90 sourcefile~driver.f90->sourcefile~usercomponent.f90 sourcefile~mapl.f90 MAPL.F90 sourcefile~mapl.f90->sourcefile~stubcomponent.f90 sourcefile~mapl_generic.f90 MAPL_Generic.F90 sourcefile~mapl.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_capgridcomp.f90 MAPL_CapGridComp.F90 sourcefile~mapl_capgridcomp.f90->sourcefile~stubcomponent.f90 sourcefile~mapl_capgridcomp.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_generic.f90->sourcefile~maplgeneric.f90 sourcefile~test_concretecomposite.pf Test_ConcreteComposite.pf sourcefile~test_concretecomposite.pf->sourcefile~maplgenericcomponent.f90 sourcefile~capdriver.f90 CapDriver.F90 sourcefile~capdriver.f90->sourcefile~mapl.f90 sourcefile~comp_testing_driver.f90 Comp_Testing_Driver.F90 sourcefile~comp_testing_driver.f90->sourcefile~mapl.f90 sourcefile~comp_testing_driver.f90->sourcefile~mapl_capgridcomp.f90 sourcefile~comp_testing_driver.f90->sourcefile~mapl_generic.f90 sourcefile~extdatadriver.f90 ExtDataDriver.F90 sourcefile~extdatadriver.f90->sourcefile~mapl.f90 sourcefile~extdatadrivergridcomp.f90 ExtDataDriverGridComp.F90 sourcefile~extdatadrivergridcomp.f90->sourcefile~mapl.f90 sourcefile~extdatadrivermod.f90 ExtDataDriverMod.F90 sourcefile~extdatadrivermod.f90->sourcefile~mapl.f90 sourcefile~extdatagridcompmod.f90 ExtDataGridCompMod.F90 sourcefile~extdatagridcompmod.f90->sourcefile~mapl_generic.f90 sourcefile~extdatagridcompng.f90 ExtDataGridCompNG.F90 sourcefile~extdatagridcompng.f90->sourcefile~mapl_generic.f90 sourcefile~extdataroot_gridcomp.f90 ExtDataRoot_GridComp.F90 sourcefile~extdataroot_gridcomp.f90->sourcefile~mapl.f90 sourcefile~mapl_cap.f90 MAPL_Cap.F90 sourcefile~mapl_cap.f90->sourcefile~mapl_capgridcomp.f90 sourcefile~mapl_demo_fargparse.f90 MAPL_demo_fargparse.F90 sourcefile~mapl_demo_fargparse.f90->sourcefile~mapl.f90 sourcefile~mapl_geosatmaskmod.f90 MAPL_GeosatMaskMod.F90 sourcefile~mapl_geosatmaskmod.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_historycollection.f90 MAPL_HistoryCollection.F90 sourcefile~mapl_historycollection.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_historygridcomp.f90 MAPL_HistoryGridComp.F90 sourcefile~mapl_historygridcomp.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_orbgridcompmod.f90 MAPL_OrbGridCompMod.F90 sourcefile~mapl_orbgridcompmod.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_stationsamplermod.f90 MAPL_StationSamplerMod.F90 sourcefile~mapl_stationsamplermod.f90->sourcefile~mapl_generic.f90 sourcefile~mapl_trajectorymod.f90 MAPL_TrajectoryMod.F90 sourcefile~mapl_trajectorymod.f90->sourcefile~mapl_generic.f90 sourcefile~pfio_mapl_demo.f90 pfio_MAPL_demo.F90 sourcefile~pfio_mapl_demo.f90->sourcefile~mapl.f90 sourcefile~regrid_util.f90 Regrid_Util.F90 sourcefile~regrid_util.f90->sourcefile~mapl.f90 sourcefile~time_ave_util.f90 time_ave_util.F90 sourcefile~time_ave_util.f90->sourcefile~mapl.f90 sourcefile~varspecdescription.f90 VarspecDescription.F90 sourcefile~varspecdescription.f90->sourcefile~mapl.f90

Source Code

#include "MAPL_Exceptions.h"
#include "MAPL_ErrLog.h"

module mapl_MaplComponent
   use ESMF
   use pFlogger, only: t_Logger => Logger
   use mapl_KeywordEnforcerMod
   use mapl_BaseComponent
   use mapl_SurrogateFrameworkComponent
   use mapl_ErrorHandlingMod
   implicit none
   private

   public :: MaplComponent

   type, abstract, extends(BaseComponent) :: MaplComponent
      private
      class(SurrogateFrameworkComponent), pointer :: framework => null()
      type(ESMF_State) :: internal_state
      class(t_Logger), pointer :: logger => null()
   contains
      ! Accessors
      procedure :: set_framework
      procedure :: get_framework
      procedure :: set_logger
      procedure :: get_logger

      procedure :: run_child

   end type MaplComponent

contains

   subroutine set_framework(this, framework)
      class(MaplComponent), intent(inout) :: this
      class(Surrogateframeworkcomponent), target :: framework

      this%framework => framework
   end subroutine set_framework

   function get_framework(this) result(framework)
      class(Surrogateframeworkcomponent), pointer :: framework
      class(MaplComponent), intent(in) :: this

      framework => this%framework
   end function get_framework


   subroutine run_child(this, name, clock, phase, unusable, rc)
      class(MaplComponent), 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

      integer :: status

      _UNUSED_DUMMY(unusable)
      call this%framework%run_child(name, clock, phase, rc=status)

      _RETURN(_SUCCESS)
   end subroutine run_child



   subroutine set_logger(this, logger)
      class(MaplComponent), intent(inout) :: this
      class(t_Logger), target :: logger

      this%logger => logger
   end subroutine set_logger

   function get_logger(this) result(logger)
      class(t_Logger), pointer :: logger
      class(MaplComponent), intent(in) :: this

      logger => this%logger
   end function get_logger


end module mapl_MaplComponent