test_vertical Subroutine

public subroutine test_vertical()

Uses

  • proc~~test_vertical~~UsesGraph proc~test_vertical test_vertical module~mapl3g_multistate mapl3g_MultiState proc~test_vertical->module~mapl3g_multistate ESMF ESMF module~mapl3g_multistate->ESMF module~mapl3g_esmf_utilities mapl3g_ESMF_Utilities module~mapl3g_multistate->module~mapl3g_esmf_utilities module~mapl_errorhandling mapl_ErrorHandling module~mapl3g_multistate->module~mapl_errorhandling module~mapl_keywordenforcer mapl_KeywordEnforcer module~mapl3g_multistate->module~mapl_keywordenforcer module~mapl3g_esmf_utilities->ESMF module~mapl3g_esmf_utilities->module~mapl_errorhandling module~mapl_throwmod MAPL_ThrowMod module~mapl_errorhandling->module~mapl_throwmod mpi mpi module~mapl_errorhandling->mpi

Arguments

None

Calls

proc~~test_vertical~~CallsGraph proc~test_vertical test_vertical ESMF_GeomCreate ESMF_GeomCreate proc~test_vertical->ESMF_GeomCreate ESMF_GridCreateNoPeriDim ESMF_GridCreateNoPeriDim proc~test_vertical->ESMF_GridCreateNoPeriDim ESMF_InfoGetFromHost ESMF_InfoGetFromHost proc~test_vertical->ESMF_InfoGetFromHost ESMF_InfoSet ESMF_InfoSet proc~test_vertical->ESMF_InfoSet assert_that assert_that proc~test_vertical->assert_that esmf_fieldget esmf_fieldget proc~test_vertical->esmf_fieldget esmf_statecreate esmf_statecreate proc~test_vertical->esmf_statecreate esmf_stateget esmf_stateget proc~test_vertical->esmf_stateget none~add_to_state~5 FieldSpec%add_to_state proc~test_vertical->none~add_to_state~5 none~create~7 FieldSpec%create proc~test_vertical->none~create~7 none~get_state~2 MultiState%get_state proc~test_vertical->none~get_state~2 none~add_to_state~5->none~get_state~2 ESMF_NamedAlias ESMF_NamedAlias none~add_to_state~5->ESMF_NamedAlias esmf_stateadd esmf_stateadd none~add_to_state~5->esmf_stateadd none~get_full_name~2 ActualConnectionPt%get_full_name none~add_to_state~5->none~get_full_name~2 none~get_state_intent~3 ActualConnectionPt%get_state_intent none~add_to_state~5->none~get_state_intent~3 proc~get_substate get_substate none~add_to_state~5->proc~get_substate proc~mapl_return MAPL_Return none~add_to_state~5->proc~mapl_return proc~mapl_verify MAPL_Verify none~add_to_state~5->proc~mapl_verify esmf_fieldemptycreate esmf_fieldemptycreate none~create~7->esmf_fieldemptycreate none~create~7->proc~mapl_return none~create~7->proc~mapl_verify none~get_state_by_esmf_intent MultiState%get_state_by_esmf_intent none~get_state~2->none~get_state_by_esmf_intent none~get_extension_string ActualConnectionPt%get_extension_string none~get_full_name~2->none~get_extension_string none~get_full_name VirtualConnectionPt%get_full_name none~get_full_name~2->none~get_full_name none~is_extension ActualConnectionPt%is_extension none~get_full_name~2->none~is_extension none~get_state_by_esmf_intent->none~get_state~2 none~get_state_by_esmf_intent->proc~mapl_return none~get_state_by_esmf_intent->proc~mapl_verify none~get_state_intent~2 VirtualConnectionPt%get_state_intent none~get_state_intent~3->none~get_state_intent~2 proc~get_substate->esmf_statecreate proc~get_substate->esmf_stateget proc~get_substate->esmf_stateadd proc~get_substate->proc~mapl_return proc~get_substate->proc~mapl_verify interface~mapl_assert MAPL_Assert proc~get_substate->interface~mapl_assert 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 none~get_extension_string->none~is_extension

Source Code

   subroutine test_vertical()
      use mapl3g_MultiState
      type(FieldSpec) :: field_spec

      type(ESMF_Grid) :: grid
      type(ESMF_Geom) :: geom
      type(BasicVerticalGrid) :: vertical_grid
      type(VerticalDimSpec) :: vertical_dim_spec
      type(ESMF_Info) :: info
      type(ESMF_State) :: state
      type(MultiState) :: multi_state
      type(ESMF_Field) :: f
      integer :: rank
      integer :: status

      grid = ESMF_GridCreateNoPeriDim(maxIndex=[4,4], name='I_AM_GROOT', rc=status)
      call ESMF_InfoGetFromHost(grid, info, rc=status)
      call ESMF_InfoSet(info, '/MAPL/GEOM/VERTICAL', 'CENTER', rc=status)
      geom = ESMF_GeomCreate(grid, ESMF_STAGGERLOC_INVALID)
      vertical_dim_spec = VERTICAL_DIM_CENTER
      field_spec = FieldSpec(geom=geom, vertical_grid=vertical_grid, vertical_dim_spec=vertical_dim_spec, &
           typekind=ESMF_TYPEKIND_R4, ungridded_dims=UngriddedDims())
      call field_spec%create(rc=status)
      call field_spec%allocate(rc=status)

      multi_state = MultiState(importState=ESMF_StateCreate(), exportState=ESMF_StateCreate())
      call field_spec%add_to_state(multi_state, ActualConnectionPt(VirtualConnectionPt(ESMF_STATEINTENT_EXPORT, 'T')), rc=status)

      call multi_state%get_state(state, ESMF_STATEINTENT_EXPORT, rc=status)
      call ESMF_StateGet(state, 'T', f, rc=status)

      call ESMF_FieldGet(f, rank=rank, rc=status)
      @assert_that(rank, is(3))
      
   end subroutine test_vertical