2 & (
klev, k_icldatm, k_inflag, k_iceflag, k_liqflag, k_nstr,&
3 & p_cldfrac, p_clddat1, p_clddat2, p_clddat3, p_clddat4, p_clddatmom,&
4 & p_taucldorig, p_taucloud, p_ssacloud, p_xmom &
32 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
33 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_ICLDATM
34 INTEGER(KIND=JPIM),
INTENT(IN) :: K_INFLAG
35 INTEGER(KIND=JPIM),
INTENT(IN) :: K_ICEFLAG
36 INTEGER(KIND=JPIM),
INTENT(IN) :: K_LIQFLAG
37 INTEGER(KIND=JPIM),
INTENT(IN) :: K_NSTR
38 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDFRAC(
jplay)
39 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDDAT1(
jplay)
40 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDDAT2(
jplay)
41 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDDAT3(
jplay)
42 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDDAT4(
jplay)
43 REAL(KIND=JPRB) ,
INTENT(IN) :: P_CLDDATMOM(0:16,
jplay)
44 REAL(KIND=JPRB) ,
INTENT(INOUT) :: P_TAUCLDORIG(
jplay,
jpband)
45 REAL(KIND=JPRB) ,
INTENT(INOUT) :: P_TAUCLOUD(
jplay,
jpband)
46 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_SSACLOUD(
jplay,
jpband)
47 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_XMOM(0:16,
jplay,
jpband)
51 REAL(KIND=JPRB) :: Z_EPS
52 REAL(KIND=JPRB) :: Z_TAUCLDORIG_A, Z_FFP, Z_FFP1, Z_FFPSSA, Z_SSACLOUD_A, Z_TAUCLOUD_A
53 REAL(KIND=JPRB) :: Z_CWP, Z_FICE, Z_RADICE, Z_FACTOR, Z_FINT, Z_FLIQ, Z_RADLIQ
54 REAL(KIND=JPRB) :: Z_TAUICEORIG, Z_SCATICE, Z_SSAICE, Z_TAUICE &
55 & , Z_TAULIQORIG, Z_SCATLIQ, Z_SSALIQ, Z_TAULIQ
58 INTEGER(KIND=JPIM) :: I_NCBANDS, I_NLAYERS
59 INTEGER(KIND=JPIM) :: IB, IB1, IB2, I_LAY, ISTR , INDEX
60 INTEGER(KIND=JPIM) :: I_NDBUG
61 REAL(KIND=JPRB) :: ZHOOK_HANDLE
117 IF (i_ndbug <= 2)
THEN
118 print *,
'cldprop before loop K_INFLAG, K_ICEFLAG, K_LIQFLAG:',k_inflag,k_iceflag,k_liqflag,ib1,ib2
121 DO i_lay = 1, i_nlayers
123 IF (p_cldfrac(i_lay) >= z_eps)
THEN
126 IF (i_ndbug <= 2)
THEN
127 print 9101,i_lay,k_icldatm,p_cldfrac(i_lay),p_clddat1(i_lay),p_clddat2(i_lay),p_clddat3(i_lay)&
128 & ,p_clddat4(i_lay),(p_clddatmom(istr,i_lay),istr=0,k_nstr)
129 9101
format(1
x,
'Cld :',2i3,f7.4,7e12.5)
133 IF (k_inflag == 0)
THEN
134 z_taucldorig_a = p_clddat1(i_lay)
135 z_ffp = p_clddatmom(k_nstr,i_lay)
137 z_ffpssa = 1.0 - z_ffp * p_clddat2(i_lay)
138 z_ssacloud_a = z_ffp1*p_clddat2(i_lay)/z_ffpssa
139 z_taucloud_a = z_ffpssa*z_taucldorig_a
143 p_taucldorig(i_lay,ib) = z_taucldorig_a
144 p_ssacloud(i_lay,ib) = z_ssacloud_a
145 p_taucloud(i_lay,ib) = z_taucloud_a
148 p_xmom(istr,i_lay,ib) = (p_clddatmom(istr,i_lay) - z_ffp)/ &
154 ELSEIF(k_inflag == 2)
THEN
155 z_cwp = p_clddat1(i_lay)
156 z_fice = p_clddat2(i_lay)
157 z_radice = p_clddat3(i_lay)
159 IF (i_ndbug <= 1)
THEN
160 print 9102,i_lay,z_cwp,z_fice,z_radice
161 9102
format(1
x,
'A',i3,3e13.6)
165 IF (z_fice == 0.0)
THEN
174 IF (i_ndbug <= 1)
THEN
176 9103
format(1
x,
'B',i3,f6.3,2e13.6,i3,4e12.5)
181 ELSEIF (k_iceflag == 3)
THEN
182 IF (z_radice < 10.0 .OR. z_radice > 140.0) stop
'ICE EFFECTIVE SIZE OUT OF BOUNDS'
184 z_factor = (z_radice - 5._jprb)/5._jprb
185 index = int(z_factor)
186 IF (index == 27) index = 26
187 z_fint = z_factor -
REAL(index)
199 if (
fdelta(ib) < 0.0) stop
'FDELTA LESS THAN 0.0'
200 if (
fdelta(ib) > 1.0) stop
'FDELTA GT THAN 1.0'
205 if (
extcoice(ib) < 0.0_jprb) stop
'ICE EXTINCTION LESS THAN 0.0'
206 if (
ssacoice(ib) > 1.0_jprb) stop
'ICE SSA GRTR THAN 1.0'
207 if (
ssacoice(ib) < 0.0_jprb) stop
'ICE SSA LESS THAN 0.0'
208 if (
gice(ib) > 1.0_jprb) stop
'ICE ASYM GRTR THAN 1.0'
209 if (
gice(ib) < 0.0_jprb) stop
'ICE ASYM LESS THAN 0.0'
211 IF (i_ndbug <= 1)
THEN
212 print 9104,i_lay,z_fice,z_cwp,z_radice,ib,
extcoice(ib),
ssacoice(ib),
gice(ib),
forwice(ib),
fdelta(ib)
213 9104
format(1
x,
'C',i3,f5.3,2e13.6,i3,5e12.5)
218 print *,
'end of ice computations for I_LAY=',i_lay
222 IF (z_fliq == 0.0)
THEN
231 IF (i_ndbug <= 1)
THEN
233 9105
format(1
x,
'D',i3,f5.3,1e13.6,i3,4e12.5)
238 ELSEIF (k_liqflag == 1)
THEN
239 z_radliq = p_clddat4(i_lay)
240 IF (z_radliq < 1.5 .OR. z_radliq > 60.) stop
'LIQUID EFFECTIVE RADIUS OUT OF BOUNDS'
241 index = int(z_radliq - 1.5)
242 IF (index == 0) index = 1
243 IF (index == 58) index = 57
244 z_fint = z_radliq - 1.5 -
REAL(index)
257 if (
extcoliq(ib) < 0.0_jprb) stop
'LIQUID EXTINCTION LESS THAN 0.0'
258 if (
ssacoliq(ib) > 1.0_jprb) stop
'LIQUID SSA GRTR THAN 1.0'
259 if (
ssacoliq(ib) < 0.0_jprb) stop
'LIQUID SSA LESS THAN 0.0'
260 if (
gliq(ib) > 1.0_jprb) stop
'LIQUID ASYM GRTR THAN 1.0'
261 if (
gliq(ib) < 0.0_jprb) stop
'LIQUID ASYM LESS THAN 0.0'
263 IF (i_ndbug <= 1)
THEN
265 9106
format(1
x,
'E',i3,f5.3,2e13.6,i3,5e12.5)
271 IF (i_ndbug <= 1)
THEN
272 print *,
'end of liquid water computations for I_LAY=',i_lay
279 p_taucldorig(i_lay,ib) = z_tauliqorig + z_tauiceorig
281 IF (i_ndbug <= 1)
THEN
282 print 9107,ib,z_tauliqorig,z_tauiceorig,p_taucldorig(i_lay,ib),z_cwp &
285 9107
format(1
x,
'F',i3,10e12.5)
296 z_scatliq = z_ssaliq * z_tauliq
297 z_scatice = z_ssaice * z_tauice
298 p_taucloud(i_lay,ib) = z_tauliq + z_tauice
299 p_ssacloud(i_lay,ib) = (z_scatliq + z_scatice) / &
300 & p_taucloud(i_lay,ib)
301 p_xmom(0,i_lay,ib) = 1.0
303 IF (i_ndbug <= 1)
THEN
304 print 9108,ib,z_tauliqorig,z_tauiceorig,z_ssaliq,z_tauliq,z_scatliq,z_ssaice,z_tauice,z_scatice
305 9108
format(1
x,
'G',i3,8e13.6)
319 p_xmom(istr,i_lay,ib) = (1.0/(z_scatliq+z_scatice))* &
333 IF (i_ndbug <= 1)
THEN
334 print *,
'about to leave SRTM_CLDPROP'
integer(kind=jpim), parameter jpb2
real(kind=jprb), dimension(46, 16:29) asyice3
real(kind=jprb), dimension(16:29) ssacoliq
integer(kind=jpim), parameter jplay
real(kind=jprb), dimension(46, 16:29) extice3
real(kind=jprb), dimension(58, 16:29) ssaliq1
real(kind=jprb), dimension(16:29) forwliq
real(kind=jprb), dimension(46, 16:29) ssaice3
real(kind=jprb), dimension(16:29) extcoliq
real(kind=jprb), dimension(46, 16:29) fdlice3
real(kind=jprb), dimension(16:29) fdelta
real(kind=jprb), dimension(58, 16:29) asyliq1
!$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
real(kind=jprb), dimension(16:29) ssacoice
subroutine srtm_cldprop(KLEV, K_ICLDATM, K_INFLAG, K_ICEFLAG, K_LIQFLAG, K_NSTR, P_CLDFRAC, P_CLDDAT1, P_CLDDAT2, P_CLDDAT3, P_CLDDAT4, P_CLDDATMOM, P_TAUCLDORIG, P_TAUCLOUD, P_SSACLOUD, P_XMOM)
integer(kind=jpim), parameter jpband
real(kind=jprb), dimension(16:29) gliq
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
real(kind=jprb), dimension(16:29) gice
real(kind=jprb), dimension(16:29) forwice
real(kind=jprb), dimension(58, 16:29) extliq1
integer(kind=jpim), parameter jpb1
real(kind=jprb), dimension(16:29) extcoice