setServices Subroutine

public subroutine setServices(gridcomp, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_GridComp) :: gridcomp
integer, intent(out) :: rc

Calls

proc~~setservices~12~~CallsGraph proc~setservices~12 setServices ESMF_HConfigIterLoop ESMF_HConfigIterLoop proc~setservices~12->ESMF_HConfigIterLoop esmf_hconfigasstring esmf_hconfigasstring proc~setservices~12->esmf_hconfigasstring esmf_hconfigcreateat esmf_hconfigcreateat proc~setservices~12->esmf_hconfigcreateat esmf_hconfiggetsize esmf_hconfiggetsize proc~setservices~12->esmf_hconfiggetsize esmf_hconfigisdefined esmf_hconfigisdefined proc~setservices~12->esmf_hconfigisdefined esmf_hconfigiterbegin esmf_hconfigiterbegin proc~setservices~12->esmf_hconfigiterbegin esmf_hconfigiterend esmf_hconfigiterend proc~setservices~12->esmf_hconfigiterend interface~mapl_addchild~2 MAPL_AddChild proc~setservices~12->interface~mapl_addchild~2 interface~mapl_gridcompget MAPL_GridCompGet proc~setservices~12->interface~mapl_gridcompget interface~mapl_gridcompsetentrypoint MAPL_GridCompSetEntryPoint proc~setservices~12->interface~mapl_gridcompsetentrypoint interface~user_setservices user_setservices proc~setservices~12->interface~user_setservices none~warning Logger%warning proc~setservices~12->none~warning proc~make_child_hconfig make_child_hconfig proc~setservices~12->proc~make_child_hconfig proc~make_child_name make_child_name proc~setservices~12->proc~make_child_name proc~mapl_return MAPL_Return proc~setservices~12->proc~mapl_return proc~mapl_verify MAPL_Verify proc~setservices~12->proc~mapl_verify proc~make_child_hconfig->proc~mapl_return proc~make_child_hconfig->proc~mapl_verify ESMF_HConfigAdd ESMF_HConfigAdd proc~make_child_hconfig->ESMF_HConfigAdd ESMF_HConfigDestroy ESMF_HConfigDestroy proc~make_child_hconfig->ESMF_HConfigDestroy proc~get_subconfig get_subconfig proc~make_child_hconfig->proc~get_subconfig proc~make_child_name->proc~mapl_return 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 proc~get_subconfig->esmf_hconfigcreateat proc~get_subconfig->esmf_hconfigisdefined proc~get_subconfig->proc~mapl_return proc~get_subconfig->proc~mapl_verify esmf_hconfigismap esmf_hconfigismap proc~get_subconfig->esmf_hconfigismap interface~mapl_assert MAPL_Assert proc~get_subconfig->interface~mapl_assert

Called by

proc~~setservices~12~~CalledByGraph proc~setservices~12 setServices proc~setservices~13 setServices proc~setservices~13->proc~setservices~12

Source Code

   subroutine setServices(gridcomp, rc)
      type(ESMF_GridComp) :: gridcomp
      integer, intent(out) :: rc

      type(ESMF_HConfig) :: hconfig, collections_config, child_hconfig
      character(len=:), allocatable :: child_name, collection_name
      type(ESMF_HConfigIter) :: iter, iter_begin, iter_end
      logical :: has_active_collections
      class(logger), pointer :: lgr
      integer :: num_collections, status

      ! Set entry points
      call MAPL_GridCompSetEntryPoint(gridcomp, ESMF_METHOD_INITIALIZE, init, phase_name="GENERIC::INIT_USER", _RC)
      call MAPL_GridCompSetEntryPoint(gridcomp, ESMF_METHOD_RUN, run, phase_name='run', _RC)

      ! Determine collections
      call MAPL_GridCompGet(gridcomp, hconfig=hconfig, _RC)

      has_active_collections = ESMF_HConfigIsDefined(hconfig, keyString='active_collections', _RC)
      if (.not. has_active_collections) then
         call MAPL_GridCompGet(gridcomp,logger=lgr, _RC)
         call lgr%warning("no active collection specified in History")
         _RETURN(_SUCCESS)
      end if

      collections_config = ESMF_HConfigCreateAt(hconfig, keystring='active_collections', _RC)
      num_collections = ESMF_HConfigGetSize(collections_config, _RC)
      _RETURN_UNLESS(num_collections > 0)

      iter_begin = ESMF_HConfigIterBegin(collections_config,_RC)
      iter_end = ESMF_HConfigIterEnd(collections_config, _RC)
      iter = iter_begin

      do while (ESMF_HConfigIterLoop(iter, iter_begin, iter_end, rc=status))
         _VERIFY(status)
         collection_name = ESMF_HConfigAsString(iter, _RC)
         child_hconfig = make_child_hconfig(hconfig, collection_name, _RC)
         child_name = make_child_name(collection_name, _RC)
         call MAPL_AddChild(gridcomp, child_name, user_setservices(collection_setServices), child_hconfig, _RC)
         !call ESMF_HConfigDestroy(child_hconfig, _RC)
         
      end do
      
      _RETURN(_SUCCESS)
   end subroutine setServices