check_field_rank Subroutine

public subroutine check_field_rank(expectations, state, short_name, description, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_HConfig), intent(in) :: expectations
type(ESMF_State), intent(inout) :: state
character(len=*), intent(in) :: short_name
character(len=*), intent(in) :: description
integer, intent(out) :: rc

Calls

proc~~check_field_rank~~CallsGraph proc~check_field_rank check_field_rank anyexceptions anyexceptions proc~check_field_rank->anyexceptions assert_that assert_that proc~check_field_rank->assert_that esmf_fieldget esmf_fieldget proc~check_field_rank->esmf_fieldget esmf_hconfigasi4 esmf_hconfigasi4 proc~check_field_rank->esmf_hconfigasi4 esmf_hconfigisdefined esmf_hconfigisdefined proc~check_field_rank->esmf_hconfigisdefined esmf_stateget esmf_stateget proc~check_field_rank->esmf_stateget sourcelocation sourcelocation proc~check_field_rank->sourcelocation true true proc~check_field_rank->true

Source Code

   subroutine check_field_rank(expectations, state, short_name, description, rc)
      type(ESMF_HConfig), intent(in) :: expectations
      type(ESMF_State), intent(inout) :: state
      character(*), intent(in) :: short_name
      character(*), intent(in) :: description
      integer, intent(out) :: rc

      type(ESMF_Field) :: field
      integer :: expected_field_rank
      integer :: rank
      integer :: status
      type(ESMF_StateItem_Flag) :: itemtype
      character(len=:), allocatable :: msg

      msg = description

      if (.not. ESMF_HConfigIsDefined(expectations,keyString='rank')) then
         rc = 0
         return
      end if

      call ESMF_StateGet(state, short_name, itemtype=itemtype)
      if (itemtype /= ESMF_STATEITEM_FIELD) then ! that's ok
         rc = 0
         return
      end if

      call ESMF_StateGet(state, short_name, field, _RC)
      call ESMF_FieldGet(field, rank=rank, _RC)

      expected_field_rank = ESMF_HConfigAsI4(expectations,keyString='rank',_RC)
      @assert_that(msg // 'field rank:', rank == expected_field_rank, is(true()))

      rc = 0
   end subroutine check_field_rank