63 TYPE(
lola) function
tilt_s(ref_coord,pt_coord2) result (pt_coord1)
64 type(
lola),
INTENT(IN) :: ref_coord, pt_coord2
66 REAL(KIND=JPRB) :: ZHOOK_HANDLE
69 pt_coord1%LAT =
p_asin(cos(ref_coord%LON)*sin(pt_coord2%LAT)-sin(ref_coord%LON)* &
70 & cos(pt_coord2%LAT)*sin(pt_coord2%LON))
71 IF (cos(pt_coord1%LAT) /= 0.0_jprb)
THEN 72 pt_coord1%LON =
cosin_to_angle((cos(pt_coord2%LAT)*cos(pt_coord2%LON))/cos(pt_coord1%LAT), &
73 & (sin(ref_coord%LON)*sin(pt_coord2%LAT)+cos(ref_coord%LON)* &
74 & cos(pt_coord2%LAT)*sin(pt_coord2%LON))/cos(pt_coord1%LAT))
76 pt_coord1%LON = 0.0_jprb
83 FUNCTION tilt_v(REF_COORD,PT_COORD2)
RESULT (PT_COORD1)
84 type(lola),
INTENT(IN) :: ref_coord
85 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord2
86 type(lola),
DIMENSION(SIZE(PT_COORD2)) :: pt_coord1
88 REAL(KIND=JPRB) :: ZHOOK_HANDLE
90 IF (lhook)
CALL dr_hook(
'EGGMRT:TILT_V',0,zhook_handle)
92 pt_coord1(:)%LAT = p_asin(cos(ref_coord%LON)*sin(pt_coord2(:)%LAT)-sin(ref_coord%LON)* &
93 & cos(pt_coord2(:)%LAT)*sin(pt_coord2(:)%LON))
94 WHERE (cos(pt_coord1(:)%LAT) /= 0.0_jprb)
95 pt_coord1(:)%LON = cosin_to_angle((cos(pt_coord2(:)%LAT)*cos(pt_coord2(:)%LON))/cos(pt_coord1(:)%LAT), &
96 & (sin(ref_coord%LON)*sin(pt_coord2(:)%LAT)+cos(ref_coord%LON)* &
97 & cos(pt_coord2(:)%LAT)*sin(pt_coord2(:)%LON))/cos(pt_coord1(:)%LAT))
99 pt_coord1(:)%LON = 0.0_jprb
102 IF (lhook)
CALL dr_hook(
'EGGMRT:TILT_V',1,zhook_handle)
108 TYPE(lola) FUNCTION ROTATE_S(center_coord,pt_coord1) RESULT (pt_coord)
109 type(lola),
INTENT(IN) :: center_coord, pt_coord1
111 REAL(KIND=JPRB) :: ZHOOK_HANDLE
113 IF (lhook)
CALL dr_hook(
'EGGMRT:ROTATE_S',0,zhook_handle)
114 pt_coord%LAT = p_asin(cos(center_coord%LAT)*sin(pt_coord1%LAT)+sin(center_coord%LAT)* &
115 & cos(pt_coord1%LAT)*cos(pt_coord1%LON))
117 IF (cos(pt_coord%LAT) /= 0.0_jprb)
THEN 118 pt_coord%LON = cosin_to_angle((-sin(center_coord%LAT)*sin(pt_coord1%LAT)+ &
119 & cos(center_coord%LAT)*cos(pt_coord1%LAT)*cos(pt_coord1%LON))/cos(pt_coord%LAT), &
120 & (cos(pt_coord1%LAT)*sin(pt_coord1%LON))/cos(pt_coord%LAT))+center_coord%LON
122 pt_coord%LON = 0.0_jprb
124 IF (lhook)
CALL dr_hook(
'EGGMRT:ROTATE_S',1,zhook_handle)
129 FUNCTION rotate_v(CENTER_COORD,PT_COORD1)
RESULT (PT_COORD)
130 type(lola),
INTENT(IN) :: center_coord
131 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord1
132 type(lola),
DIMENSION(SIZE(PT_COORD1)) :: pt_coord
134 REAL(KIND=JPRB) :: ZHOOK_HANDLE
136 IF (lhook)
CALL dr_hook(
'EGGMRT:ROTATE_V',0,zhook_handle)
137 pt_coord(:)%LAT = p_asin(cos(center_coord%LAT)*sin(pt_coord1(:)%LAT)+sin(center_coord%LAT)* &
138 & cos(pt_coord1(:)%LAT)*cos(pt_coord1(:)%LON))
140 WHERE (cos(pt_coord(:)%LAT) /= 0.0_jprb)
141 pt_coord(:)%LON = cosin_to_angle((-sin(center_coord%LAT)*sin(pt_coord1(:)%LAT)+ &
142 & cos(center_coord%LAT)*cos(pt_coord1(:)%LAT)*cos(pt_coord1(:)%LON))/cos(pt_coord(:)%LAT), &
143 & (cos(pt_coord1(:)%LAT)*sin(pt_coord1(:)%LON))/cos(pt_coord(:)%LAT))+center_coord%LON
145 pt_coord(:)%LON = 0.0_jprb
147 IF (lhook)
CALL dr_hook(
'EGGMRT:ROTATE_V',1,zhook_handle)
152 TYPE(lola) FUNCTION MEROTIL_S(ref_coord,center_coord,pt_coord2) RESULT (pt_coord)
153 type(lola),
INTENT(IN) :: ref_coord, center_coord, pt_coord2
155 REAL(KIND=JPRB) :: ZHOOK_HANDLE
157 IF (lhook)
CALL dr_hook(
'EGGMRT:MEROTIL_S',0,zhook_handle)
158 pt_coord=
rotate(center_coord,
tilt(ref_coord,pt_coord2))
159 IF (lhook)
CALL dr_hook(
'EGGMRT:MEROTIL_S',1,zhook_handle)
164 FUNCTION merotil_v(REF_COORD,CENTER_COORD,PT_COORD2)
RESULT (PT_COORD)
165 type(lola),
INTENT(IN) :: ref_coord, center_coord
166 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord2
167 type(lola),
DIMENSION(SIZE(PT_COORD2)) :: pt_coord
169 REAL(KIND=JPRB) :: ZHOOK_HANDLE
171 IF (lhook)
CALL dr_hook(
'EGGMRT:MEROTIL_V',0,zhook_handle)
172 pt_coord(:)=
rotate(center_coord,
tilt(ref_coord,pt_coord2(:)))
173 IF (lhook)
CALL dr_hook(
'EGGMRT:MEROTIL_V',1,zhook_handle)
179 TYPE(lola) FUNCTION ANTI_TILT_S(ref_coord,pt_coord1) RESULT (pt_coord2)
180 type(lola),
INTENT(IN) :: ref_coord, pt_coord1
182 type(lola) :: anti_ref_coord
183 REAL(KIND=JPRB) :: ZHOOK_HANDLE
185 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_TILT_S',0,zhook_handle)
186 anti_ref_coord%LAT = ref_coord%LAT
187 anti_ref_coord%LON = -(1.0_jprb)*ref_coord%LON
188 pt_coord2 =
tilt(anti_ref_coord,pt_coord1)
189 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_TILT_S',1,zhook_handle)
194 FUNCTION anti_tilt_v(REF_COORD,PT_COORD1)
RESULT (PT_COORD2)
195 type(lola),
INTENT(IN) :: ref_coord
196 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord1
197 type(lola),
DIMENSION(SIZE(PT_COORD1)) :: pt_coord2
199 type(lola) :: anti_ref_coord
200 REAL(KIND=JPRB) :: ZHOOK_HANDLE
202 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_TILT_V',0,zhook_handle)
203 anti_ref_coord%LAT = ref_coord%LAT
204 anti_ref_coord%LON = -(1.0_jprb)*ref_coord%LON
205 pt_coord2(:) =
tilt(anti_ref_coord,pt_coord1(:))
206 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_TILT_V',1,zhook_handle)
211 TYPE(lola) FUNCTION ANTI_ROTATE_S(center_coord,pt_coord) RESULT (pt_coord1)
212 type(lola),
INTENT(IN) :: center_coord, pt_coord
214 type(lola) :: anti_center_coord, anti_pt_coord
215 REAL(KIND=JPRB) :: ZHOOK_HANDLE
217 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_ROTATE_S',0,zhook_handle)
218 anti_center_coord%LAT = -(1.0_jprb)*center_coord%LAT
219 anti_center_coord%LON = center_coord%LON
220 anti_pt_coord%LAT = pt_coord%LAT
221 anti_pt_coord%LON = pt_coord%LON-center_coord%LON
222 pt_coord1 =
rotate(anti_center_coord,anti_pt_coord)
223 pt_coord1%LON = pt_coord1%LON-center_coord%LON
224 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_ROTATE_S',1,zhook_handle)
229 FUNCTION anti_rotate_v(CENTER_COORD,PT_COORD)
RESULT (PT_COORD1)
230 type(lola),
INTENT(IN) :: center_coord
231 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord
232 type(lola),
DIMENSION(SIZE(PT_COORD)) :: pt_coord1
234 type(lola) :: anti_center_coord
235 type(lola),
DIMENSION(SIZE(PT_COORD)) :: anti_pt_coord
236 REAL(KIND=JPRB) :: ZHOOK_HANDLE
238 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_ROTATE_V',0,zhook_handle)
239 anti_center_coord%LAT = -(1.0_jprb)*center_coord%LAT
240 anti_center_coord%LON = center_coord%LON
241 anti_pt_coord(:)%LAT = pt_coord(:)%LAT
242 anti_pt_coord(:)%LON = pt_coord(:)%LON-center_coord%LON
243 pt_coord1(:) =
rotate(anti_center_coord,anti_pt_coord(:))
244 pt_coord1(:)%LON = pt_coord1(:)%LON-center_coord%LON
245 IF (lhook)
CALL dr_hook(
'EGGMRT:ANTI_ROTATE_V',1,zhook_handle)
250 TYPE(lola) FUNCTION METILROT_S(ref_coord,center_coord,pt_coord) RESULT (pt_coord2)
251 type(lola),
INTENT(IN) :: ref_coord, center_coord, pt_coord
253 REAL(KIND=JPRB) :: ZHOOK_HANDLE
255 IF (lhook)
CALL dr_hook(
'EGGMRT:METILROT_S',0,zhook_handle)
257 IF (lhook)
CALL dr_hook(
'EGGMRT:METILROT_S',1,zhook_handle)
262 FUNCTION metilrot_v(REF_COORD,CENTER_COORD,PT_COORD)
RESULT (PT_COORD2)
263 type(lola),
INTENT(IN) :: ref_coord, center_coord
264 type(lola),
DIMENSION(:),
INTENT(IN) :: pt_coord
265 type(lola),
DIMENSION(SIZE(PT_COORD)) :: pt_coord2
267 REAL(KIND=JPRB) :: ZHOOK_HANDLE
269 IF (lhook)
CALL dr_hook(
'EGGMRT:METILROT_V',0,zhook_handle)
271 IF (lhook)
CALL dr_hook(
'EGGMRT:METILROT_V',1,zhook_handle)
type(lola) function anti_rotate_s(CENTER_COORD, PT_COORD)
type(lola) function, dimension(size(pt_coord2)) merotil_v(REF_COORD, CENTER_COORD, PT_COORD2)
type(lola) function, dimension(size(pt_coord)) anti_rotate_v(CENTER_COORD, PT_COORD)
type(lola) function rotate_s(CENTER_COORD, PT_COORD1)
type(lola) function tilt_s(REF_COORD, PT_COORD2)
type(lola) function metilrot_s(REF_COORD, CENTER_COORD, PT_COORD)
type(lola) function, dimension(size(pt_coord)) metilrot_v(REF_COORD, CENTER_COORD, PT_COORD)
type(lola) function, dimension(size(pt_coord1)) anti_tilt_v(REF_COORD, PT_COORD1)
type(lola) function, dimension(size(pt_coord1)) rotate_v(CENTER_COORD, PT_COORD1)
type(lola) function merotil_s(REF_COORD, CENTER_COORD, PT_COORD2)
type(lola) function anti_tilt_s(REF_COORD, PT_COORD1)
type(lola) function, dimension(size(pt_coord2)) tilt_v(REF_COORD, PT_COORD2)