initialize_user.F90 Source File


This file depends on

sourcefile~~initialize_user.f90~~EfferentGraph sourcefile~initialize_user.f90 initialize_user.F90 sourcefile~componentdriverptrvector.f90 ComponentDriverPtrVector.F90 sourcefile~initialize_user.f90->sourcefile~componentdriverptrvector.f90 sourcefile~couplermetacomponent.f90 CouplerMetaComponent.F90 sourcefile~initialize_user.f90->sourcefile~couplermetacomponent.f90 sourcefile~outermetacomponent.f90 OuterMetaComponent.F90 sourcefile~initialize_user.f90->sourcefile~outermetacomponent.f90

Source Code

#include "MAPL_Generic.h"

submodule (mapl3g_OuterMetaComponent) initialize_user_smod
   use mapl3g_ComponentDriverPtrVector
   use mapl3g_CouplerMetaComponent, only: GENERIC_COUPLER_INITIALIZE
   implicit none

contains

   module recursive subroutine initialize_user(this, unusable, rc)
      class(OuterMetaComponent), intent(inout) :: this
      ! optional arguments
      class(KE), optional, intent(in) :: unusable
      integer, optional, intent(out) :: rc

      integer :: status
      character(*), parameter :: PHASE_NAME = 'GENERIC::INIT_USER'
      type(ComponentDriverPtrVector) :: export_Couplers
      type(ComponentDriverPtr) :: drvr
      integer :: i

      export_couplers = this%registry%get_export_couplers()
      do i = 1, export_couplers%size()
         drvr = export_couplers%of(i)
         call drvr%ptr%initialize(phase_idx=GENERIC_COUPLER_INITIALIZE, _RC)
      end do

      call this%run_custom(ESMF_METHOD_INITIALIZE, PHASE_NAME, _RC)
      call recurse(this, phase_idx=GENERIC_INIT_USER, _RC)

      _RETURN(ESMF_SUCCESS)
      _UNUSED_DUMMY(unusable)
   end subroutine initialize_user

end submodule initialize_user_smod