test_spherical_to_cartesian_east_wind Subroutine

public subroutine test_spherical_to_cartesian_east_wind(this)

Arguments

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

Calls

proc~~test_spherical_to_cartesian_east_wind~~CallsGraph proc~test_spherical_to_cartesian_east_wind test_spherical_to_cartesian_east_wind assertequal assertequal proc~test_spherical_to_cartesian_east_wind->assertequal none~get_longitudes LatLonGridFactory%get_longitudes proc~test_spherical_to_cartesian_east_wind->none~get_longitudes none~make_grid~4 AbstractGridFactory%make_grid proc~test_spherical_to_cartesian_east_wind->none~make_grid~4 none~spherical_to_cartesian~5 LatLonGridFactory%spherical_to_cartesian proc~test_spherical_to_cartesian_east_wind->none~spherical_to_cartesian~5 proc~mapl_return MAPL_Return none~get_longitudes->proc~mapl_return make_new_grid make_new_grid none~make_grid~4->make_new_grid none~make_grid~4->proc~mapl_return proc~mapl_verify MAPL_Verify none~make_grid~4->proc~mapl_verify none~spherical_to_cartesian_3d_real64 AbstractGridFactory%spherical_to_cartesian_3d_real64 none~spherical_to_cartesian~5->none~spherical_to_cartesian_3d_real64 none~spherical_to_cartesian_3d_real64->proc~mapl_return none~spherical_to_cartesian_3d_real64->proc~mapl_verify interface~mapl_assert MAPL_Assert none~spherical_to_cartesian_3d_real64->interface~mapl_assert none~get_basis AbstractGridFactory%get_basis none~spherical_to_cartesian_3d_real64->none~get_basis 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_basis->proc~mapl_return none~get_basis->proc~mapl_verify none~get_basis->interface~mapl_assert ESMF_GridGetCoord ESMF_GridGetCoord none~get_basis->ESMF_GridGetCoord interface~mapl_gridgetcorners MAPL_GridGetCorners none~get_basis->interface~mapl_gridgetcorners proc~mapl_gridget MAPL_GridGet none~get_basis->proc~mapl_gridget

Source Code

   subroutine test_spherical_to_cartesian_east_wind(this)
      class (ESMF_TestMethod), intent(inout) :: this
      type (LatLonGridFactory) :: factory
      real, allocatable :: east_wind_u(:,:)
      real, allocatable :: east_wind_v(:,:)
      real, allocatable :: xyz(:,:,:,:)
      real, allocatable :: longitudes(:)

      integer, parameter :: IM=12, JM=6
      type (ESMF_Grid) :: grid
      integer :: status

      _UNUSED_DUMMY(this)

      factory = LatLonGridFactory(im_world=IM, jm_world=JM, lm=1, nx=1, ny=1, pole='PE', dateline='GC')
      grid = factory%make_grid()

      allocate(east_wind_u(IM,JM))
      allocate(east_wind_v(IM,JM))
      allocate(xyz(3,1,IM,JM))

      east_wind_u = 1
      east_wind_v = 0
      call factory%spherical_to_cartesian(east_wind_u, east_wind_v, xyz, basis='north-south',rc=status)
      @assertEqual(0, status)

      ! z component is 0
      @assertEqual(0, xyz(3,1,:,:))

      ! Note: longitudes return as REAL64.
      longitudes = real(factory%get_longitudes())
      do j = 1, JM
         @assertEqual(-sin(longitudes), xyz(1,1,:,j), 10*epsilon(1.))
         @assertEqual(+cos(longitudes), xyz(2,1,:,j), 10*epsilon(1.))
      end do

   end subroutine test_spherical_to_cartesian_east_wind