Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_tools / da_xyll.inc
blob88827b81aaf32bbc5b9167776b606772fb789999
1 subroutine da_xyll(proj, xx, yy, lat, lon)
3    !-----------------------------------------------------------------------
4    ! Purpose: Computes geographical latitude and longitude for a given (i,j) 
5    ! point in a grid with a projection of proj
6    !-----------------------------------------------------------------------
8    implicit none
10    type(proj_info), intent(in)  :: proj
11    real,            intent(in)  :: xx
12    real,            intent(in)  :: yy
13    real,            intent(out) :: lat
14    real,            intent(out) :: lon
16    real :: x, y
18    if (trace_use) call da_trace_entry("da_xyll")
20    if (.NOT.proj%init) then
21       call da_error(__FILE__,__LINE__, &
22          (/"You have not called map_set for this projection!"/))
23    end if
25    x = xx
26    y = yy
28    select case (proj%code)
29       case (PROJ_LATLON)
30          call da_xyll_latlon(x, y, proj, lat, lon)
32       case (PROJ_MERC)
33          x = xx - proj%knowni + 1.0
34          y = yy - proj%knownj + 1.0
35          call da_xyll_merc(x, y, proj, lat, lon)
37       case (PROJ_PS)
38          call da_xyll_ps(x, y, proj, lat, lon)
40       case (PROJ_LC)
42          x = xx - proj%knowni + 1.0
43          y = yy - proj%knownj + 1.0
44          call da_xyll_lc(x, y, proj, lat, lon)
46       case default
47          write(unit=message(1),fmt='(A,I2)') &
48             "Unrecognized map projection code: ", proj%code
49          call da_error(__FILE__,__LINE__,message(1:1))
51    end select
53    if (trace_use) call da_trace_exit("da_xyll")
55 end subroutine da_xyll