setup Subroutine

public subroutine setup(this, rc)

Arguments

Type IntentOptional Attributes Name
class(MpiTestMethod), intent(inout) :: this
integer, intent(out) :: rc

Calls

proc~~setup~~CallsGraph proc~setup setup ESMF_ClockCreate ESMF_ClockCreate proc~setup->ESMF_ClockCreate ESMF_HConfigCreate ESMF_HConfigCreate proc~setup->ESMF_HConfigCreate ESMF_HConfigDestroy ESMF_HConfigDestroy proc~setup->ESMF_HConfigDestroy ESMF_TimeIntervalSet ESMF_TimeIntervalSet proc~setup->ESMF_TimeIntervalSet ESMF_TimeSet ESMF_TimeSet proc~setup->ESMF_TimeSet assert_that assert_that proc~setup->assert_that esmf_gridcompsetservices esmf_gridcompsetservices proc~setup->esmf_gridcompsetservices interface~create_grid_comp create_grid_comp proc~setup->interface~create_grid_comp interface~get_outer_meta get_outer_meta proc~setup->interface~get_outer_meta interface~user_setservices user_setservices proc~setup->interface~user_setservices none~add_child~4 OuterMetaComponent%add_child proc~setup->none~add_child~4 none~get_gridcomp~3 GriddedComponentDriver%get_gridcomp proc~setup->none~get_gridcomp~3 none~get_user_gc_driver OuterMetaComponent%get_user_gc_driver proc~setup->none~get_user_gc_driver proc~clear_log clear_log proc~setup->proc~clear_log

Called by

proc~~setup~~CalledByGraph proc~setup setup proc~test_finalize_children test_finalize_children proc~test_finalize_children->proc~setup proc~test_init_children test_init_children proc~test_init_children->proc~setup proc~test_mapl_runchild test_MAPL_RunChild proc~test_mapl_runchild->proc~setup proc~test_mapl_runchild_other_phase test_MAPL_RunChild_other_phase proc~test_mapl_runchild_other_phase->proc~setup

Source Code

   subroutine setup(this, rc)
      class(MpiTestMethod), intent(inout) :: this
      integer, intent(out) :: rc

      type(ESMF_HConfig) :: config
      type(GriddedComponentDriver) :: user_comp
      integer :: status
      type(ESMF_Time) :: t
      type(ESMF_TimeInterval) :: dt
      type(ESMF_Clock) :: clock

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

      config = ESMF_HConfigCreate(content='{}', rc=status)
      @assert_that(status, is(0))

      associate (ss_parent => user_setservices('libsimple_parent_gridcomp'))
        parent_gc = create_grid_comp('parent', ss_parent, config, clock, rc=status)
      end associate

      @assert_that(status, is(0))
      parent_meta => get_outer_meta(parent_gc, rc=status)
      @assert_that(status, is(0))

      associate (ss_leaf => user_setservices('libsimple_leaf_gridcomp'))
        call parent_meta%add_child('child_1', ss_leaf, config, rc=status)
        @assert_that(status, is(0))
        call parent_meta%add_child('child_2', ss_leaf, config, rc=status)
        @assert_that(status, is(0))
      end associate

      call ESMF_GridCompSetServices(parent_gc, setServices, rc=status)
      @assert_that(status, is(0))

      user_comp = parent_meta%get_user_gc_driver()
      user_gc = user_comp%get_gridcomp()

      call ESMF_HConfigDestroy(config, rc=status)
      @assert_that(status, is(0))

      call clear_log()
      rc = ESMF_SUCCESS
   end subroutine setup