test_spherical_to_cartesian_north_wind Subroutine

public subroutine test_spherical_to_cartesian_north_wind(this)

Arguments

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

Calls

proc~~test_spherical_to_cartesian_north_wind~~CallsGraph proc~test_spherical_to_cartesian_north_wind test_spherical_to_cartesian_north_wind assertequal assertequal proc~test_spherical_to_cartesian_north_wind->assertequal none~get_latitudes LatLonGridFactory%get_latitudes proc~test_spherical_to_cartesian_north_wind->none~get_latitudes none~get_longitudes LatLonGridFactory%get_longitudes proc~test_spherical_to_cartesian_north_wind->none~get_longitudes none~make_grid AbstractGridFactory%make_grid proc~test_spherical_to_cartesian_north_wind->none~make_grid none~spherical_to_cartesian~5 LatLonGridFactory%spherical_to_cartesian proc~test_spherical_to_cartesian_north_wind->none~spherical_to_cartesian~5 proc~mapl_return MAPL_Return none~get_latitudes->proc~mapl_return none~get_longitudes->proc~mapl_return make_new_grid make_new_grid none~make_grid->make_new_grid none~make_grid->proc~mapl_return proc~mapl_verify MAPL_Verify none~make_grid->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_north_wind(this)
      class (ESMF_TestMethod), intent(inout) :: this
      type (LatLonGridFactory) :: factory
      real, allocatable :: north_wind_u(:,:)
      real, allocatable :: north_wind_v(:,:)
      real, allocatable :: xyz(:,:,:,:)
      real, allocatable :: longitudes(:)
      real, allocatable :: latitudes(:)

      integer, parameter :: IM=12, JM=6
      integer :: status
      type (ESMF_Grid) :: grid
      
      _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(north_wind_u(IM,JM))
      allocate(north_wind_v(IM,JM))
      allocate(xyz(3,1,IM,JM))

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

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

   end subroutine test_spherical_to_cartesian_north_wind