test_get_coordinate_field_change_units Subroutine

public subroutine test_get_coordinate_field_change_units()

Arguments

None

Calls

proc~~test_get_coordinate_field_change_units~~CallsGraph proc~test_get_coordinate_field_change_units test_get_coordinate_field_change_units anyexceptions anyexceptions proc~test_get_coordinate_field_change_units->anyexceptions assert_that assert_that proc~test_get_coordinate_field_change_units->assert_that equal_to equal_to proc~test_get_coordinate_field_change_units->equal_to esmf_fieldget esmf_fieldget proc~test_get_coordinate_field_change_units->esmf_fieldget every_item every_item proc~test_get_coordinate_field_change_units->every_item initialize initialize proc~test_get_coordinate_field_change_units->initialize none~get_coordinate_field~3 ModelVerticalGrid%get_coordinate_field proc~test_get_coordinate_field_change_units->none~get_coordinate_field~3 none~get_export_couplers StateRegistry%get_export_couplers proc~test_get_coordinate_field_change_units->none~get_export_couplers none~of~62 ComponentDriverPtrVector%of proc~test_get_coordinate_field_change_units->none~of~62 proc~make_geom~4 make_geom proc~test_get_coordinate_field_change_units->proc~make_geom~4 proc~setup~5 setup proc~test_get_coordinate_field_change_units->proc~setup~5 run run proc~test_get_coordinate_field_change_units->run sourcelocation sourcelocation proc~test_get_coordinate_field_change_units->sourcelocation true true proc~test_get_coordinate_field_change_units->true

Source Code

   subroutine test_get_coordinate_field_change_units()
      type(ModelVerticalGrid) :: vgrid

      type(ESMF_Field) :: vcoord
      type(ESMF_Geom) :: geom
      integer :: status
      real(ESMF_KIND_R4), pointer :: a(:,:,:)
      type(ComponentDriverPtrVector) :: couplers
      type(ComponentDriverPtr) :: driver
      type(GriddedComponentDriver), pointer :: coupler 
      integer :: i

      call setup(vgrid, _RC)
      geom = make_geom(_RC)
      call vgrid%get_coordinate_field(vcoord, coupler, &
           standard_name='air_pressure', geom=geom, typekind=ESMF_TYPEKIND_R4, units='Pa', _RC)
      @assert_that(associated(coupler), is(true()))

      call r%allocate(_RC)

      call ESMF_FieldGet(vcoord, fArrayPtr=a, _RC)
      ! usually update is called on imports, but here we don't have an import handy,
      ! so we force updates on all export couplers in registry r.
      couplers = r%get_export_couplers()
      do i = 1, couplers%size()
         driver = couplers%of(i)
         call driver%ptr%initialize(_RC)
         call driver%ptr%run(phase_idx=GENERIC_COUPLER_UPDATE, _RC)
      end do
      @assert_that(a, every_item(is(equal_to(300.))))
      
   end subroutine test_get_coordinate_field_change_units