4 & pgg , pref , prmuz, pto1, pw,&
5 & pre1 , pre2 , ptr1 , ptr2 &
84 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
85 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
86 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
87 REAL(KIND=JPRB) ,
INTENT(IN) :: PGG(klon)
88 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF(klon)
89 REAL(KIND=JPRB) ,
INTENT(IN) :: PRMUZ(klon)
90 REAL(KIND=JPRB) ,
INTENT(IN) :: PTO1(klon)
91 REAL(KIND=JPRB) ,
INTENT(IN) :: PW(klon)
92 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRE1(klon)
93 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRE2(klon)
94 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTR1(klon)
95 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTR2(klon)
96 REAL(KIND=JPRB) :: ZTMP (4,kfdia-kidia+1)
97 REAL(KIND=JPRB) :: ZTMP2 (kfdia-kidia+1+
n_vmass)
98 REAL(KIND=JPRB) :: ZTMP3 (kfdia-kidia+1+
n_vmass)
99 REAL(KIND=JPRB) :: ZZARG (kfdia-kidia+1+
n_vmass)
100 REAL(KIND=JPRB) :: ZZARG2 (kfdia-kidia+1+
n_vmass)
102 INTEGER(KIND=JPIM) :: JL, JLL, JLEN
104 REAL(KIND=JPRB) :: ZA11, ZA12, ZA13, ZA21, ZA22, ZA23, ZALPHA,&
105 & ZAM2B, ZAP2B, ZB21, ZB22, ZB23, &
106 & ZBETA, ZC1A, ZC1B, ZC2A, ZC2B, ZDENA, ZDENB, &
107 & ZDT, ZEXKM, ZEXKP, ZEXMU0, ZFF, ZGP, ZRI0A, &
108 & ZRI0B, ZRI0C, ZRI0D, ZRI1A, ZRI1B, ZRI1C, &
109 & ZRI1D, ZRK, ZRM2, ZRP, ZTOP, ZWCP, ZWM, ZX1, &
113 REAL(KIND=JPRB) :: MINJ, MAXJ, X, Y
114 REAL(KIND=JPRB) :: ZPRMUZ,ZIDENA,ZIDENB,ZRR
115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
118 minj(x,y) = y - 0.5_jprb*(abs(x-y)-(x-y))
119 maxj(x,y) = y + 0.5_jprb*(abs(x-y)+(x-y))
127 zdt = 2.0_jprb/3._jprb
131 zprmuz=1.0_jprb/prmuz(jl)
138 zff = pgg(jl)*pgg(jl)
139 zgp = pgg(jl)/(1.0_jprb+pgg(jl))
140 ztop = (1.0_jprb- pw(jl) * zff) * pto1(jl)
141 zwcp = (1-zff)* pw(jl) /(1.0_jprb- pw(jl) * zff)
144 zx1 = 1.0_jprb-zwcp*zgp
146 zrm2 = prmuz(jl) * prmuz(jl)
147 zrk = sqrt(maxj(
replog,3._jprb*zwm*zx1))
148 zx2 = (1.0_jprb-zrk*zrk*zrm2)*(4._jprb/3._jprb)
151 zalpha = zwcp*zrm2*(1.0_jprb+zgp*zwm)*zrr
152 zbeta = zwcp* prmuz(jl) *(1.0_jprb+3._jprb*zgp*zrm2*zwm)*zrr
153 zzarg(jll) = -maxj( -200._jprb, minj( ztop*zprmuz, 200._jprb) )
154 zzarg2(jll) = minj( zrk*ztop, 200._jprb)
163 IF(kfdia-kidia+1 /= jlen)
THEN
164 zzarg(kfdia-kidia+2:jlen)=1.0_jprb
165 zzarg2(kfdia-kidia+2:jlen)=1.0_jprb
173 ztmp2(jll) = exp(zzarg(jll))
174 ztmp3(jll) = exp(zzarg2(jll))
186 zexkm = 1.0_jprb/zexkp
187 zxp2p = 1.0_jprb+zdt*zrp
188 zxm2p = 1.0_jprb-zdt*zrp
189 zap2b = zalpha+zdt*zbeta
190 zam2b = zalpha-zdt*zbeta
200 zdena = za11 * za22 - za21 * za12
201 zidena=1.0_jprb/zdena
202 zc1a = (za22*za13-za12*za23)*zidena
203 zc2a = (za11*za23-za21*za13)*zidena
204 zri0a = zc1a+zc2a-zalpha
205 zri1a = zrp*(zc1a-zc2a)-zbeta
206 pre1(jl) = (zri0a-zdt*zri1a)*zprmuz
207 zri0b = zc1a*zexkm+zc2a*zexkp-zalpha*zexmu0
208 zri1b = zrp*(zc1a*zexkm-zc2a*zexkp)-zbeta*zexmu0
209 ptr1(jl) = zexmu0+(zri0b+zdt*zri1b)*zprmuz
213 zb21 = za21- pref(jl) *zxp2p*zexkm
214 zb22 = za22- pref(jl) *zxm2p*zexkp
215 zb23 = za23- pref(jl) *zexmu0*(zap2b - prmuz(jl) )
216 zdenb = za11 * zb22 - zb21 * za12
217 zidenb= 1.0_jprb/zdenb
218 zc1b = (zb22*za13-za12*zb23)*zidenb
219 zc2b = (za11*zb23-zb21*za13)*zidenb
220 zri0c = zc1b+zc2b-zalpha
221 zri1c = zrp*(zc1b-zc2b)-zbeta
222 pre2(jl) = (zri0c-zdt*zri1c) * zprmuz
223 zri0d = zc1b*zexkm + zc2b*zexkp - zalpha*zexmu0
224 zri1d = zrp * (zc1b*zexkm - zc2b*zexkp) - zbeta*zexmu0
225 ptr2(jl) = zexmu0 + (zri0d + zdt*zri1d) * zprmuz
integer(kind=jpim) n_vmass
subroutine swde(KIDIA, KFDIA, KLON, PGG, PREF, PRMUZ, PTO1, PW, PRE1, PRE2, PTR1, PTR2)
subroutine dr_hook(CDNAME, KSWITCH, PKEY)