44 c_dx, c_dy, c_lat, c_lon, c_mask) &
45 bind(c, name=
'lam_domaincheck_esg_f90')
48 real(c_float),
intent(in ) :: c_a, c_k, c_plat, c_plon, c_pazi, c_dx, c_dy
49 real(c_float),
intent(in ) :: c_lat, c_lon
50 integer(c_int),
intent(in ) :: c_npx, c_npy
51 integer(c_int),
intent(inout) :: c_mask
52 real(kind_real),
dimension(2) :: xm
55 real(kind_real) :: a, k, plat, plon, pazi, dx, dy, lat, lon
62 a = real(c_a, kind_real)
63 k = real(c_k, kind_real)
65 plat = real(c_plat, kind_real)*
deg2rad
66 plon = real(c_plon, kind_real)*
deg2rad
67 pazi = real(c_pazi, kind_real)
71 lat = real(c_lat, kind_real)*
deg2rad
72 lon = real(c_lon, kind_real)*
deg2rad
76 dx, dy, lat, lon, xm, failure)
80 if ((abs(xm(1)) < npx/2) .and. (abs(xm(2)) < npy/2) .and. (.not. failure))
then
104 c_lat, c_lon, c_mask) &
105 bind(c, name=
'lam_domaincheck_circle_f90')
107 real(c_float),
intent(in ) :: c_cenlat, c_cenlon, c_radius
108 real(c_float),
intent(in ) :: c_lat, c_lon
109 integer(c_int),
intent(inout) :: c_mask
111 real(kind_real) :: dlat, dlon, rr
112 real(kind_real) :: radius, cenlat, cenlon, lat, lon
115 cenlat = real(c_cenlat, kind_real)*
deg2rad
116 cenlon = real(c_cenlon, kind_real)*
deg2rad
117 radius = real(c_radius, kind_real)
118 lat = real(c_lat, kind_real)*
deg2rad
119 lon = real(c_lon, kind_real)*
deg2rad
122 dlat =
half*abs(lat - cenlat)
123 dlon =
half*abs(lon - cenlon)
124 rr = sqrt( sin(dlat)**2 + cos(lat)*cos(cenlat)*sin(dlon)**2 )
129 if (rr < radius)
then
Fortran module of helper functions for FV3-LAM ESG grid domain configuration These routines are borro...
real(kind_real), parameter, public pi
real(kind_real), parameter, public deg2rad
real(kind_real), parameter, public mean_earth_rad
real(kind_real), parameter, public two
real(kind_real), parameter, public half
real(kind_real), parameter, public rad2deg
Fortran module to handle verifying that an observation is within a limited area model domain.
subroutine lam_domaincheck_esg_c(c_a, c_k, c_plat, c_plon, c_pazi, c_npx, c_npy, c_dx, c_dy, c_lat, c_lon, c_mask)
subroutine lam_domaincheck_esg_c
subroutine lam_domaincheck_circle_c(c_cenlat, c_cenlon, c_radius, c_lat, c_lon, c_mask)
subroutine lam_domaincheck_circle_c