ExtensionAction.F90 Source File


This file depends on

sourcefile~~extensionaction.f90~~EfferentGraph sourcefile~extensionaction.f90 ExtensionAction.F90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~extensionaction.f90->sourcefile~errorhandling.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~errorhandling.f90->sourcefile~mapl_throw.f90

Files dependent on this one

sourcefile~~extensionaction.f90~~AfferentGraph sourcefile~extensionaction.f90 ExtensionAction.F90 sourcefile~accumulatoraction.f90 AccumulatorAction.F90 sourcefile~accumulatoraction.f90->sourcefile~extensionaction.f90 sourcefile~actionvector.f90 ActionVector.F90 sourcefile~actionvector.f90->sourcefile~extensionaction.f90 sourcefile~bracketspec.f90 BracketSpec.F90 sourcefile~bracketspec.f90->sourcefile~extensionaction.f90 sourcefile~convertunitsaction.f90 ConvertUnitsAction.F90 sourcefile~convertunitsaction.f90->sourcefile~extensionaction.f90 sourcefile~copyaction.f90 CopyAction.F90 sourcefile~copyaction.f90->sourcefile~extensionaction.f90 sourcefile~couplermetacomponent.f90 CouplerMetaComponent.F90 sourcefile~couplermetacomponent.f90->sourcefile~extensionaction.f90 sourcefile~fieldspec.f90 FieldSpec.F90 sourcefile~fieldspec.f90->sourcefile~extensionaction.f90 sourcefile~genericcoupler.f90 GenericCoupler.F90 sourcefile~genericcoupler.f90->sourcefile~extensionaction.f90 sourcefile~invalidspec.f90 InvalidSpec.F90 sourcefile~invalidspec.f90->sourcefile~extensionaction.f90 sourcefile~mockitemspec.f90 MockItemSpec.F90 sourcefile~mockitemspec.f90->sourcefile~extensionaction.f90 sourcefile~modelverticalgrid.f90 ModelVerticalGrid.F90 sourcefile~modelverticalgrid.f90->sourcefile~extensionaction.f90 sourcefile~nullaction.f90 NullAction.F90 sourcefile~nullaction.f90->sourcefile~extensionaction.f90 sourcefile~regridaction.f90 RegridAction.F90 sourcefile~regridaction.f90->sourcefile~extensionaction.f90 sourcefile~servicespec.f90 ServiceSpec.F90 sourcefile~servicespec.f90->sourcefile~extensionaction.f90 sourcefile~stateitemextension.f90 StateItemExtension.F90 sourcefile~stateitemextension.f90->sourcefile~extensionaction.f90 sourcefile~stateitemspec.f90 StateItemSpec.F90 sourcefile~stateitemspec.f90->sourcefile~extensionaction.f90 sourcefile~statespec.f90 StateSpec.F90 sourcefile~statespec.f90->sourcefile~extensionaction.f90 sourcefile~timeaverageaction.f90 TimeAverageAction.F90 sourcefile~timeaverageaction.f90->sourcefile~extensionaction.f90 sourcefile~timeinterpolateaction.f90 TimeInterpolateAction.F90 sourcefile~timeinterpolateaction.f90->sourcefile~extensionaction.f90 sourcefile~verticalregridaction.f90 VerticalRegridAction.F90 sourcefile~verticalregridaction.f90->sourcefile~extensionaction.f90 sourcefile~wildcardspec.f90 WildcardSpec.F90 sourcefile~wildcardspec.f90->sourcefile~extensionaction.f90

Source Code

#include "MAPL_Generic.h"
module mapl3g_ExtensionAction
   use mapl_ErrorHandling
   use ESMF
   implicit none
   private

   public :: ExtensionAction

   type, abstract :: ExtensionAction
   contains
      procedure(I_run), deferred :: initialize
      procedure(I_run), deferred :: update
      procedure :: invalidate
   end type ExtensionAction


   abstract interface
      subroutine I_run(this, importState, exportState, clock, rc)
         use ESMF
         import ExtensionAction
         class(ExtensionAction), intent(inout) :: this
         type(ESMF_State) :: importState
         type(ESMF_State) :: exportState
         type(ESMF_Clock) :: clock
         integer, optional, intent(out) :: rc
      end subroutine I_run
   end interface

contains

   ! This is a default no-op implementation of invalidate.
   ! Types derived from ExtensionAction should overload it
   ! as needed.
   subroutine invalidate(this, importState, exportState, clock, rc)
      use ESMF
      class(ExtensionAction), intent(inout) :: this
      type(ESMF_State) :: importState
      type(ESMF_State) :: exportState
      type(ESMF_Clock) :: clock
      integer, optional, intent(out) :: rc
      _UNUSED_DUMMY(this)
      _UNUSED_DUMMY(importState)
      _UNUSED_DUMMY(exportState)
      _UNUSED_DUMMY(clock)
   end subroutine invalidate

end module mapl3g_ExtensionAction