7 & pgg , prmuz, ptau , pw, &
8 & pref , prefd, ptra , ptrad &
78 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
79 INTEGER(KIND=JPIM),
INTENT(OUT) :: KMODTS
80 LOGICAL ,
INTENT(IN) :: LDRTCHK(
jplay)
81 REAL(KIND=JPRB) ,
INTENT(IN) :: PGG(
jplay)
82 REAL(KIND=JPRB) ,
INTENT(IN) :: PRMUZ
83 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU(
jplay)
84 REAL(KIND=JPRB) ,
INTENT(IN) :: PW(
jplay)
85 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PREF(
jplay)
86 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PREFD(
jplay)
87 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PTRA(
jplay)
88 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PTRAD(
jplay)
91 INTEGER(KIND=JPIM) :: JK
93 REAL(KIND=JPRB) :: ZA, ZA1, ZA2
94 REAL(KIND=JPRB) :: ZBETA, ZDEND, ZDENR, ZDENT
95 REAL(KIND=JPRB) :: ZE1, ZE2, ZEM1, ZEM2, ZEMM, ZEP1, ZEP2
96 REAL(KIND=JPRB) :: ZG, ZG3, ZGAMMA1, ZGAMMA2, ZGAMMA3, ZGAMMA4, ZGT
97 REAL(KIND=JPRB) :: ZR1, ZR2, ZR3, ZR4, ZR5, ZRK, ZRK2, ZRKG, ZRM1, ZRP, ZRP1, ZRPP
98 REAL(KIND=JPRB) :: ZSR3, ZT1, ZT2, ZT3, ZT4, ZT5, ZTO1
99 REAL(KIND=JPRB) :: ZW, ZWCRIT, ZWO
100 REAL(KIND=JPRB) :: ZHOOK_HANDLE,EXP500,ZTEMP
105 exp500=exp(500.0_jprb)
115 9000
format(1
x,
'SRTM_REFTRA:inputs:',i3,l8,4e13.6)
117 IF (.NOT.ldrtchk(jk))
THEN
124 9001
format(1
x,
'SRTM_REFTRA:not.LRTCKH:',2i3,4f10.6)
134 IF (kmodts == 1)
THEN
135 zgamma1= (7._jprb - zw * (4._jprb + zg3)) * 0.25_jprb
136 zgamma2=-(1._jprb - zw * (4._jprb - zg3)) * 0.25_jprb
137 zgamma3= (2._jprb - zg3 * prmuz ) * 0.25_jprb
138 ELSEIF (kmodts == 2)
THEN
139 zgamma1= (8._jprb - zw * (5._jprb + zg3)) * 0.25_jprb
140 zgamma2= 3._jprb *(zw * (1._jprb - zg )) * 0.25_jprb
141 zgamma3= (2._jprb - zg3 * prmuz ) * 0.25_jprb
142 ELSEIF (kmodts == 3)
THEN
143 zgamma1= zsr3 * (2._jprb - zw * (1._jprb + zg)) * 0.5_jprb
144 zgamma2= zsr3 * zw * (1._jprb - zg ) * 0.5_jprb
145 zgamma3= (1._jprb - zsr3 * zg * prmuz ) * 0.5_jprb
147 zgamma4= 1._jprb - zgamma3
150 zwo= zw / (1._jprb - (1._jprb - zw) * (zg / (1._jprb - zg))**2)
154 IF (zwo >= zwcrit)
THEN
165 ze1 = min( zto1 / prmuz , 500._jprb)
167 ztemp=1.0_jprb/(1._jprb + zgt)
168 pref(jk) = (zgt - za1 * (1._jprb - ze2)) *ztemp
169 ptra(jk) = 1._jprb - pref(jk)
173 prefd(jk) = zgt *ztemp
174 ptrad(jk) = 1._jprb - prefd(jk)
178 9002
format(1
x,
'SRTM_REFTRA: consrv: LDRTCHK:',2i3,4f10.6)
185 za1 = zgamma1 * zgamma4 + zgamma2 * zgamma3
186 za2 = zgamma1 * zgamma3 + zgamma2 * zgamma4
188 zrk = sqrt( max(
replog, zgamma1**2 - zgamma2**2) )
193 zrpp = 1._jprb - zrp*zrp
195 zr1 = zrm1 * (za2 + zrk * zgamma3)
196 zr2 = zrp1 * (za2 - zrk * zgamma3)
197 zr3 = zrk2 * (zgamma3 - za2 * prmuz )
199 zr5 = zrpp * (zrk - zgamma1)
200 zt1 = zrp1 * (za1 + zrk * zgamma4)
201 zt2 = zrm1 * (za1 - zrk * zgamma4)
202 zt3 = zrk2 * (zgamma4 + za1 * prmuz )
209 IF(zrk * zto1 > 500._jprb)
THEN
215 IF(zto1 > 500._jprb*prmuz)
THEN
218 zep2=exp(zto1 / prmuz)
235 zdenr = zr4*zep1 + zr5*zem1
238 pref(jk) = zw * (zr1*zep1 - zr2*zem1 - zr3*zem2) / zdenr
240 zdent = zt4*zep1 + zt5*zem1
243 ptra(jk) = zem2 * (1._jprb - zw * (zt1*zep1 - zt2*zem1 - zt3*zep2) / zdent)
248 zdend = 1._jprb / ( (1._jprb - zbeta*zemm ) * zrkg)
249 prefd(jk) = zgamma2 * (1._jprb - zemm) * zdend
250 ptrad(jk) = zrk2*zem1*zdend
254 9003
format(1
x,
'SRTM_REFTRA: OMG<1: LDRTCHK:',2i3,4f10.6)
subroutine srtm_reftra(KLEV, KMODTS, LDRTCHK, PGG, PRMUZ, PTAU, PW, PREF, PREFD, PTRA, PTRAD)
integer(kind=jpim), parameter jplay
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
subroutine dr_hook(CDNAME, KSWITCH, PKEY)