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