run_custom.F90 Source File


This file depends on

sourcefile~~run_custom.f90~~EfferentGraph sourcefile~run_custom.f90 run_custom.F90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~run_custom.f90->sourcefile~errorhandling.f90 sourcefile~outermetacomponent.f90 OuterMetaComponent.F90 sourcefile~run_custom.f90->sourcefile~outermetacomponent.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~errorhandling.f90->sourcefile~mapl_throw.f90 sourcefile~componentdrivervector.f90 ComponentDriverVector.F90 sourcefile~outermetacomponent.f90->sourcefile~componentdrivervector.f90 sourcefile~componentspec.f90 ComponentSpec.F90 sourcefile~outermetacomponent.f90->sourcefile~componentspec.f90 sourcefile~esmf_interfaces.f90 ESMF_Interfaces.F90 sourcefile~outermetacomponent.f90->sourcefile~esmf_interfaces.f90 sourcefile~griddedcomponentdriver.f90 GriddedComponentDriver.F90 sourcefile~outermetacomponent.f90->sourcefile~griddedcomponentdriver.f90 sourcefile~griddedcomponentdrivermap.f90 GriddedComponentDriverMap.F90 sourcefile~outermetacomponent.f90->sourcefile~griddedcomponentdrivermap.f90 sourcefile~innermetacomponent.f90 InnerMetaComponent.F90 sourcefile~outermetacomponent.f90->sourcefile~innermetacomponent.f90 sourcefile~keywordenforcer.f90 KeywordEnforcer.F90 sourcefile~outermetacomponent.f90->sourcefile~keywordenforcer.f90 sourcefile~methodphasesmap.f90 MethodPhasesMap.F90 sourcefile~outermetacomponent.f90->sourcefile~methodphasesmap.f90 sourcefile~pflogger_stub.f90 pflogger_stub.F90 sourcefile~outermetacomponent.f90->sourcefile~pflogger_stub.f90 sourcefile~stateregistry.f90 StateRegistry.F90 sourcefile~outermetacomponent.f90->sourcefile~stateregistry.f90 sourcefile~usersetservices.f90 UserSetServices.F90 sourcefile~outermetacomponent.f90->sourcefile~usersetservices.f90 sourcefile~verticalgrid.f90 VerticalGrid.F90 sourcefile~outermetacomponent.f90->sourcefile~verticalgrid.f90

Source Code

#include "MAPL_Generic.h"

submodule (mapl3g_OuterMetaComponent) run_custom_smod
   use mapl_ErrorHandling
   use esmf, only: operator(==)
   implicit none

contains

   module subroutine run_custom(this, method_flag, phase_name, rc)
      class(OuterMetaComponent), intent(inout) :: this
      type(ESMF_METHOD_FLAG), intent(in) :: method_flag
      character(*), intent(in) :: phase_name
      integer, optional, intent(out) :: rc

      integer :: status
      integer :: phase_idx
      type(StringVector), pointer :: phases
      logical :: found

      phases => this%get_phases(method_flag)
      phase_idx = get_phase_index(phases, phase_name, found=found)
      _RETURN_UNLESS(found)
      if (method_flag == ESMF_METHOD_INITIALIZE) then
         call this%user_gc_driver%initialize(phase_idx=phase_idx, _RC)
      else if (method_flag == ESMF_METHOD_RUN) then
         call this%user_gc_driver%run(phase_idx=phase_idx, _RC)
      else if (method_flag == ESMF_METHOD_FINALIZE) then
         call this%user_gc_driver%finalize(phase_idx=phase_idx, _RC)
      else
         _FAIL('Unknown ESMF method flag.')
      end if

      _RETURN(_SUCCESS)
   end subroutine run_custom

end submodule run_custom_smod