latlon2xyz Subroutine

private subroutine latlon2xyz(p, e)

Arguments

Type IntentOptional Attributes Name
real(kind=ESMF_KIND_R8), intent(in) :: p(2)
real(kind=ESMF_KIND_R8), intent(out) :: e(3)

Called by

proc~~latlon2xyz~~CalledByGraph proc~latlon2xyz latlon2xyz proc~latlon2xyz2 latlon2xyz2 proc~latlon2xyz2->proc~latlon2xyz proc~cell_center2 cell_center2 proc~cell_center2->proc~latlon2xyz2 proc~gnomonic_ed gnomonic_ed proc~gnomonic_ed->proc~latlon2xyz2 proc~mirror_latlon mirror_latlon proc~gnomonic_ed->proc~mirror_latlon proc~mirror_latlon->proc~latlon2xyz2 proc~esmf_utilcreatecscoords ESMF_UtilCreateCSCoords proc~esmf_utilcreatecscoords->proc~cell_center2 proc~gnomonic_grids gnomonic_grids proc~esmf_utilcreatecscoords->proc~gnomonic_grids proc~esmf_utilcreatecscoordspar ESMF_UtilCreateCSCoordsPar proc~esmf_utilcreatecscoordspar->proc~cell_center2 proc~esmf_utilcreatecscoordspar->proc~gnomonic_grids proc~gnomonic_grids->proc~gnomonic_ed proc~esmf_gridcreatecubedsphereireg ESMF_GridCreateCubedSphereIReg proc~esmf_gridcreatecubedsphereireg->proc~esmf_utilcreatecscoordspar proc~esmf_gridcreatecubedspherereg ESMF_GridCreateCubedSphereReg proc~esmf_gridcreatecubedspherereg->proc~esmf_utilcreatecscoordspar proc~esmf_meshcreatecubedsphere ESMF_MeshCreateCubedSphere proc~esmf_meshcreatecubedsphere->proc~esmf_utilcreatecscoords

Source Code

 subroutine latlon2xyz(p, e)
!
! Routine to map (lon, lat) to (x,y,z)
!
 real(ESMF_KIND_R8), intent(in) :: p(2)
 real(ESMF_KIND_R8), intent(out):: e(3)

 integer n
 real(ESMF_KIND_R8) :: q(2)
 real(ESMF_KIND_R8) :: e1, e2, e3

    do n=1,2
       q(n) = p(n)
    enddo

    e1 = cos(q(2)) * cos(q(1))
    e2 = cos(q(2)) * sin(q(1))
    e3 = sin(q(2))
!-----------------------------------
! Truncate to the desired precision:
!-----------------------------------
    e(1) = e1
    e(2) = e2
    e(3) = e3

 end subroutine latlon2xyz