Changeset 486 for LMDZ.3.3/branches/rel-LF/libf/phylmd/newmicro.F
- Timestamp:
- Dec 15, 2003, 6:50:41 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/newmicro.F
r418 r486 1 1 SUBROUTINE newmicro (paprs, pplay,ok_newmicro, 2 2 . t, pqlwp, pclc, pcltau, pclemi, 3 . pch, pcl, pcm, pct, pctlwp) 3 cIM . pch, pcl, pcm, pct, pctlwp) 4 . pch, pcl, pcm, pct, pctlwp, 5 . xflwp, xfiwp, xflwc, xfiwc) 6 4 7 IMPLICIT none 5 8 c====================================================================== … … 36 39 C 37 40 INTEGER i, k 38 REAL zflwp, zradef, zfice, zmsac 41 cIM: 091003 REAL zflwp, zradef, zfice, zmsac 42 REAL zflwp(klon), zradef, zfice, zmsac 43 cIM: 091003 rajout 44 REAL xflwp(klon), xfiwp(klon) 45 REAL xflwc(klon,klev), xfiwc(klon,klev) 39 46 c 40 47 REAL radius, rad_chaud … … 53 60 logical ok_newmicro 54 61 c parameter (ok_newmicro=.FALSE.) 55 real rel, tc, rei, zfiwp 62 cIM: 091003 real rel, tc, rei, zfiwp 63 real rel, tc, rei, zfiwp(klon) 56 64 real k_liq, k_ice0, k_ice, DF 57 65 parameter (k_liq=0.0903, k_ice0=0.005) ! units=m2/g … … 62 70 c Calculer l'epaisseur optique et l'emmissivite des nuages 63 71 c 72 cIM inversion des DO 73 DO i = 1, klon 74 xflwp(i)=0. 75 xfiwp(i)=0. 64 76 DO k = 1, klev 65 DO i = 1, klon 77 c 78 xflwc(i,k)=0. 79 xfiwc(i,k)=0. 80 c 66 81 rad_chaud = rad_chau1 67 82 IF (k.LE.3) rad_chaud = rad_chau2 68 83 pclc(i,k) = MAX(pclc(i,k), seuil_neb) 69 zflwp = 1000.*pqlwp(i,k)/RG/pclc(i,k)84 zflwp(i) = 1000.*pqlwp(i,k)/RG/pclc(i,k) 70 85 . *(paprs(i,k)-paprs(i,k+1)) 71 86 zfice = 1.0 - (t(i,k)-t_glace) / (273.13-t_glace) … … 74 89 radius = rad_chaud * (1.-zfice) + rad_froid * zfice 75 90 coef = coef_chau * (1.-zfice) + coef_froi * zfice 76 pcltau(i,k) = 3.0/2.0 * zflwp / radius77 pclemi(i,k) = 1.0 - EXP( - coef * zflwp )91 pcltau(i,k) = 3.0/2.0 * zflwp(i) / radius 92 pclemi(i,k) = 1.0 - EXP( - coef * zflwp(i)) 78 93 79 94 if (ok_newmicro) then … … 84 99 zfice = MIN(MAX(zfice,0.0),1.0) 85 100 86 zflwp = 1000.*(1.-zfice)*pqlwp(i,k)/pclc(i,k) 87 : *(paprs(i,k)-paprs(i,k+1))/RG 88 zfiwp = 1000.*zfice*pqlwp(i,k)/pclc(i,k) 89 : *(paprs(i,k)-paprs(i,k+1))/RG 101 zflwp(i) = 1000.*(1.-zfice)*pqlwp(i,k)/pclc(i,k) 102 : *(paprs(i,k)-paprs(i,k+1))/RG 103 zfiwp(i) = 1000.*zfice*pqlwp(i,k)/pclc(i,k) 104 : *(paprs(i,k)-paprs(i,k+1))/RG 105 106 xflwp(i) = xflwp(i)+ (1.-zfice)*pqlwp(i,k) 107 : *(paprs(i,k)-paprs(i,k+1))/RG 108 xfiwp(i) = xfiwp(i)+ zfice*pqlwp(i,k) 109 : *(paprs(i,k)-paprs(i,k+1))/RG 110 111 cIM Total Liquid/Ice water content 112 xflwc(i,k) = xflwc(i,k)+(1.-zfice)*pqlwp(i,k) 113 xfiwc(i,k) = xfiwc(i,k)+zfice*pqlwp(i,k) 114 cIM In-Cloud Liquid/Ice water content 115 c xflwc(i,k) = xflwc(i,k)+(1.-zfice)*pqlwp(i,k)/pclc(i,k) 116 c xfiwc(i,k) = xfiwc(i,k)+zfice*pqlwp(i,k)/pclc(i,k) 90 117 91 118 c -- effective cloud droplet radius (microns): … … 107 134 c for ice clouds, Ebert & Curry (1992)] 108 135 109 if (zflwp .eq.0.) rel = 1.110 if (zfiwp .eq.0. .or. rei.le.0.) rei = 1.111 pcltau(i,k) = 3.0/2.0 * ( zflwp /rel )112 . + zfiwp * (3.448e-03 + 2.431/rei)136 if (zflwp(i).eq.0.) rel = 1. 137 if (zfiwp(i).eq.0. .or. rei.le.0.) rei = 1. 138 pcltau(i,k) = 3.0/2.0 * ( zflwp(i)/rel ) 139 . + zfiwp(i) * (3.448e-03 + 2.431/rei) 113 140 114 141 c -- cloud infrared emissivity: … … 121 148 122 149 pclemi(i,k) = 1.0 123 . - EXP( - coef_chau*zflwp - DF*k_ice*zfiwp)150 . - EXP( - coef_chau*zflwp(i) - DF*k_ice*zfiwp(i) ) 124 151 125 152 endif ! ok_newmicro
Note: See TracChangeset
for help on using the changeset viewer.