Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_tools / da_llxy_latlon.inc
blob2bc66ce88291e71bfac1207b5bcfb3007c022630
1 subroutine da_llxy_latlon(lat, lon, proj, x, y)
3    !----------------------------------------------------------------------- 
4    ! Purpose: Compute the x/y location of a lat/lon on a LATLON 
5    !          (cylindrical equidistant) grid.
6    !-----------------------------------------------------------------------
8    implicit none
10    real, intent(in)             :: lat
11    real, intent(in)             :: lon
12    type(proj_info), intent(in)  :: proj
13    real, intent(out)            :: x
14    real, intent(out)            :: y
16    real                         :: deltalat
17    real                         :: deltalon
18    real                         :: lon360
19    real                         :: latinc
20    real                         :: loninc
22    if (trace_use_frequent) call da_trace_entry("da_llxy_latlon")
24    ! To account for issues around the dateline, convert the incoming
25    ! longitudes to be 0->360.0
26    if (lon < 0) then
27       lon360 = lon + 360.0
28    else
29       lon360 = lon
30    end if
32    deltalat = lat - proj%lat1
33    deltalon = lon360 - proj%lon1
35    !For cylindrical equidistant, dx == dy
36    loninc = proj%dx*360.0/(2.0*EARTH_RADIUS_M*PI)
37    latinc = proj%dx*360.0/(2.0*EARTH_RADIUS_M*PI)
39    ! Compute x/y
40    x = deltalon/loninc
41    y = deltalat/latinc
43    x = x + proj%knowni
44    y = y + proj%knownj
47    if (trace_use_frequent) call da_trace_exit("da_llxy_latlon")
49 end subroutine da_llxy_latlon