45 SUBROUTINE setnext(KLON,KLAT,KGRCN,KNEXTX,KNEXTY,GMLON,GMLAT)
61 INTEGER,
INTENT(IN) :: KLON, KLAT
63 INTEGER,
DIMENSION(:,:),
INTENT(INOUT) :: KGRCN
65 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KNEXTX, KNEXTY
67 LOGICAL,
INTENT(IN),
OPTIONAL :: GMLON,GMLAT
71 INTEGER :: JLON, JLAT, IDIR
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETNEXT',0,zhook_handle)
78 IF(
PRESENT(gmlon))
THEN 81 IF(kgrcn(klon,jlat)==2..OR.kgrcn(klon,jlat)==3.OR.kgrcn(klon,jlat)==4.)kgrcn(klon,jlat)=15
82 IF(kgrcn( 1,jlat)==6..OR.kgrcn( 1,jlat)==7.OR.kgrcn( 1,jlat)==8.)kgrcn( 1,jlat)=15
87 IF(
PRESENT(gmlat))
THEN 90 IF(kgrcn(jlon, 1)==4..OR.kgrcn(jlon, 1)==5.OR.kgrcn(jlon, 1)==6.)kgrcn(jlon, 1)=15
91 IF(kgrcn(jlon,klat)==1..OR.kgrcn(jlon,klat)==2.OR.kgrcn(jlon,klat)==8.)kgrcn(jlon,klat)=15
101 IF((idir>=1).AND.(idir<=8))
THEN 102 knextx(jlon,jlat)=
irnxtx(jlon,klon,idir)
103 knexty(jlon,jlat)=
irnxty(jlat,klat,idir)
105 knextx(jlon,jlat)=jlon
106 knexty(jlon,jlat)=jlat
113 IF (kgrcn(knextx(jlon,jlat),knexty(jlon,jlat))==0) kgrcn(jlon,jlat)=9
119 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETNEXT',1,zhook_handle)
126 SUBROUTINE setarea(KLAT,PLATMIN,PRES,PAREA)
140 INTEGER,
INTENT(IN) :: KLAT
141 REAL,
INTENT(IN) :: PRES
142 REAL,
INTENT(IN) :: PLATMIN
144 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PAREA
148 REAL :: ZDLAT, ZDLON, ZLAT
151 REAL(KIND=JPRB) :: ZHOOK_HANDLE
155 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETAREA',0,zhook_handle)
159 zlat=platmin-(pres/2.)
163 DO jj=1,
SIZE(parea,1)
165 * (sin((zlat+zdlat/2.)*
xpi/180.)-sin((zlat-zdlat/2.)*
xpi/180.))
168 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETAREA',1,zhook_handle)
175 SUBROUTINE setlen(KLON,KLAT,KGRCN,KNEXTX,KNEXTY,PRATMED,PLEN)
189 INTEGER,
INTENT(IN) :: KLON, KLAT
190 REAL,
INTENT(IN) :: PRATMED
192 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KGRCN
194 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KNEXTX, KNEXTY
196 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PLEN
200 REAL :: ZLON, ZLAT, ZLON_N, ZLAT_N
202 INTEGER :: JLON, JLAT
203 REAL(KIND=JPRB) :: ZHOOK_HANDLE
207 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETLEN',0,zhook_handle)
214 zlat=
getlat(klat-jlat+1,klat)
220 IF(kgrcn(jlon,jlat)>=1.AND.kgrcn(jlon,jlat)<=8)
THEN 221 zlon_n =
getlon(knextx(jlon,jlat),klon)
222 zlat_n =
getlat(klat-knexty(jlon,jlat)+1,klat)
223 plen(jlon,jlat) =
givelen(zlon,zlat,zlon_n,zlat_n) * 1000.0
224 ELSEIF(kgrcn(jlon,jlat)>=9)
THEN 225 zlat_n =
getlat(klat-(jlat-1)+1,klat)
226 plen(jlon,jlat) =
givelen(zlon,zlat,zlon,zlat_n) * 1000.0
228 plen(jlon,jlat) = 0.0
237 IF (
lhook)
CALL dr_hook(
'MODE_TRIP_INIT:SETLEN',1,zhook_handle)
real function getlat(IY, NY)
subroutine setlen(KLON, KLAT, KGRCN, KNEXTX, KNEXTY, PRATMED, PLEN)
subroutine setarea(KLAT, PLATMIN, PRES, PAREA)
subroutine setnext(KLON, KLAT, KGRCN, KNEXTX, KNEXTY, GMLON, GMLAT)
real function givelen(ZX, ZY, ZX_N, ZY_N)
real function getlon(IX, NX)
integer function irnxtx(IX, NX, IRIV)
integer function irnxty(IY, NY, IRIV)