test_invalidate Subroutine

public subroutine test_invalidate(this)

Arguments

Type IntentOptional Attributes Name
class(ESMF_TestMethod), intent(inout) :: this

Calls

proc~~test_invalidate~2~~CallsGraph proc~test_invalidate~2 test_invalidate anyexceptions anyexceptions proc~test_invalidate~2->anyexceptions assert_that assert_that proc~test_invalidate~2->assert_that asserttrue asserttrue proc~test_invalidate~2->asserttrue esmf_fielddestroy esmf_fielddestroy proc~test_invalidate~2->esmf_fielddestroy interface~assign_fptr assign_fptr proc~test_invalidate~2->interface~assign_fptr interface~fieldset FieldSet proc~test_invalidate~2->interface~fieldset none~initialize~30 AccumulatorAction%initialize proc~test_invalidate~2->none~initialize~30 none~invalidate~2 AccumulatorAction%invalidate proc~test_invalidate~2->none~invalidate~2 proc~destroy_objects destroy_objects proc~test_invalidate~2->proc~destroy_objects proc~get_field get_field proc~test_invalidate~2->proc~get_field proc~initialize_objects initialize_objects proc~test_invalidate~2->proc~initialize_objects sourcelocation sourcelocation proc~test_invalidate~2->sourcelocation esmf_fieldget esmf_fieldget none~initialize~30->esmf_fieldget esmf_stateget esmf_stateget none~initialize~30->esmf_stateget interface~fieldsareconformable FieldsAreConformable none~initialize~30->interface~fieldsareconformable interface~fieldsaresametypekind FieldsAreSameTypeKind none~initialize~30->interface~fieldsaresametypekind interface~mapl_assert MAPL_Assert none~initialize~30->interface~mapl_assert none~clear~130 AccumulatorAction%clear none~initialize~30->none~clear~130 none~create_fields AccumulatorAction%create_fields none~initialize~30->none~create_fields proc~mapl_return MAPL_Return none~initialize~30->proc~mapl_return proc~mapl_verify MAPL_Verify none~initialize~30->proc~mapl_verify none~invalidate~2->esmf_stateget none~invalidate~2->interface~mapl_assert none~accumulate~6 AccumulatorAction%accumulate none~invalidate~2->none~accumulate~6 none~invalidate~2->proc~mapl_return none~invalidate~2->proc~mapl_verify proc~destroy_objects->anyexceptions proc~destroy_objects->assert_that proc~destroy_objects->esmf_fielddestroy proc~destroy_objects->proc~get_field proc~destroy_objects->sourcelocation ESMF_ClockDestroy ESMF_ClockDestroy proc~destroy_objects->ESMF_ClockDestroy ESMF_GridDestroy ESMF_GridDestroy proc~destroy_objects->ESMF_GridDestroy proc~destroy_objects->esmf_fieldget esmf_statedestroy esmf_statedestroy proc~destroy_objects->esmf_statedestroy proc~get_field->anyexceptions proc~get_field->assert_that proc~get_field->sourcelocation proc~get_field->esmf_stateget proc~initialize_objects->anyexceptions proc~initialize_objects->assert_that proc~initialize_objects->sourcelocation ESMF_ClockCreate ESMF_ClockCreate proc~initialize_objects->ESMF_ClockCreate ESMF_TimeIntervalSet ESMF_TimeIntervalSet proc~initialize_objects->ESMF_TimeIntervalSet ESMF_TimeSet ESMF_TimeSet proc~initialize_objects->ESMF_TimeSet esmf_fieldcreate esmf_fieldcreate proc~initialize_objects->esmf_fieldcreate esmf_statecreate esmf_statecreate proc~initialize_objects->esmf_statecreate proc~create_grid create_grid proc~initialize_objects->proc~create_grid

Source Code

   subroutine test_invalidate(this)
      class(ESMF_TestMethod), intent(inout) :: this
      type(MeanAction) :: acc
      type(ESMF_State) :: importState, exportState
      type(ESMF_Clock) :: clock
      integer :: status
      integer, parameter :: N = 4
      integer :: i
      type(ESMF_Field) :: importField
      logical :: counter_is_set = .FALSE.
      integer(kind=ESMF_KIND_I4), pointer :: fptr(:)

      call initialize_objects(importState, exportState, clock, ESMF_TYPEKIND_R4, _RC)
      call get_field(importState, importField, _RC)
      call FieldSet(importField, 1.0_R4, _RC)
      call acc%initialize(importState, exportState, clock, _RC)
      call assign_fptr(acc%counter_field, fptr, _RC)
      counter_is_set = all(fptr == 0)
      @assertTrue(counter_is_set, 'Counter field is nonzero.')
      do i=1, N
         call acc%invalidate(importState, exportState, clock, _RC)
      end do
      call assign_fptr(acc%counter_field, fptr, _RC)
      counter_is_set = all(fptr == N)
      @assertTrue(counter_is_set, 'counter_scalar not equal to N')
      call destroy_objects(importState, exportState, clock, _RC)
      call ESMF_FieldDestroy(importField)

   end subroutine test_invalidate