45 FUNCTION irnxtx(IX,NX,IRIV)
RESULT(KNEXTX)
50 INTEGER,
INTENT(IN) :: IX,NX,IRIV
52 REAL(KIND=JPRB) :: ZHOOK_HANDLE
54 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:IRNXTX',0,zhook_handle)
55 IF(iriv==1.OR.iriv==5)
THEN 57 ELSEIF(iriv==8.OR.iriv==7.OR.iriv==6)
THEN 63 ELSEIF(iriv==2.OR.iriv==3.OR.iriv==4)
THEN 72 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:IRNXTX',1,zhook_handle)
79 FUNCTION irnxty(IY,NY,IRIV)
RESULT(KNEXTY)
84 INTEGER,
INTENT(IN) :: IY,NY,IRIV
86 REAL(KIND=JPRB) :: ZHOOK_HANDLE
88 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:IRNXTY',0,zhook_handle)
89 IF(iriv==7.OR.iriv==3)
THEN 91 ELSEIF(iriv==6.OR.iriv==5.OR.iriv==4)
THEN 93 ELSEIF(iriv==8.OR.iriv==1.OR.iriv==2)
THEN 102 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:IRNXTY',1,zhook_handle)
109 FUNCTION getlon(IX,NX)
RESULT(PLON0)
114 INTEGER,
INTENT(IN) :: IX,NX
116 REAL(KIND=JPRB) :: ZHOOK_HANDLE
118 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GETLON',0,zhook_handle)
119 plon0 = 360.0 * (
REAL(ix)-0.5) /
REAL(NX) - 180.0
120 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GETLON',1,zhook_handle)
127 FUNCTION getlat(IY,NY)
RESULT(PLAT0)
132 INTEGER,
INTENT(IN) :: IY,NY
134 REAL(KIND=JPRB) :: ZHOOK_HANDLE
136 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GETLAT',0,zhook_handle)
137 plat0 = 180.0 * (
REAL(iy)-0.5) /
REAL(NY) - 90.0
138 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GETLAT',1,zhook_handle)
145 FUNCTION givelon(ZY)
RESULT(PDLON)
152 REAL,
INTENT(IN) :: ZY
155 REAL,
PARAMETER :: ZE2 = 0.006694470
156 REAL :: ZR, ZY_RAD, ZRA
157 REAL(KIND=JPRB) :: ZHOOK_HANDLE
159 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELON',0,zhook_handle)
162 zy_rad = zy *
xpi / 180.
164 pdlon =
xpi / 180.0 * zra * cos(zy_rad) / sqrt(1.0 - ze2 * sin(zy_rad) * sin(zy_rad))
165 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELON',1,zhook_handle)
172 FUNCTION givelat(ZY)
RESULT(PDLAT)
179 REAL,
INTENT(IN) :: ZY
182 REAL,
PARAMETER :: ZE2 = 0.006694470
183 REAL :: ZR, ZY_RAD, ZRA
184 REAL(KIND=JPRB) :: ZHOOK_HANDLE
186 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELAT',0,zhook_handle)
189 zy_rad = zy *
xpi / 180.
191 pdlat =
xpi / 180.0 * zra * (1.0-ze2) / sqrt( (1.0 - ze2 * sin(zy_rad) * sin(zy_rad))**3 )
192 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELAT',1,zhook_handle)
199 FUNCTION giverad(ZY)
RESULT(PRAD)
206 REAL,
INTENT(IN) :: ZY
209 REAL,
PARAMETER :: ZE2 = 0.006694470
210 REAL :: ZR, ZY_RAD, ZRN, ZRA
211 REAL(KIND=JPRB) :: ZHOOK_HANDLE
213 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVERAD',0,zhook_handle)
216 zy_rad = zy *
xpi / 180.
218 zrn = zra / sqrt(1.0 - ze2 * sin(zy_rad) * sin(zy_rad) )
220 prad = zrn * sqrt( 1.0 - ze2 * sin(zy_rad) + ze2 * ze2 * sin(zy_rad) * sin(zy_rad) )
221 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVERAD',1,zhook_handle)
228 FUNCTION givelen(ZX,ZY,ZX_N,ZY_N)
RESULT(PLEN0)
233 REAL,
INTENT(IN) :: ZX,ZY,ZX_N,ZY_N
236 REAL :: ZLAT, ZDX, ZDY, ZRAD, ZDLON, ZDLAT
237 REAL(KIND=JPRB) :: ZHOOK_HANDLE
239 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELEN',0,zhook_handle)
243 IF(zdlon>=180.0)zdlon = abs(360.0 - zdlon)
248 zlat = (zy+zy_n) / 2.0
254 zlat = (zy+zy_n) / 2.0
256 zdx =
givelon(zlat) * zdlon / zrad
257 zdy =
givelat(zlat) * zdlat / zrad
258 plen0 = acos(cos(zdx)*cos(zdy)) * zrad
260 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_FUNCTION:GIVELEN',1,zhook_handle)
real function getlat(IY, NY)
real function giverad(ZY)
real function givelen(ZX, ZY, ZX_N, ZY_N)
real function givelat(ZY)
real function getlon(IX, NX)
real function givelon(ZY)
integer function irnxtx(IX, NX, IRIV)
integer function irnxty(IY, NY, IRIV)