setup Subroutine

public subroutine setup(outer_gc, states, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_GridComp), intent(inout) :: outer_gc
type(MultiState), intent(out) :: states
integer, intent(out) :: rc

Calls

proc~~setup~8~~CallsGraph proc~setup~8 setup ESMF_ClockCreate ESMF_ClockCreate proc~setup~8->ESMF_ClockCreate ESMF_GridCompInitialize ESMF_GridCompInitialize proc~setup~8->ESMF_GridCompInitialize ESMF_GridCreateNoPeriDim ESMF_GridCreateNoPeriDim proc~setup~8->ESMF_GridCreateNoPeriDim ESMF_HConfigCreate ESMF_HConfigCreate proc~setup~8->ESMF_HConfigCreate ESMF_TimeIntervalSet ESMF_TimeIntervalSet proc~setup~8->ESMF_TimeIntervalSet ESMF_TimeSet ESMF_TimeSet proc~setup~8->ESMF_TimeSet NUOPC_FieldDictionarySetup NUOPC_FieldDictionarySetup proc~setup~8->NUOPC_FieldDictionarySetup anyexceptions anyexceptions proc~setup~8->anyexceptions assert_that assert_that proc~setup~8->assert_that esmf_gridcompsetservices esmf_gridcompsetservices proc~setup~8->esmf_gridcompsetservices esmf_statecreate esmf_statecreate proc~setup~8->esmf_statecreate generic_init_phase_sequence generic_init_phase_sequence proc~setup~8->generic_init_phase_sequence interface~create_grid_comp create_grid_comp proc~setup~8->interface~create_grid_comp interface~user_setservices user_setservices proc~setup~8->interface~user_setservices mapl_gridcompsetgeom mapl_gridcompsetgeom proc~setup~8->mapl_gridcompsetgeom proc~mapl_gridcompsetverticalgrid MAPL_GridCompSetVerticalGrid proc~setup~8->proc~mapl_gridcompsetverticalgrid sourcelocation sourcelocation proc~setup~8->sourcelocation interface~mapl_gridcompgetoutermeta MAPL_GridCompGetOuterMeta proc~mapl_gridcompsetverticalgrid->interface~mapl_gridcompgetoutermeta none~set_vertical_grid OuterMetaComponent%set_vertical_grid proc~mapl_gridcompsetverticalgrid->none~set_vertical_grid proc~mapl_return MAPL_Return proc~mapl_gridcompsetverticalgrid->proc~mapl_return proc~mapl_verify MAPL_Verify proc~mapl_gridcompsetverticalgrid->proc~mapl_verify at at proc~mapl_return->at insert insert proc~mapl_return->insert proc~mapl_throw_exception MAPL_throw_exception proc~mapl_return->proc~mapl_throw_exception proc~mapl_verify->proc~mapl_throw_exception

Called by

proc~~setup~8~~CalledByGraph proc~setup~8 setup proc~test_child_outer_items_created test_child_outer_items_created proc~test_child_outer_items_created->proc~setup~8 proc~test_child_user_items_created test_child_user_items_created proc~test_child_user_items_created->proc~setup~8 proc~test_parent_outer_items_created test_parent_outer_items_created proc~test_parent_outer_items_created->proc~setup~8 proc~test_parent_user_items_created test_parent_user_items_created proc~test_parent_user_items_created->proc~setup~8 proc~test_propagate_imports test_propagate_imports proc~test_propagate_imports->proc~setup~8 proc~test_state_items_complete test_state_items_complete proc~test_state_items_complete->proc~setup~8

Source Code

   subroutine setup(outer_gc, states, rc)
      type(ESMF_GridComp), intent(inout) :: outer_gc
      type(MultiState), intent(out) :: states
      integer, intent(out) :: rc
      
      integer :: status, userRC
      type(ESMF_Grid) :: grid
      type(ESMF_HConfig) :: config
      integer :: i
      type(BasicVerticalGrid) :: vertical_grid
      type(ESMF_Time) :: t
      type(ESMF_TimeInterval) :: dt
      type(ESMF_Clock) :: clock

      rc = 0
      call NUOPC_FieldDictionarySetup('./scenarios/FieldDictionary.yml', _RC)
      config = ESMF_HConfigCreate(filename = './scenarios/scenario_1/parent.yaml',rc=status)
      @assert_that(status, is(0))

      call ESMF_TimeSet(t, h=0)
      call ESMF_TimeIntervalSet(dt, h=1)
      clock = ESMF_ClockCreate(dt, t)

     outer_gc = create_grid_comp('P', user_setservices('libsimple_parent_gridcomp'), config, clock, _RC)
      call ESMF_GridCompSetServices(outer_gc, setServices, userRC=userRC, _RC)
      _VERIFY(userRC)
      grid = ESMF_GridCreateNoPeriDim(maxIndex=[4,4], name='I_AM_GROOT', _RC)
      call MAPL_GridCompSetGeom(outer_gc, grid, _RC)
      vertical_grid = BasicVerticalGrid(4)
      call MAPL_GridCompSetVerticalGrid(outer_gc, vertical_grid, _RC)

      associate (import => states%importState, export => states%exportState)
        import = ESMF_StateCreate(_RC)
        export = ESMF_StateCreate(_RC)

        do i = 1, size(GENERIC_INIT_PHASE_SEQUENCE)
           associate (phase => GENERIC_INIT_PHASE_SEQUENCE(i))
             call ESMF_GridCompInitialize(outer_gc, &
                  importState=import, exportState=export, clock=clock, &
                  phase=phase, userRC=userRC, _RC)
             _VERIFY(userRC)
           end associate
        end do

      end associate

      rc = 0

   end subroutine setup