Changeset 5087 for LMDZ6/branches/Amaury_dev/libf/phylmd
- Timestamp:
- Jul 20, 2024, 12:00:23 PM (6 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phylmd
- Files:
-
- 80 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/dustemission_mod.F90
r5082 r5087 822 822 xk=solspe(ns,npi)/(sqrt(2.*pi)*log(solspe(ns,nsi))) 823 823 xl=((log(sizeclass(i))-log(solspe(ns,nd)))**2) & 824 &/(2.*(log(solspe(ns,nsi)))**2)824 /(2.*(log(solspe(ns,nsi)))**2) 825 825 xm=xk*exp(-xl) 826 826 xn=rop*(2./3.)*(sizeclass(i)/2.) -
LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/read_surface.F90
r5075 r5087 124 124 if (isinversed) then 125 125 call gr_dyn_fi(1, nbp_lon+1, nbp_lat, klon_glo, & 126 &tmp_dyn_invers_glo, tmp_fi_glo)126 tmp_dyn_invers_glo, tmp_fi_glo) 127 127 ! call gr_dyn_fi(1, iip1, jjp1, klon, tmp_dyn_invers, tmp_fi) 128 128 ! call gr_dyn_fi_p(1, iip1, jjp1, klon, tmp_dyn_invers, tmp_fi) 129 129 else 130 130 call gr_dyn_fi(1, nbp_lon+1, nbp_lat, klon_glo, & 131 &tmp_dyn_glo, tmp_fi_glo)131 tmp_dyn_glo, tmp_fi_glo) 132 132 ! call gr_dyn_fi(1, iip1, jjp1, klon, tmp_dyn, tmp_fi) 133 133 ! call gr_dyn_fi_p(1, iip1, jjp1, klon, tmp_dyn, tmp_fi) -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/aer_sedimnt.F90
r5082 r5087 122 122 !compute budg_sed_part as sum over bins in kg(S)/m2/s 123 123 budg_sed_part(JL)=budg_sed_part(JL)+ZRHO*ZAERONWM1(JL,nb)*ZVAER(JL,1,nb)*(mSatom/mH2SO4mol) & 124 &*dens_aer_dry*4./3.*RPI*(mdw(nb)/2.)**3124 *dens_aer_dry*4./3.*RPI*(mdw(nb)/2.)**3 125 125 ENDDO 126 126 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/coagulate.F90
r5082 r5087 197 197 DO i=1, nbtr_bin 198 198 delta(i)=((2.*radiuswet(i)+mfppar(i))**3.-(4.*radiuswet(i)**2.+mfppar(i)**2.)**1.5)/ & 199 &(6.*radiuswet(i)*mfppar(i))-2.*radiuswet(i)199 (6.*radiuswet(i)*mfppar(i))-2.*radiuswet(i) 200 200 ENDDO 201 201 … … 208 208 num=4.*RPI*(radiuswet(i)+radiuswet(j))*(Di(i)+Di(j)) 209 209 denom=(radiuswet(i)+radiuswet(j))/(radiuswet(i)+radiuswet(j)+sqrt(delta(i)**2.+delta(j)**2.))+ & 210 &4.*(Di(i)+Di(j))/(sqrt(thvelpar(i)**2.+thvelpar(j)**2.)*(radiuswet(i)+radiuswet(j)))210 4.*(Di(i)+Di(j))/(sqrt(thvelpar(i)**2.+thvelpar(j)**2.)*(radiuswet(i)+radiuswet(j))) 211 211 beta(i,j)=num/denom 212 212 ! -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/cond_evap_tstep_mod.F90
r5081 r5087 10 10 11 11 SUBROUTINE condens_evapor_rate_kelvin(R2SO4G,t_seri,pplay,R2SO4, & 12 &DENSO4,f_r_wet,R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR)12 DENSO4,f_r_wet,R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 13 13 ! 14 14 ! INPUT: … … 140 140 ! SENFELD 141 141 FL(IK)=FL1*RRSI_wet(IK)**2*( 1.0 +RKNUD ) & 142 &/( 1.0 +ALPHA/(2.0*RKNUD) +RKNUD )142 /( 1.0 +ALPHA/(2.0*RKNUD) +RKNUD ) 143 143 ! TURCO 144 144 ! RL= (4.0/3.0 +0.71/RKNUD)/(1.0+1.0/RKNUD) … … 166 166 !******************************************************************** 167 167 SUBROUTINE condens_evapor_rate(R2SO4G,t_seri,pplay,ACTSO4,R2SO4, & 168 &DENSO4,f_r_wet,FL,ASO4,DNDR)168 DENSO4,f_r_wet,FL,ASO4,DNDR) 169 169 ! 170 170 ! INPUT: … … 263 263 ! SENFELD 264 264 FL(IK)=FL1*RRSI_wet(IK)**2*( 1.0 +RKNUD ) & 265 &/( 1.0 +ALPHA/(2.0*RKNUD) +RKNUD )265 /( 1.0 +ALPHA/(2.0*RKNUD) +RKNUD ) 266 266 ! TURCO 267 267 ! RL= (4.0/3.0 +0.71/RKNUD)/(1.0+1.0/RKNUD) -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/micphy_tstep.F90
r5082 r5087 51 51 !coefficients for H2SO4 density parametrization used for nucleation if ntot<4 52 52 a_xm = 0.7681724 + 1.*(2.1847140 + 1.*(7.1630022 + 1.*(-44.31447 + & 53 &1.*(88.75606 + 1.*(-75.73729 + 1.*23.43228)))))53 1.*(88.75606 + 1.*(-75.73729 + 1.*23.43228))))) 54 54 b_xm = 1.808225e-3 + 1.*(-9.294656e-3 + 1.*(-0.03742148 + 1.*(0.2565321 + & 55 &1.*(-0.5362872 + 1.*(0.4857736 - 1.*0.1629592)))))55 1.*(-0.5362872 + 1.*(0.4857736 - 1.*0.1629592))))) 56 56 c_xm = -3.478524e-6 + 1.*(1.335867e-5 + 1.*(5.195706e-5 + 1.*(-3.717636e-4 + & 57 &1.*(7.990811e-4 + 1.*(-7.458060e-4 + 1.*2.58139e-4 )))))57 1.*(7.990811e-4 + 1.*(-7.458060e-4 + 1.*2.58139e-4 ))))) 58 58 59 59 IF(.not.flag_new_strat_compo) THEN … … 85 85 ! convert tr_seri(GASH2SO4) (in kg/kgA) to H2SO4 number density (in molecules/cm3) 86 86 rhoa=tr_seri(ilon,ilev,id_H2SO4_strat) & 87 &*pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol87 *pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol 88 88 ! compute nucleation rate in kg(H2SO4)/kgA/s 89 89 CALL nucleation_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev),rh(ilon,ilev), & 90 &a_xm,b_xm,c_xm,nucl_rate,ntot,x)90 a_xm,b_xm,c_xm,nucl_rate,ntot,x) 91 91 !NL - add nucleation box (if flag on) 92 92 IF (flag_nuc_rate_box) THEN … … 102 102 f_r_wetik(:) = f_r_wetB(ilon,ilev,:) 103 103 CALL condens_evapor_rate_kelvin(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 104 &R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), &105 &R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR)104 R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 105 R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 106 106 ELSE 107 107 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 108 &ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), &109 &FL,ASO4,DNDR)108 ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 109 FL,ASO4,DNDR) 110 110 ENDIF 111 111 ! Compute H2SO4 saturate vapor for big particules … … 134 134 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 135 135 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & 136 &*cond_evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys136 *cond_evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys 137 137 budg_3D_nucl(ilon,ilev)=budg_3D_nucl(ilon,ilev)+mSatom/mH2SO4mol & 138 &*nucl_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys138 *nucl_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys 139 139 ! update time step 140 140 PDT=PDT-dt … … 142 142 ! convert tr_seri(GASH2SO4) (in kg/kgA) to H2SO4 number density (in molecules/cm3) 143 143 rhoa=tr_seri(ilon,ilev,id_H2SO4_strat) & 144 &*pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol144 *pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol 145 145 ! compute cond/evap rate in kg(H2SO4)/kgA/s (now only evap for pdtphys) 146 146 IF(flag_new_strat_compo) THEN 147 147 CALL condens_evapor_rate_kelvin(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 148 &R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), &149 &R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR)148 R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 149 R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 150 150 ELSE 151 151 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 152 &ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), &153 &FL,ASO4,DNDR)152 ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 153 FL,ASO4,DNDR) 154 154 ENDIF 155 155 ! limit evaporation (negative FL) over one physics time step to H2SO4 content of the droplet … … 170 170 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 171 171 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & 172 &*evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG172 *evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG 173 173 ! compute vertically integrated flux due to the net effect of nucleation and condensation/evaporation 174 174 budg_h2so4_to_part(ilon)=budg_h2so4_to_part(ilon)+(H2SO4_init-tr_seri(ilon,ilev,id_H2SO4_strat)) & 175 &*mSatom/mH2SO4mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys175 *mSatom/mH2SO4mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 176 176 ENDIF 177 177 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/miecalc_aer.F90
r5082 r5087 258 258 Nwv=1 259 259 dlambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)= & 260 &lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)- &261 &lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv+1)260 lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)- & 261 lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv+1) 262 262 DO Nwv=2, NwvmaxLW-1 263 263 dlambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)= & 264 &(lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv-1)- &265 &lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv+1))/2.264 (lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv-1)- & 265 lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv+1))/2. 266 266 ENDDO 267 267 Nwv=NwvmaxLW 268 268 dlambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)= & 269 &lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv-1)- &270 &lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv)269 lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv-1)- & 270 lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv) 271 271 272 272 IF (refr_ind_interpol) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/nucleation_tstep_mod.F90
r5082 r5087 49 49 VH2SO4mol=mH2SO4mol/(1.E-3*(a_xm+t_seri*(b_xm+t_seri*c_xm))) !cm3 50 50 jnuc_n = rhoa**2. *(3./4.*RPI)**(1./6.) *(12.*RKBOL*t_seri/mH2SO4mol)**0.5 & 51 &*100.*(2.*VH2SO4mol**(1./3.))**2. !1/(cm3s)51 *100.*(2.*VH2SO4mol**(1./3.))**2. !1/(cm3s) 52 52 ntot_n=2.0 53 53 x_n=1.0 … … 60 60 ! airn=pplay/t_seri/RD/1.E3*RNAVO/RMD ! molec cm-3 (for future use, to be confirmed) 61 61 CALL newbinapara(t_seri,rh,rhoa,csi,airn,ipr,jnuc_n,ntot_n,jnuc_i,ntot_i, & 62 &x_n,x_i,na_n,na_i,rc_n,rc_i,n_i,kinetic_n,kinetic_i)62 x_n,x_i,na_n,na_i,rc_n,rc_i,n_i,kinetic_n,kinetic_i) 63 63 ENDIF 64 64 … … 197 197 198 198 x= 0.7409967177282139 - 0.002663785665140117*t + 0.002010478847383187*LOG(rh) & 199 &- 0.0001832894131464668*t*LOG(rh) + 0.001574072538464286*LOG(rh)**2 &200 &- 0.00001790589121766952*t*LOG(rh)**2 + 0.0001844027436573778*LOG(rh)**3 &201 &- 1.503452308794887E-6*t*LOG(rh)**3 - 0.003499978417957668*LOG(rhoa) &202 &+ 0.0000504021689382576*t*LOG(rhoa)199 - 0.0001832894131464668*t*LOG(rh) + 0.001574072538464286*LOG(rh)**2 & 200 - 0.00001790589121766952*t*LOG(rh)**2 + 0.0001844027436573778*LOG(rh)**3 & 201 - 1.503452308794887E-6*t*LOG(rh)**3 - 0.003499978417957668*LOG(rhoa) & 202 + 0.0000504021689382576*t*LOG(rhoa) 203 203 204 204 jnuc= 0.1430901615568665 + 2.219563673425199*t - 0.02739106114964264*t**2 + & 205 &0.00007228107239317088*t**3 + 5.91822263375044/x + &206 &0.1174886643003278*LOG(rh) + 0.4625315047693772*t*LOG(rh) - &207 &0.01180591129059253*t**2*LOG(rh) + &208 &0.0000404196487152575*t**3*LOG(rh) + (15.79628615047088*LOG(rh))/x - &209 &0.215553951893509*LOG(rh)**2 - 0.0810269192332194*t*LOG(rh)**2 + &210 &0.001435808434184642*t**2*LOG(rh)**2 - &211 &4.775796947178588E-6*t**3*LOG(rh)**2 - &212 &(2.912974063702185*LOG(rh)**2)/x - 3.588557942822751*LOG(rh)**3 + &213 &0.04950795302831703*t*LOG(rh)**3 - &214 &0.0002138195118737068*t**2*LOG(rh)**3 + &215 &3.108005107949533E-7*t**3*LOG(rh)**3 - &216 &(0.02933332747098296*LOG(rh)**3)/x + &217 &1.145983818561277*LOG(rhoa) - &218 &0.6007956227856778*t*LOG(rhoa) + &219 &0.00864244733283759*t**2*LOG(rhoa) - &220 &0.00002289467254710888*t**3*LOG(rhoa) - &221 &(8.44984513869014*LOG(rhoa))/x + &222 &2.158548369286559*LOG(rh)*LOG(rhoa) + &223 &0.0808121412840917*t*LOG(rh)*LOG(rhoa) - &224 &0.0004073815255395214*t**2*LOG(rh)*LOG(rhoa) - &225 &4.019572560156515E-7*t**3*LOG(rh)*LOG(rhoa) + &226 &(0.7213255852557236*LOG(rh)*LOG(rhoa))/x + &227 &1.62409850488771*LOG(rh)**2*LOG(rhoa) - &228 &0.01601062035325362*t*LOG(rh)**2*LOG(rhoa) + &229 &0.00003771238979714162*t**2*LOG(rh)**2*LOG(rhoa) + &230 &3.217942606371182E-8*t**3*LOG(rh)**2*LOG(rhoa) - &231 &(0.01132550810022116*LOG(rh)**2*LOG(rhoa))/x + &232 &9.71681713056504*LOG(rhoa)**2 - &233 &0.1150478558347306*t*LOG(rhoa)**2 + &234 &0.0001570982486038294*t**2*LOG(rhoa)**2 + &235 &4.009144680125015E-7*t**3*LOG(rhoa)**2 + &236 &(0.7118597859976135*LOG(rhoa)**2)/x - &237 &1.056105824379897*LOG(rh)*LOG(rhoa)**2 + &238 &0.00903377584628419*t*LOG(rh)*LOG(rhoa)**2 - &239 &0.00001984167387090606*t**2*LOG(rh)*LOG(rhoa)**2 + &240 &2.460478196482179E-8*t**3*LOG(rh)*LOG(rhoa)**2 - &241 &(0.05790872906645181*LOG(rh)*LOG(rhoa)**2)/x - &242 &0.1487119673397459*LOG(rhoa)**3 + &243 &0.002835082097822667*t*LOG(rhoa)**3 - &244 &9.24618825471694E-6*t**2*LOG(rhoa)**3 + &245 &5.004267665960894E-9*t**3*LOG(rhoa)**3 - &246 &(0.01270805101481648*LOG(rhoa)**3)/x205 0.00007228107239317088*t**3 + 5.91822263375044/x + & 206 0.1174886643003278*LOG(rh) + 0.4625315047693772*t*LOG(rh) - & 207 0.01180591129059253*t**2*LOG(rh) + & 208 0.0000404196487152575*t**3*LOG(rh) + (15.79628615047088*LOG(rh))/x - & 209 0.215553951893509*LOG(rh)**2 - 0.0810269192332194*t*LOG(rh)**2 + & 210 0.001435808434184642*t**2*LOG(rh)**2 - & 211 4.775796947178588E-6*t**3*LOG(rh)**2 - & 212 (2.912974063702185*LOG(rh)**2)/x - 3.588557942822751*LOG(rh)**3 + & 213 0.04950795302831703*t*LOG(rh)**3 - & 214 0.0002138195118737068*t**2*LOG(rh)**3 + & 215 3.108005107949533E-7*t**3*LOG(rh)**3 - & 216 (0.02933332747098296*LOG(rh)**3)/x + & 217 1.145983818561277*LOG(rhoa) - & 218 0.6007956227856778*t*LOG(rhoa) + & 219 0.00864244733283759*t**2*LOG(rhoa) - & 220 0.00002289467254710888*t**3*LOG(rhoa) - & 221 (8.44984513869014*LOG(rhoa))/x + & 222 2.158548369286559*LOG(rh)*LOG(rhoa) + & 223 0.0808121412840917*t*LOG(rh)*LOG(rhoa) - & 224 0.0004073815255395214*t**2*LOG(rh)*LOG(rhoa) - & 225 4.019572560156515E-7*t**3*LOG(rh)*LOG(rhoa) + & 226 (0.7213255852557236*LOG(rh)*LOG(rhoa))/x + & 227 1.62409850488771*LOG(rh)**2*LOG(rhoa) - & 228 0.01601062035325362*t*LOG(rh)**2*LOG(rhoa) + & 229 0.00003771238979714162*t**2*LOG(rh)**2*LOG(rhoa) + & 230 3.217942606371182E-8*t**3*LOG(rh)**2*LOG(rhoa) - & 231 (0.01132550810022116*LOG(rh)**2*LOG(rhoa))/x + & 232 9.71681713056504*LOG(rhoa)**2 - & 233 0.1150478558347306*t*LOG(rhoa)**2 + & 234 0.0001570982486038294*t**2*LOG(rhoa)**2 + & 235 4.009144680125015E-7*t**3*LOG(rhoa)**2 + & 236 (0.7118597859976135*LOG(rhoa)**2)/x - & 237 1.056105824379897*LOG(rh)*LOG(rhoa)**2 + & 238 0.00903377584628419*t*LOG(rh)*LOG(rhoa)**2 - & 239 0.00001984167387090606*t**2*LOG(rh)*LOG(rhoa)**2 + & 240 2.460478196482179E-8*t**3*LOG(rh)*LOG(rhoa)**2 - & 241 (0.05790872906645181*LOG(rh)*LOG(rhoa)**2)/x - & 242 0.1487119673397459*LOG(rhoa)**3 + & 243 0.002835082097822667*t*LOG(rhoa)**3 - & 244 9.24618825471694E-6*t**2*LOG(rhoa)**3 + & 245 5.004267665960894E-9*t**3*LOG(rhoa)**3 - & 246 (0.01270805101481648*LOG(rhoa)**3)/x 247 247 jnuc=EXP(jnuc) !1/(cm3s) 248 248 249 249 ntot =-0.002954125078716302 - 0.0976834264241286*t + 0.001024847927067835*t**2 - 2.186459697726116E-6*t**3 - & 250 &0.1017165718716887/x - 0.002050640345231486*LOG(rh) - 0.007585041382707174*t*LOG(rh) + &251 &0.0001926539658089536*t**2*LOG(rh) - 6.70429719683894E-7*t**3*LOG(rh) - &252 &(0.2557744774673163*LOG(rh))/x + 0.003223076552477191*LOG(rh)**2 + 0.000852636632240633*t*LOG(rh)**2 - &253 &0.00001547571354871789*t**2*LOG(rh)**2 + 5.666608424980593E-8*t**3*LOG(rh)**2 + &254 &(0.03384437400744206*LOG(rh)**2)/x + 0.04743226764572505*LOG(rh)**3 - &255 &0.0006251042204583412*t*LOG(rh)**3 + 2.650663328519478E-6*t**2*LOG(rh)**3 - &256 &3.674710848763778E-9*t**3*LOG(rh)**3 - (0.0002672510825259393*LOG(rh)**3)/x - &257 &0.01252108546759328*LOG(rhoa) + 0.005806550506277202*t*LOG(rhoa) - &258 &0.0001016735312443444*t**2*LOG(rhoa) + 2.881946187214505E-7*t**3*LOG(rhoa) + &259 &(0.0942243379396279*LOG(rhoa))/x - 0.0385459592773097*LOG(rh)*LOG(rhoa) - &260 &0.0006723156277391984*t*LOG(rh)*LOG(rhoa) + 2.602884877659698E-6*t**2*LOG(rh)*LOG(rhoa) + &261 &1.194163699688297E-8*t**3*LOG(rh)*LOG(rhoa) - (0.00851515345806281*LOG(rh)*LOG(rhoa))/x - &262 &0.01837488495738111*LOG(rh)**2*LOG(rhoa) + 0.0001720723574407498*t*LOG(rh)**2*LOG(rhoa) - &263 &3.717657974086814E-7*t**2*LOG(rh)**2*LOG(rhoa) - &264 &5.148746022615196E-10*t**3*LOG(rh)**2*LOG(rhoa) + &265 &(0.0002686602132926594*LOG(rh)**2*LOG(rhoa))/x - 0.06199739728812199*LOG(rhoa)**2 + &266 &0.000906958053583576*t*LOG(rhoa)**2 - 9.11727926129757E-7*t**2*LOG(rhoa)**2 - &267 &5.367963396508457E-9*t**3*LOG(rhoa)**2 - (0.007742343393937707*LOG(rhoa)**2)/x + &268 &0.0121827103101659*LOG(rh)*LOG(rhoa)**2 - 0.0001066499571188091*t*LOG(rh)*LOG(rhoa)**2 + &269 &2.534598655067518E-7*t**2*LOG(rh)*LOG(rhoa)**2 - &270 &3.635186504599571E-10*t**3*LOG(rh)*LOG(rhoa)**2 + &271 &(0.0006100650851863252*LOG(rh)*LOG(rhoa)**2)/x + 0.0003201836700403512*LOG(rhoa)**3 - &272 &0.0000174761713262546*t*LOG(rhoa)**3 + 6.065037668052182E-8*t**2*LOG(rhoa)**3 - &273 &1.421771723004557E-11*t**3*LOG(rhoa)**3 + (0.0001357509859501723*LOG(rhoa)**3)/x250 0.1017165718716887/x - 0.002050640345231486*LOG(rh) - 0.007585041382707174*t*LOG(rh) + & 251 0.0001926539658089536*t**2*LOG(rh) - 6.70429719683894E-7*t**3*LOG(rh) - & 252 (0.2557744774673163*LOG(rh))/x + 0.003223076552477191*LOG(rh)**2 + 0.000852636632240633*t*LOG(rh)**2 - & 253 0.00001547571354871789*t**2*LOG(rh)**2 + 5.666608424980593E-8*t**3*LOG(rh)**2 + & 254 (0.03384437400744206*LOG(rh)**2)/x + 0.04743226764572505*LOG(rh)**3 - & 255 0.0006251042204583412*t*LOG(rh)**3 + 2.650663328519478E-6*t**2*LOG(rh)**3 - & 256 3.674710848763778E-9*t**3*LOG(rh)**3 - (0.0002672510825259393*LOG(rh)**3)/x - & 257 0.01252108546759328*LOG(rhoa) + 0.005806550506277202*t*LOG(rhoa) - & 258 0.0001016735312443444*t**2*LOG(rhoa) + 2.881946187214505E-7*t**3*LOG(rhoa) + & 259 (0.0942243379396279*LOG(rhoa))/x - 0.0385459592773097*LOG(rh)*LOG(rhoa) - & 260 0.0006723156277391984*t*LOG(rh)*LOG(rhoa) + 2.602884877659698E-6*t**2*LOG(rh)*LOG(rhoa) + & 261 1.194163699688297E-8*t**3*LOG(rh)*LOG(rhoa) - (0.00851515345806281*LOG(rh)*LOG(rhoa))/x - & 262 0.01837488495738111*LOG(rh)**2*LOG(rhoa) + 0.0001720723574407498*t*LOG(rh)**2*LOG(rhoa) - & 263 3.717657974086814E-7*t**2*LOG(rh)**2*LOG(rhoa) - & 264 5.148746022615196E-10*t**3*LOG(rh)**2*LOG(rhoa) + & 265 (0.0002686602132926594*LOG(rh)**2*LOG(rhoa))/x - 0.06199739728812199*LOG(rhoa)**2 + & 266 0.000906958053583576*t*LOG(rhoa)**2 - 9.11727926129757E-7*t**2*LOG(rhoa)**2 - & 267 5.367963396508457E-9*t**3*LOG(rhoa)**2 - (0.007742343393937707*LOG(rhoa)**2)/x + & 268 0.0121827103101659*LOG(rh)*LOG(rhoa)**2 - 0.0001066499571188091*t*LOG(rh)*LOG(rhoa)**2 + & 269 2.534598655067518E-7*t**2*LOG(rh)*LOG(rhoa)**2 - & 270 3.635186504599571E-10*t**3*LOG(rh)*LOG(rhoa)**2 + & 271 (0.0006100650851863252*LOG(rh)*LOG(rhoa)**2)/x + 0.0003201836700403512*LOG(rhoa)**3 - & 272 0.0000174761713262546*t*LOG(rhoa)**3 + 6.065037668052182E-8*t**2*LOG(rhoa)**3 - & 273 1.421771723004557E-11*t**3*LOG(rhoa)**3 + (0.0001357509859501723*LOG(rhoa)**3)/x 274 274 ntot=EXP(ntot) 275 275 … … 285 285 286 286 rhotres=EXP( -279.2430007512709 + 11.73439886096903*rh + 22700.92970508331/t & 287 &- (1088.644983466801*rh)/t + 1.144362942094912*t &288 &- 0.03023314602163684*rh*t - 0.001302541390154324*t**2 &289 &- 6.386965238433532*LOG(rh) + (854.980361026715*LOG(rh))/t &290 &+ 0.00879662256826497*t*LOG(rh)) !1/cm3287 - (1088.644983466801*rh)/t + 1.144362942094912*t & 288 - 0.03023314602163684*rh*t - 0.001302541390154324*t**2 & 289 - 6.386965238433532*LOG(rh) + (854.980361026715*LOG(rh))/t & 290 + 0.00879662256826497*t*LOG(rh)) !1/cm3 291 291 292 292 RETURN … … 297 297 298 298 SUBROUTINE newbinapara(t,satrat,rhoa,csi,airn,ipr,jnuc_n_real,ntot_n_real,jnuc_i_real,ntot_i_real, & 299 & x_n_real,x_i_real,na_n_real,na_i_real,rc_n_real,rc_i_real,n_i_real, &300 &kinetic_n,kinetic_i)299 x_n_real,x_i_real,na_n_real,na_i_real,rc_n_real,rc_i_real,n_i_real, & 300 kinetic_n,kinetic_i) 301 301 302 302 ! Fortran 90 subroutine newbinapara … … 457 457 !Critical cluster composition (valid for both cases, bounds not used here) 458 458 x_n= 7.9036365428891719E-1 - 2.8414059650092153E-3*tln + 1.4976802556584141E-2*LOG(satratln) & 459 &- 2.4511581740839115E-4*tln*LOG(satratln) + 3.4319869471066424E-3 *LOG(satratln)**2 &460 &- 2.8799393617748428E-5*tln*LOG(satratln)**2 + 3.0174314126331765E-4*LOG(satratln)**3 &461 &- 2.2673492408841294E-6*tln*LOG(satratln)**3 - 4.3948464567032377E-3*LOG(rhoaln) &462 &+ 5.3305314722492146E-5*tln*LOG(rhoaln)459 - 2.4511581740839115E-4*tln*LOG(satratln) + 3.4319869471066424E-3 *LOG(satratln)**2 & 460 - 2.8799393617748428E-5*tln*LOG(satratln)**2 + 3.0174314126331765E-4*LOG(satratln)**3 & 461 - 2.2673492408841294E-6*tln*LOG(satratln)**3 - 4.3948464567032377E-3*LOG(rhoaln) & 462 + 5.3305314722492146E-5*tln*LOG(rhoaln) 463 463 x_i= 7.9036365428891719E-1 - 2.8414059650092153E-3*tli + 1.4976802556584141E-2*LOG(satratli) & 464 &- 2.4511581740839115E-4*tli*LOG(satratli) + 3.4319869471066424E-3 *LOG(satratli)**2 &465 &- 2.8799393617748428E-5*tli*LOG(satratli)**2 + 3.0174314126331765E-4*LOG(satratli)**3 &466 &- 2.2673492408841294E-6*tli*LOG(satratli)**3 - 4.3948464567032377E-3*LOG(rhoali) &467 &+ 5.3305314722492146E-5*tli*LOG(rhoali)464 - 2.4511581740839115E-4*tli*LOG(satratli) + 3.4319869471066424E-3 *LOG(satratli)**2 & 465 - 2.8799393617748428E-5*tli*LOG(satratli)**2 + 3.0174314126331765E-4*LOG(satratli)**3 & 466 - 2.2673492408841294E-6*tli*LOG(satratli)**3 - 4.3948464567032377E-3*LOG(rhoali) & 467 + 5.3305314722492146E-5*tli*LOG(rhoali) 468 468 469 469 x_n=MIN(MAX(x_n,1.E-30),1.) … … 475 475 IF (satratln >= 1.E-2 .AND. satratln <= 1.) THEN 476 476 kinrhotresn=EXP(7.8920778706888086E+1 + 7.3665492897447082*satratln - 1.2420166571163805E+4/tln & 477 &+ (-6.1831234251470971E+2*satratln)/tln - 2.4501159970109945E-2*tln &478 &-1.3463066443605762E-2*satratln*tln + 8.3736373989909194E-06*tln**2 &479 &-1.4673887785408892*LOG(satratln) + (-3.2141890006517094E+1*LOG(satratln))/tln &480 & + 2.7137429081917556E-3*tln*LOG(satratln)) !1/cm3477 + (-6.1831234251470971E+2*satratln)/tln - 2.4501159970109945E-2*tln & 478 -1.3463066443605762E-2*satratln*tln + 8.3736373989909194E-06*tln**2 & 479 -1.4673887785408892*LOG(satratln) + (-3.2141890006517094E+1*LOG(satratln))/tln & 480 + 2.7137429081917556E-3*tln*LOG(satratln)) !1/cm3 481 481 IF (kinrhotresn<rhoaln) kinetic_n=.TRUE. 482 482 ENDIF … … 484 484 IF (satratln >= 1.E-4 .AND. satratln < 1.E-2) THEN 485 485 kinrhotresn=EXP(7.9074383049843647E+1 - 2.8746005462158347E+1*satratln - 1.2070272068458380E+4/tln & 486 &+ (-5.9205040320056632E+3*satratln)/tln - 2.4800372593452726E-2*tln &487 &-4.3983007681295948E-2*satratln*tln + 2.5943854791342071E-5*tln**2 &488 &-2.3141363245211317*LOG(satratln) + (9.9186787997857735E+1*LOG(satratln))/tln &489 &+ 5.6819382556144681E-3*tln*LOG(satratln)) !1/cm3486 + (-5.9205040320056632E+3*satratln)/tln - 2.4800372593452726E-2*tln & 487 -4.3983007681295948E-2*satratln*tln + 2.5943854791342071E-5*tln**2 & 488 -2.3141363245211317*LOG(satratln) + (9.9186787997857735E+1*LOG(satratln))/tln & 489 + 5.6819382556144681E-3*tln*LOG(satratln)) !1/cm3 490 490 IF (kinrhotresn<rhoaln) kinetic_n=.TRUE. 491 491 ENDIF … … 493 493 IF (satratln >= 5.E-6 .AND. satratln < 1.E-4) THEN 494 494 kinrhotresn=EXP(8.5599712000361677E+1 + 2.7335119660796581E+3*satratln - 1.1842350246291651E+4/tln & 495 &+ (-1.2439843468881438E+6*satratln)/tln - 5.4536964974944230E-2*tln &496 &+ 5.0886987425326087*satratln*tln + 7.1964722655507067E-5*tln**2 &497 &-2.4472627526306372*LOG(satratln) + (1.7561478001423779E+2*LOG(satratln))/tln &498 &+ 6.2640132818141811E-3*tln*LOG(satratln)) !1/cm3495 + (-1.2439843468881438E+6*satratln)/tln - 5.4536964974944230E-2*tln & 496 + 5.0886987425326087*satratln*tln + 7.1964722655507067E-5*tln**2 & 497 -2.4472627526306372*LOG(satratln) + (1.7561478001423779E+2*LOG(satratln))/tln & 498 + 6.2640132818141811E-3*tln*LOG(satratln)) !1/cm3 499 499 IF (kinrhotresn<rhoaln) kinetic_n=.TRUE. 500 500 ENDIF … … 509 509 ELSE 510 510 jnuc_n= 2.1361182605986115E-1 + 3.3827029855551838*tln -3.2423555796175563E-2*tln**2 + & 511 &7.0120069477221989E-5*tln**3 +8.0286874752695141/x_n + &512 &(-2.6939840579762231E-1)*LOG(satratln) +1.6079879299099518*tln*LOG(satratln) + &513 &(-1.9667486968141933E-2)*tln**2*LOG(satratln) + &514 &5.5244755979770844E-5*tln**3*LOG(satratln) + (7.8884704837892468*LOG(satratln))/x_n + &515 &4.6374659198909596*LOG(satratln)**2 - 8.2002809894792153E-2*tln*LOG(satratln)**2 + &516 &8.5077424451172196E-4*tln**2*LOG(satratln)**2 + &517 &(-2.6518510168987462E-6)*tln**3*LOG(satratln)**2 + &518 &(-1.4625482500575278*LOG(satratln)**2)/x_n - 5.2413002989192037E-1*LOG(satratln)**3 + &519 &5.2755117653715865E-3*tln*LOG(satratln)**3 + &520 &(-2.9491061332113830E-6)*tln**2*LOG(satratln)**3 + &521 &(-2.4815454194486752E-8)*tln**3*LOG(satratln)**3 + &522 &(-5.2663760117394626E-2*LOG(satratln)**3)/x_n + &523 &1.6496664658266762*LOG(rhoaln) + &524 &(-8.0809397859218401E-1)*tln*LOG(rhoaln) + &525 &8.9302927091946642E-3*tln**2*LOG(rhoaln) + &526 &(-1.9583649496497497E-5)*tln**3*LOG(rhoaln) + &527 &(-8.9505572676891685*LOG(rhoaln))/x_n + &528 &(-3.0025283601622881E+1)*LOG(satratln)*LOG(rhoaln) + &529 &3.0783365644763633E-1*tln*LOG(satratln)*LOG(rhoaln) + &530 &(-7.4521756337984706E-4)*tln**2*LOG(satratln)*LOG(rhoaln) + &531 &(-5.7651433870681853E-7)*tln**3*LOG(satratln)*LOG(rhoaln) + &532 &(1.2872868529673207*LOG(satratln)*LOG(rhoaln))/x_n + &533 &(-6.1739867501526535E-1)*LOG(satratln)**2*LOG(rhoaln) + &534 &7.2347385705333975E-3*tln*LOG(satratln)**2*LOG(rhoaln) + &535 &(-3.0640494530822439E-5)*tln**2*LOG(satratln)**2*LOG(rhoaln) + &536 &6.5944609194346214E-8*tln**3*LOG(satratln)**2*LOG(rhoaln) + &537 &(-2.8681650332461055E-2*LOG(satratln)**2*LOG(rhoaln))/x_n + &538 &6.5213802375160306*LOG(rhoaln)**2 + &539 &(-4.7907162004793016E-2)*tln*LOG(rhoaln)**2 + &540 &(-1.0727890114215117E-4)*tln**2*LOG(rhoaln)**2 + &541 &5.6401818280534507E-7*tln**3*LOG(rhoaln)**2 + &542 &(5.4113070888923009E-1*LOG(rhoaln)**2)/x_n + &543 &5.2062808476476330E-1*LOG(satratln)*LOG(rhoaln)**2 + &544 &(-6.0696882500824584E-3)*tln*LOG(satratln)*LOG(rhoaln)**2 + &545 &2.3851383302608477E-5*tln**2*LOG(satratln)*LOG(rhoaln)**2 + &546 &(-1.5243837103067096E-8)*tln**3*LOG(satratln)*LOG(rhoaln)**2 + &547 &(-5.6543192378015687E-2*LOG(satratln)*LOG(rhoaln)**2)/x_n + &548 &(-1.1630806410696815E-1)*LOG(rhoaln)**3 + &549 &1.3806404273119610E-3*tln*LOG(rhoaln)**3 + &550 &(-2.0199865087650833E-6)*tln**2*LOG(rhoaln)**3 + &551 &(-3.0200284885763192E-9)*tln**3*LOG(rhoaln)**3 + &552 &(-6.9425267104126316E-3*LOG(rhoaln)**3)/x_n511 7.0120069477221989E-5*tln**3 +8.0286874752695141/x_n + & 512 (-2.6939840579762231E-1)*LOG(satratln) +1.6079879299099518*tln*LOG(satratln) + & 513 (-1.9667486968141933E-2)*tln**2*LOG(satratln) + & 514 5.5244755979770844E-5*tln**3*LOG(satratln) + (7.8884704837892468*LOG(satratln))/x_n + & 515 4.6374659198909596*LOG(satratln)**2 - 8.2002809894792153E-2*tln*LOG(satratln)**2 + & 516 8.5077424451172196E-4*tln**2*LOG(satratln)**2 + & 517 (-2.6518510168987462E-6)*tln**3*LOG(satratln)**2 + & 518 (-1.4625482500575278*LOG(satratln)**2)/x_n - 5.2413002989192037E-1*LOG(satratln)**3 + & 519 5.2755117653715865E-3*tln*LOG(satratln)**3 + & 520 (-2.9491061332113830E-6)*tln**2*LOG(satratln)**3 + & 521 (-2.4815454194486752E-8)*tln**3*LOG(satratln)**3 + & 522 (-5.2663760117394626E-2*LOG(satratln)**3)/x_n + & 523 1.6496664658266762*LOG(rhoaln) + & 524 (-8.0809397859218401E-1)*tln*LOG(rhoaln) + & 525 8.9302927091946642E-3*tln**2*LOG(rhoaln) + & 526 (-1.9583649496497497E-5)*tln**3*LOG(rhoaln) + & 527 (-8.9505572676891685*LOG(rhoaln))/x_n + & 528 (-3.0025283601622881E+1)*LOG(satratln)*LOG(rhoaln) + & 529 3.0783365644763633E-1*tln*LOG(satratln)*LOG(rhoaln) + & 530 (-7.4521756337984706E-4)*tln**2*LOG(satratln)*LOG(rhoaln) + & 531 (-5.7651433870681853E-7)*tln**3*LOG(satratln)*LOG(rhoaln) + & 532 (1.2872868529673207*LOG(satratln)*LOG(rhoaln))/x_n + & 533 (-6.1739867501526535E-1)*LOG(satratln)**2*LOG(rhoaln) + & 534 7.2347385705333975E-3*tln*LOG(satratln)**2*LOG(rhoaln) + & 535 (-3.0640494530822439E-5)*tln**2*LOG(satratln)**2*LOG(rhoaln) + & 536 6.5944609194346214E-8*tln**3*LOG(satratln)**2*LOG(rhoaln) + & 537 (-2.8681650332461055E-2*LOG(satratln)**2*LOG(rhoaln))/x_n + & 538 6.5213802375160306*LOG(rhoaln)**2 + & 539 (-4.7907162004793016E-2)*tln*LOG(rhoaln)**2 + & 540 (-1.0727890114215117E-4)*tln**2*LOG(rhoaln)**2 + & 541 5.6401818280534507E-7*tln**3*LOG(rhoaln)**2 + & 542 (5.4113070888923009E-1*LOG(rhoaln)**2)/x_n + & 543 5.2062808476476330E-1*LOG(satratln)*LOG(rhoaln)**2 + & 544 (-6.0696882500824584E-3)*tln*LOG(satratln)*LOG(rhoaln)**2 + & 545 2.3851383302608477E-5*tln**2*LOG(satratln)*LOG(rhoaln)**2 + & 546 (-1.5243837103067096E-8)*tln**3*LOG(satratln)*LOG(rhoaln)**2 + & 547 (-5.6543192378015687E-2*LOG(satratln)*LOG(rhoaln)**2)/x_n + & 548 (-1.1630806410696815E-1)*LOG(rhoaln)**3 + & 549 1.3806404273119610E-3*tln*LOG(rhoaln)**3 + & 550 (-2.0199865087650833E-6)*tln**2*LOG(rhoaln)**3 + & 551 (-3.0200284885763192E-9)*tln**3*LOG(rhoaln)**3 + & 552 (-6.9425267104126316E-3*LOG(rhoaln)**3)/x_n 553 553 jnuc_n=EXP(jnuc_n) 554 554 555 555 ntot_n =-3.5863435141979573E-3 - 1.0098670235841110E-1*tln + 8.9741268319259721E-4*tln**2 - 1.4855098605195757E-6*tln**3 & 556 &- 1.2080330016937095E-1/x_n + 1.1902674923928015E-3*LOG(satratln) - 1.9211358507172177E-2*tln*LOG(satratln) + &557 &2.4648094311204255E-4*tln**2*LOG(satratln) - 7.5641448594711666E-7*tln**3*LOG(satratln) + &558 &(-2.0668639384228818E-02*LOG(satratln))/x_n - 3.7593072011595188E-2*LOG(satratln)**2 + &559 &9.0993182774415718E-4 *tln*LOG(satratln)**2 + &560 &(-9.5698412164297149E-6)*tln**2*LOG(satratln)**2 + 3.7163166416110421E-8*tln**3*LOG(satratln)**2 + &561 &(1.1026579525210847E-2*LOG(satratln)**2)/x_n + 1.1530844115561925E-2 *LOG(satratln)**3 + &562 &(-1.8083253906466668E-4)*tln*LOG(satratln)**3 + 8.0213604053330654E-7*tln**2*LOG(satratln)**3 + &563 &(-8.5797885383051337E-10)*tln**3*LOG(satratln)**3 + (1.0243693899717402E-3*LOG(satratln)**3)/x_n + &564 &(-1.7248695296299649E-2)*LOG(rhoaln) + 1.1294004162437157E-2*tln*LOG(rhoaln) + &565 &(-1.2283640163189278E-4)*tln**2*LOG(rhoaln) + 2.7391732258259009E-7*tln**3*LOG(rhoaln) + &566 &(6.8505583974029602E-2*LOG(rhoaln))/x_n +2.9750968179523635E-1*LOG(satratln)*LOG(rhoaln) + &567 &(-3.6681154503992296E-3)*tln*LOG(satratln)*LOG(rhoaln) + 1.0636473034653114E-5*tln**2*LOG(satratln)*LOG(rhoaln)+ &568 &5.8687098466515866E-9*tln**3*LOG(satratln)*LOG(rhoaln) + (-5.2028866094191509E-3*LOG(satratln)*LOG(rhoaln))/x_n+ &569 &7.6971988880587231E-4*LOG(satratln)**2*LOG(rhoaln) - 2.4605575820433763E-5*tln*LOG(satratln)**2*LOG(rhoaln) + &570 &2.3818484400893008E-7*tln**2*LOG(satratln)**2*LOG(rhoaln) + &571 &(-8.8474102392445200E-10)*tln**3*LOG(satratln)**2*LOG(rhoaln) + &572 &(-1.6640566678168968E-4*LOG(satratln)**2*LOG(rhoaln))/x_n - 7.7390093776705471E-2*LOG(rhoaln)**2 + &573 &5.8220163188828482E-4*tln*LOG(rhoaln)**2 + 1.2291679321523287E-6*tln**2*LOG(rhoaln)**2 + &574 &(-7.4690997508075749E-9)*tln**3*LOG(rhoaln)**2 + (-5.6357941220497648E-3*LOG(rhoaln)**2)/x_n + &575 &(-4.7170109625089768E-3)*LOG(satratln)*LOG(rhoaln)**2 + 6.9828868534370193E-5*tln*LOG(satratln)*LOG(rhoaln)**2 + &576 &(-3.1738912157036403E-7)*tln**2*LOG(satratln)*LOG(rhoaln)**2 + &577 &2.3975538706787416E-10*tln**3*LOG(satratln)*LOG(rhoaln)**2 + &578 &(4.2304213386288567E-4*LOG(satratln)*LOG(rhoaln)**2)/x_n + 1.3696520973423231E-3*LOG(rhoaln)**3 + &579 &(-1.6863387574788199E-5)*tln*LOG(rhoaln)**3 + 2.7959499278844516E-8*tln**2*LOG(rhoaln)**3 + &580 &3.9423927013227455E-11*tln**3*LOG(rhoaln)**3 + (8.6136359966337272E-5*LOG(rhoaln)**3)/x_n556 - 1.2080330016937095E-1/x_n + 1.1902674923928015E-3*LOG(satratln) - 1.9211358507172177E-2*tln*LOG(satratln) + & 557 2.4648094311204255E-4*tln**2*LOG(satratln) - 7.5641448594711666E-7*tln**3*LOG(satratln) + & 558 (-2.0668639384228818E-02*LOG(satratln))/x_n - 3.7593072011595188E-2*LOG(satratln)**2 + & 559 9.0993182774415718E-4 *tln*LOG(satratln)**2 + & 560 (-9.5698412164297149E-6)*tln**2*LOG(satratln)**2 + 3.7163166416110421E-8*tln**3*LOG(satratln)**2 + & 561 (1.1026579525210847E-2*LOG(satratln)**2)/x_n + 1.1530844115561925E-2 *LOG(satratln)**3 + & 562 (-1.8083253906466668E-4)*tln*LOG(satratln)**3 + 8.0213604053330654E-7*tln**2*LOG(satratln)**3 + & 563 (-8.5797885383051337E-10)*tln**3*LOG(satratln)**3 + (1.0243693899717402E-3*LOG(satratln)**3)/x_n + & 564 (-1.7248695296299649E-2)*LOG(rhoaln) + 1.1294004162437157E-2*tln*LOG(rhoaln) + & 565 (-1.2283640163189278E-4)*tln**2*LOG(rhoaln) + 2.7391732258259009E-7*tln**3*LOG(rhoaln) + & 566 (6.8505583974029602E-2*LOG(rhoaln))/x_n +2.9750968179523635E-1*LOG(satratln)*LOG(rhoaln) + & 567 (-3.6681154503992296E-3)*tln*LOG(satratln)*LOG(rhoaln) + 1.0636473034653114E-5*tln**2*LOG(satratln)*LOG(rhoaln)+ & 568 5.8687098466515866E-9*tln**3*LOG(satratln)*LOG(rhoaln) + (-5.2028866094191509E-3*LOG(satratln)*LOG(rhoaln))/x_n+ & 569 7.6971988880587231E-4*LOG(satratln)**2*LOG(rhoaln) - 2.4605575820433763E-5*tln*LOG(satratln)**2*LOG(rhoaln) + & 570 2.3818484400893008E-7*tln**2*LOG(satratln)**2*LOG(rhoaln) + & 571 (-8.8474102392445200E-10)*tln**3*LOG(satratln)**2*LOG(rhoaln) + & 572 (-1.6640566678168968E-4*LOG(satratln)**2*LOG(rhoaln))/x_n - 7.7390093776705471E-2*LOG(rhoaln)**2 + & 573 5.8220163188828482E-4*tln*LOG(rhoaln)**2 + 1.2291679321523287E-6*tln**2*LOG(rhoaln)**2 + & 574 (-7.4690997508075749E-9)*tln**3*LOG(rhoaln)**2 + (-5.6357941220497648E-3*LOG(rhoaln)**2)/x_n + & 575 (-4.7170109625089768E-3)*LOG(satratln)*LOG(rhoaln)**2 + 6.9828868534370193E-5*tln*LOG(satratln)*LOG(rhoaln)**2 + & 576 (-3.1738912157036403E-7)*tln**2*LOG(satratln)*LOG(rhoaln)**2 + & 577 2.3975538706787416E-10*tln**3*LOG(satratln)*LOG(rhoaln)**2 + & 578 (4.2304213386288567E-4*LOG(satratln)*LOG(rhoaln)**2)/x_n + 1.3696520973423231E-3*LOG(rhoaln)**3 + & 579 (-1.6863387574788199E-5)*tln*LOG(rhoaln)**3 + 2.7959499278844516E-8*tln**2*LOG(rhoaln)**3 + & 580 3.9423927013227455E-11*tln**3*LOG(rhoaln)**3 + (8.6136359966337272E-5*LOG(rhoaln)**3)/x_n 581 581 ntot_n=EXP(ntot_n) 582 582 … … 603 603 604 604 kinrhotresi = 5.3742280876674478E1 - 6.6837931590012266E-3 *LOG(satratli)**(-2) & 605 &- 1.0142598385422842E-01 * LOG(satratli)**(-1) - 6.4170597272606873E+00 * LOG(satratli) &606 &- 6.4315798914824518E-01 * LOG(satratli)**2 - 2.4428391714772721E-02 * LOG(satratli)**3 &607 &- 3.5356658734539019E-04 * LOG(satratli)**4 + 2.5400015099140506E-05 * tli * LOG(satratli)**(-2) &608 &- 2.7928900816637790E-04 * tli * LOG(satratli)**(-1) + 4.4108573484923690E-02 * tli * LOG(satratli) &609 &+ 6.3943789012475532E-03 * tli * LOG(satratli)**(2) + 2.3164296174966580E-04 * tli * LOG(satratli)**(3) &610 &+ 3.0372070669934950E-06 * tli * LOG(satratli)**4 + 3.8255873977423475E-06 * tli**2 * LOG(satratli)**(-1) &611 &- 1.2344793083561629E-04 * tli**2 * LOG(satratli) - 1.7959048869810192E-05 * tli**2 * LOG(satratli)**(2) &612 &- 3.2165622558722767E-07 * tli**2 * LOG(satratli)**3 - 4.7136923780988659E-09 * tli**3 * LOG(satratli)**(-1) &613 &+ 1.1873317184482216E-07 * tli**3 * LOG(satratli) + 1.5685860354866621E-08 * tli**3 * LOG(satratli)**2 &614 &- 1.4329645891059557E+04 * tli**(-1) + 1.3842599842575321E-01 * tli &615 &- 4.1376265912842938E-04 * tli**(2) + 3.9147639775826004E-07 * tli**3605 - 1.0142598385422842E-01 * LOG(satratli)**(-1) - 6.4170597272606873E+00 * LOG(satratli) & 606 - 6.4315798914824518E-01 * LOG(satratli)**2 - 2.4428391714772721E-02 * LOG(satratli)**3 & 607 - 3.5356658734539019E-04 * LOG(satratli)**4 + 2.5400015099140506E-05 * tli * LOG(satratli)**(-2) & 608 - 2.7928900816637790E-04 * tli * LOG(satratli)**(-1) + 4.4108573484923690E-02 * tli * LOG(satratli) & 609 + 6.3943789012475532E-03 * tli * LOG(satratli)**(2) + 2.3164296174966580E-04 * tli * LOG(satratli)**(3) & 610 + 3.0372070669934950E-06 * tli * LOG(satratli)**4 + 3.8255873977423475E-06 * tli**2 * LOG(satratli)**(-1) & 611 - 1.2344793083561629E-04 * tli**2 * LOG(satratli) - 1.7959048869810192E-05 * tli**2 * LOG(satratli)**(2) & 612 - 3.2165622558722767E-07 * tli**2 * LOG(satratli)**3 - 4.7136923780988659E-09 * tli**3 * LOG(satratli)**(-1) & 613 + 1.1873317184482216E-07 * tli**3 * LOG(satratli) + 1.5685860354866621E-08 * tli**3 * LOG(satratli)**2 & 614 - 1.4329645891059557E+04 * tli**(-1) + 1.3842599842575321E-01 * tli & 615 - 4.1376265912842938E-04 * tli**(2) + 3.9147639775826004E-07 * tli**3 616 616 617 617 kinrhotresi=EXP(kinrhotresi) !1/cm3 … … 621 621 IF (kinetic_i) THEN 622 622 jnuc_i1=1.0E6*(0.3E-9 + 0.487E-9)**2.*SQRT(8.*RPI*RKBOL*(1./mH2SO4mol+1./mH2SO4mol))* & 623 & SQRT(tli)*rhoali !1/cm3s623 SQRT(tli)*rhoali !1/cm3s 624 624 ntot_i=1. !set to 1 625 625 na_i=1. … … 628 628 ELSE 629 629 jnuc_i1 = 3.0108954259038608E+01+tli*6.1176722090512577E+01+(tli**2)*8.7240333618891663E-01+(tli**3)* & 630 &(-4.6191788649375719E-03)+(tli**(-1))*8.3537059107024481E-01 + &631 &(1.5028549216690628E+01+tli*(-1.9310989753720623E-01)+(tli**2)*8.0155514634860480E-04+(tli**3)* &632 &(-1.0832730707799128E-06)+(tli**(-1))*1.7577660457989019)*(LOG(satratli)**(-2)) + &633 &(-2.0487870170216488E-01 + tli * 1.3263949252910405E-03 + (tli**2) *(-8.4195688402450274E-06) + &634 &(tli**3)*1.6154895940993287E-08 + (tli**(-1))*3.8734212545203874E+01) * (LOG(satratli)**(-2)*LOG(rhoali)) + &635 &(1.4955918863858371 + tli * 9.2290004245522454E+01 + (tli**2) *(-8.9006965195392618E-01) + &636 &(tli**3) * 2.2319123411013099E-03 + (tli**(-1)) * 4.0180079996840852E-03) * &637 &(LOG(satratli)**(-1) * LOG(rhoali)**(-1)) + &638 &(7.9018031228561085 + tli *(-1.1649433968658949E+01) + (tli**2) * 1.1400827854910951E-01 + &639 &(tli**3) *(-3.1941526492127755E-04) + (tli**(-1)) *(-3.7662115740271446E-01)) * (LOG(satratli)**(-1)) + &640 &(1.5725237111225979E+02 + tli *(-1.0051649979836277) + (tli**2) * 1.1866484014507624E-03 + &641 &(tli**3) * 7.3557614998540389E-06 + (tli**(-1)) * 2.6270197023115189) * (LOG(satratli)**(-1) * LOG(rhoali)) + &642 &(-1.6973840122470968E+01 + tli * 1.1258423691432135E-01 + (tli**2) *(-2.9850139351463793E-04) + (tli**3) * &643 &1.4301286324827064E-07 + (tli**(-1)) * 1.3163389235253725E+01) * (LOG(satratli)**(-1) * LOG(rhoali)**2) + &644 &(-1.0399591631839757 + tli * 2.7022055588257691E-03 + (tli**2) *(-2.1507467231330936E-06) + (tli**3) * &645 &3.8059489037584171E-10 + (tli**(-1)) * 1.5000492788553410E+02) * (LOG(satratli)**(-1) * LOG(rhoali)**3) + &646 &(1.2250990965305315 + tli * 3.0495946490079444E+01 + (tli**2) * 2.1051563135187106E+01 + (tli**3) * &647 &(-8.2200682916580878E-02) + (tli**(-1)) * 2.9965871386685029E-02) * (LOG(rhoali)**(-2)) + &648 &(4.8281605955680433 + tli * 1.7346551710836445E+02 + (tli**2) *(-1.0113602140796010E+01) + (tli**3) * &649 &3.7482518458685089E-02 + (tli**(-1)) *(-1.4449998158558205E-01)) * (LOG(rhoali)**(-1)) + &650 &(2.3399230964451237E+02 + tli *(-2.3099267235261948E+01) + (tli**2) * 8.0122962140916354E-02 + &651 &(tli**3) * 6.1542576994557088E-05 + (tli**(-1)) * 5.3718413254843007) * (LOG(rhoali)) + &652 &(1.0299715519499360E+02 + tli *(-6.4663357203364136E-02) + (tli**2) *(-2.0487150565050316E-03) + &653 &(tli**3) * 8.7935289055530897E-07 + (tli**(-1)) * 3.6013204601215229E+01) * (LOG(rhoali)**2) + &654 &(-3.5452115439584042 + tli * 1.7083445731159330E-02 + (tli**2) *(-1.2552625290862626E-05) + (tli**3) * &655 &1.2968447449182847E-09 + (tli**(-1)) * 1.5748687512056560E+02) * (LOG(rhoali)**3) + &656 &(2.2338490119517975 + tli * 1.0229410216045540E+02 + (tli**2) *(-3.2103611955174052) + (tli**3) * &657 &1.3397152304977591E-02 + (tli**(-1)) *(-2.4155187776460030E-02)) * (LOG(satratli)* LOG(rhoali)**(-2)) + &658 &(3.7592282990713963 + tli *(-1.5257988769009816E+02) + (tli**2) * 2.6113805420558802 + (tli**3) * &659 &(-9.0380721653694363E-03) + (tli**(-1)) *(-1.3974197138171082E-01)) * (LOG(satratli)* LOG(rhoali)**(-1)) + &660 &(1.8293600730573988E+01 + tli * 1.8344728606002992E+01 + (tli**2) *(-4.0063363221106751E-01) + (tli**3) &661 &* 1.4842749371258522E-03 + (tli**(-1)) * 1.1848846003282287) * (LOG(satratli)) + &662 &(-1.7634531623032314E+02 + tli * 4.9011762441271278 + (tli**2) *(-1.3195821562746339E-02) + (tli**3) * &663 &(-2.8668619526430859E-05) + (tli**(-1)) *(-2.9823396976393551E-01)) * (LOG(satratli)* LOG(rhoali)) + &664 &(-3.2944043694275727E+01 + tli * 1.2517571921051887E-01 + (tli**2) * 8.3239769771186714E-05 + (tli**3) * &665 &2.8191859341519507E-07 + (tli**(-1)) *(-2.7352880736682319E+01)) * (LOG(satratli)* LOG(rhoali)**2) + &666 &(-1.1451811137553243 + tli * 2.0625997485732494E-03 + (tli**2) *(-3.4225389469233624E-06) + (tli**3) * &667 &4.4437613496984567E-10 + (tli**(-1)) * 1.8666644332606754E+02) * (LOG(satratli)* LOG(rhoali)**3) + &668 &(3.2270897099493567E+01 + tli * 7.7898447327513687E-01 + (tli**2) *(-6.5662738484679626E-03) + (tli**3) * &669 &3.7899330796456790E-06 + (tli**(-1)) * 7.1106427501756542E-01) * (LOG(satratli)**2 * LOG(rhoali)**(-1)) + &670 &(-2.8901906781697811E+01 + tli *(-1.5356398793054860) + (tli**2) * 1.9267271774384788E-02 + (tli**3) * &671 &(-5.3886270475516162E-05) + (tli**(-1)) * 5.0490415975693426E-01) * (LOG(satratli)**2) + &672 &(3.3365683645733924E+01 + tli *(-3.6114561564894537E-01) + (tli**2) * 9.2977354471929262E-04 + (tli**3) * &673 &1.9549769069511355E-07 + (tli**(-1)) *(-8.8865930095112855)) * (LOG(satratli)**2 * LOG(rhoali)) + &674 &(2.4592563042806375 + tli *(-8.3227071743101084E-03) + (tli**2) * 8.2563338043447783E-06 + (tli**3) * &675 &(-8.4374976698593496E-09) + (tli**(-1)) *(-2.0938173949893473E+02)) * (LOG(satratli)**2 * LOG(rhoali)**2) + &676 &(4.4099823444352317E+01 + tli * 2.5915665826835252 + (tli**2) *(-1.6449091819482634E-02) + (tli**3) * &677 &2.6797249816144721E-05 + (tli**(-1)) * 5.5045672663909995E-01)* satratli630 (-4.6191788649375719E-03)+(tli**(-1))*8.3537059107024481E-01 + & 631 (1.5028549216690628E+01+tli*(-1.9310989753720623E-01)+(tli**2)*8.0155514634860480E-04+(tli**3)* & 632 (-1.0832730707799128E-06)+(tli**(-1))*1.7577660457989019)*(LOG(satratli)**(-2)) + & 633 (-2.0487870170216488E-01 + tli * 1.3263949252910405E-03 + (tli**2) *(-8.4195688402450274E-06) + & 634 (tli**3)*1.6154895940993287E-08 + (tli**(-1))*3.8734212545203874E+01) * (LOG(satratli)**(-2)*LOG(rhoali)) + & 635 (1.4955918863858371 + tli * 9.2290004245522454E+01 + (tli**2) *(-8.9006965195392618E-01) + & 636 (tli**3) * 2.2319123411013099E-03 + (tli**(-1)) * 4.0180079996840852E-03) * & 637 (LOG(satratli)**(-1) * LOG(rhoali)**(-1)) + & 638 (7.9018031228561085 + tli *(-1.1649433968658949E+01) + (tli**2) * 1.1400827854910951E-01 + & 639 (tli**3) *(-3.1941526492127755E-04) + (tli**(-1)) *(-3.7662115740271446E-01)) * (LOG(satratli)**(-1)) + & 640 (1.5725237111225979E+02 + tli *(-1.0051649979836277) + (tli**2) * 1.1866484014507624E-03 + & 641 (tli**3) * 7.3557614998540389E-06 + (tli**(-1)) * 2.6270197023115189) * (LOG(satratli)**(-1) * LOG(rhoali)) + & 642 (-1.6973840122470968E+01 + tli * 1.1258423691432135E-01 + (tli**2) *(-2.9850139351463793E-04) + (tli**3) * & 643 1.4301286324827064E-07 + (tli**(-1)) * 1.3163389235253725E+01) * (LOG(satratli)**(-1) * LOG(rhoali)**2) + & 644 (-1.0399591631839757 + tli * 2.7022055588257691E-03 + (tli**2) *(-2.1507467231330936E-06) + (tli**3) * & 645 3.8059489037584171E-10 + (tli**(-1)) * 1.5000492788553410E+02) * (LOG(satratli)**(-1) * LOG(rhoali)**3) + & 646 (1.2250990965305315 + tli * 3.0495946490079444E+01 + (tli**2) * 2.1051563135187106E+01 + (tli**3) * & 647 (-8.2200682916580878E-02) + (tli**(-1)) * 2.9965871386685029E-02) * (LOG(rhoali)**(-2)) + & 648 (4.8281605955680433 + tli * 1.7346551710836445E+02 + (tli**2) *(-1.0113602140796010E+01) + (tli**3) * & 649 3.7482518458685089E-02 + (tli**(-1)) *(-1.4449998158558205E-01)) * (LOG(rhoali)**(-1)) + & 650 (2.3399230964451237E+02 + tli *(-2.3099267235261948E+01) + (tli**2) * 8.0122962140916354E-02 + & 651 (tli**3) * 6.1542576994557088E-05 + (tli**(-1)) * 5.3718413254843007) * (LOG(rhoali)) + & 652 (1.0299715519499360E+02 + tli *(-6.4663357203364136E-02) + (tli**2) *(-2.0487150565050316E-03) + & 653 (tli**3) * 8.7935289055530897E-07 + (tli**(-1)) * 3.6013204601215229E+01) * (LOG(rhoali)**2) + & 654 (-3.5452115439584042 + tli * 1.7083445731159330E-02 + (tli**2) *(-1.2552625290862626E-05) + (tli**3) * & 655 1.2968447449182847E-09 + (tli**(-1)) * 1.5748687512056560E+02) * (LOG(rhoali)**3) + & 656 (2.2338490119517975 + tli * 1.0229410216045540E+02 + (tli**2) *(-3.2103611955174052) + (tli**3) * & 657 1.3397152304977591E-02 + (tli**(-1)) *(-2.4155187776460030E-02)) * (LOG(satratli)* LOG(rhoali)**(-2)) + & 658 (3.7592282990713963 + tli *(-1.5257988769009816E+02) + (tli**2) * 2.6113805420558802 + (tli**3) * & 659 (-9.0380721653694363E-03) + (tli**(-1)) *(-1.3974197138171082E-01)) * (LOG(satratli)* LOG(rhoali)**(-1)) + & 660 (1.8293600730573988E+01 + tli * 1.8344728606002992E+01 + (tli**2) *(-4.0063363221106751E-01) + (tli**3) & 661 * 1.4842749371258522E-03 + (tli**(-1)) * 1.1848846003282287) * (LOG(satratli)) + & 662 (-1.7634531623032314E+02 + tli * 4.9011762441271278 + (tli**2) *(-1.3195821562746339E-02) + (tli**3) * & 663 (-2.8668619526430859E-05) + (tli**(-1)) *(-2.9823396976393551E-01)) * (LOG(satratli)* LOG(rhoali)) + & 664 (-3.2944043694275727E+01 + tli * 1.2517571921051887E-01 + (tli**2) * 8.3239769771186714E-05 + (tli**3) * & 665 2.8191859341519507E-07 + (tli**(-1)) *(-2.7352880736682319E+01)) * (LOG(satratli)* LOG(rhoali)**2) + & 666 (-1.1451811137553243 + tli * 2.0625997485732494E-03 + (tli**2) *(-3.4225389469233624E-06) + (tli**3) * & 667 4.4437613496984567E-10 + (tli**(-1)) * 1.8666644332606754E+02) * (LOG(satratli)* LOG(rhoali)**3) + & 668 (3.2270897099493567E+01 + tli * 7.7898447327513687E-01 + (tli**2) *(-6.5662738484679626E-03) + (tli**3) * & 669 3.7899330796456790E-06 + (tli**(-1)) * 7.1106427501756542E-01) * (LOG(satratli)**2 * LOG(rhoali)**(-1)) + & 670 (-2.8901906781697811E+01 + tli *(-1.5356398793054860) + (tli**2) * 1.9267271774384788E-02 + (tli**3) * & 671 (-5.3886270475516162E-05) + (tli**(-1)) * 5.0490415975693426E-01) * (LOG(satratli)**2) + & 672 (3.3365683645733924E+01 + tli *(-3.6114561564894537E-01) + (tli**2) * 9.2977354471929262E-04 + (tli**3) * & 673 1.9549769069511355E-07 + (tli**(-1)) *(-8.8865930095112855)) * (LOG(satratli)**2 * LOG(rhoali)) + & 674 (2.4592563042806375 + tli *(-8.3227071743101084E-03) + (tli**2) * 8.2563338043447783E-06 + (tli**3) * & 675 (-8.4374976698593496E-09) + (tli**(-1)) *(-2.0938173949893473E+02)) * (LOG(satratli)**2 * LOG(rhoali)**2) + & 676 (4.4099823444352317E+01 + tli * 2.5915665826835252 + (tli**2) *(-1.6449091819482634E-02) + (tli**3) * & 677 2.6797249816144721E-05 + (tli**(-1)) * 5.5045672663909995E-01)* satratli 678 678 jnuc_i1=EXP(jnuc_i1) 679 679 680 680 ntot_i = ABS((-4.8324296064013375E+04 + tli * 5.0469120697428906E+02 + (tli**2) *(-1.1528940488496042E+00) + & 681 &(tli**(-1)) *(-8.6892744676239192E+02) + (tli**(3)) * 4.0030302028120469E-04) + &682 &(-6.7259105232039847E+03 + tli * 1.9197488157452008E+02 + (tli**2) *(-1.3602976930126354E+00) + &683 &(tli**(-1)) *(-1.1212637938360332E+02) + (tli**(3)) * 2.8515597265933207E-03) * &684 &LOG(satratli)**(-2) * LOG(rhoali)**(-2) + &685 &(2.6216455217763342E+02 + tli *(-2.3687553252750821E+00) + (tli**2) * 7.4074554767517521E-03 + &686 &(tli**(-1)) *(-1.9213956820114927E+03) + (tli**(3)) *(-9.3839114856129453E-06)) * LOG(satratli)**(-2) + &687 &(3.9652478944137344E+00 + tli * 1.2469375098256536E-02 + (tli**2) *(-9.9837754694045633E-05) + (tli**(-1)) * &688 &(-5.1919499210175138E+02) + (tli**(3)) * 1.6489001324583862E-07) * LOG(satratli)**(-2) * LOG(rhoali) + &689 &(2.4975714429096206E+02 + tli * 1.7107594562445172E+02 + (tli**2) *(-7.8988711365135289E-01) + (tli**(-1)) * &690 &(-2.2243599782483177E+01) + (tli**(3)) *(-1.6291523004095427E-04)) * LOG(satratli)**(-1) * LOG(rhoali)**(-2) +&691 &(-8.9270715592533611E+02 + tli * 1.2053538883338946E+02 + (tli**2) *(-1.5490408828541018E+00) + (tli**(-1)) * &692 &(-1.1243275579419826E+01) + (tli**(3)) * 4.8053105606904655E-03) * LOG(satratli)**(-1) * LOG(rhoali)**(-1) + &693 &(7.6426441642091631E+03 + tli *(-7.1785462414656578E+01) + (tli**2) * 2.3851864923199523E-01 + (tli**(-1)) * &694 &8.5591775688708395E+01 + (tli**(3)) *(-3.7000473243342858E-04)) * LOG(satratli)**(-1) + &695 &(-5.1516826398607911E+01 + tli * 9.1385720811460558E-01 + (tli**2) *(-3.5477100262158974E-03) + &696 &(tli**(-1)) * 2.7545544507625586E+03 + (tli**(3)) * 5.4708262093640928E-06) * LOG(satratli)**(-1) * LOG(rhoali) + &697 &(-3.0386767129196176E+02 + tli *(-1.1033438883583569E+04) + (tli**2) * 8.1296859732896067E+01 + (tli**(-1)) * &698 &1.2625883141097162E+01 + (tli**(3)) *(-1.2728497822219101E-01)) * LOG(rhoali)**(-2) + &699 &(-3.3763494256461472E+03 + tli * 3.1916579136391006E+03 + (tli**2) *(-2.7234339474441143E+01) + (tli**(-1)) * &700 &(-2.1897653262707397E+01) + (tli**(3)) * 5.1788505812259071E-02) * LOG(rhoali)**(-1) + &701 &(-1.8817843873687068E+03 + tli * 4.3038072285882070E+00 + (tli**2) * 6.6244087689671860E-03 + (tli**(-1)) * &702 &(-2.7133073605696295E+03) + (tli**(3)) *(-1.7951557394285043E-05)) * LOG(rhoali) + &703 &(-1.7668827539244447E+02 + tli * 4.8160932330629913E-01 + (tli**2) *(-6.3133007671100293E-04) + (tli**(-1)) * &704 &2.5631774669873157E+04 + (tli**(3)) * 4.1534484127873519E-07) * LOG(rhoali)**(2) + &705 &(-1.6661835889222382E+03 + tli * 1.3708900504682877E+03 + (tli**2) *(-1.7919060052198969E+01) + (tli**(-1)) * &706 &(-3.5145029804436405E+01) + (tli**(3)) * 5.1047240947371224E-02) * LOG(satratli)* LOG(rhoali)**(-2) + &707 &(1.0843549363030939E+04 + tli *(-7.3557073636139577E+01) + (tli**2) * 1.2054625131778862E+00 + (tli**(-1)) * &708 &1.9358737917864391E+02 + (tli**(3)) *(-4.2871620775911338E-03)) * LOG(satratli)* LOG(rhoali)**(-1) + &709 &(-2.4269802549752835E+03 + tli * 1.1348265061941714E+01 + (tli**2) *(-5.0430423939495157E-02) + (tli**(-1)) * &710 &2.3709874548950634E+03 + (tli**(3)) * 1.4091851828620244E-04) * LOG(satratli) + &711 &(5.2745372575251588E+02 + tli *(-2.6080675912627314E+00) + (tli**2) * 5.6902218056670145E-03 + (tli**(-1)) * &712 &(-3.2149319482897838E+04) + (tli**(3)) *(-5.4121996056745853E-06)) * LOG(satratli)* LOG(rhoali) + &713 &(-1.6401959518360403E+01 + tli * 2.4322962162439640E-01 + (tli**2) * 1.1744366627725344E-03 + (tli**(-1)) * &714 &(-8.2694427518413195E+03) + (tli**(3)) *(-5.0028379203873102E-06))* LOG(satratli)**(2) + &715 &(-2.7556572017167782E+03 + tli * 4.9293344495058264E+01 + (tli**2) *(-2.6503456520676050E-01) + (tli**(-1)) * &716 &1.2130698030982167E+03 + (tli**(3)) * 4.3530610668042957E-04)* LOG(satratli)**2 * LOG(rhoali)**(-1) + &717 &(-6.3419182228959192E+00 + tli * 4.0636212834605827E-02 + (tli**2) *(-1.0450112687842742E-04) + (tli**(-1)) * &718 &3.1035882189759656E+02 + (tli**(3)) * 9.4328418657873500E-08)* LOG(satratli)**(-3) + &719 &(3.0189213304689042E+03 + tli *(-2.3804654203861684E+01) + (tli**2) * 6.8113013411972942E-02 + (tli**(-1)) * &720 &6.3112071081188913E+02 + (tli**(3)) *(-9.4460854261685723E-05))* (satratli) * LOG(rhoali) + &721 &(1.1924791930673702E+04 + tli *(-1.1973824959206000E+02) + (tli**2) * 1.6888713097971020E-01 + (tli**(-1)) * &722 &1.8735938211539585E+02 + (tli**(3)) * 5.0974564680442852E-04)* (satratli) + &723 &(3.6409071302482083E+01 + tli * 1.7919859306449623E-01 + (tli**2) *(-1.0020116255895206E-03) + (tli**(-1)) * &724 &(-8.3521083354432303E+03) + (tli**(3)) * 1.5879900546795635E-06)* satratli * LOG(rhoali)**(2))681 (tli**(-1)) *(-8.6892744676239192E+02) + (tli**(3)) * 4.0030302028120469E-04) + & 682 (-6.7259105232039847E+03 + tli * 1.9197488157452008E+02 + (tli**2) *(-1.3602976930126354E+00) + & 683 (tli**(-1)) *(-1.1212637938360332E+02) + (tli**(3)) * 2.8515597265933207E-03) * & 684 LOG(satratli)**(-2) * LOG(rhoali)**(-2) + & 685 (2.6216455217763342E+02 + tli *(-2.3687553252750821E+00) + (tli**2) * 7.4074554767517521E-03 + & 686 (tli**(-1)) *(-1.9213956820114927E+03) + (tli**(3)) *(-9.3839114856129453E-06)) * LOG(satratli)**(-2) + & 687 (3.9652478944137344E+00 + tli * 1.2469375098256536E-02 + (tli**2) *(-9.9837754694045633E-05) + (tli**(-1)) * & 688 (-5.1919499210175138E+02) + (tli**(3)) * 1.6489001324583862E-07) * LOG(satratli)**(-2) * LOG(rhoali) + & 689 (2.4975714429096206E+02 + tli * 1.7107594562445172E+02 + (tli**2) *(-7.8988711365135289E-01) + (tli**(-1)) * & 690 (-2.2243599782483177E+01) + (tli**(3)) *(-1.6291523004095427E-04)) * LOG(satratli)**(-1) * LOG(rhoali)**(-2) +& 691 (-8.9270715592533611E+02 + tli * 1.2053538883338946E+02 + (tli**2) *(-1.5490408828541018E+00) + (tli**(-1)) * & 692 (-1.1243275579419826E+01) + (tli**(3)) * 4.8053105606904655E-03) * LOG(satratli)**(-1) * LOG(rhoali)**(-1) + & 693 (7.6426441642091631E+03 + tli *(-7.1785462414656578E+01) + (tli**2) * 2.3851864923199523E-01 + (tli**(-1)) * & 694 8.5591775688708395E+01 + (tli**(3)) *(-3.7000473243342858E-04)) * LOG(satratli)**(-1) + & 695 (-5.1516826398607911E+01 + tli * 9.1385720811460558E-01 + (tli**2) *(-3.5477100262158974E-03) + & 696 (tli**(-1)) * 2.7545544507625586E+03 + (tli**(3)) * 5.4708262093640928E-06) * LOG(satratli)**(-1) * LOG(rhoali) + & 697 (-3.0386767129196176E+02 + tli *(-1.1033438883583569E+04) + (tli**2) * 8.1296859732896067E+01 + (tli**(-1)) * & 698 1.2625883141097162E+01 + (tli**(3)) *(-1.2728497822219101E-01)) * LOG(rhoali)**(-2) + & 699 (-3.3763494256461472E+03 + tli * 3.1916579136391006E+03 + (tli**2) *(-2.7234339474441143E+01) + (tli**(-1)) * & 700 (-2.1897653262707397E+01) + (tli**(3)) * 5.1788505812259071E-02) * LOG(rhoali)**(-1) + & 701 (-1.8817843873687068E+03 + tli * 4.3038072285882070E+00 + (tli**2) * 6.6244087689671860E-03 + (tli**(-1)) * & 702 (-2.7133073605696295E+03) + (tli**(3)) *(-1.7951557394285043E-05)) * LOG(rhoali) + & 703 (-1.7668827539244447E+02 + tli * 4.8160932330629913E-01 + (tli**2) *(-6.3133007671100293E-04) + (tli**(-1)) * & 704 2.5631774669873157E+04 + (tli**(3)) * 4.1534484127873519E-07) * LOG(rhoali)**(2) + & 705 (-1.6661835889222382E+03 + tli * 1.3708900504682877E+03 + (tli**2) *(-1.7919060052198969E+01) + (tli**(-1)) * & 706 (-3.5145029804436405E+01) + (tli**(3)) * 5.1047240947371224E-02) * LOG(satratli)* LOG(rhoali)**(-2) + & 707 (1.0843549363030939E+04 + tli *(-7.3557073636139577E+01) + (tli**2) * 1.2054625131778862E+00 + (tli**(-1)) * & 708 1.9358737917864391E+02 + (tli**(3)) *(-4.2871620775911338E-03)) * LOG(satratli)* LOG(rhoali)**(-1) + & 709 (-2.4269802549752835E+03 + tli * 1.1348265061941714E+01 + (tli**2) *(-5.0430423939495157E-02) + (tli**(-1)) * & 710 2.3709874548950634E+03 + (tli**(3)) * 1.4091851828620244E-04) * LOG(satratli) + & 711 (5.2745372575251588E+02 + tli *(-2.6080675912627314E+00) + (tli**2) * 5.6902218056670145E-03 + (tli**(-1)) * & 712 (-3.2149319482897838E+04) + (tli**(3)) *(-5.4121996056745853E-06)) * LOG(satratli)* LOG(rhoali) + & 713 (-1.6401959518360403E+01 + tli * 2.4322962162439640E-01 + (tli**2) * 1.1744366627725344E-03 + (tli**(-1)) * & 714 (-8.2694427518413195E+03) + (tli**(3)) *(-5.0028379203873102E-06))* LOG(satratli)**(2) + & 715 (-2.7556572017167782E+03 + tli * 4.9293344495058264E+01 + (tli**2) *(-2.6503456520676050E-01) + (tli**(-1)) * & 716 1.2130698030982167E+03 + (tli**(3)) * 4.3530610668042957E-04)* LOG(satratli)**2 * LOG(rhoali)**(-1) + & 717 (-6.3419182228959192E+00 + tli * 4.0636212834605827E-02 + (tli**2) *(-1.0450112687842742E-04) + (tli**(-1)) * & 718 3.1035882189759656E+02 + (tli**(3)) * 9.4328418657873500E-08)* LOG(satratli)**(-3) + & 719 (3.0189213304689042E+03 + tli *(-2.3804654203861684E+01) + (tli**2) * 6.8113013411972942E-02 + (tli**(-1)) * & 720 6.3112071081188913E+02 + (tli**(3)) *(-9.4460854261685723E-05))* (satratli) * LOG(rhoali) + & 721 (1.1924791930673702E+04 + tli *(-1.1973824959206000E+02) + (tli**2) * 1.6888713097971020E-01 + (tli**(-1)) * & 722 1.8735938211539585E+02 + (tli**(3)) * 5.0974564680442852E-04)* (satratli) + & 723 (3.6409071302482083E+01 + tli * 1.7919859306449623E-01 + (tli**2) *(-1.0020116255895206E-03) + (tli**(-1)) * & 724 (-8.3521083354432303E+03) + (tli**(3)) * 1.5879900546795635E-06)* satratli * LOG(rhoali)**(2)) 725 725 726 726 rc_i = (-3.6318550637865524E-08 + tli * 2.1740704135789128E-09 + (tli**2) * & 727 &(-8.5521429066506161E-12) + (tli**3) *(-9.3538647454573390E-15)) + &728 &(2.1366936839394922E-08 + tli *(-2.4087168827395623E-10) + (tli**2) * 8.7969869277074319E-13 + &729 &(tli**3) *(-1.0294466881303291E-15))* LOG(satratli)**(-2) * LOG(rhoali)**(-1) + &730 &(-7.7804007761164303E-10 + tli * 1.0327058173517932E-11 + (tli**2) *(-4.2557697639692428E-14) + &731 &(tli**3) * 5.4082507061618662E-17)* LOG(satratli)**(-2) + &732 &(3.2628927397420860E-12 + tli *(-7.6475692919751066E-14) + (tli**2) * 4.1985816845259788E-16 + &733 &(tli**3) *(-6.2281395889592719E-19))* LOG(satratli)**(-2) * LOG(rhoali) + &734 &(2.0442205540818555E-09 + tli * 4.0441858911249830E-08 + (tli**2) *(-3.3423487629482825E-10) + &735 &(tli**3) * 6.8000404742985678E-13)* LOG(satratli)**(-1) * LOG(rhoali)**(-2) + &736 &(1.8381489183824627E-08 + tli *(-8.9853322951518919E-09) + (tli**2) * 7.5888799566036185E-11 + &737 &(tli**3) *(-1.5823457864755549E-13))* LOG(satratli)**(-1) * LOG(rhoali)**(-1) + &738 &(1.1795760639695057E-07 + tli *(-8.1046722896375875E-10) + (tli**2) * 9.1868604369041857E-14 + &739 &(tli**3) * 4.7882428237444610E-15)* LOG(satratli)**(-1) + &740 &(-4.4028846582545952E-09 + tli * 4.6541269232626618E-11 + (tli**2) *(-1.1939929984285194E-13) + &741 &(tli**3) * 2.3602037016614437E-17)* LOG(satratli)**(-1) * LOG(rhoali) + &742 &(2.7885056884209128E-11 + tli *(-4.5167129624119121E-13) + (tli**2) * 1.6558404997394422E-15 + &743 &(tli**3) *(-1.2037336621218054E-18))* LOG(satratli)**(-1) * LOG(rhoali)**2 + &744 &(-2.3719627171699983E-09 + tli *(-1.5260127909292053E-07) + (tli**2) * 1.7177017944754134E-09 + &745 &(tli**3) *(-4.7031737537526395E-12))* LOG(rhoali)**(-2) + &746 &(-5.6946433724699646E-09 + tli * 8.4629788237081735E-09 + (tli**2) *(-1.7674135187061521E-10) + &747 &(tli**3) * 6.6236547903091862E-13)* LOG(rhoali)**(-1) + &748 &(-2.2808617930606012E-08 + tli * 1.4773376696847775E-10 + (tli**2) *(-1.3076953119957355E-13) + &749 &(tli**3) * 2.3625301497914000E-16)* LOG(rhoali) + &750 &(1.4014269939947841E-10 + tli *(-2.3675117757377632E-12) + (tli**2) * 5.1514033966707879E-15 + &751 &(tli**3) *(-4.8864233454747856E-18))* LOG(rhoali)**2 + &752 &(6.5464943868885886E-11 + tli * 1.6494354816942769E-08 + (tli**2) *(-1.7480097393483653E-10) + &753 &(tli**3) * 4.7460075628523984E-13)* LOG(satratli)* LOG(rhoali)**(-2) + &754 &(8.4737893183927871E-09 + tli *(-6.0243327445597118E-09) + (tli**2) * 5.8766070529814883E-11 + &755 &(tli**3) *(-1.4926748560042018E-13))* LOG(satratli)* LOG(rhoali)**(-1) + &756 &(1.0761964135701397E-07 + tli *(-1.0142496009071148E-09) + (tli**2) * 2.1337312466519190E-12 + &757 &(tli**3) * 1.6376014957685404E-15)* LOG(satratli) + &758 &(-3.5621571395968670E-09 + tli * 4.1175339587760905E-11 + (tli**2) *(-1.3535372357998504E-13) + &759 &(tli**3) * 8.9334219536920720E-17)* LOG(satratli)* LOG(rhoali) + &760 &(2.0700482083136289E-11 + tli *(-3.9238944562717421E-13) + (tli**2) * 1.5850961422040196E-15 + &761 &(tli**3) *(-1.5336775610911665E-18))* LOG(satratli)* LOG(rhoali)**2 + &762 &(1.8524255464416206E-09 + tli *(-2.1959816152743264E-11) + (tli**2) *(-6.4478119501677012E-14) + &763 &(tli**3) * 5.5135243833766056E-16)* LOG(satratli)**2 * LOG(rhoali)**(-1) + &764 &(1.9349488650922679E-09 + tli *(-2.2647295919976428E-11) + (tli**2) * 9.2917479748268751E-14 + &765 &(tli**3) *(-1.2741959892173170E-16))* LOG(satratli)**2 + &766 &(2.1484978031650972E-11 + tli *(-9.3976642475838013E-14) + (tli**2) *(-4.8892738002751923E-16) + &767 &(tli**3) * 1.4676120441783832E-18)* LOG(satratli)**2 * LOG(rhoali) + &768 &(6.7565715216420310E-13 + tli *(-3.5421162549480807E-15) + (tli**2) *(-3.4201196868693569E-18) + &769 &(tli**3) * 2.2260187650412392E-20)* LOG(satratli)**3 * LOG(rhoali)727 (-8.5521429066506161E-12) + (tli**3) *(-9.3538647454573390E-15)) + & 728 (2.1366936839394922E-08 + tli *(-2.4087168827395623E-10) + (tli**2) * 8.7969869277074319E-13 + & 729 (tli**3) *(-1.0294466881303291E-15))* LOG(satratli)**(-2) * LOG(rhoali)**(-1) + & 730 (-7.7804007761164303E-10 + tli * 1.0327058173517932E-11 + (tli**2) *(-4.2557697639692428E-14) + & 731 (tli**3) * 5.4082507061618662E-17)* LOG(satratli)**(-2) + & 732 (3.2628927397420860E-12 + tli *(-7.6475692919751066E-14) + (tli**2) * 4.1985816845259788E-16 + & 733 (tli**3) *(-6.2281395889592719E-19))* LOG(satratli)**(-2) * LOG(rhoali) + & 734 (2.0442205540818555E-09 + tli * 4.0441858911249830E-08 + (tli**2) *(-3.3423487629482825E-10) + & 735 (tli**3) * 6.8000404742985678E-13)* LOG(satratli)**(-1) * LOG(rhoali)**(-2) + & 736 (1.8381489183824627E-08 + tli *(-8.9853322951518919E-09) + (tli**2) * 7.5888799566036185E-11 + & 737 (tli**3) *(-1.5823457864755549E-13))* LOG(satratli)**(-1) * LOG(rhoali)**(-1) + & 738 (1.1795760639695057E-07 + tli *(-8.1046722896375875E-10) + (tli**2) * 9.1868604369041857E-14 + & 739 (tli**3) * 4.7882428237444610E-15)* LOG(satratli)**(-1) + & 740 (-4.4028846582545952E-09 + tli * 4.6541269232626618E-11 + (tli**2) *(-1.1939929984285194E-13) + & 741 (tli**3) * 2.3602037016614437E-17)* LOG(satratli)**(-1) * LOG(rhoali) + & 742 (2.7885056884209128E-11 + tli *(-4.5167129624119121E-13) + (tli**2) * 1.6558404997394422E-15 + & 743 (tli**3) *(-1.2037336621218054E-18))* LOG(satratli)**(-1) * LOG(rhoali)**2 + & 744 (-2.3719627171699983E-09 + tli *(-1.5260127909292053E-07) + (tli**2) * 1.7177017944754134E-09 + & 745 (tli**3) *(-4.7031737537526395E-12))* LOG(rhoali)**(-2) + & 746 (-5.6946433724699646E-09 + tli * 8.4629788237081735E-09 + (tli**2) *(-1.7674135187061521E-10) + & 747 (tli**3) * 6.6236547903091862E-13)* LOG(rhoali)**(-1) + & 748 (-2.2808617930606012E-08 + tli * 1.4773376696847775E-10 + (tli**2) *(-1.3076953119957355E-13) + & 749 (tli**3) * 2.3625301497914000E-16)* LOG(rhoali) + & 750 (1.4014269939947841E-10 + tli *(-2.3675117757377632E-12) + (tli**2) * 5.1514033966707879E-15 + & 751 (tli**3) *(-4.8864233454747856E-18))* LOG(rhoali)**2 + & 752 (6.5464943868885886E-11 + tli * 1.6494354816942769E-08 + (tli**2) *(-1.7480097393483653E-10) + & 753 (tli**3) * 4.7460075628523984E-13)* LOG(satratli)* LOG(rhoali)**(-2) + & 754 (8.4737893183927871E-09 + tli *(-6.0243327445597118E-09) + (tli**2) * 5.8766070529814883E-11 + & 755 (tli**3) *(-1.4926748560042018E-13))* LOG(satratli)* LOG(rhoali)**(-1) + & 756 (1.0761964135701397E-07 + tli *(-1.0142496009071148E-09) + (tli**2) * 2.1337312466519190E-12 + & 757 (tli**3) * 1.6376014957685404E-15)* LOG(satratli) + & 758 (-3.5621571395968670E-09 + tli * 4.1175339587760905E-11 + (tli**2) *(-1.3535372357998504E-13) + & 759 (tli**3) * 8.9334219536920720E-17)* LOG(satratli)* LOG(rhoali) + & 760 (2.0700482083136289E-11 + tli *(-3.9238944562717421E-13) + (tli**2) * 1.5850961422040196E-15 + & 761 (tli**3) *(-1.5336775610911665E-18))* LOG(satratli)* LOG(rhoali)**2 + & 762 (1.8524255464416206E-09 + tli *(-2.1959816152743264E-11) + (tli**2) *(-6.4478119501677012E-14) + & 763 (tli**3) * 5.5135243833766056E-16)* LOG(satratli)**2 * LOG(rhoali)**(-1) + & 764 (1.9349488650922679E-09 + tli *(-2.2647295919976428E-11) + (tli**2) * 9.2917479748268751E-14 + & 765 (tli**3) *(-1.2741959892173170E-16))* LOG(satratli)**2 + & 766 (2.1484978031650972E-11 + tli *(-9.3976642475838013E-14) + (tli**2) *(-4.8892738002751923E-16) + & 767 (tli**3) * 1.4676120441783832E-18)* LOG(satratli)**2 * LOG(rhoali) + & 768 (6.7565715216420310E-13 + tli *(-3.5421162549480807E-15) + (tli**2) *(-3.4201196868693569E-18) + & 769 (tli**3) * 2.2260187650412392E-20)* LOG(satratli)**3 * LOG(rhoali) 770 770 771 771 na_i=x_i*ntot_i -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/so2_to_h2so4.F90
r5082 r5087 81 81 ! SO2 (molec/cm3): convert from kg/kgA 82 82 rrak1 = tr_seri(ilon,ilev,id_SO2_strat) & 83 &*pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mSO2mol83 *pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mSO2mol 84 84 85 85 IF (rrak1 >= 0.0) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/stratdistrib.F90
r4601 r5087 41 41 alt=altLMDz(k)+float(i_int)*(altLMDz(k+1)-altLMDz(k))/float(n_int_alt) 42 42 f_lay_emiss(k)=f_lay_emiss(k)+1./(sqrt(2.*RPI)*sigma_alt)* & 43 & exp(-0.5*((alt-altemiss)/sigma_alt)**2.)* &44 &(altLMDz(k+1)-altLMDz(k))/float(n_int_alt)43 exp(-0.5*((alt-altemiss)/sigma_alt)**2.)* & 44 (altLMDz(k+1)-altLMDz(k))/float(n_int_alt) 45 45 ENDDO 46 46 f_lay_sum=f_lay_sum+f_lay_emiss(k) … … 54 54 DO k=1, klev 55 55 f_lay_emiss(k)=max(min(altemiss+sigma_alt,altLMDz(k+1))- & 56 &max(altemiss-sigma_alt, &57 &altLMDz(k)),0.)/(2.*sigma_alt)56 max(altemiss-sigma_alt, & 57 altLMDz(k)),0.)/(2.*sigma_alt) 58 58 f_lay_sum=f_lay_sum+f_lay_emiss(k) 59 59 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/stratemit.F90
r5082 r5087 54 54 IF (is_mpi_root) THEN 55 55 WRITE(*,*) 'IN STRATEMIT: date from phys_cal_mod=',year_cur,'-',& 56 &mth_cur,'-',day_cur,'-',hour,' flh2o=',flh2o56 mth_cur,'-',day_cur,'-',hour,' flh2o=',flh2o 57 57 ENDIF 58 58 … … 75 75 76 76 IF ( xlat(i)>=latmin-dlat_loc .AND. & 77 &xlat(i)<latmax+dlat_loc .AND. &78 &xlon(i)>=lonmin-dlon .AND. &79 &xlon(i)<lonmax+dlon ) THEN77 xlat(i)<latmax+dlat_loc .AND. & 78 xlon(i)>=lonmin-dlon .AND. & 79 xlon(i)<lonmax+dlon ) THEN 80 80 ! 81 81 WRITE(*,*) 'coordinates of volcanic injection point=',& 82 &xlat(i),xlon(i),day_cur,mth_cur,year_cur82 xlat(i),xlon(i),day_cur,mth_cur,year_cur 83 83 WRITE(*,*) 'DD m_emiss_vol_daily=', & 84 &m_emiss_vol_daily84 m_emiss_vol_daily 85 85 86 86 !compute altLMDz … … 97 97 IF (flag_emit==3) then 98 98 theta=(sin(theta_max/180.*RPI)-sin(theta_min/180.*RPI))/ & 99 &(sin(xlat_max_sai/180.*RPI)-sin(xlat_min_sai/180.*RPI))99 (sin(xlat_max_sai/180.*RPI)-sin(xlat_min_sai/180.*RPI)) 100 100 ELSE 101 101 theta=1. … … 108 108 ! stretch emission over stretchlong period 109 109 emission=m_emiss_vol_daily/m_air_gridbox(i,k)*f_lay_emiss(k)/stretchlong/ & 110 &(86400.-pdt)*theta110 (86400.-pdt)*theta 111 111 112 112 IF(flag_verbose_strataer) WRITE(*,*) 'IN STRATEMIT: emission avant/apres', & 113 &'alt= ', altLMDz(k), &114 &'flh2o= ',flh2o, &115 &'id_speac= ',id_spec,id_species_total, &116 &'emission= ',emission, &117 &'pdtphys= ',pdtphys, &118 &'rapport m_emiss/m_air*f_lay= ', m_emiss_vol_daily/m_air_gridbox(i,k)*f_lay_emiss(k), &119 &'stretchlong= ', stretchlong, &120 &'theta= ', theta113 'alt= ', altLMDz(k), & 114 'flh2o= ',flh2o, & 115 'id_speac= ',id_spec,id_species_total, & 116 'emission= ',emission, & 117 'pdtphys= ',pdtphys, & 118 'rapport m_emiss/m_air*f_lay= ', m_emiss_vol_daily/m_air_gridbox(i,k)*f_lay_emiss(k), & 119 'stretchlong= ', stretchlong, & 120 'theta= ', theta 121 121 122 122 IF(emission < 1.E-34) emission = 0.0 … … 124 124 IF (flh2o==0) THEN 125 125 IF(flag_verbose_strataer) WRITE(*,*) 'IN STRATEMIT: tr_ser avant/apres',& 126 &'i= ',i,'k= ',k, 'flh2o= ',flh2o, &127 &tr_seri(i,k,id_spec), &128 &tr_seri(i,k,id_spec)+emission*pdtphys126 'i= ',i,'k= ',k, 'flh2o= ',flh2o, & 127 tr_seri(i,k,id_spec), & 128 tr_seri(i,k,id_spec)+emission*pdtphys 129 129 130 130 tr_seri(i,k,id_spec)=tr_seri(i,k,id_spec)+emission*pdtphys … … 141 141 142 142 IF(flag_verbose_strataer) WRITE(*,*) 'IN STRATEMIT: ',& 143 &'i= ',i,'k= ',k, 'flh2o= ',flh2o, &144 &'emission= ',emission, &145 &'d_q_emiss(i,k)= ',d_q_emiss(i,k)143 'i= ',i,'k= ',k, 'flh2o= ',flh2o, & 144 'emission= ',emission, & 145 'd_q_emiss(i,k)= ',d_q_emiss(i,k) 146 146 147 147 IF(d_q_emiss(i,k) > 1.E34) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/sulfate_aer_mod.F90
r5086 r5087 84 84 ! factor for converting dry to wet radius 85 85 f_r_wet(ilon,ilev) = (dens_aer_dry/(DENSO4(ilon,ilev)*1.e3)/ & 86 &(R2SO4(ilon,ilev)*1.e-2))**third86 (R2SO4(ilon,ilev)*1.e-2))**third 87 87 ! *** End of H2SO4-H2O flat surface *** 88 88 … … 121 121 ! wet radius (m) 122 122 radwet = 1.e-2*RRSI(IK)*(dens_aer_dry/(denso4ik*1.e3)/ & 123 &(r2so4ik*1.e-2))**third123 (r2so4ik*1.e-2))**third 124 124 fkelvin=exp( 2.*1.e-3*surtens*1.e-6*mvh2o / (radwet*rgas*temp) ) 125 125 pph2okel=pph2ogas(ilon,ilev) / fkelvin … … 133 133 ! factor for converting dry to wet radius 134 134 f_r_wetB(ilon,ilev,IK) = (dens_aer_dry/(DENSO4B(ilon,ilev,IK)*1.e3)/ & 135 &(R2SO4B(ilon,ilev,IK)*1.e-2))**third135 (R2SO4B(ilon,ilev,IK)*1.e-2))**third 136 136 ! 137 137 ! print*,'R,Rwet(m),kelvin,h2so4(%),ro=',RRSI(ik),radwet,fkelvin, & … … 565 565 ! H2SO4 activity 566 566 DATA X/ & 567 & 0.0,0.25,0.78,1.437,2.19,3.07,4.03,5.04,6.08 &568 & ,7.13,8.18,14.33,18.59,28.59,39.17,49.49 &569 & ,102.4,157.8,215.7,276.9,341.6,409.8,481.5,556.6 &570 & ,635.5,719.,808.,902.,1000.,1103.,1211.,1322.,1437.,1555. &571 & ,1677.,1800.,1926.,2054.,2183.,2312.,2442.,2572.,2701.,2829. &572 & ,2955.,3080.,3203.,3325.,3446.,3564.,3681.,3796.,3910.,4022. &573 & ,4134.,4351.,4564.,4771.,4974.,5171.,5364.,5551.,5732.,5908. &574 & ,6079.,6244.,6404.,6559.,6709.,6854.,6994.,7131.,7264.,7393. &575 & ,7520.,7821.,8105.,8373.,8627.,8867.,9093.,9308.,9511.,9703. &576 & ,9885.,10060.,10225.,10535.,10819.,11079.,11318.,11537. &577 & ,11740.,12097.,12407.,12676.,12915.,13126.,13564.,13910. &578 & ,14191.,14423.,14617.,14786.,10568.,15299.,15491.,15654. &579 &,15811./567 0.0,0.25,0.78,1.437,2.19,3.07,4.03,5.04,6.08 & 568 ,7.13,8.18,14.33,18.59,28.59,39.17,49.49 & 569 ,102.4,157.8,215.7,276.9,341.6,409.8,481.5,556.6 & 570 ,635.5,719.,808.,902.,1000.,1103.,1211.,1322.,1437.,1555. & 571 ,1677.,1800.,1926.,2054.,2183.,2312.,2442.,2572.,2701.,2829. & 572 ,2955.,3080.,3203.,3325.,3446.,3564.,3681.,3796.,3910.,4022. & 573 ,4134.,4351.,4564.,4771.,4974.,5171.,5364.,5551.,5732.,5908. & 574 ,6079.,6244.,6404.,6559.,6709.,6854.,6994.,7131.,7264.,7393. & 575 ,7520.,7821.,8105.,8373.,8627.,8867.,9093.,9308.,9511.,9703. & 576 ,9885.,10060.,10225.,10535.,10819.,11079.,11318.,11537. & 577 ,11740.,12097.,12407.,12676.,12915.,13126.,13564.,13910. & 578 ,14191.,14423.,14617.,14786.,10568.,15299.,15491.,15654. & 579 ,15811./ 580 580 ! H2SO4 weight fraction (percent) 581 581 DATA XC/ & 582 & 100.0,99.982,99.963,99.945,99.927,99.908,99.890,99.872 &583 & ,99.853,99.835,99.817,99.725,99.634,99.452,99.270 &584 & ,99.090,98.196,97.319,96.457,95.610,94.777,93.959,93.156 &585 & ,92.365,91.588,90.824,90.073,89.334,88.607,87.892,87.188 &586 & ,86.495,85.814,85.143,84.482,83.832,83.191,82.560,81.939 &587 & ,81.327,80.724,80.130,79.545,78.968,78.399,77.839,77.286 &588 & ,76.741,76.204,75.675,75.152,74.637,74.129,73.628,73.133 &589 & ,72.164,71.220,70.300,69.404,68.530,67.678,66.847,66.037 &590 & ,65.245,64.472,63.718,62.981,62.261,61.557,60.868,60.195 &591 & ,59.537,58.893,58.263,57.646,56.159,54.747,53.405,52.126 &592 & ,50.908,49.745,48.634,47.572,46.555,45.580,44.646,43.749 &593 & ,42.059,40.495,39.043,37.691,36.430,35.251,33.107,31.209 &594 & ,29.517,27.999,26.629,23.728,21.397,19.482,17.882,16.525 &595 &,15.360,13.461,11.980,10.792,9.819,8.932/582 100.0,99.982,99.963,99.945,99.927,99.908,99.890,99.872 & 583 ,99.853,99.835,99.817,99.725,99.634,99.452,99.270 & 584 ,99.090,98.196,97.319,96.457,95.610,94.777,93.959,93.156 & 585 ,92.365,91.588,90.824,90.073,89.334,88.607,87.892,87.188 & 586 ,86.495,85.814,85.143,84.482,83.832,83.191,82.560,81.939 & 587 ,81.327,80.724,80.130,79.545,78.968,78.399,77.839,77.286 & 588 ,76.741,76.204,75.675,75.152,74.637,74.129,73.628,73.133 & 589 ,72.164,71.220,70.300,69.404,68.530,67.678,66.847,66.037 & 590 ,65.245,64.472,63.718,62.981,62.261,61.557,60.868,60.195 & 591 ,59.537,58.893,58.263,57.646,56.159,54.747,53.405,52.126 & 592 ,50.908,49.745,48.634,47.572,46.555,45.580,44.646,43.749 & 593 ,42.059,40.495,39.043,37.691,36.430,35.251,33.107,31.209 & 594 ,29.517,27.999,26.629,23.728,21.397,19.482,17.882,16.525 & 595 ,15.360,13.461,11.980,10.792,9.819,8.932/ 596 596 597 597 DO I=1,klon … … 776 776 real, intent(in) :: T 777 777 real, parameter :: & 778 &b1=1.01325e5, &779 &b2=11.5, &780 &b3=1.0156e4, &781 &b4=0.38/545., &782 &tref=360.15778 b1=1.01325e5, & 779 b2=11.5, & 780 b3=1.0156e4, & 781 b4=0.38/545., & 782 tref=360.15 783 783 784 784 ! saturation vapor pressure ( N/m2 = Pa = kg/(m.s2) ) 785 785 psh2so4_out=b1*exp( -b2 +b3*( 1./tref-1./T & 786 & +b4*(1.+log(tref/T)-tref/T) ) )786 +b4*(1.+log(tref/T)-tref/T) ) ) 787 787 788 788 return … … 818 818 ! saturation vapor pressure (N/m2 = 1 Pa = 1 kg/(m·s2)) 819 819 psh2o_out=exp( 77.34491296 -7235.424651/T & 820 &-8.2*log(T) + 5.7133e-3*T )820 -8.2*log(T) + 5.7133e-3*T ) 821 821 else 822 822 ! Tabazadeh et al., 1997, parameterization for 185<T<260 … … 825 825 ; 826 826 psh2o_out=18.452406985 -3505.1578807/T & 827 &-330918.55082/(T*T) &828 &+12725068.262/(T*T*T)827 -330918.55082/(T*T) & 828 +12725068.262/(T*T*T) 829 829 ! in Pa 830 830 psh2o_out=100.*exp(psh2o_out) … … 844 844 real, intent(in) :: T, so4mfrac 845 845 real, parameter :: & 846 &a1= 0.7681724,&847 &a2= 2.184714, &848 &a3= 7.163002, &849 &a4=-44.31447, &850 &a5= 88.74606, &851 &a6=-75.73729, &852 &a7= 23.43228846 a1= 0.7681724,& 847 a2= 2.184714, & 848 a3= 7.163002, & 849 a4=-44.31447, & 850 a5= 88.74606, & 851 a6=-75.73729, & 852 a7= 23.43228 853 853 real, parameter :: & 854 &b1= 1.808225e-3, &855 &b2=-9.294656e-3, &856 &b3=-3.742148e-2, &857 &b4= 2.565321e-1, &858 &b5=-5.362872e-1, &859 &b6= 4.857736e-1, &860 &b7=-1.629592e-1854 b1= 1.808225e-3, & 855 b2=-9.294656e-3, & 856 b3=-3.742148e-2, & 857 b4= 2.565321e-1, & 858 b5=-5.362872e-1, & 859 b6= 4.857736e-1, & 860 b7=-1.629592e-1 861 861 real, parameter :: & 862 &c1=-3.478524e-6, &863 &c2= 1.335867e-5, &864 &c3= 5.195706e-5, &865 &c4=-3.717636e-4, &866 &c5= 7.990811e-4, &867 &c6=-7.458060e-4, &868 &c7= 2.581390e-4862 c1=-3.478524e-6, & 863 c2= 1.335867e-5, & 864 c3= 5.195706e-5, & 865 c4=-3.717636e-4, & 866 c5= 7.990811e-4, & 867 c6=-7.458060e-4, & 868 c7= 2.581390e-4 869 869 real :: a,b,c,so4m2,so4m3,so4m4,so4m5,so4m6 870 870 … … 876 876 877 877 a=+a1+a2*so4mfrac+a3*so4m2+a4*so4m3 & 878 &+a5*so4m4+a6*so4m5+a7*so4m6878 +a5*so4m4+a6*so4m5+a7*so4m6 879 879 b=+b1+b2*so4mfrac+b3*so4m2+b4*so4m3 & 880 &+b5*so4m4+b6*so4m5+b7*so4m6880 +b5*so4m4+b6*so4m5+b7*so4m6 881 881 c=+c1+c2*so4mfrac+c3*so4m2+c4*so4m3 & 882 &+c5*so4m4+c6*so4m5+c7*so4m6882 +c5*so4m4+c6*so4m5+c7*so4m6 883 883 density_out=(a+b*T+c*T*T) ! units are gm/cm**3 884 884 … … 895 895 real :: a,b,so4mfrac,so4m2,so4m3,so4m4,so4m5,so4sig 896 896 real, parameter :: & 897 &a1= 0.11864, &898 &a2=-0.11651, &899 &a3= 0.76852, &900 &a4=-2.40909, &901 &a5= 2.95434, &902 &a6=-1.25852897 a1= 0.11864, & 898 a2=-0.11651, & 899 a3= 0.76852, & 900 a4=-2.40909, & 901 a5= 2.95434, & 902 a6=-1.25852 903 903 real, parameter :: & 904 &b1=-1.5709e-4, &905 &b2= 4.0102e-4, &906 &b3=-2.3995e-3, &907 &b4= 7.611235e-3, &908 &b5=-9.37386e-3, &909 &b6= 3.89722e-3904 b1=-1.5709e-4, & 905 b2= 4.0102e-4, & 906 b3=-2.3995e-3, & 907 b4= 7.611235e-3, & 908 b5=-9.37386e-3, & 909 b6= 3.89722e-3 910 910 real, parameter :: convfac=1.e3 ! convert from newton/m to dyne/cm 911 911 real, parameter :: Mw=18.01528, Ma=98.079 … … 957 957 if(aw <= 0.05 .and. aw > 0.) then 958 958 y1=12.372089320*aw**(-0.16125516114) & 959 &-30.490657554*aw -2.1133114241959 -30.490657554*aw -2.1133114241 960 960 y2=13.455394705*aw**(-0.19213122550) & 961 &-34.285174607*aw -1.7620073078961 -34.285174607*aw -1.7620073078 962 962 else if(aw <= 0.85 .and. aw > 0.05) then 963 963 y1=11.820654354*aw**(-0.20786404244) & 964 &-4.8073063730*aw -5.1727540348964 -4.8073063730*aw -5.1727540348 965 965 y2=12.891938068*aw**(-0.23233847708) & 966 &-6.4261237757*aw -4.9005471319966 -6.4261237757*aw -4.9005471319 967 967 else 968 968 y1=-180.06541028*aw**(-0.38601102592) & 969 &-93.317846778*aw +273.88132245969 -93.317846778*aw +273.88132245 970 970 y2=-176.95814097*aw**(-0.36257048154) & 971 &-90.469744201*aw +267.45509988971 -90.469744201*aw +267.45509988 972 972 end if 973 973 ! h2so4 molality (m=moles of h2so4 (solute)/ kg of h2o(solvent)) … … 1029 1029 real, intent(in) :: T, ws 1030 1030 real, dimension(22),parameter :: x=(/ & 1031 &2.393284E-02,-4.359335E-05,7.961181E-08,0.0,-0.198716351, &1032 &1.39564574E-03,-2.020633E-06,0.51684706,-3.0539E-03,4.505475E-06, &1033 &-0.30119511,1.840408E-03,-2.7221253742E-06,-0.11331674116, &1034 &8.47763E-04,-1.22336185E-06,0.3455282,-2.2111E-03,3.503768245E-06, &1035 &-0.2315332,1.60074E-03,-2.5827835E-06/)1031 2.393284E-02,-4.359335E-05,7.961181E-08,0.0,-0.198716351, & 1032 1.39564574E-03,-2.020633E-06,0.51684706,-3.0539E-03,4.505475E-06, & 1033 -0.30119511,1.840408E-03,-2.7221253742E-06,-0.11331674116, & 1034 8.47763E-04,-1.22336185E-06,0.3455282,-2.2111E-03,3.503768245E-06, & 1035 -0.2315332,1.60074E-03,-2.5827835E-06/) 1036 1036 1037 1037 real :: w -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/traccoag_mod.F90
r5082 r5087 11 11 12 12 USE phys_local_var_mod, ONLY: mdw, R2SO4, DENSO4, f_r_wet, surf_PM25_sulf, & 13 &budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, &14 &R2SO4B, DENSO4B, f_r_wetB, sulfmmr, SAD_sulfate, sulfmmr_mode, nd_mode13 budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, & 14 R2SO4B, DENSO4B, f_r_wetB, sulfmmr, SAD_sulfate, sulfmmr_mode, nd_mode 15 15 16 16 USE dimphy … … 340 340 !and are dry at T = 20 deg. C and 50 perc. humidity 341 341 surf_PM25_sulf(i)=surf_PM25_sulf(i)+tr_seri(i,1,it+nbtr_sulgas) & 342 &*132./98.*dens_aer_dry*4./3.*RPI*(mdw(it)/2.)**3 &343 &*pplay(i,1)/t_seri(i,1)/RD*1.e9342 *132./98.*dens_aer_dry*4./3.*RPI*(mdw(it)/2.)**3 & 343 *pplay(i,1)/t_seri(i,1)/RD*1.e9 344 344 ENDIF 345 345 ENDDO … … 366 366 ! equivalent to condensed H2SO4 mmr= H2SO4 kg / kgA in bin it 367 367 sulfmmr_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 368 & *(4./3.)*RPI*(mdw(it)/2.)**3. & ! [mdw: dry diameter in m]369 & *dens_aer_dry ! [dry aerosol mass density in kg/m3]368 *(4./3.)*RPI*(mdw(it)/2.)**3. & ! [mdw: dry diameter in m] 369 *dens_aer_dry ! [dry aerosol mass density in kg/m3] 370 370 371 371 ! sulfmmr: Sulfate aerosol concentration (dry mass mixing ratio) … … 375 375 ! nd_mode: particle concentration in different modes (DRY part/m3) 376 376 nd_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 377 &*pplay(i,j)/t_seri(i,j)/RD ! [air mass concentration in kg air /m3A]377 *pplay(i,j)/t_seri(i,j)/RD ! [air mass concentration in kg air /m3A] 378 378 379 379 IF(flag_new_strat_compo) THEN 380 380 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 381 381 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 382 & *4.*RPI*( mdw(it)*f_r_wetB(i,j,it)/2. )**2. & ! [WET SA of part it in m2]383 &*1.e-2 ! conversion from m2/m3 to cm2/cm3A382 *4.*RPI*( mdw(it)*f_r_wetB(i,j,it)/2. )**2. & ! [WET SA of part it in m2] 383 *1.e-2 ! conversion from m2/m3 to cm2/cm3A 384 384 ELSE 385 385 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 386 386 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 387 & *4.*RPI*( mdw(it)*f_r_wet(i,j)/2. )**2. & ! [WET SA of part it in m2]388 &*1.e-2 ! conversion from m2/m3 to cm2/cm3A387 *4.*RPI*( mdw(it)*f_r_wet(i,j)/2. )**2. & ! [WET SA of part it in m2] 388 *1.e-2 ! conversion from m2/m3 to cm2/cm3A 389 389 ENDIF 390 390 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/add_phys_tend_mod.F90
r5081 r5087 107 107 USE cmp_seri_mod 108 108 USE phys_output_var_mod, ONLY : d_qw_col, d_ql_col, d_qs_col, d_qbs_col, d_qt_col, d_ek_col, d_h_dair_col & 109 &, d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col109 , d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col 110 110 IMPLICIT none 111 111 INCLUDE "YOMCST.h" … … 390 390 print*,'PLANTAGE2 POUR LE POINT i itap lon lat txt jbad zdt t',& 391 391 i,itap,longitude_deg(i),latitude_deg(i),text,jbad, & 392 &zdt(i,k),t_seri(i,k)-zdt(i,k)392 zdt(i,k),t_seri(i,k)-zdt(i,k) 393 393 !!! if(prt_level.ge.10.and.itap.GE.229.and.i.EQ.3027) THEN 394 394 print*,'l T dT Q dQ ' … … 408 408 print*,'WARNING : EAU2 POUR LE POINT i itap lon lat txt jqbad zdq q zdql ql',& 409 409 i,itap,longitude_deg(i),latitude_deg(i),text,jqbad,& 410 &zdq(i,k), q_seri(i,k)-zdq(i,k), zdql(i,k), ql_seri(i,k)-zdql(i,k)410 zdq(i,k), q_seri(i,k)-zdq(i,k), zdql(i,k), ql_seri(i,k)-zdql(i,k) 411 411 !!! if(prt_level.ge.10.and.itap.GE.229.and.i.EQ.3027) THEN 412 412 print*,'l T dT Q dQ ' … … 508 508 USE cmp_seri_mod 509 509 USE phys_output_var_mod, ONLY : d_qw_col, d_ql_col, d_qs_col, d_qbs_col, d_qt_col, d_ek_col, d_h_dair_col & 510 &, d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col510 , d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col 511 511 IMPLICIT none 512 512 include "YOMCST.h" … … 735 735 USE cmp_seri_mod 736 736 USE phys_output_var_mod, ONLY : d_qw_col, d_ql_col, d_qs_col, d_qbs_col, d_qt_col, d_ek_col, d_h_dair_col & 737 &, d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col737 , d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col 738 738 USE phys_local_var_mod, ONLY: evap, sens 739 739 USE phys_local_var_mod, ONLY: u_seri, v_seri, ql_seri, qs_seri, qbs_seri, q_seri, t_seri & 740 &, rain_lsc, snow_lsc740 , rain_lsc, snow_lsc 741 741 USE climb_hq_mod, ONLY : d_h_col_vdf, f_h_bnd 742 742 IMPLICIT none … … 773 773 bilq_bnd = - rain_lsc(1) - snow_lsc(1) 774 774 bilh_bnd = (-(rcw-rcpd)*t_seri(1,1) + rlvtt) * rain_lsc(1) & 775 &+ (-(rcs-rcpd)*t_seri(1,1) + rlstt) * snow_lsc(1)775 + (-(rcs-rcpd)*t_seri(1,1) + rlstt) * snow_lsc(1) 776 776 CASE("bsss") param 777 777 bilq_bnd = - bs_fall(1) … … 780 780 bilq_bnd = - rain_con(1) - snow_con(1) 781 781 bilh_bnd = (-(rcw-rcpd)*t_seri(1,1) + rlvtt) * rain_con(1) & 782 &+ (-(rcs-rcpd)*t_seri(1,1) + rlstt) * snow_con(1)782 + (-(rcs-rcpd)*t_seri(1,1) + rlstt) * snow_con(1) 783 783 CASE("SW") param 784 784 bilh_bnd = topsw(1) - solsw(1) -
LMDZ6/branches/Amaury_dev/libf/phylmd/albsno.F90
r3102 r5087 56 56 DO i = 1, knon 57 57 agesno(i) = (agesno(i) + (1.-agesno(i)/50.)*dtime/86400.)& 58 &* EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3)58 * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3) 59 59 agesno(i) = MAX(agesno(i),0.0) 60 60 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/calltherm.F90
r5082 r5087 3 3 ! 4 4 subroutine calltherm(dtime & 5 &,pplay,paprs,pphi,weak_inversion &6 &,u_seri_,v_seri_,t_seri_,q_seri_,t_env,q_env,zqsat,debut &7 &,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs &8 &,fm_therm,entr_therm,detr_therm,zqasc,clwcon0,lmax,ratqscth,&9 &ratqsdiff,zqsatth,ale_bl,alp_bl,lalim_conv,wght_th, &10 &zmax0,f0,zw2,fraca,ztv,zpspsk,ztla,zthl &5 ,pplay,paprs,pphi,weak_inversion & 6 ,u_seri_,v_seri_,t_seri_,q_seri_,t_env,q_env,zqsat,debut & 7 ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs & 8 ,fm_therm,entr_therm,detr_therm,zqasc,clwcon0,lmax,ratqscth,& 9 ratqsdiff,zqsatth,ale_bl,alp_bl,lalim_conv,wght_th, & 10 zmax0,f0,zw2,fraca,ztv,zpspsk,ztla,zthl & 11 11 !!! nrlmd le 10/04/2012 12 &,pbl_tke,pctsrf,omega,airephy &13 &,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &14 &,n2,s2,strig,zcong,ale_bl_stat &15 &,therm_tke_max,env_tke_max &16 &,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke &17 &,alp_bl_conv,alp_bl_stat &12 ,pbl_tke,pctsrf,omega,airephy & 13 ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 & 14 ,n2,s2,strig,zcong,ale_bl_stat & 15 ,therm_tke_max,env_tke_max & 16 ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke & 17 ,alp_bl_conv,alp_bl_stat & 18 18 !!! fin nrlmd le 10/04/2012 19 &,zqla,ztva &19 ,zqla,ztva & 20 20 #ifdef ISO 21 &,xt_seri,d_xt_ajs &21 ,xt_seri,d_xt_ajs & 22 22 #ifdef DIAGISO 23 &,q_the,xt_the &23 ,q_the,xt_the & 24 24 #endif 25 25 #endif 26 &)26 ) 27 27 28 28 USE dimphy … … 239 239 if (iso_eau.gt.0) then 240 240 call iso_verif_egalite_vect2D( & 241 &xt_seri,q_seri, &242 & 'calltherm 174',ntiso,klon,klev)241 xt_seri,q_seri, & 242 'calltherm 174',ntiso,klon,klev) 243 243 endif !if (iso_eau.gt.0) then 244 244 #endif … … 251 251 if (iflag_thermals>=1000) then 252 252 CALL thermcell_2002(klon,klev,zdt,iflag_thermals & 253 &,pplay,paprs,pphi &254 &,u_seri,v_seri,t_seri,q_seri &255 &,d_u_the,d_v_the,d_t_the,d_q_the &256 &,zfm_therm,zentr_therm,fraca,zw2 &257 &,r_aspect_thermals,30.,w2di_thermals &258 &,tau_thermals)253 ,pplay,paprs,pphi & 254 ,u_seri,v_seri,t_seri,q_seri & 255 ,d_u_the,d_v_the,d_t_the,d_q_the & 256 ,zfm_therm,zentr_therm,fraca,zw2 & 257 ,r_aspect_thermals,30.,w2di_thermals & 258 ,tau_thermals) 259 259 else if (iflag_thermals==2) then 260 260 CALL thermcell_sec(klon,klev,zdt & 261 &,pplay,paprs,pphi,zlev &262 &,u_seri,v_seri,t_seri,q_seri &263 &,d_u_the,d_v_the,d_t_the,d_q_the &264 &,zfm_therm,zentr_therm &265 &,r_aspect_thermals,30.,w2di_thermals &266 &,tau_thermals)261 ,pplay,paprs,pphi,zlev & 262 ,u_seri,v_seri,t_seri,q_seri & 263 ,d_u_the,d_v_the,d_t_the,d_q_the & 264 ,zfm_therm,zentr_therm & 265 ,r_aspect_thermals,30.,w2di_thermals & 266 ,tau_thermals) 267 267 else if (iflag_thermals==3) then 268 268 CALL thermcell(klon,klev,zdt & 269 &,pplay,paprs,pphi &270 &,u_seri,v_seri,t_seri,q_seri &271 &,d_u_the,d_v_the,d_t_the,d_q_the &272 &,zfm_therm,zentr_therm &273 &,r_aspect_thermals,l_mix_thermals,w2di_thermals &274 &,tau_thermals)269 ,pplay,paprs,pphi & 270 ,u_seri,v_seri,t_seri,q_seri & 271 ,d_u_the,d_v_the,d_t_the,d_q_the & 272 ,zfm_therm,zentr_therm & 273 ,r_aspect_thermals,l_mix_thermals,w2di_thermals & 274 ,tau_thermals) 275 275 else if (iflag_thermals==10) then 276 276 CALL thermcell_eau(klon,klev,zdt & 277 &,pplay,paprs,pphi &278 &,u_seri,v_seri,t_seri,q_seri &279 &,d_u_the,d_v_the,d_t_the,d_q_the &280 &,zfm_therm,zentr_therm &281 &,r_aspect_thermals,l_mix_thermals,w2di_thermals &282 &,tau_thermals)277 ,pplay,paprs,pphi & 278 ,u_seri,v_seri,t_seri,q_seri & 279 ,d_u_the,d_v_the,d_t_the,d_q_the & 280 ,zfm_therm,zentr_therm & 281 ,r_aspect_thermals,l_mix_thermals,w2di_thermals & 282 ,tau_thermals) 283 283 else if (iflag_thermals==11) then 284 284 abort_message = 'cas non prevu dans calltherm' … … 286 286 else if (iflag_thermals==12) then 287 287 CALL calcul_sec(klon,klev,zdt & 288 &,pplay,paprs,pphi,zlev &289 &,u_seri,v_seri,t_seri,q_seri &290 &,zmax_sec,wmax_sec,zw_sec,lmix_sec &291 &,r_aspect_thermals,l_mix_thermals,w2di_thermals &292 &,tau_thermals)288 ,pplay,paprs,pphi,zlev & 289 ,u_seri,v_seri,t_seri,q_seri & 290 ,zmax_sec,wmax_sec,zw_sec,lmix_sec & 291 ,r_aspect_thermals,l_mix_thermals,w2di_thermals & 292 ,tau_thermals) 293 293 else if (iflag_thermals==13.or.iflag_thermals==14) then 294 294 abort_message = 'thermcellV0_main enleve svn>2084' … … 296 296 else if (new_thermcell) then 297 297 CALL thermcell_main(itap,klon,klev,zdt & 298 &,pplay,paprs,pphi,debut &299 &,u_seri,v_seri,t_seri,q_seri,t_env,q_env &300 &,d_u_the,d_v_the,d_t_the,d_q_the &301 &,zfm_therm,zentr_therm,zdetr_therm,zqasc,zqla,lmax &302 &,ratqscth,ratqsdiff,zqsatth &303 &,zmax0,f0,zw2,fraca,ztv,zpspsk &304 &,ztla,zthl,ztva &305 &,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax,zcong &298 ,pplay,paprs,pphi,debut & 299 ,u_seri,v_seri,t_seri,q_seri,t_env,q_env & 300 ,d_u_the,d_v_the,d_t_the,d_q_the & 301 ,zfm_therm,zentr_therm,zdetr_therm,zqasc,zqla,lmax & 302 ,ratqscth,ratqsdiff,zqsatth & 303 ,zmax0,f0,zw2,fraca,ztv,zpspsk & 304 ,ztla,zthl,ztva & 305 ,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax,zcong & 306 306 #ifdef ISO 307 &,xt_seri,d_xt_the &307 ,xt_seri,d_xt_the & 308 308 #endif 309 & )309 ) 310 310 311 311 CALL thermcell_alp(klon,klev,zdt & ! in 312 &,pplay,paprs & ! in313 &,zfm_therm,zentr_therm,lmax & ! in314 &,pbl_tke,pctsrf,omega,airephy & ! in315 &,zw2,fraca & ! in316 &,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax & ! in317 &,zcong,ale,alp,lalim_conv,wght_th & ! out318 &,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &! out319 &,n2,s2,strig,ale_bl_stat & ! out320 &,therm_tke_max,env_tke_max & ! out321 &,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke & ! out322 &,alp_bl_conv,alp_bl_stat & ! out323 &)312 ,pplay,paprs & ! in 313 ,zfm_therm,zentr_therm,lmax & ! in 314 ,pbl_tke,pctsrf,omega,airephy & ! in 315 ,zw2,fraca & ! in 316 ,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax & ! in 317 ,zcong,ale,alp,lalim_conv,wght_th & ! out 318 ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &! out 319 ,n2,s2,strig,ale_bl_stat & ! out 320 ,therm_tke_max,env_tke_max & ! out 321 ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke & ! out 322 ,alp_bl_conv,alp_bl_stat & ! out 323 ) 324 324 325 325 if (prt_level>10) write(lunout,*)'Apres thermcell_main OK' … … 366 366 d_q_the(:,k)=d_q_the(:,k)*dtime*fact(:) 367 367 fm_therm(:,k)=fm_therm(:,k) & 368 &+zfm_therm(:,k)*fact(:)368 +zfm_therm(:,k)*fact(:) 369 369 entr_therm(:,k)=entr_therm(:,k) & 370 &+zentr_therm(:,k)*fact(:)370 +zentr_therm(:,k)*fact(:) 371 371 detr_therm(:,k)=detr_therm(:,k) & 372 &+zdetr_therm(:,k)*fact(:)372 +zdetr_therm(:,k)*fact(:) 373 373 #ifdef ISO 374 374 do ixt=1,ntiso … … 409 409 ! & d_xt_the(iso_hdo,i,k),d_q_the(i,k) 410 410 call iso_verif_aberrant_enc_vect2D( & 411 &xt_seri,q_seri, &412 &'calltherm 353, apres ajout d_xt_the',ntiso,klon,klev)411 xt_seri,q_seri, & 412 'calltherm 353, apres ajout d_xt_the',ntiso,klon,klev) 413 413 endif 414 414 #endif … … 451 451 if (iso_HDO.gt.0) then 452 452 call iso_verif_aberrant_enc_vect2D( & 453 &xt_seri,q_seri, &454 &'calltherm 393, apres bidouille q<0',ntiso,klon,klev)453 xt_seri,q_seri, & 454 'calltherm 393, apres bidouille q<0',ntiso,klon,klev) 455 455 endif 456 456 #endif … … 489 489 endif 490 490 detrc_therm(i,k)=(fmc_therm(i,k+1)-fm_therm(i,k+1)) & 491 &-(fmc_therm(i,k)-fm_therm(i,k))491 -(fmc_therm(i,k)-fm_therm(i,k)) 492 492 enddo 493 493 enddo … … 504 504 if (fmc_therm(i,k+1)>1.e-6) then 505 505 zqasc(i,k)=(fmc_therm(i,k)*zqasc(i,k-1) & 506 &+entr_therm(i,k)*q_seri(i,k))/fmc_therm(i,k+1)506 +entr_therm(i,k)*q_seri(i,k))/fmc_therm(i,k+1) 507 507 !CR:test on asseche le thermique 508 508 ! zqasc(i,k)=zqasc(i,k)/2. … … 520 520 clwcon0(i,k)=zqasc(i,k)-zqsat(i,k) 521 521 if (clwcon0(i,k)<0. .or. & 522 &(fm_therm(i,k+1)+detrc_therm(i,k))<1.e-6) then522 (fm_therm(i,k+1)+detrc_therm(i,k))<1.e-6) then 523 523 clwcon0(i,k)=0. 524 524 endif … … 530 530 clwcon0(i,k)=zqla(i,k) 531 531 if (clwcon0(i,k)<0. .or. & 532 &(fm_therm(i,k+1)+detrc_therm(i,k))<1.e-6) then532 (fm_therm(i,k+1)+detrc_therm(i,k))<1.e-6) then 533 533 clwcon0(i,k)=0. 534 534 endif -
LMDZ6/branches/Amaury_dev/libf/phylmd/cdrag_mod.F90
r5082 r5087 407 407 PH=0.5802-0.1571*MU+0.0327*(MU**2)-0.0026*(MU**3) 408 408 CH=CHstar*B*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 409 &* CKAPT/LOG(z0h(i)+zgeop1(i)/(RG*z0h(i))) &410 &* ((zgeop1(i)/(RG*z0h(i)))**PH)409 * CKAPT/LOG(z0h(i)+zgeop1(i)/(RG*z0h(i))) & 410 * ((zgeop1(i)/(RG*z0h(i)))**PH) 411 411 CM=CMstar*B*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 412 &*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) &413 &* ((zgeop1(i)/(RG*z0m(i)))**PM)412 *CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 413 * ((zgeop1(i)/(RG*z0m(i)))**PM) 414 414 FM(i)=1.-B*zri(i)/(1.+CM*SQRT(ABS(zri(i)))) 415 415 FH(i)=1.-B*zri(i)/(1.+CH*SQRT(ABS(zri(i)))) … … 561 561 PH=0.5802-0.1571*MU+0.0327*(MU**2)-0.0026*(MU**3) 562 562 CH=CHstar*B*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 563 &* CKAPT/LOG(z0h(i)+zgeop1(i)/(RG*z0h(i))) &564 &* ((zgeop1(i)/(RG*z0h(i)))**PH)563 * CKAPT/LOG(z0h(i)+zgeop1(i)/(RG*z0h(i))) & 564 * ((zgeop1(i)/(RG*z0h(i)))**PH) 565 565 CM=CMstar*B*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 566 &*CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) &567 &* ((zgeop1(i)/(RG*z0m(i)))**PM)566 *CKAP/LOG(z0m(i)+zgeop1(i)/(RG*z0m(i))) & 567 * ((zgeop1(i)/(RG*z0m(i)))**PM) 568 568 FM(i)=1.-B*zri(i)/(1.+CM*SQRT(ABS(zri(i)))) 569 569 FH(i)=1.-B*zri(i)/(1.+CH*SQRT(ABS(zri(i)))) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/lidar_simulator.F90
r5082 r5087 378 378 ! opt. thick of each layer 379 379 tau_mol(:,1:nlev) = alpha_mol(:,1:nlev) & 380 &*(zheight(:,2:nlev+1)-zheight(:,1:nlev))380 *(zheight(:,2:nlev+1)-zheight(:,1:nlev)) 381 381 ! opt. thick from TOA 382 382 DO k = nlev-1, 1, -1 … … 390 390 ! opt. thick of each layer 391 391 tau_part(:,:,i) = tau_part(:,:,i) & 392 &* (zheight(:,2:nlev+1)-zheight(:,1:nlev) )392 * (zheight(:,2:nlev+1)-zheight(:,1:nlev) ) 393 393 ! opt. thick from TOA 394 394 DO k = nlev-1, 1, -1 … … 400 400 ! Upper layer 401 401 pmol(:,nlev) = beta_mol(:,nlev) / (2.*tau_mol(:,nlev)) & 402 &* (1.-exp(-2.0*tau_mol(:,nlev)))402 * (1.-exp(-2.0*tau_mol(:,nlev))) 403 403 ! Other layers 404 404 DO k= nlev-1, 1, -1 … … 406 406 WHERE (tau_mol_lay(:)>0.) 407 407 pmol(:,k) = beta_mol(:,k) * EXP(-2.0*tau_mol(:,k+1)) / (2.*tau_mol_lay(:)) & 408 &* (1.-exp(-2.0*tau_mol_lay(:)))408 * (1.-exp(-2.0*tau_mol_lay(:))) 409 409 ELSEWHERE 410 410 ! This must never happend, but just in case, to avoid div. by 0 … … 429 429 ! Upper layer 430 430 pnorm(:,nlev) = betatot(:,nlev) / (2.*tautot(:,nlev)) & 431 &* (1.-exp(-2.0*tautot(:,nlev)))431 * (1.-exp(-2.0*tautot(:,nlev))) 432 432 433 433 ! Other layers … … 436 436 WHERE (tautot_lay(:)>0.) 437 437 pnorm(:,k) = betatot(:,k) * EXP(-2.0*tautot(:,k+1)) / (2.*tautot_lay(:)) & 438 &* (1.-EXP(-2.0*tautot_lay(:)))438 * (1.-EXP(-2.0*tautot_lay(:))) 439 439 ELSEWHERE 440 440 ! This must never happend, but just in case, to avoid div. by 0 … … 468 468 ! Upper layer 469 469 pnorm_ice(:,nlev) = betatot_ice(:,nlev) / (2.*tautot_ice(:,nlev)) & 470 &* (1.-exp(-2.0*tautot_ice(:,nlev)))470 * (1.-exp(-2.0*tautot_ice(:,nlev))) 471 471 472 472 DO k= nlev-1, 1, -1 … … 474 474 WHERE (tautot_lay_ice(:)>0.) 475 475 pnorm_ice(:,k)=betatot_ice(:,k)*EXP(-2.0*tautot_ice(:,k+1))/(2.*tautot_lay_ice(:)) & 476 &* (1.-EXP(-2.0*tautot_lay_ice(:)))476 * (1.-EXP(-2.0*tautot_lay_ice(:))) 477 477 ELSEWHERE 478 478 pnorm_ice(:,k)=betatot_ice(:,k)*EXP(-2.0*tautot_ice(:,k+1)) … … 483 483 ! Upper layer 484 484 pnorm_liq(:,nlev) = betatot_liq(:,nlev) / (2.*tautot_liq(:,nlev)) & 485 &* (1.-exp(-2.0*tautot_liq(:,nlev)))485 * (1.-exp(-2.0*tautot_liq(:,nlev))) 486 486 487 487 DO k= nlev-1, 1, -1 … … 489 489 WHERE (tautot_lay_liq(:)>0.) 490 490 pnorm_liq(:,k)=betatot_liq(:,k)*EXP(-2.0*tautot_liq(:,k+1))/(2.*tautot_lay_liq(:)) & 491 &* (1.-EXP(-2.0*tautot_lay_liq(:)))491 * (1.-EXP(-2.0*tautot_lay_liq(:))) 492 492 ELSEWHERE 493 493 pnorm_liq(:,k)=betatot_liq(:,k)*EXP(-2.0*tautot_liq(:,k+1)) … … 510 510 ! Upper layer 511 511 beta_perp_ice(:,nlev) = pnorm_perp_ice(:,nlev) * (2.*tautot_ice(:,nlev)) & 512 &/ (1.-exp(-2.0*tautot_ice(:,nlev)))512 / (1.-exp(-2.0*tautot_ice(:,nlev))) 513 513 514 514 DO k= nlev-1, 1, -1 … … 516 516 WHERE (tautot_lay_ice(:)>0.) 517 517 beta_perp_ice(:,k) = pnorm_perp_ice(:,k)/ EXP(-2.0*tautot_ice(:,k+1)) * (2.*tautot_lay_ice(:)) & 518 &/ (1.-exp(-2.0*tautot_lay_ice(:)))518 / (1.-exp(-2.0*tautot_lay_ice(:))) 519 519 520 520 ELSEWHERE … … 526 526 ! Upper layer 527 527 beta_perp_liq(:,nlev) = pnorm_perp_liq(:,nlev) * (2.*tautot_liq(:,nlev)) & 528 &/ (1.-exp(-2.0*tautot_liq(:,nlev)))528 / (1.-exp(-2.0*tautot_liq(:,nlev))) 529 529 530 530 DO k= nlev-1, 1, -1 … … 532 532 WHERE (tautot_lay_liq(:)>0.) 533 533 beta_perp_liq(:,k) = pnorm_perp_liq(:,k)/ max(seuil,EXP(-2.0*tautot_liq(:,k+1))) & 534 &* (2.*tautot_lay_liq(:)) / (1.-exp(-2.0*tautot_lay_liq(:)))534 * (2.*tautot_lay_liq(:)) / (1.-exp(-2.0*tautot_lay_liq(:))) 535 535 536 536 ELSEWHERE … … 550 550 pnorm_perp_tot(:,nlev) = & 551 551 (beta_perp_ice(:,nlev)+beta_perp_liq(:,nlev)-(beta_mol(:,nlev)/(1+1/0.0284))) / (2.*tautot(:,nlev)) & 552 &* (1.-exp(-2.0*tautot(:,nlev)))552 * (1.-exp(-2.0*tautot(:,nlev))) 553 553 ELSEWHERE 554 554 pnorm_perp_tot(:,nlev) = 0. … … 570 570 (beta_perp_ice(:,k)+beta_perp_liq(:,k)-(beta_mol(:,k)/(1+1/0.0284))) * & 571 571 EXP(-2.0*tautot(:,k+1)) / (2.*tautot_lay(:)) & 572 &* (1.-EXP(-2.0*tautot_lay(:)))572 * (1.-EXP(-2.0*tautot_lay(:))) 573 573 ELSEWHERE 574 574 ! This must never happen, but just in case, to avoid div. by 0 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp2/cosp_optics.F90
r5082 r5087 391 391 ! Optical thickness of each layer (particles) 392 392 tau_part(1:npoints,icol,1:nlev,i) = tau_part(1:npoints,icol,1:nlev,i) & 393 &* (zheight(1:npoints,1:nlev)-zheight(1:npoints,2:nlev+1) )393 * (zheight(1:npoints,1:nlev)-zheight(1:npoints,2:nlev+1) ) 394 394 ! Optical thickness from TOA to layer k (particles) 395 395 do k=2,nlev -
LMDZ6/branches/Amaury_dev/libf/phylmd/cospv2/cosp_optics.F90
r5081 r5087 440 440 ! Optical thickness of each layer (particles) 441 441 tau_part(1:npoints,1:nlev,i) = tau_part(1:npoints,1:nlev,i) & 442 &* (zheight(1:npoints,1:nlev)-zheight(1:npoints,2:nlev+1) )442 * (zheight(1:npoints,1:nlev)-zheight(1:npoints,2:nlev+1) ) 443 443 ! Optical thickness from TOA to layer k (particles) 444 444 do k=zi,zf,zinc -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90
r5075 r5087 125 125 print*,'Allocations OK' 126 126 call read_amma(nid,nlev_amma,nt_amma & 127 &,z_amma,plev_amma,th_amma,q_amma,u_amma,v_amma,vitw_amma &128 &,ht_amma,hq_amma,sens_amma,lat_amma)127 ,z_amma,plev_amma,th_amma,q_amma,u_amma,v_amma,vitw_amma & 128 ,ht_amma,hq_amma,sens_amma,lat_amma) 129 129 130 130 END SUBROUTINE read_1D_cases … … 172 172 !===================================================================== 173 173 subroutine read_amma(nid,nlevel,ntime & 174 &,zz,pp,temp,qv,u,v,dw &175 &,dt,dq,sens,flat)174 ,zz,pp,temp,qv,u,v,dw & 175 ,dt,dq,sens,flat) 176 176 177 177 !program reading forcings of the AMMA case study … … 345 345 !====================================================================== 346 346 SUBROUTINE interp_amma_time(day,day1,annee_ref & 347 &,year_ini_amma,day_ini_amma,nt_amma,dt_amma,nlev_amma &348 &,vitw_amma,ht_amma,hq_amma,lat_amma,sens_amma &349 &,vitw_prof,ht_prof,hq_prof,lat_prof,sens_prof)347 ,year_ini_amma,day_ini_amma,nt_amma,dt_amma,nlev_amma & 348 ,vitw_amma,ht_amma,hq_amma,lat_amma,sens_amma & 349 ,vitw_prof,ht_prof,hq_prof,lat_prof,sens_prof) 350 350 implicit none 351 351 … … 426 426 if (it_amma1 > nt_amma) then 427 427 write(*,*) 'PB-stop: day, it_amma1, it_amma2, timeit: ' & 428 &,day,day_ini_amma,it_amma1,it_amma2,timeit/86400.428 ,day,day_ini_amma,it_amma1,it_amma2,timeit/86400. 429 429 stop 430 430 endif … … 439 439 440 440 lat_prof = lat_amma(it_amma2) & 441 & -frac*(lat_amma(it_amma2)-lat_amma(it_amma1))441 -frac*(lat_amma(it_amma2)-lat_amma(it_amma1)) 442 442 sens_prof = sens_amma(it_amma2) & 443 &-frac*(sens_amma(it_amma2)-sens_amma(it_amma1))443 -frac*(sens_amma(it_amma2)-sens_amma(it_amma1)) 444 444 445 445 do k=1,nlev_amma 446 446 vitw_prof(k) = vitw_amma(k,it_amma2) & 447 &-frac*(vitw_amma(k,it_amma2)-vitw_amma(k,it_amma1))447 -frac*(vitw_amma(k,it_amma2)-vitw_amma(k,it_amma1)) 448 448 ht_prof(k) = ht_amma(k,it_amma2) & 449 &-frac*(ht_amma(k,it_amma2)-ht_amma(k,it_amma1))449 -frac*(ht_amma(k,it_amma2)-ht_amma(k,it_amma1)) 450 450 hq_prof(k) = hq_amma(k,it_amma2) & 451 &-frac*(hq_amma(k,it_amma2)-hq_amma(k,it_amma1))451 -frac*(hq_amma(k,it_amma2)-hq_amma(k,it_amma1)) 452 452 enddo 453 453 -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90
r5075 r5087 184 184 print*,'Allocations OK' 185 185 call read_cas(nid,nlev_cas,nt_cas & 186 &,z_cas,plev_cas,t_cas,q_cas,rh_cas,th_cas,rv_cas,u_cas,v_cas &187 &,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas &188 &,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas &189 &,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas&190 &,ustar_cas,uw_cas,vw_cas,q1_cas,q2_cas)186 ,z_cas,plev_cas,t_cas,q_cas,rh_cas,th_cas,rv_cas,u_cas,v_cas & 187 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas & 188 ,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas & 189 ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas& 190 ,ustar_cas,uw_cas,vw_cas,q1_cas,q2_cas) 191 191 print*,'Read cas OK' 192 192 … … 255 255 !===================================================================== 256 256 subroutine read_cas(nid,nlevel,ntime & 257 &,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, &258 &du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq, &259 &dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar,uw,vw,q1,q2)257 ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & 258 du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq, & 259 dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar,uw,vw,q1,q2) 260 260 261 261 !program reading forcing of the case study … … 804 804 SUBROUTINE interp_case_time(day,day1,annee_ref & 805 805 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 806 &,nt_cas,nlev_cas &807 &,ts_cas,plev_cas,t_cas,q_cas,u_cas,v_cas &808 &,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas &809 &,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas &810 &,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas &811 &,uw_cas,vw_cas,q1_cas,q2_cas &812 &,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas &813 &,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas &814 &,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas &815 &,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas &816 &,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas &817 &,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas &818 &,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas)806 ,nt_cas,nlev_cas & 807 ,ts_cas,plev_cas,t_cas,q_cas,u_cas,v_cas & 808 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas & 809 ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 810 ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 811 ,uw_cas,vw_cas,q1_cas,q2_cas & 812 ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas & 813 ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas & 814 ,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 815 ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas & 816 ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas & 817 ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas & 818 ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas) 819 819 820 820 … … 931 931 if (it_cas1 > nt_cas) then 932 932 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 933 &,day,day_ju_ini_cas,it_cas1,it_cas2,timeit933 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit 934 934 stop 935 935 endif … … 944 944 945 945 lat_prof_cas = lat_cas(it_cas2) & 946 &-frac*(lat_cas(it_cas2)-lat_cas(it_cas1))946 -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 947 947 sens_prof_cas = sens_cas(it_cas2) & 948 &-frac*(sens_cas(it_cas2)-sens_cas(it_cas1))948 -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) 949 949 ts_prof_cas = ts_cas(it_cas2) & 950 &-frac*(ts_cas(it_cas2)-ts_cas(it_cas1))950 -frac*(ts_cas(it_cas2)-ts_cas(it_cas1)) 951 951 ustar_prof_cas = ustar_cas(it_cas2) & 952 &-frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1))952 -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1)) 953 953 954 954 do k=1,nlev_cas 955 955 plev_prof_cas(k) = plev_cas(k,it_cas2) & 956 &-frac*(plev_cas(k,it_cas2)-plev_cas(k,it_cas1))956 -frac*(plev_cas(k,it_cas2)-plev_cas(k,it_cas1)) 957 957 t_prof_cas(k) = t_cas(k,it_cas2) & 958 &-frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1))958 -frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1)) 959 959 q_prof_cas(k) = q_cas(k,it_cas2) & 960 &-frac*(q_cas(k,it_cas2)-q_cas(k,it_cas1))960 -frac*(q_cas(k,it_cas2)-q_cas(k,it_cas1)) 961 961 u_prof_cas(k) = u_cas(k,it_cas2) & 962 &-frac*(u_cas(k,it_cas2)-u_cas(k,it_cas1))962 -frac*(u_cas(k,it_cas2)-u_cas(k,it_cas1)) 963 963 v_prof_cas(k) = v_cas(k,it_cas2) & 964 &-frac*(v_cas(k,it_cas2)-v_cas(k,it_cas1))964 -frac*(v_cas(k,it_cas2)-v_cas(k,it_cas1)) 965 965 ug_prof_cas(k) = ug_cas(k,it_cas2) & 966 &-frac*(ug_cas(k,it_cas2)-ug_cas(k,it_cas1))966 -frac*(ug_cas(k,it_cas2)-ug_cas(k,it_cas1)) 967 967 vg_prof_cas(k) = vg_cas(k,it_cas2) & 968 &-frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1))968 -frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1)) 969 969 vitw_prof_cas(k) = vitw_cas(k,it_cas2) & 970 &-frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1))970 -frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1)) 971 971 du_prof_cas(k) = du_cas(k,it_cas2) & 972 &-frac*(du_cas(k,it_cas2)-du_cas(k,it_cas1))972 -frac*(du_cas(k,it_cas2)-du_cas(k,it_cas1)) 973 973 hu_prof_cas(k) = hu_cas(k,it_cas2) & 974 &-frac*(hu_cas(k,it_cas2)-hu_cas(k,it_cas1))974 -frac*(hu_cas(k,it_cas2)-hu_cas(k,it_cas1)) 975 975 vu_prof_cas(k) = vu_cas(k,it_cas2) & 976 &-frac*(vu_cas(k,it_cas2)-vu_cas(k,it_cas1))976 -frac*(vu_cas(k,it_cas2)-vu_cas(k,it_cas1)) 977 977 dv_prof_cas(k) = dv_cas(k,it_cas2) & 978 &-frac*(dv_cas(k,it_cas2)-dv_cas(k,it_cas1))978 -frac*(dv_cas(k,it_cas2)-dv_cas(k,it_cas1)) 979 979 hv_prof_cas(k) = hv_cas(k,it_cas2) & 980 &-frac*(hv_cas(k,it_cas2)-hv_cas(k,it_cas1))980 -frac*(hv_cas(k,it_cas2)-hv_cas(k,it_cas1)) 981 981 vv_prof_cas(k) = vv_cas(k,it_cas2) & 982 &-frac*(vv_cas(k,it_cas2)-vv_cas(k,it_cas1))982 -frac*(vv_cas(k,it_cas2)-vv_cas(k,it_cas1)) 983 983 dt_prof_cas(k) = dt_cas(k,it_cas2) & 984 &-frac*(dt_cas(k,it_cas2)-dt_cas(k,it_cas1))984 -frac*(dt_cas(k,it_cas2)-dt_cas(k,it_cas1)) 985 985 ht_prof_cas(k) = ht_cas(k,it_cas2) & 986 &-frac*(ht_cas(k,it_cas2)-ht_cas(k,it_cas1))986 -frac*(ht_cas(k,it_cas2)-ht_cas(k,it_cas1)) 987 987 vt_prof_cas(k) = vt_cas(k,it_cas2) & 988 &-frac*(vt_cas(k,it_cas2)-vt_cas(k,it_cas1))988 -frac*(vt_cas(k,it_cas2)-vt_cas(k,it_cas1)) 989 989 dtrad_prof_cas(k) = dtrad_cas(k,it_cas2) & 990 &-frac*(dtrad_cas(k,it_cas2)-dtrad_cas(k,it_cas1))990 -frac*(dtrad_cas(k,it_cas2)-dtrad_cas(k,it_cas1)) 991 991 dq_prof_cas(k) = dq_cas(k,it_cas2) & 992 &-frac*(dq_cas(k,it_cas2)-dq_cas(k,it_cas1))992 -frac*(dq_cas(k,it_cas2)-dq_cas(k,it_cas1)) 993 993 hq_prof_cas(k) = hq_cas(k,it_cas2) & 994 &-frac*(hq_cas(k,it_cas2)-hq_cas(k,it_cas1))994 -frac*(hq_cas(k,it_cas2)-hq_cas(k,it_cas1)) 995 995 vq_prof_cas(k) = vq_cas(k,it_cas2) & 996 &-frac*(vq_cas(k,it_cas2)-vq_cas(k,it_cas1))996 -frac*(vq_cas(k,it_cas2)-vq_cas(k,it_cas1)) 997 997 uw_prof_cas(k) = uw_cas(k,it_cas2) & 998 &-frac*(uw_cas(k,it_cas2)-uw_cas(k,it_cas1))998 -frac*(uw_cas(k,it_cas2)-uw_cas(k,it_cas1)) 999 999 vw_prof_cas(k) = vw_cas(k,it_cas2) & 1000 &-frac*(vw_cas(k,it_cas2)-vw_cas(k,it_cas1))1000 -frac*(vw_cas(k,it_cas2)-vw_cas(k,it_cas1)) 1001 1001 q1_prof_cas(k) = q1_cas(k,it_cas2) & 1002 &-frac*(q1_cas(k,it_cas2)-q1_cas(k,it_cas1))1002 -frac*(q1_cas(k,it_cas2)-q1_cas(k,it_cas1)) 1003 1003 q2_prof_cas(k) = q2_cas(k,it_cas2) & 1004 &-frac*(q2_cas(k,it_cas2)-q2_cas(k,it_cas1))1004 -frac*(q2_cas(k,it_cas2)-q2_cas(k,it_cas1)) 1005 1005 enddo 1006 1006 -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_lmdz1d.F90
r5075 r5087 458 458 type_ts_forcing = 0 459 459 if (forcing_toga.or.forcing_sandu.or.forcing_astex .or. forcing_dice) & 460 &type_ts_forcing = 1460 type_ts_forcing = 1 461 461 ! 462 462 ! Initialization of the logical switch for nudging … … 549 549 ! Convert the initial date of Toga-Coare to Julian day 550 550 call ymds2ju & 551 &(year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga)551 (year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga) 552 552 553 553 ELSEIF (forcing_type ==4) THEN 554 554 ! Convert the initial date of TWPICE to Julian day 555 555 call ymds2ju & 556 &(year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi &557 &,day_ju_ini_twpi)556 (year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi & 557 ,day_ju_ini_twpi) 558 558 ELSEIF (forcing_type ==6) THEN 559 559 ! Convert the initial date of AMMA to Julian day 560 560 call ymds2ju & 561 &(year_ini_amma,mth_ini_amma,day_ini_amma,heure_ini_amma &562 &,day_ju_ini_amma)561 (year_ini_amma,mth_ini_amma,day_ini_amma,heure_ini_amma & 562 ,day_ju_ini_amma) 563 563 ELSEIF (forcing_type ==7) THEN 564 564 ! Convert the initial date of DICE to Julian day 565 565 call ymds2ju & 566 & (year_ini_dice,mth_ini_dice,day_ini_dice,heure_ini_dice &567 &,day_ju_ini_dice)566 (year_ini_dice,mth_ini_dice,day_ini_dice,heure_ini_dice & 567 ,day_ju_ini_dice) 568 568 ELSEIF (forcing_type ==8 ) THEN 569 569 ! Convert the initial date of GABLS4 to Julian day 570 570 call ymds2ju & 571 & (year_ini_gabls4,mth_ini_gabls4,day_ini_gabls4,heure_ini_gabls4 &572 &,day_ju_ini_gabls4)571 (year_ini_gabls4,mth_ini_gabls4,day_ini_gabls4,heure_ini_gabls4 & 572 ,day_ju_ini_gabls4) 573 573 ELSEIF (forcing_type >100) THEN 574 574 ! Convert the initial date to Julian day … … 576 576 print*,'time case',year_ini_cas,mth_ini_cas,day_ini_cas 577 577 call ymds2ju & 578 &(year_ini_cas,mth_ini_cas,day_ini_cas,heure_ini_cas*3600 &579 &,day_ju_ini_cas)578 (year_ini_cas,mth_ini_cas,day_ini_cas,heure_ini_cas*3600 & 579 ,day_ju_ini_cas) 580 580 print*,'time case 2',day_ini_cas,day_ju_ini_cas 581 581 ELSEIF (forcing_type ==59) THEN 582 582 ! Convert the initial date of Sandu case to Julian day 583 583 call ymds2ju & 584 &(year_ini_sandu,mth_ini_sandu,day_ini_sandu, &585 &time_ini*3600.,day_ju_ini_sandu)584 (year_ini_sandu,mth_ini_sandu,day_ini_sandu, & 585 time_ini*3600.,day_ju_ini_sandu) 586 586 587 587 ELSEIF (forcing_type ==60) THEN 588 588 ! Convert the initial date of Astex case to Julian day 589 589 call ymds2ju & 590 &(year_ini_astex,mth_ini_astex,day_ini_astex, &591 &time_ini*3600.,day_ju_ini_astex)590 (year_ini_astex,mth_ini_astex,day_ini_astex, & 591 time_ini*3600.,day_ju_ini_astex) 592 592 593 593 ELSEIF (forcing_type ==61) THEN 594 594 ! Convert the initial date of Arm_cu case to Julian day 595 595 call ymds2ju & 596 &(year_ini_armcu,mth_ini_armcu,day_ini_armcu,heure_ini_armcu &597 &,day_ju_ini_armcu)596 (year_ini_armcu,mth_ini_armcu,day_ini_armcu,heure_ini_armcu & 597 ,day_ju_ini_armcu) 598 598 ENDIF 599 599 … … 606 606 call ju2ymds(daytime,year_print, month_print,day_print,sec_print) 607 607 print *,' Time of beginning : ', & 608 &year_print, month_print, day_print, sec_print608 year_print, month_print, day_print, sec_print 609 609 610 610 !--------------------------------------------------------------------- … … 852 852 853 853 print*,'nat_surf,pctsrf(1,is_oce),pctsrf(1,is_ter)',nat_surf & 854 &,pctsrf(1,is_oce),pctsrf(1,is_ter)854 ,pctsrf(1,is_oce),pctsrf(1,is_ter) 855 855 856 856 zmasq=pctsrf(1,is_ter)+pctsrf(1,is_lic) … … 989 989 ! fabrication de limit.nc 990 990 call writelim (1,phy_nat,phy_alb,phy_sst,phy_bil,phy_rug, & 991 &phy_ice,phy_fter,phy_foce,phy_flic,phy_fsic)991 phy_ice,phy_fter,phy_foce,phy_flic,phy_fsic) 992 992 993 993 … … 997 997 print*,'call to restart dyn 1d' 998 998 Call dyn1deta0("start1dyn.nc",plev,play,phi,phis,presnivs, & 999 &u,v,temp,q,omega2)999 u,v,temp,q,omega2) 1000 1000 1001 1001 print*,'fnday,annee_ref,day_ref,day_ini', & 1002 &fnday,annee_ref,day_ref,day_ini1002 fnday,annee_ref,day_ref,day_ini 1003 1003 !** call ymds2ju(annee_ref,mois,day_ini,heure,day) 1004 1004 day = day_ini … … 1052 1052 if (prt_level>=1) then 1053 1053 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 1054 &it,day,time,it_end,day_step1054 it,day,time,it_end,day_step 1055 1055 print*,'PAS DE TEMPS ',timestep 1056 1056 endif … … 1065 1065 do l = 1, llm-1 1066 1066 phi(l+1)=phi(l)+RD*(temp(l)+temp(l+1))* & 1067 &(play(l)-play(l+1))/(play(l)+play(l+1))1067 (play(l)-play(l+1))/(play(l)+play(l+1)) 1068 1068 enddo 1069 1069 … … 1095 1095 print *,' avant physiq : -------- day time ',day,time 1096 1096 write(*,*) 'firstcall,lastcall,phis', & 1097 &firstcall,lastcall,phis1097 firstcall,lastcall,phis 1098 1098 end if 1099 1099 if (prt_level>=5) then 1100 1100 write(*,'(a10,2a4,4a13)') 'BEFOR1 IT=','it','l', & 1101 &'presniv','plev','play','phi'1101 'presniv','plev','play','phi' 1102 1102 write(*,'(a10,2i4,4f13.2)') ('BEFOR1 IT= ',it,l, & 1103 &presnivs(l),plev(l),play(l),phi(l),l=1,llm)1103 presnivs(l),plev(l),play(l),phi(l),l=1,llm) 1104 1104 write(*,'(a11,2a4,a11,6a8)') 'BEFOR2','it','l', & 1105 &'presniv','u','v','temp','q1','q2','omega2'1105 'presniv','u','v','temp','q1','q2','omega2' 1106 1106 write(*,'(a11,2i4,f11.2,5f8.2,e10.2)') ('BEFOR2 IT= ',it,l, & 1107 &presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm)1107 presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm) 1108 1108 endif 1109 1109 … … 1123 1123 if (prt_level>=5) then 1124 1124 write(*,'(a11,2a4,4a13)') 'AFTER1 IT=','it','l', & 1125 &'presniv','plev','play','phi'1125 'presniv','plev','play','phi' 1126 1126 write(*,'(a11,2i4,4f13.2)') ('AFTER1 it= ',it,l, & 1127 &presnivs(l),plev(l),play(l),phi(l),l=1,llm)1127 presnivs(l),plev(l),play(l),phi(l),l=1,llm) 1128 1128 write(*,'(a11,2a4,a11,6a8)') 'AFTER2','it','l', & 1129 &'presniv','u','v','temp','q1','q2','omega2'1129 'presniv','u','v','temp','q1','q2','omega2' 1130 1130 write(*,'(a11,2i4,f11.2,5f8.2,e10.2)') ('AFTER2 it= ',it,l, & 1131 &presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm)1131 presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm) 1132 1132 write(*,'(a11,2a4,a11,5a8)') 'AFTER3','it','l', & 1133 & 'presniv','du_phys','dv_phys','dt_phys','dq1','dq2'1133 'presniv','du_phys','dv_phys','dt_phys','dq1','dq2' 1134 1134 write(*,'(a11,2i4,f11.2,5f8.2)') ('AFTER3 it= ',it,l, & 1135 &presnivs(l),86400*du_phys(l),86400*dv_phys(l), &1136 &86400*dt_phys(l),86400*dq(l,1),dq(l,2),l=1,llm)1135 presnivs(l),86400*du_phys(l),86400*dv_phys(l), & 1136 86400*dt_phys(l),86400*dq(l,1),dq(l,2),l=1,llm) 1137 1137 write(*,*) 'dpsrf',dpsrf 1138 1138 endif … … 1151 1151 1152 1152 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice & 1153 &.or.forcing_amma .or. forcing_type==101) then1153 .or.forcing_amma .or. forcing_type==101) then 1154 1154 fcoriolis=0.0 ; ug=0. ; vg=0. 1155 1155 endif … … 1198 1198 ! 1199 1199 du_age(1:mxcalc)= -2.*sfdt/timestep* & 1200 &(sfdt*(u(1:mxcalc)-ug(1:mxcalc)) - &1201 &cfdt*(v(1:mxcalc)-vg(1:mxcalc)) )1200 (sfdt*(u(1:mxcalc)-ug(1:mxcalc)) - & 1201 cfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 1202 1202 !! : fcoriolis*(v(1:mxcalc)-vg(1:mxcalc)) 1203 1203 ! 1204 1204 dv_age(1:mxcalc)= -2.*sfdt/timestep* & 1205 &(cfdt*(u(1:mxcalc)-ug(1:mxcalc)) + &1206 &sfdt*(v(1:mxcalc)-vg(1:mxcalc)) )1205 (cfdt*(u(1:mxcalc)-ug(1:mxcalc)) + & 1206 sfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 1207 1207 !! : -fcoriolis*(u(1:mxcalc)-ug(1:mxcalc)) 1208 1208 ! … … 1216 1216 if (nudge(inudge_RHT)) then 1217 1217 call nudge_RHT(timestep,plev,play,t_targ,rh_targ,temp,q(:,1), & 1218 &d_t_nudge,d_q_nudge(:,1))1218 d_t_nudge,d_q_nudge(:,1)) 1219 1219 endif 1220 1220 if (nudge(inudge_UV)) then 1221 1221 call nudge_UV(timestep,plev,play,u_targ,v_targ,u,v, & 1222 &d_u_nudge,d_v_nudge)1222 d_u_nudge,d_v_nudge) 1223 1223 endif 1224 1224 ! … … 1263 1263 else 1264 1264 u(1:mxcalc)=u(1:mxcalc) + timestep*( & 1265 &du_phys(1:mxcalc) &1266 &+du_age(1:mxcalc)+du_adv(1:mxcalc) &1267 & +d_u_nudge(1:mxcalc) )1265 du_phys(1:mxcalc) & 1266 +du_age(1:mxcalc)+du_adv(1:mxcalc) & 1267 +d_u_nudge(1:mxcalc) ) 1268 1268 v(1:mxcalc)=v(1:mxcalc) + timestep*( & 1269 &dv_phys(1:mxcalc) &1270 &+dv_age(1:mxcalc)+dv_adv(1:mxcalc) &1271 &+d_v_nudge(1:mxcalc) )1269 dv_phys(1:mxcalc) & 1270 +dv_age(1:mxcalc)+dv_adv(1:mxcalc) & 1271 +d_v_nudge(1:mxcalc) ) 1272 1272 q(1:mxcalc,:)=q(1:mxcalc,:)+timestep*( & 1273 &dq(1:mxcalc,:) &1274 &+d_q_adv(1:mxcalc,:) &1275 &+d_q_nudge(1:mxcalc,:) )1273 dq(1:mxcalc,:) & 1274 +d_q_adv(1:mxcalc,:) & 1275 +d_q_nudge(1:mxcalc,:) ) 1276 1276 1277 1277 if (prt_level>=3) then 1278 1278 print *, & 1279 &'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', &1280 &temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1)1279 'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', & 1280 temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) 1281 1281 print* ,'dv_phys=',dv_phys 1282 1282 print* ,'dv_age=',dv_age … … 1288 1288 1289 1289 temp(1:mxcalc)=temp(1:mxcalc)+timestep*( & 1290 &dt_phys(1:mxcalc) &1291 &+d_t_adv(1:mxcalc) &1292 &+d_t_nudge(1:mxcalc) &1293 &+dt_cooling(1:mxcalc)) ! Taux de chauffage ou refroid.1290 dt_phys(1:mxcalc) & 1291 +d_t_adv(1:mxcalc) & 1292 +d_t_nudge(1:mxcalc) & 1293 +dt_cooling(1:mxcalc)) ! Taux de chauffage ou refroid. 1294 1294 1295 1295 #ifdef OUTPUT_PHYS_SCM … … 1308 1308 IF (nudge_tsoil .AND. .NOT. lastcall) THEN 1309 1309 ftsoil(1,isoil_nudge,:) = ftsoil(1,isoil_nudge,:) & 1310 &-timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge)1310 -timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge) 1311 1311 ENDIF 1312 1312 … … 1358 1358 ! ------------------------------------- 1359 1359 call dyn1dredem("restart1dyn.nc", & 1360 &plev,play,phi,phis,presnivs, &1361 &u,v,temp,q,omega2)1360 plev,play,phi,phis,presnivs, & 1361 u,v,temp,q,omega2) 1362 1362 1363 1363 CALL abort_gcm ('lmdz1d ','The End ',0) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/replay1d.F90
r5082 r5087 143 143 144 144 IF(ngrid/=2+(jm-2)*(im-1).AND.ngrid/=1) & 145 &STOP 'probleme de dim'145 STOP 'probleme de dim' 146 146 ! traitement des poles 147 147 CALL SCOPY(nfield,pdyn,im*jm,pfi,ngrid) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/scm.F90
r5082 r5087 376 376 print*,'time case',year_ini_cas,mth_ini_cas,day_ini_cas 377 377 call ymds2ju & 378 &(year_ini_cas,mth_ini_cas,day_ini_cas,heure_ini_cas*3600 &379 &,day_ju_ini_cas)378 (year_ini_cas,mth_ini_cas,day_ini_cas,heure_ini_cas*3600 & 379 ,day_ju_ini_cas) 380 380 print*,'time case 2',day_ini_cas,day_ju_ini_cas 381 381 daytime = day + heure_ini_cas/24. ! 1st day and initial time of the simulation … … 384 384 call ju2ymds(daytime,year_print, month_print,day_print,sec_print) 385 385 print *,' Time of beginning : ', & 386 &year_print, month_print, day_print, sec_print386 year_print, month_print, day_print, sec_print 387 387 388 388 !--------------------------------------------------------------------- … … 615 615 616 616 print*,'nat_surf,pctsrf(1,is_oce),pctsrf(1,is_ter)',nat_surf & 617 &,pctsrf(1,is_oce),pctsrf(1,is_ter)617 ,pctsrf(1,is_oce),pctsrf(1,is_ter) 618 618 619 619 zmasq=pctsrf(1,is_ter)+pctsrf(1,is_lic) … … 746 746 ! fabrication de limit.nc 747 747 call writelim (1,phy_nat,phy_alb,phy_sst,phy_bil,phy_rug, & 748 &phy_ice,phy_fter,phy_foce,phy_flic,phy_fsic)748 phy_ice,phy_fter,phy_foce,phy_flic,phy_fsic) 749 749 750 750 … … 754 754 print*,'call to restart dyn 1d' 755 755 Call dyn1deta0("start1dyn.nc",plev,play,phi,phis,presnivs, & 756 &u,v,temp,q,omega2)756 u,v,temp,q,omega2) 757 757 758 758 print*,'fnday,annee_ref,day_ref,day_ini', & 759 &fnday,annee_ref,day_ref,day_ini759 fnday,annee_ref,day_ref,day_ini 760 760 !** call ymds2ju(annee_ref,mois,day_ini,heure,day) 761 761 day = day_ini … … 800 800 if (prt_level>=1) then 801 801 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 802 &it,day,time,it_end,day_step802 it,day,time,it_end,day_step 803 803 print*,'PAS DE TEMPS ',timestep 804 804 endif … … 822 822 do l = 1, llm-1 823 823 phi(l+1)=phi(l)+RD*(temp(l)+temp(l+1))* & 824 &(play(l)-play(l+1))/(play(l)+play(l+1))824 (play(l)-play(l+1))/(play(l)+play(l+1)) 825 825 enddo 826 826 … … 861 861 print *,' avant physiq : -------- day time ',day,time 862 862 write(*,*) 'firstcall,lastcall,phis', & 863 &firstcall,lastcall,phis863 firstcall,lastcall,phis 864 864 end if 865 865 if (prt_level>=5) then 866 866 write(*,'(a10,2a4,4a13)') 'BEFOR1 IT=','it','l', & 867 &'presniv','plev','play','phi'867 'presniv','plev','play','phi' 868 868 write(*,'(a10,2i4,4f13.2)') ('BEFOR1 IT= ',it,l, & 869 &presnivs(l),plev(l),play(l),phi(l),l=1,llm)869 presnivs(l),plev(l),play(l),phi(l),l=1,llm) 870 870 write(*,'(a11,2a4,a11,6a8)') 'BEFOR2','it','l', & 871 &'presniv','u','v','temp','q1','q2','omega2'871 'presniv','u','v','temp','q1','q2','omega2' 872 872 write(*,'(a11,2i4,f11.2,5f8.2,e10.2)') ('BEFOR2 IT= ',it,l, & 873 &presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm)873 presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm) 874 874 endif 875 875 … … 889 889 if (prt_level>=5) then 890 890 write(*,'(a11,2a4,4a13)') 'AFTER1 IT=','it','l', & 891 &'presniv','plev','play','phi'891 'presniv','plev','play','phi' 892 892 write(*,'(a11,2i4,4f13.2)') ('AFTER1 it= ',it,l, & 893 &presnivs(l),plev(l),play(l),phi(l),l=1,llm)893 presnivs(l),plev(l),play(l),phi(l),l=1,llm) 894 894 write(*,'(a11,2a4,a11,6a8)') 'AFTER2','it','l', & 895 &'presniv','u','v','temp','q1','q2','omega2'895 'presniv','u','v','temp','q1','q2','omega2' 896 896 write(*,'(a11,2i4,f11.2,5f8.2,e10.2)') ('AFTER2 it= ',it,l, & 897 &presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm)897 presnivs(l),u(l),v(l),temp(l),q(l,1),q(l,2),omega2(l),l=1,llm) 898 898 write(*,'(a11,2a4,a11,5a8)') 'AFTER3','it','l', & 899 & 'presniv','du_phys','dv_phys','dt_phys','dq1','dq2'899 'presniv','du_phys','dv_phys','dt_phys','dq1','dq2' 900 900 write(*,'(a11,2i4,f11.2,5f8.2)') ('AFTER3 it= ',it,l, & 901 &presnivs(l),86400*du_phys(l),86400*dv_phys(l), &902 &86400*dt_phys(l),86400*dq(l,1),dq(l,2),l=1,llm)901 presnivs(l),86400*du_phys(l),86400*dv_phys(l), & 902 86400*dt_phys(l),86400*dq(l,1),dq(l,2),l=1,llm) 903 903 write(*,*) 'dpsrf',dpsrf 904 904 endif … … 924 924 925 925 d_u_age(1:mxcalc)= -2.*sfdt/timestep* & 926 &(sfdt*(u(1:mxcalc)-ug(1:mxcalc)) - &927 &cfdt*(v(1:mxcalc)-vg(1:mxcalc)) )926 (sfdt*(u(1:mxcalc)-ug(1:mxcalc)) - & 927 cfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 928 928 !! : fcoriolis*(v(1:mxcalc)-vg(1:mxcalc)) 929 929 ! 930 930 d_v_age(1:mxcalc)= -2.*sfdt/timestep* & 931 &(cfdt*(u(1:mxcalc)-ug(1:mxcalc)) + &932 &sfdt*(v(1:mxcalc)-vg(1:mxcalc)) )931 (cfdt*(u(1:mxcalc)-ug(1:mxcalc)) + & 932 sfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 933 933 !! : -fcoriolis*(u(1:mxcalc)-ug(1:mxcalc)) 934 934 ENDIF … … 953 953 954 954 IF ( play(l) < p_nudging_u .AND. nint(nudging_u) /= 0 ) & 955 &d_u_nudge(l)=(u_nudg_mod_cas(l)-u(l))/nudging_u955 d_u_nudge(l)=(u_nudg_mod_cas(l)-u(l))/nudging_u 956 956 957 957 ENDIF … … 966 966 967 967 IF ( play(l) < p_nudging_v .AND. nint(nudging_v) /= 0 ) & 968 &d_v_nudge(l)=(v_nudg_mod_cas(l)-v(l))/nudging_v968 d_v_nudge(l)=(v_nudg_mod_cas(l)-v(l))/nudging_v 969 969 970 970 ENDIF … … 979 979 980 980 IF ( play(l) < p_nudging_t .AND. nint(nudging_t) /= 0 ) & 981 &d_t_nudge(l)=(temp_nudg_mod_cas(l)-temp(l))/nudging_t981 d_t_nudge(l)=(temp_nudg_mod_cas(l)-temp(l))/nudging_t 982 982 983 983 ENDIF … … 991 991 992 992 IF ( play(l) < p_nudging_qv .AND. nint(nudging_qv) /= 0 ) & 993 &d_q_nudge(l,1)=(qv_nudg_mod_cas(l)-q(l,1))/nudging_qv993 d_q_nudge(l,1)=(qv_nudg_mod_cas(l)-q(l,1))/nudging_qv 994 994 995 995 ENDIF … … 1021 1021 1022 1022 u(1:mxcalc)=u(1:mxcalc) + timestep*( & 1023 &du_phys(1:mxcalc) &1024 &+d_u_age(1:mxcalc)+d_u_adv(1:mxcalc) &1025 & +d_u_nudge(1:mxcalc) )1023 du_phys(1:mxcalc) & 1024 +d_u_age(1:mxcalc)+d_u_adv(1:mxcalc) & 1025 +d_u_nudge(1:mxcalc) ) 1026 1026 v(1:mxcalc)=v(1:mxcalc) + timestep*( & 1027 &dv_phys(1:mxcalc) &1028 &+d_v_age(1:mxcalc)+d_v_adv(1:mxcalc) &1029 &+d_v_nudge(1:mxcalc) )1027 dv_phys(1:mxcalc) & 1028 +d_v_age(1:mxcalc)+d_v_adv(1:mxcalc) & 1029 +d_v_nudge(1:mxcalc) ) 1030 1030 q(1:mxcalc,:)=q(1:mxcalc,:)+timestep*( & 1031 &dq(1:mxcalc,:) &1032 &+d_q_adv(1:mxcalc,:) &1033 &+d_q_nudge(1:mxcalc,:) )1031 dq(1:mxcalc,:) & 1032 +d_q_adv(1:mxcalc,:) & 1033 +d_q_nudge(1:mxcalc,:) ) 1034 1034 1035 1035 if (prt_level>=3) then 1036 1036 print *, & 1037 &'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', &1038 &temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1)1037 'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', & 1038 temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) 1039 1039 print* ,'dv_phys=',dv_phys 1040 1040 print* ,'d_v_age=',d_v_age … … 1046 1046 1047 1047 temp(1:mxcalc)=temp(1:mxcalc)+timestep*( & 1048 &dt_phys(1:mxcalc) &1049 &+d_t_adv(1:mxcalc) &1050 &+d_t_nudge(1:mxcalc) &1051 &+dt_cooling(1:mxcalc)) ! Taux de chauffage ou refroid.1048 dt_phys(1:mxcalc) & 1049 +d_t_adv(1:mxcalc) & 1050 +d_t_nudge(1:mxcalc) & 1051 +dt_cooling(1:mxcalc)) ! Taux de chauffage ou refroid. 1052 1052 1053 1053 … … 1064 1064 IF (nudge_tsoil .AND. .NOT. lastcall) THEN 1065 1065 ftsoil(1,isoil_nudge,:) = ftsoil(1,isoil_nudge,:) & 1066 &-timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge)1066 -timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge) 1067 1067 ENDIF 1068 1068 … … 1110 1110 ! --------------------------------------------------------------------------- 1111 1111 call dyn1dredem("restart1dyn.nc", & 1112 &plev,play,phi,phis,presnivs, &1113 &u,v,temp,q,omega2)1112 plev,play,phi,phis,presnivs, & 1113 u,v,temp,q,omega2) 1114 1114 1115 1115 CALL abort_gcm ('lmdz1d ','The End ',0) -
LMDZ6/branches/Amaury_dev/libf/phylmd/ener_conserv.F90
r5082 r5087 1 1 subroutine ener_conserv(klon,klev,pdtphys, & 2 &puo,pvo,pto,qx,ivap,iliq,isol, &3 &pun,pvn,ptn,pqn,pqln,pqsn,dtke,masse,exner,d_t_ec)2 puo,pvo,pto,qx,ivap,iliq,isol, & 3 pun,pvn,ptn,pqn,pqln,pqsn,dtke,masse,exner,d_t_ec) 4 4 5 5 !============================================================= … … 21 21 ! From module 22 22 USE phys_local_var_mod, ONLY : d_u_vdf,d_v_vdf,d_t_vdf,d_u_ajs,d_v_ajs,d_t_ajs, & 23 &d_u_con,d_v_con,d_t_con,d_t_diss23 d_u_con,d_v_con,d_t_con,d_t_diss 24 24 USE phys_local_var_mod, ONLY : d_t_eva,d_t_lsc,d_q_eva,d_q_lsc 25 25 USE phys_local_var_mod, ONLY : d_u_oro,d_v_oro,d_u_lif,d_v_lif … … 79 79 ENDIF 80 80 d_t_ec(i,k)=0.5/ZRCPD & 81 &*(puo(i,k)**2+pvo(i,k)**2-pun(i,k)**2-pvn(i,k)**2)81 *(puo(i,k)**2+pvo(i,k)**2-pun(i,k)**2-pvn(i,k)**2) 82 82 ENDDO 83 83 ENDDO … … 233 233 bils_diss(:)=bils_diss(:)-d_t_diss(:,k)*masse(:,k) 234 234 bils_kinetic(:)=bils_kinetic(:)+masse(:,k)* & 235 &(pun(:,k)*pun(:,k)+pvn(:,k)*pvn(:,k) &236 &-puo(:,k)*puo(:,k)-pvo(:,k)*pvo(:,k))235 (pun(:,k)*pun(:,k)+pvn(:,k)*pvn(:,k) & 236 -puo(:,k)*puo(:,k)-pvo(:,k)*pvo(:,k)) 237 237 bils_enthalp(:)= & 238 &bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k)-d_t_eva(:,k)-d_t_lsc(:,k))238 bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k)-d_t_eva(:,k)-d_t_lsc(:,k)) 239 239 ! & bils_enthalp(:)+masse(:,k)*(ptn(:,k)-pto(:,k)+d_t_ec(:,k)) 240 240 bils_latent(:)=bils_latent(:)+masse(:,k)* & 241 241 ! & (pqn(:,k)-pqo(:,k)) 242 &(pqn(:,k)-pqo(:,k)-d_q_eva(:,k)-d_q_lsc(:,k))242 (pqn(:,k)-pqo(:,k)-d_q_eva(:,k)-d_q_lsc(:,k)) 243 243 ENDDO 244 244 bils_ec(:)=rcpd*bils_ec(:)/pdtphys -
LMDZ6/branches/Amaury_dev/libf/phylmd/evappot.F90
r5082 r5087 1 1 SUBROUTINE evappot(klon,nbsrf,ftsol,pplay,cdragh, & 2 &t_seri,q_seri,u_seri,v_seri,evap_pot)2 t_seri,q_seri,u_seri,v_seri,evap_pot) 3 3 4 4 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/phylmd/fonte_neige_mod.F90
r5022 r5087 178 178 IF (iso_eau > 0) THEN 179 179 CALL iso_verif_egalite_vect1D( & 180 &xtrun_off_lic_0,run_off_lic_0,'fonte_neige 100', &181 &niso,klon)180 xtrun_off_lic_0,run_off_lic_0,'fonte_neige 100', & 181 niso,klon) 182 182 ENDIF !IF (iso_eau > 0) THEN 183 183 #endif … … 233 233 snow, qsol, tsurf_new, evap & 234 234 #ifdef ISO 235 &,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag &236 &,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag &237 #endif 238 &)235 ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & 236 ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag & 237 #endif 238 ) 239 239 240 240 USE indice_sol_mod … … 471 471 SUBROUTINE fonte_neige_final(restart_runoff & 472 472 #ifdef ISO 473 &,xtrestart_runoff &473 ,xtrestart_runoff & 474 474 #endif 475 &)475 ) 476 476 ! 477 477 ! This subroutine returns run_off_lic_0 for later writing to restart file. … … 505 505 DO i=1,klon 506 506 IF (iso_verif_egalite_nostop(run_off_lic_0(i) & 507 &,xtrun_off_lic_0(iso_eau,i) &508 &,'fonte_neige 413') &509 &== 1) then507 ,xtrun_off_lic_0(iso_eau,i) & 508 ,'fonte_neige 413') & 509 == 1) then 510 510 WRITE(*,*) 'i=',i 511 511 STOP … … 546 546 fqfonte_out, ffonte_out, run_off_lic_out & 547 547 #ifdef ISO 548 &,fxtcalving_out, fxtfonte_out,xtrun_off_lic_out &548 ,fxtcalving_out, fxtfonte_out,xtrun_off_lic_out & 549 549 #endif 550 &)550 ) 551 551 552 552 … … 626 626 #ifdef ISO 627 627 SUBROUTINE gestion_neige_besoin_varglob_fonte_neige(klon,knon, & 628 &xtprecip_snow,xtprecip_rain, &629 &fxtfonte_neige,fxtcalving, &630 &knindex,nisurf,run_off_lic_diag,coeff_rel_diag)628 xtprecip_snow,xtprecip_rain, & 629 fxtfonte_neige,fxtcalving, & 630 knindex,nisurf,run_off_lic_diag,coeff_rel_diag) 631 631 632 632 ! dans cette routine, on a besoin des variables globales de … … 661 661 j = knindex(i) 662 662 CALL iso_verif_egalite(xtrun_off_lic_0(iso_eau,j), & 663 &run_off_lic_0(j),'gestion_neige_besoin_varglob_fonte_neige 625')663 run_off_lic_0(j),'gestion_neige_besoin_varglob_fonte_neige 625') 664 664 ENDDO 665 665 ENDIF … … 676 676 DO ixt = 1, niso 677 677 xtrun_off_lic(ixt,i) = (coeff_rel_diag * fxtcalving(ixt,i)) & 678 &+(1. - coeff_rel_diag) * xtrun_off_lic_0(ixt,j)678 +(1. - coeff_rel_diag) * xtrun_off_lic_0(ixt,j) 679 679 xtrun_off_lic_0(ixt,j) = xtrun_off_lic(ixt,i) 680 680 xtrun_off_lic(ixt,i) = xtrun_off_lic(ixt,i) + fxtfonte_neige(ixt,i) + xtprecip_rain(ixt,i) … … 683 683 IF (iso_eau > 0) THEN 684 684 IF (iso_verif_egalite_choix_nostop(xtrun_off_lic(iso_eau,i), & 685 &run_off_lic_diag(i),'gestion_neige_besoin_varglob_fonte_neige 1201a', &686 & errmax,errmaxrel) == 1) THEN685 run_off_lic_diag(i),'gestion_neige_besoin_varglob_fonte_neige 1201a', & 686 errmax,errmaxrel) == 1) THEN 687 687 WRITE(*,*) 'i,j=',i,j 688 688 WRITE(*,*) 'coeff_rel_diag=',coeff_rel_diag -
LMDZ6/branches/Amaury_dev/libf/phylmd/grid_noro_m.F90
r5075 r5087 160 160 zxtzxusn(i,j)=(zusn(i+1,j)-zusn(i-1,j))**2/zdeltax**2 161 161 zxtzyusn(i,j)=(zusn(i,j+1)-zusn(i,j-1)) /zdeltay & 162 &*(zusn(i+1,j)-zusn(i-1,j)) /zdeltax162 *(zusn(i+1,j)-zusn(i-1,j)) /zdeltax 163 163 END DO 164 164 END DO -
LMDZ6/branches/Amaury_dev/libf/phylmd/inlandsis/VARdSV.F90
r3792 r5087 57 57 58 58 REAL,PARAMETER :: etadSV(0:nsot) = (/ 1.000,0.395,0.410, & 59 & 0.435,0.485,0.451,0.420,0.477,0.476,0.426,0.492,0.482,0.001 /)59 0.435,0.485,0.451,0.420,0.477,0.476,0.426,0.492,0.482,0.001 /) 60 60 ! Water Content at Saturation [m3/m3] 61 61 62 62 REAL,PARAMETER :: psidSV(0:nsot) = (/ 1.000,0.121,0.090, & 63 &0.218,0.786,0.478,0.299,0.356,0.630,0.153,0.490,0.405,0.001 /)63 0.218,0.786,0.478,0.299,0.356,0.630,0.153,0.490,0.405,0.001 /) 64 64 ! Water Succion at Saturation [m] 65 65 66 66 REAL,PARAMETER :: Ks_dSV(0:nsot) = (/ 0.e00, 176.0e-6, & 67 &156.3e-6, 34.1e-6, 7.2e-6, 7.0e-6, 6.3e-6, &68 &1.7e-6, 2.5e-6, 2.2e-6, 1.0e-6, 1.3e-6,0.0e0 /)67 156.3e-6, 34.1e-6, 7.2e-6, 7.0e-6, 6.3e-6, & 68 1.7e-6, 2.5e-6, 2.2e-6, 1.0e-6, 1.3e-6,0.0e0 /) 69 69 ! Hydraulic Conductivity 70 70 ! at Saturation [m/s] 71 71 REAL,PARAMETER :: bCHdSV(0:nsot) = (/ 1.00, 4.05, 4.38, & 72 &4.90, 5.30, 5.39, 7.12, 7.75, 8.52,10.40,10.40,11.40, 0.02 /)72 4.90, 5.30, 5.39, 7.12, 7.75, 8.52,10.40,10.40,11.40, 0.02 /) 73 73 ! Clapp-Hornberger Coefficient b [-] 74 74 -
LMDZ6/branches/Amaury_dev/libf/phylmd/inlandsis/VARphy.F90
r3900 r5087 26 26 INTEGER, PARAMETER :: iun=1 27 27 REAL, PARAMETER :: zer0 = 0.0e+0, half = 0.5e+0, un_1 = 1.0e+0, & 28 & eps6 = 1.0e-6, R_1000=1.e328 eps6 = 1.0e-6, R_1000=1.e3 29 29 REAL, PARAMETER :: zero = 0.0e+0, demi = 0.5e+0, unun = 1.0e+0, & 30 & epsi = 1.0e-6, eps9 = 1.0e-930 epsi = 1.0e-6, eps9 = 1.0e-9 31 31 REAL :: ea_MAX,ea_MIN 32 32 REAL, PARAMETER :: pi = 3.141592653589793238462643e0 … … 40 40 41 41 REAL, PARAMETER :: gravit = 9.81e0, gravi2 = gravit**2 , & 42 & grvinv = 1./gravit42 grvinv = 1./gravit 43 43 !C + gravit: Earth Gravity Acceleration = 9.81 m/s2 44 44 !C + gravi2: idem (squared) … … 55 55 56 56 REAL, PARAMETER :: RVapor=461.e0, Lv_H2O=2.5008e+6,& 57 &Ls_H2O=2.8345e+6, r_LvCp=2490.04,r_LcCp=332.27, &58 & r_LsCp=2822.3157 Ls_H2O=2.8345e+6, r_LvCp=2490.04,r_LcCp=332.27, & 58 r_LsCp=2822.31 59 59 !C + cp : dry air specific heat at constant p (1004 J/kg/K) 60 60 61 61 REAL, PARAMETER :: LhfH2O=3.34e+5, LhvH2O=2.5008e+6,& 62 & LhsH2O=2.8345e+662 LhsH2O=2.8345e+6 63 63 REAL, PARAMETER :: rhoWat=1000.00e0 64 64 !C + rhoWat: Water Specific Mass = 1000.00d+0 kg/m3 … … 81 81 82 82 REAL, PARAMETER :: TfSnow=273.15e+0,csnow=2105.00e+0,r0sno=3.00e+1, & 83 & blsno=3.30e+2, Lf_H2O=3.337e+583 blsno=3.30e+2, Lf_H2O=3.337e+5 84 84 !C +... TfSnow: Snow melting Temperature= 273.15d+0 K 85 85 !C + csnow:Heat Capacity of Snow 2105 J/kg/K -
LMDZ6/branches/Amaury_dev/libf/phylmd/inlandsis/surf_inlandsis_mod.F90
r5086 r5087 501 501 write(un_outfor, *) fn_outfor, ikl, dt__SV, rlon(ikl2i(ikl)), rlat(ikl2i(ikl)) 502 502 write(un_outfor, *) 'nsnow - albedo - z0m - z0h , dz [m,30], temp [K,41], rho [kg/m3,41], eta [kg/kg,41] & 503 &G1 [-,30], G2 [-,30], agesnow [d,30], history [-,30], DOP [m,30]'503 G1 [-,30], G2 [-,30], agesnow [d,30], history [-,30], DOP [m,30]' 504 504 END IF 505 505 … … 963 963 dz_8SV(isl) = 0.125 * dz_dSV(isl) 964 964 dzAvSV(isl) = 0.125 * dz_dSV(islmSV(isl)) & 965 &+ 0.750 * dz_dSV(isl) &966 &+ 0.125 * dz_dSV(islpSV(isl))965 + 0.750 * dz_dSV(isl) & 966 + 0.125 * dz_dSV(islpSV(isl)) 967 967 zz_dSV = zz_dSV + dz_dSV(isl) 968 968 END DO … … 986 986 rocsSV(ist) = (1.0 - etadSV(ist)) * 1.2E+6 ! Soil Contrib. to (ro c)_s 987 987 s1__SV(ist) = bCHdSV(ist) & ! Factor of (eta)**(b+2) 988 &* psidSV(ist) * Ks_dSV(ist) & ! in DR97, Eqn.(3.36)989 &/ (etadSV(ist)**(bCHdSV(ist) + 3.)) !988 * psidSV(ist) * Ks_dSV(ist) & ! in DR97, Eqn.(3.36) 989 / (etadSV(ist)**(bCHdSV(ist) + 3.)) ! 990 990 s2__SV(ist) = Ks_dSV(ist) & ! Factor of (eta)**(2b+3) 991 &/ (etadSV(ist)**(2. * bCHdSV(ist) + 3.)) ! in DR97, Eqn.(3.35)991 / (etadSV(ist)**(2. * bCHdSV(ist) + 3.)) ! in DR97, Eqn.(3.35) 992 992 993 993 !C +--Soil Minimum Humidity (from a prescribed minimum relative Humidity) … … 995 995 Psimax = -(log(RHsMin)) / 7.2E-5 ! DR97, Eqn 3.15 Inversion 996 996 etamSV(ist) = etadSV(ist) & 997 &* (PsiMax / psidSV(ist))**(-min(10., 1. / bCHdSV(ist)))997 * (PsiMax / psidSV(ist))**(-min(10., 1. / bCHdSV(ist))) 998 998 END DO 999 999 etamSV(12) = 0. … … 1008 1008 DO ikh = 0, nkhy 1009 1009 Khyd_1 = s2__SV(ist) & ! DR97, Eqn.(3.35) 1010 &* (eta__1 **(2. * bCHdSV(ist) + 3.)) !1010 * (eta__1 **(2. * bCHdSV(ist) + 3.)) ! 1011 1011 Khyd_2 = s2__SV(ist) &! 1012 &* (eta__2 **(2. * bCHdSV(ist) + 3.)) !1012 * (eta__2 **(2. * bCHdSV(ist) + 3.)) ! 1013 1013 1014 1014 a_Khyd = (Khyd_2 - Khyd_1) / d__eta ! -
LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_ini.F90
r5075 r5087 148 148 WRITE(date0,'(i4.4,"-",i2.2,"-",i2.2)') an0,mois0,jour0 149 149 ierr=NF_PUT_ATT_TEXT(nid, nvarid,'units',33, & 150 &"seconds since "//date0//" 00:00:00")150 "seconds since "//date0//" 00:00:00") 151 151 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',9,calendrier) 152 152 !ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',4,'360d') … … 155 155 WRITE(date0b,'(i4.4,"-",a3,"-",i2.2)') an0,cmois(mois0),jour0 156 156 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'time_origin',20, & 157 &date0b//' 00:00:00')157 date0b//' 00:00:00') 158 158 ierr=NF_ENDDEF(nid) 159 159 -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_call_cloud_optics_prop.F90
r5082 r5087 101 101 IF (ok_new_lscp) THEN 102 102 CALL icefrac_lscp(klon,temp(:,k),iflag_ice_thermo,distcltop(:,k),temp_cltop(:,k), & 103 &icefrac_optics(:,k),dzfice(:,k))103 icefrac_optics(:,k),dzfice(:,k)) 104 104 ELSE 105 105 CALL icefrac_lsc(klon,temp(:,k),pplay(1:klon,k)/paprs(1:klon,1),icefrac_optics(:,k)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_cloud_optics_prop.F90
r5082 r5087 306 306 iwc=icefrac_optics(i, k)*radocond(i, k)/pclc(i,k)*zrho(i,k)*1000. !in cloud ice water content in g/m3 307 307 dei=(1.2351+0.0105*(temp(i,k)-273.15))*(45.8966*(iwc**0.2214) + & 308 &0.7957*(iwc**0.2535)*(temp(i,k)-83.15))308 0.7957*(iwc**0.2535)*(temp(i,k)-83.15)) 309 309 !deimax=155.0 310 310 !deimin=20.+40*cos(abs(latitude_deg(i))/180.*RPI) … … 414 414 iwc=icefrac_optics(i, k)*radocond(i, k)/pclc(i,k)*zrho(i,k)*1000. !in cloud ice water content in g/m3 415 415 dei=(1.2351+0.0105*(temp(i,k)-273.15))*(45.8966*(iwc**0.2214) + & 416 &0.7957*(iwc**0.2535)*(temp(i,k)-83.15))416 0.7957*(iwc**0.2535)*(temp(i,k)-83.15)) 417 417 !deimax=155.0 418 418 !deimin=20.+40*cos(abs(latitude_deg(i))/180.*RPI) … … 633 633 IF (first) THEN 634 634 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM_ & 635 & & 636 &RANDOM'635 636 RANDOM' 637 637 first = .FALSE. 638 638 ENDIF -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_cloud_optics_prop_ini.F90
r4707 r5087 44 44 45 45 SUBROUTINE cloud_optics_prop_ini(klon, prt_level_in, lunout_in, flag_aerosol_in, & 46 &ok_cdnc_in, bl95_b0_in, &47 &bl95_b1_in, latitude_deg_in, rpi_in, rg_in, rd_in, zepsec_in, novlp_in, &48 &iflag_ice_thermo_in, ok_new_lscp_in)46 ok_cdnc_in, bl95_b0_in, & 47 bl95_b1_in, latitude_deg_in, rpi_in, rg_in, rd_in, zepsec_in, novlp_in, & 48 iflag_ice_thermo_in, ok_new_lscp_in) 49 49 50 50 USE ioipsl_getin_p_mod, ONLY : getin_p -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_cloudth.F90
r5082 r5087 7 7 8 8 SUBROUTINE cloudth(ngrid,klev,ind2, & 9 & ztv,po,zqta,fraca, &10 &qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, &11 &ratqs,zqs,t, &12 &cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)9 ztv,po,zqta,fraca, & 10 qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, & 11 ratqs,zqs,t, & 12 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 13 13 14 14 … … 81 81 IF (iflag_cloudth_vert>=1) THEN 82 82 CALL cloudth_vert(ngrid,klev,ind2, & 83 & ztv,po,zqta,fraca, &84 &qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, &85 &ratqs,zqs,t)83 ztv,po,zqta,fraca, & 84 qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, & 85 ratqs,zqs,t) 86 86 RETURN 87 87 ENDIF … … 254 254 !=========================================================================== 255 255 SUBROUTINE cloudth_vert(ngrid,klev,ind2, & 256 & ztv,po,zqta,fraca, &257 &qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, &258 &ratqs,zqs,t)256 ztv,po,zqta,fraca, & 257 qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, & 258 ratqs,zqs,t) 259 259 260 260 !=========================================================================== … … 581 581 582 582 SUBROUTINE cloudth_v3(ngrid,klev,ind2, & 583 & ztv,po,zqta,fraca, &584 &qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &585 &ratqs,zqs,t, &586 &cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)583 ztv,po,zqta,fraca, & 584 qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 585 ratqs,zqs,t, & 586 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 587 587 588 588 use lmdz_cloudth_ini, only: iflag_cloudth_vert … … 653 653 IF (iflag_cloudth_vert>=1) THEN 654 654 CALL cloudth_vert_v3(ngrid,klev,ind2, & 655 & ztv,po,zqta,fraca, &656 &qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &657 &ratqs,zqs,t, &658 &cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)655 ztv,po,zqta,fraca, & 656 qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 657 ratqs,zqs,t, & 658 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 659 659 RETURN 660 660 ENDIF … … 808 808 !=========================================================================== 809 809 SUBROUTINE cloudth_vert_v3(ngrid,klev,ind2, & 810 & ztv,po,zqta,fraca, &811 &qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &812 &ratqs,zqs,t, &813 &cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)810 ztv,po,zqta,fraca, & 811 qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 812 ratqs,zqs,t, & 813 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 814 814 815 815 !=========================================================================== … … 970 970 971 971 sigma1s_fraca = (sigma1s_factor**0.5)*(fraca(ind1,ind2)**sigma1s_power) / & 972 &(1-fraca(ind1,ind2))*((sth-senv)**2)**0.5972 (1-fraca(ind1,ind2))*((sth-senv)**2)**0.5 973 973 ! sigma1s_fraca = (1.1**0.5)*(fraca(ind1,ind2)**0.6)/(1-fraca(ind1,ind2))*((sth-senv)**2)**0.5 974 974 IF (cloudth_ratqsmin>0.) THEN … … 1239 1239 1240 1240 SUBROUTINE cloudth_v6(ngrid,klev,ind2, & 1241 & ztv,po,zqta,fraca, &1242 &qcloud,ctot_surf,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &1243 &ratqs,zqs,T, &1244 &cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)1241 ztv,po,zqta,fraca, & 1242 qcloud,ctot_surf,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 1243 ratqs,zqs,T, & 1244 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 1245 1245 1246 1246 use lmdz_cloudth_ini, only: iflag_cloudth_vert … … 1691 1691 1692 1692 sigma1s_fraca = (sigma1s_factor**0.5)*(frac_th(ind1)**sigma1s_power) / & 1693 &(1-frac_th(ind1))*((sth-senv)**2)**0.51693 (1-frac_th(ind1))*((sth-senv)**2)**0.5 1694 1694 1695 1695 IF (cloudth_ratqsmin>0.) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_lscp.F90
r5082 r5087 1010 1010 ! temperature update due to phase change 1011 1011 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) & 1012 &* RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) &1012 * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) & 1013 1013 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) 1014 1014 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_lscp_old.F90
r5082 r5087 709 709 zdqs(i) = FOEDE(zt(i),zdelta,zcvm5,zqs(i),zcor) 710 710 zdqsdT_raw(i) = zdqs(i)* & 711 &RCPD*(1.0+RVTMP2*zq(i)) / (RLVTT*(1.-zdelta) + RLSTT*zdelta)711 RCPD*(1.0+RVTMP2*zq(i)) / (RLVTT*(1.-zdelta) + RLSTT*zdelta) 712 712 ENDDO 713 713 ELSE … … 966 966 zfice(i) = zfice(i)**exposant_glace_old 967 967 dzfice(i)= exposant_glace_old * zfice(i)**(exposant_glace_old-1) & 968 &/ (t_glace_min_old - RTT)968 / (t_glace_min_old - RTT) 969 969 endif 970 970 971 971 if (iflag_t_glace>=1.and.zfice(i)>0.) then 972 972 dzfice(i)= exposant_glace * zfice(i)**(exposant_glace-1) & 973 &/ (t_glace_min - t_glace_max)973 / (t_glace_min - t_glace_max) 974 974 endif 975 975 … … 987 987 if (fl_cor_ebil > 0) then 988 988 num = -Tbef(i)+zt(i)+rneb(i,k)*((1-zfice(i))*RLVTT & 989 &+zfice(i)*RLSTT)/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)))*qlbef(i)989 +zfice(i)*RLSTT)/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)))*qlbef(i) 990 990 denom = 1.+rneb(i,k)*((1-zfice(i))*RLVTT+zfice(i)*RLSTT)/cste*zdqs(i) & 991 991 -(RLSTT-RLVTT)/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)))*rneb(i,k) & 992 &*qlbef(i)*dzfice(i)992 *qlbef(i)*dzfice(i) 993 993 else 994 994 num = -Tbef(i)+zt(i)+rneb(i,k)*((1-zfice(i))*RLVTT & 995 &+zfice(i)*RLSTT)/RCPD/(1.0+RVTMP2*zq(i))*qlbef(i)995 +zfice(i)*RLSTT)/RCPD/(1.0+RVTMP2*zq(i))*qlbef(i) 996 996 denom = 1.+rneb(i,k)*((1-zfice(i))*RLVTT+zfice(i)*RLSTT)/cste*zdqs(i) & 997 997 -(RLSTT-RLVTT)/RCPD/(1.0+RVTMP2*zq(i))*rneb(i,k)*qlbef(i)*dzfice(i) … … 1151 1151 if (fl_cor_ebil > 0) then 1152 1152 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) & 1153 &* RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) &1153 * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) & 1154 1154 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)+zcond(i))) 1155 1155 else -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_ratqs_multi.F90
r5082 r5087 105 105 po(:,:) = q_seri(:,:) 106 106 call thermcell_dq(klon,klev,dqimpl,pdtphys,fm0,entr0,zmasse, & 107 &po,pdoadj,zoa,lev_out)107 po,pdoadj,zoa,lev_out) 108 108 do k=1,klev 109 109 do i=1,klon … … 112 112 enddo 113 113 call thermcell_dq(klon,klev,dqimpl,pdtphys,fm0,entr0,zmasse, & 114 & pocarre,pdocarreadj,zocarrea,lev_out)114 pocarre,pdocarreadj,zocarrea,lev_out) 115 115 116 116 -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_alim.F90
r4590 r5087 45 45 if (ztv(ig,l)> ztv(ig,l+1) .and. ztv(ig,1)>=ztv(ig,l) ) then 46 46 alim_star(ig,l)=MAX((ztv(ig,l)-ztv(ig,l+1)),0.) & 47 & *sqrt(zlev(ig,l+1))47 *sqrt(zlev(ig,l+1)) 48 48 lalim(ig)=l+1 49 49 alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l) -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_alp.F90
r5082 r5087 5 5 6 6 SUBROUTINE thermcell_alp(ngrid,nlay,ptimestep & ! in 7 &,pplay,pplev & ! in8 &,fm0,entr0,lmax & ! in9 &,pbl_tke,pctsrf,omega,airephy & ! in10 &,zw2,fraca & ! in11 &,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax & ! in7 ,pplay,pplev & ! in 8 ,fm0,entr0,lmax & ! in 9 ,pbl_tke,pctsrf,omega,airephy & ! in 10 ,zw2,fraca & ! in 11 ,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax & ! in 12 12 ! 13 &,zcong,ale_bl,alp_bl,lalim_conv,wght_th & ! out14 &,zlcl,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 & ! out15 &,n2,s2,strig,ale_bl_stat & ! out16 &,therm_tke_max,env_tke_max & ! out17 &,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke & ! out18 &,alp_bl_conv,alp_bl_stat & ! out19 &)13 ,zcong,ale_bl,alp_bl,lalim_conv,wght_th & ! out 14 ,zlcl,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 & ! out 15 ,n2,s2,strig,ale_bl_stat & ! out 16 ,therm_tke_max,env_tke_max & ! out 17 ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke & ! out 18 ,alp_bl_conv,alp_bl_stat & ! out 19 ) 20 20 21 21 USE indice_sol_mod … … 161 161 if (ok_lcl(ig)) then 162 162 rhobarz0(ig)=rhobarz(ig,klcl(ig))+(rhobarz(ig,klcl(ig)+1) & 163 &-rhobarz(ig,klcl(ig)))*interp(ig)163 -rhobarz(ig,klcl(ig)))*interp(ig) 164 164 zlcl(ig)=(pplev(ig,1)-pcon(ig))/(rhobarz0(ig)*RG) 165 165 zlcl(ig)=min(zlcl(ig),zmax(ig)) ! Si zlcl > zmax alors on pose zlcl = zmax … … 200 200 !-----Calcul de la TKE transport�e par les thermiques : therm_tke_max 201 201 call thermcell_tke_transport(ngrid,nlay,ptimestep,fm0,entr0, & ! in 202 &rg,pplev,therm_tke_max) ! out202 rg,pplev,therm_tke_max) ! out 203 203 ! print *,' thermcell_tke_transport -> ' !!jyg 204 204 … … 216 216 if (ok_lcl(ig)) then 217 217 fraca0(ig)=fraca(ig,klcl(ig))+(fraca(ig,klcl(ig)+1) & 218 &-fraca(ig,klcl(ig)))*interp(ig)218 -fraca(ig,klcl(ig)))*interp(ig) 219 219 w0(ig)=zw2(ig,klcl(ig))+(zw2(ig,klcl(ig)+1) & 220 &-zw2(ig,klcl(ig)))*interp(ig)220 -zw2(ig,klcl(ig)))*interp(ig) 221 221 w_conv(ig)=w_ls(ig,klcl(ig))+(w_ls(ig,klcl(ig)+1) & 222 &-w_ls(ig,klcl(ig)))*interp(ig)222 -w_ls(ig,klcl(ig)))*interp(ig) 223 223 therm_tke_max0(ig)=therm_tke_max(ig,klcl(ig)) & 224 &+(therm_tke_max(ig,klcl(ig)+1)-therm_tke_max(ig,klcl(ig)))*interp(ig)224 +(therm_tke_max(ig,klcl(ig)+1)-therm_tke_max(ig,klcl(ig)))*interp(ig) 225 225 env_tke_max0(ig)=env_tke_max(ig,klcl(ig))+(env_tke_max(ig,klcl(ig)+1) & 226 &-env_tke_max(ig,klcl(ig)))*interp(ig)226 -env_tke_max(ig,klcl(ig)))*interp(ig) 227 227 pbl_tke_max0(ig)=pbl_tke_max(ig,klcl(ig))+(pbl_tke_max(ig,klcl(ig)+1) & 228 &-pbl_tke_max(ig,klcl(ig)))*interp(ig)228 -pbl_tke_max(ig,klcl(ig)))*interp(ig) 229 229 if (therm_tke_max0(ig)>=20.) therm_tke_max0(ig)=20. 230 230 if (env_tke_max0(ig)>=20.) env_tke_max0(ig)=20. … … 316 316 alp_bl_det(ig)=0.5*coef_m*rhobarz0(ig)*(w0(ig)**3)*fraca0(ig)*(1.-2.*fraca0(ig))/((1.-fraca0(ig))**2) 317 317 alp_bl_fluct_m(ig)=1.5*rhobarz0(ig)*fraca0(ig)*(w_conv(ig)+coef_m*w0(ig))* & 318 &(w0(ig)**2)318 (w0(ig)**2) 319 319 alp_bl_fluct_tke(ig)=3.*coef_m*rhobarz0(ig)*w0(ig)*fraca0(ig)*(therm_tke_max0(ig)-env_tke_max0(ig)) & 320 &+3.*rhobarz0(ig)*w_conv(ig)*pbl_tke_max0(ig)320 +3.*rhobarz0(ig)*w_conv(ig)*pbl_tke_max0(ig) 321 321 if (iflag_clos_bl>=2) then 322 322 alp_bl_conv(ig)=1.5*coef_m*rhobarz0(ig)*fraca0(ig)*(fraca0(ig)/(1.-fraca0(ig)))*w_conv(ig)* & 323 &(w0(ig)**2)323 (w0(ig)**2) 324 324 else 325 325 alp_bl_conv(ig)=0. -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_closure.F90
r4590 r5087 6 6 7 7 SUBROUTINE thermcell_closure(ngrid,nlay,r_aspect,ptimestep,rho, & 8 &zlev,lalim,alim_star,zmax,wmax,f)8 zlev,lalim,alim_star,zmax,wmax,f) 9 9 10 10 !------------------------------------------------------------------------- -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_down.F90
r5082 r5087 219 219 220 220 SUBROUTINE thermcell_down(ngrid,nlay,po,pt,pu,pv,pplay,pplev, & 221 &lmax,fup,eup,dup,theta)221 lmax,fup,eup,dup,theta) 222 222 223 223 !-------------------------------------------------------------- -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dq.F90
r5082 r5087 3 3 4 4 subroutine thermcell_dq(ngrid,nlay,impl,ptimestep,fm,entr, & 5 &masse,q,dq,qa,lev_out)5 masse,q,dq,qa,lev_out) 6 6 USE print_control_mod, ONLY: prt_level 7 7 … … 46 46 47 47 call thermcell_dq_o(ngrid,nlay,impl,ptimestep,fm,entr, & 48 &masse,q,dq,qa,lev_out)48 masse,q,dq,qa,lev_out) 49 49 50 50 else … … 99 99 do ig=1,ngrid 100 100 if ((fm(ig,k+1)+detr(ig,k))*ptimestep> & 101 &1.e-5*masse(ig,k)) then101 1.e-5*masse(ig,k)) then 102 102 qa(ig,k)=(fm(ig,k)*qa(ig,k-1)+entr(ig,k)*q(ig,k)) & 103 &/(fm(ig,k+1)+detr(ig,k))103 /(fm(ig,k+1)+detr(ig,k)) 104 104 else 105 105 qa(ig,k)=q(ig,k) … … 125 125 do k=1,nlay-1 126 126 q(:,k)=q(:,k)+(fqa(:,k)-fqa(:,k+1)-fm(:,k)*q(:,k)+fm(:,k+1)*q(:,k+1)) & 127 &*ptimestep/masse(:,k)127 *ptimestep/masse(:,k) 128 128 enddo 129 129 else … … 135 135 ! & /(fm(:,k)+masse(:,k)/ptimestep) 136 136 q(:,k)=(q(:,k)+ptimestep/masse(:,k)*(fqa(:,k)-fqa(:,k+1)+fm(:,k+1)*q(:,k+1))) & 137 &/(1.+fm(:,k)*ptimestep/masse(:,k))137 /(1.+fm(:,k)*ptimestep/masse(:,k)) 138 138 ! FH fin de modif. 139 139 enddo … … 158 158 159 159 subroutine thermcell_dq_o(ngrid,nlay,impl,ptimestep,fm,entr, & 160 &masse,q,dq,qa,lev_out)160 masse,q,dq,qa,lev_out) 161 161 USE print_control_mod, ONLY: prt_level 162 162 implicit none … … 254 254 do ig=1,ngrid 255 255 if ((fm(ig,k+1)+detr(ig,k))*ztimestep> & 256 &1.e-5*masse(ig,k)) then256 1.e-5*masse(ig,k)) then 257 257 qa(ig,k)=(fm(ig,k)*qa(ig,k-1)+entr(ig,k)*q(ig,k)) & 258 &/(fm(ig,k+1)+detr(ig,k))258 /(fm(ig,k+1)+detr(ig,k)) 259 259 else 260 260 qa(ig,k)=q(ig,k) … … 307 307 do ig=1,ngrid 308 308 q(ig,k)=q(ig,k)+(detr(ig,k)*qa(ig,k)-entr(ig,k)*q(ig,k) & 309 &-wqd(ig,k)+wqd(ig,k+1)) &310 &*ztimestep/masse(ig,k)309 -wqd(ig,k)+wqd(ig,k+1)) & 310 *ztimestep/masse(ig,k) 311 311 ! if (dq(ig,k).lt.0.) then 312 312 ! print*,'dq<0!!!' -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dry.F90
r5082 r5087 6 6 7 7 SUBROUTINE thermcell_dry(ngrid,nlay,zlev,pphi,ztv,alim_star, & 8 &lalim,lmin,zmax,wmax)8 lalim,lmin,zmax,wmax) 9 9 10 10 !-------------------------------------------------------------------------- … … 81 81 82 82 zw2(ig,l+1)=2.*RG*(ztv(ig,l)-ztv(ig,l+1))/ztv(ig,l+1) & 83 &*(zlev(ig,l+1)-zlev(ig,l)) &84 &*0.4*pphi(ig,l)/(pphi(ig,l+1)-pphi(ig,l))83 *(zlev(ig,l+1)-zlev(ig,l)) & 84 *0.4*pphi(ig,l)/(pphi(ig,l+1)-pphi(ig,l)) 85 85 86 86 !------------------------------------------------------------------------ … … 96 96 97 97 ztva(ig,l)=(f_star(ig,l)*ztva(ig,l-1)+alim_star(ig,l) & 98 &*ztv(ig,l))/f_star(ig,l+1)98 *ztv(ig,l))/f_star(ig,l+1) 99 99 zw2(ig,l+1)=zw2(ig,l)*(f_star(ig,l)/f_star(ig,l+1))**2+ & 100 &2.*RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) &101 &*(zlev(ig,l+1)-zlev(ig,l))100 2.*RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) & 101 *(zlev(ig,l+1)-zlev(ig,l)) 102 102 endif 103 103 ! determination de zmax continu par interpolation lineaire … … 114 114 if (zw2(ig,l+1)<0.) then 115 115 linter(ig)=(l*(zw2(ig,l+1)-zw2(ig,l)) & 116 &-zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l))116 -zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l)) 117 117 zw2(ig,l+1)=0. 118 118 lmax(ig)=l … … 121 121 elseif (f_star(ig,l+1)<0.) then 122 122 linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l)) & 123 &-f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))123 -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l)) 124 124 zw2(ig,l+1)=0. 125 125 lmax(ig)=l … … 161 161 ! calcul de zlevinter 162 162 zlevinter(ig)=zlev(ig,lmax(ig)) + & 163 &(linter(ig)-lmax(ig))*(zlev(ig,lmax(ig)+1)-zlev(ig,lmax(ig)))163 (linter(ig)-lmax(ig))*(zlev(ig,lmax(ig)+1)-zlev(ig,lmax(ig))) 164 164 zmax(ig)=max(zmax(ig),zlevinter(ig)-zlev(ig,lmin(ig))) 165 165 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dtke.F90
r5082 r5087 3 3 4 4 subroutine thermcell_dtke(ngrid,nlay,nsrf,ptimestep,fm0,entr0, & 5 &rg,pplev,tke)5 rg,pplev,tke) 6 6 USE print_control_mod, ONLY: prt_level 7 7 implicit none … … 74 74 do ig=1,ngrid 75 75 if ((fm(ig,k+1)+detr(ig,k))*ptimestep> & 76 &1.e-5*masse(ig,k)) then76 1.e-5*masse(ig,k)) then 77 77 qa(ig,k)=(fm(ig,k)*qa(ig,k-1)+entr(ig,k)*q(ig,k)) & 78 &/(fm(ig,k+1)+detr(ig,k))78 /(fm(ig,k+1)+detr(ig,k)) 79 79 else 80 80 qa(ig,k)=q(ig,k) … … 109 109 do ig=1,ngrid 110 110 q(ig,k)=q(ig,k)+(detr(ig,k)*qa(ig,k)-entr(ig,k)*q(ig,k) & 111 &-wqd(ig,k)+wqd(ig,k+1)) &112 &*ptimestep/masse(ig,k)111 -wqd(ig,k)+wqd(ig,k+1)) & 112 *ptimestep/masse(ig,k) 113 113 enddo 114 114 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_dv2.F90
r5082 r5087 3 3 4 4 subroutine thermcell_dv2(ngrid,nlay,ptimestep,fm,entr,masse & 5 &,fraca,larga &6 &,u,v,du,dv,ua,va,lev_out)5 ,fraca,larga & 6 ,u,v,du,dv,ua,va,lev_out) 7 7 USE print_control_mod, ONLY: prt_level,lunout 8 8 implicit none … … 68 68 69 69 IF(prt_level>9)WRITE(lunout,*) & 70 &'WARNING on initialise gamma(1:ngrid,1)=0.'70 'WARNING on initialise gamma(1:ngrid,1)=0.' 71 71 gamma(1:ngrid,1)=0. 72 72 do k=2,nlay … … 75 75 if(ltherm(ig,k).and.larga(ig)>0.) then 76 76 gamma0(ig,k)=masse(ig,k) & 77 &*sqrt( 0.5*(fraca(ig,k+1)+fraca(ig,k)) ) &78 &*0.5/larga(ig) &79 &*1.77 *sqrt( 0.5*(fraca(ig,k+1)+fraca(ig,k)) ) & 78 *0.5/larga(ig) & 79 *1. 80 80 else 81 81 gamma0(ig,k)=0. … … 122 122 gamma(ig,k)=gamma0(ig,k)*sqrt(dua(ig,k)**2+dva(ig,k)**2) 123 123 ua(ig,k)=(fm(ig,k)*ua(ig,k-1) & 124 &+(zf2*entr(ig,k)+gamma(ig,k))*u(ig,k)) &125 &/(fm(ig,k+1)+detr(ig,k)+entr(ig,k)*zf*zf2 &126 &+gamma(ig,k))124 +(zf2*entr(ig,k)+gamma(ig,k))*u(ig,k)) & 125 /(fm(ig,k+1)+detr(ig,k)+entr(ig,k)*zf*zf2 & 126 +gamma(ig,k)) 127 127 va(ig,k)=(fm(ig,k)*va(ig,k-1) & 128 &+(zf2*entr(ig,k)+gamma(ig,k))*v(ig,k)) &129 &/(fm(ig,k+1)+detr(ig,k)+entr(ig,k)*zf*zf2 &130 &+gamma(ig,k))128 +(zf2*entr(ig,k)+gamma(ig,k))*v(ig,k)) & 129 /(fm(ig,k+1)+detr(ig,k)+entr(ig,k)*zf*zf2 & 130 +gamma(ig,k)) 131 131 ! print*,k,ua(ig,k),va(ig,k),u(ig,k),v(ig,k),dua(ig,k),dva(ig,k) 132 132 dua(ig,k)=ua(ig,k)-u(ig,k) … … 163 163 do ig=1,ngrid 164 164 du(ig,k)=((detr(ig,k)+gamma(ig,k))*ua(ig,k) & 165 &-(entr(ig,k)+gamma(ig,k))*ue(ig,k) &166 &-wud(ig,k)+wud(ig,k+1)) &167 &/masse(ig,k)165 -(entr(ig,k)+gamma(ig,k))*ue(ig,k) & 166 -wud(ig,k)+wud(ig,k+1)) & 167 /masse(ig,k) 168 168 dv(ig,k)=((detr(ig,k)+gamma(ig,k))*va(ig,k) & 169 &-(entr(ig,k)+gamma(ig,k))*ve(ig,k) &170 &-wvd(ig,k)+wvd(ig,k+1)) &171 &/masse(ig,k)169 -(entr(ig,k)+gamma(ig,k))*ve(ig,k) & 170 -wvd(ig,k)+wvd(ig,k+1)) & 171 /masse(ig,k) 172 172 enddo 173 173 enddo … … 181 181 do ig=1,ngrid 182 182 print*,'th_dv2 ig k gamma entr detr ua ue va ve wud wvd masse',ig,k,gamma(ig,k), & 183 &entr(ig,k),detr(ig,k),ua(ig,k),ue(ig,k),va(ig,k),ve(ig,k),wud(ig,k),wvd(ig,k),wud(ig,k+1),wvd(ig,k+1), &184 &masse(ig,k)183 entr(ig,k),detr(ig,k),ua(ig,k),ue(ig,k),va(ig,k),ve(ig,k),wud(ig,k),wvd(ig,k),wud(ig,k+1),wvd(ig,k+1), & 184 masse(ig,k) 185 185 enddo 186 186 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_env.F90
r5082 r5087 3 3 4 4 SUBROUTINE thermcell_env(ngrid,nlay,po,pt,pu,pv,pplay, & 5 &pplev,zo,zh,zl,ztv,zthl,zu,zv,zpspsk,pqsat,lcong,lintercong,lev_out)5 pplev,zo,zh,zl,ztv,zthl,zu,zv,zpspsk,pqsat,lcong,lintercong,lev_out) 6 6 7 7 !-------------------------------------------------------------- … … 89 89 lcong(ig)=ll+1 90 90 lintercong(ig)=(ll*(zh(ig,ll+1)-zh(ig,ll)) & 91 &-zh(ig,ll)+273.15)/(zh(ig,ll+1)-zh(ig,ll))91 -zh(ig,ll)+273.15)/(zh(ig,ll+1)-zh(ig,ll)) 92 92 endif 93 93 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_flux2.F90
r5082 r5087 6 6 7 7 SUBROUTINE thermcell_flux2(ngrid,nlay,ptimestep,masse, & 8 &lalim,lmax,alim_star, &9 &entr_star,detr_star,f,rhobarz,zlev,zw2,fm,entr, &10 &detr,zqla,lev_out,lunout1,igout)8 lalim,lmax,alim_star, & 9 entr_star,detr_star,f,rhobarz,zlev,zw2,fm,entr, & 10 detr,zqla,lev_out,lunout1,igout) 11 11 !IM 060508 & detr,zqla,zmax,lev_out,lunout,igout) 12 12 … … 79 79 write(lunout1,*) ' l E* A* D* ' 80 80 write(lunout1,'(i4,3e15.5)') (l,entr_star(igout,l),alim_star(igout,l),detr_star(igout,l) & 81 &,l=1,lmax(igout))81 ,l=1,lmax(igout)) 82 82 endif 83 83 … … 133 133 write(lunout1,*) ' l E D W2' 134 134 write(lunout1,'(i4,3e15.5)') (l,entr(igout,l),detr(igout,l) & 135 &,zw2(igout,l+1),l=1,lmax(igout))135 ,zw2(igout,l+1),l=1,lmax(igout)) 136 136 endif 137 137 … … 210 210 211 211 if (prt_level>=10) & 212 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &213 &entr(igout,l),detr(igout,l),fm(igout,l+1)212 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 213 entr(igout,l),detr(igout,l),fm(igout,l+1) 214 214 215 215 !------------------------------------------------------------------------- … … 220 220 do ig=1,ngrid 221 221 if (l>=lalim(ig).and.l<=lmax(ig) & 222 &.and.(zw2(ig,l+1)>1.e-10).and.(zw2(ig,l)>1.e-10) ) then222 .and.(zw2(ig,l+1)>1.e-10).and.(zw2(ig,l)>1.e-10) ) then 223 223 ! zzz est le flux en l+1 a frac constant 224 224 zzz=fm(ig,l)*rhobarz(ig,l+1)*zw2(ig,l+1) & 225 &/(rhobarz(ig,l)*zw2(ig,l))225 /(rhobarz(ig,l)*zw2(ig,l)) 226 226 if (fm(ig,l+1)>zzz) then 227 227 detr(ig,l)=detr(ig,l)+fm(ig,l+1)-zzz … … 235 235 236 236 if (prt_level>=10) & 237 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &238 &entr(igout,l),detr(igout,l),fm(igout,l+1)237 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 238 entr(igout,l),detr(igout,l),fm(igout,l+1) 239 239 240 240 … … 256 256 257 257 if (prt_level>=10) & 258 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &259 &entr(igout,l),detr(igout,l),fm(igout,l+1)258 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 259 entr(igout,l),detr(igout,l),fm(igout,l+1) 260 260 261 261 !fin 1.eq.0 … … 332 332 333 333 if (prt_level>=10) & 334 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &335 &entr(igout,l),detr(igout,l),fm(igout,l+1)334 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 335 entr(igout,l),detr(igout,l),fm(igout,l+1) 336 336 337 337 !------------------------------------------------------------------------- … … 366 366 367 367 if (prt_level>=10) & 368 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &369 &entr(igout,l),detr(igout,l),fm(igout,l+1)368 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 369 entr(igout,l),detr(igout,l),fm(igout,l+1) 370 370 371 371 !----------------------------------------------------------------------- … … 408 408 409 409 if (prt_level>=10) & 410 &write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, &411 &entr(igout,l),detr(igout,l),fm(igout,l+1)410 write(lunout1,'(i4,4e14.4)') l,masse(igout,l)/ptimestep, & 411 entr(igout,l),detr(igout,l),fm(igout,l+1) 412 412 413 413 ! Fin de la grande boucle sur les niveaux verticaux -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_height.F90
r5082 r5087 3 3 4 4 SUBROUTINE thermcell_height(ngrid,nlay,lalim,lmin,linter,lcong,lintercong,lmix, & 5 &zw2,zlev,lmax,zmax,zmax0,zmix,wmax,zcong)5 zw2,zlev,lmax,zmax,zmax0,zmix,wmax,zcong) 6 6 IMPLICIT NONE 7 7 … … 105 105 ! calcul de zlevinter 106 106 zlevinter(ig)=(zlev(ig,lmax(ig)+1)-zlev(ig,lmax(ig)))* & 107 &linter(ig)+zlev(ig,lmax(ig))-lmax(ig)*(zlev(ig,lmax(ig)+1) &108 &-zlev(ig,lmax(ig)))107 linter(ig)+zlev(ig,lmax(ig))-lmax(ig)*(zlev(ig,lmax(ig)+1) & 108 -zlev(ig,lmax(ig))) 109 109 !pour le cas ou on prend tjs lmin=1 110 110 ! zmax(ig)=max(zmax(ig),zlevinter(ig)-zlev(ig,lmin(ig))) … … 117 117 ! calcul de zlevintercong 118 118 zlevintercong(ig)=(zlev(ig,lcong(ig)+1)-zlev(ig,lcong(ig)))* & 119 &lintercong(ig)+zlev(ig,lcong(ig))-lcong(ig)*(zlev(ig,lcong(ig)+1) &120 &-zlev(ig,lcong(ig)))119 lintercong(ig)+zlev(ig,lcong(ig))-lcong(ig)*(zlev(ig,lcong(ig)+1) & 120 -zlev(ig,lcong(ig))) 121 121 zcong(ig)=zlevintercong(ig)-zlev(ig,1) 122 122 ! print*,"calcul zcong",lcong(ig),lintercong(ig),zlevintercong(ig),zcong(ig) … … 131 131 ! test 132 132 if (((zw2(ig,lmix(ig)-1)-zw2(ig,lmix(ig))) & 133 &*((zlev(ig,lmix(ig)))-(zlev(ig,lmix(ig)+1))) &134 &-(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) &135 &*((zlev(ig,lmix(ig)-1))-(zlev(ig,lmix(ig)))))>1e-10) &136 &then133 *((zlev(ig,lmix(ig)))-(zlev(ig,lmix(ig)+1))) & 134 -(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) & 135 *((zlev(ig,lmix(ig)-1))-(zlev(ig,lmix(ig)))))>1e-10) & 136 then 137 137 ! 138 138 zmix(ig)=((zw2(ig,lmix(ig)-1)-zw2(ig,lmix(ig))) & 139 &*((zlev(ig,lmix(ig)))**2-(zlev(ig,lmix(ig)+1))**2) &140 &-(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) &141 &*((zlev(ig,lmix(ig)-1))**2-(zlev(ig,lmix(ig)))**2)) &142 &/(2.*((zw2(ig,lmix(ig)-1)-zw2(ig,lmix(ig))) &143 &*((zlev(ig,lmix(ig)))-(zlev(ig,lmix(ig)+1))) &144 &-(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) &145 &*((zlev(ig,lmix(ig)-1))-(zlev(ig,lmix(ig))))))139 *((zlev(ig,lmix(ig)))**2-(zlev(ig,lmix(ig)+1))**2) & 140 -(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) & 141 *((zlev(ig,lmix(ig)-1))**2-(zlev(ig,lmix(ig)))**2)) & 142 /(2.*((zw2(ig,lmix(ig)-1)-zw2(ig,lmix(ig))) & 143 *((zlev(ig,lmix(ig)))-(zlev(ig,lmix(ig)+1))) & 144 -(zw2(ig,lmix(ig))-zw2(ig,lmix(ig)+1)) & 145 *((zlev(ig,lmix(ig)-1))-(zlev(ig,lmix(ig)))))) 146 146 else 147 147 zmix(ig)=zlev(ig,lmix(ig)) … … 162 162 do l=1,nlay 163 163 if (zmix(ig)>=zlev(ig,l).and. & 164 &zmix(ig)<zlev(ig,l+1)) then164 zmix(ig)<zlev(ig,l+1)) then 165 165 lmix(ig)=l 166 166 endif -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_ini.F90
r5081 r5087 48 48 49 49 SUBROUTINE thermcell_ini(iflag_thermals,prt_level_in,tau_thermals_in,lunout_in, & 50 &RG_in,RD_in,RCPD_in,RKAPPA_in,RLVTT_in,RETV_in)50 RG_in,RD_in,RCPD_in,RKAPPA_in,RLVTT_in,RETV_in) 51 51 52 52 USE ioipsl_getin_p_mod, ONLY : getin_p -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_main.F90
r5082 r5087 8 8 9 9 subroutine thermcell_main(itap,ngrid,nlay,ptimestep & 10 &,pplay,pplev,pphi,debut &11 &,puwind,pvwind,ptemp,p_o,ptemp_env, po_env &12 &,pduadj,pdvadj,pdtadj,pdoadj &13 &,fm0,entr0,detr0,zqta,zqla,lmax &14 &,ratqscth,ratqsdiff,zqsatth &15 &,zmax0, f0,zw2,fraca,ztv &16 &,zpspsk,ztla,zthl,ztva &17 &,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax,zcong &10 ,pplay,pplev,pphi,debut & 11 ,puwind,pvwind,ptemp,p_o,ptemp_env, po_env & 12 ,pduadj,pdvadj,pdtadj,pdoadj & 13 ,fm0,entr0,detr0,zqta,zqla,lmax & 14 ,ratqscth,ratqsdiff,zqsatth & 15 ,zmax0, f0,zw2,fraca,ztv & 16 ,zpspsk,ztla,zthl,ztva & 17 ,pcon,rhobarz,wth3,wmax_sec,lalim,fm,alim_star,zmax,zcong & 18 18 #ifdef ISO 19 &,xtpo,xtpdoadj &19 ,xtpo,xtpdoadj & 20 20 #endif 21 &)21 ) 22 22 23 23 … … 227 227 228 228 CALL thermcell_env(ngrid,nlay,p_o,ptemp_env,puwind,pvwind,pplay, & 229 &pplev,z_o,ztemp_env,zl,ztv,zthl,zu,zv,zpspsk,zqsat,lcong,lintercong,lev_out)229 pplev,z_o,ztemp_env,zl,ztv,zthl,zu,zv,zpspsk,zqsat,lcong,lintercong,lev_out) 230 230 231 231 else … … 417 417 ! print*,'THERM NOUVELLE/NOUVELLE Arnaud' 418 418 CALL thermcell_plume_6A(itap,ngrid,nlay,ptimestep,ztv,zthl,p_o,zl,rhobarz,& 419 &zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, &420 &lalim,f0,detr_star,entr_star,f_star,csc,ztva, &421 &ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter &422 &,lev_out,lunout1,igout)419 zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, & 420 lalim,f0,detr_star,entr_star,f_star,csc,ztva, & 421 ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter & 422 ,lev_out,lunout1,igout) 423 423 424 424 elseif (iflag_thermals_ed<=19) then 425 425 ! print*,'THERM RIO et al 2010, version d Arnaud' 426 426 CALL thermcell_plume_5B(itap,ngrid,nlay,ptimestep,ztv,zthl,p_o,zl,rhobarz,& 427 &zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, &428 &lalim,f0,detr_star,entr_star,f_star,csc,ztva, &429 &ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter &430 &,lev_out,lunout1,igout)427 zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, & 428 lalim,f0,detr_star,entr_star,f_star,csc,ztva, & 429 ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter & 430 ,lev_out,lunout1,igout) 431 431 else 432 432 CALL thermcell_plume(itap,ngrid,nlay,ptimestep,ztv,zthl,p_o,zl,rhobarz,& 433 &zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, &434 &lalim,f0,detr_star,entr_star,f_star,csc,ztva, &435 &ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter &436 &,lev_out,lunout1,igout)433 zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, & 434 lalim,f0,detr_star,entr_star,f_star,csc,ztva, & 435 ztla,zqla,zqta,zha,zw2,zw_est,ztva_est,zqsatth,lmix,lmix_bis,linter & 436 ,lev_out,lunout1,igout) 437 437 endif 438 438 … … 449 449 write(lunout1,*) ' ig l alim_star entr_star detr_star f_star ' 450 450 write(lunout1,'(i6,i4,4e15.5)') (igout,l,alim_star(igout,l),entr_star(igout,l),detr_star(igout,l) & 451 &,f_star(igout,l+1),l=1,nint(linter(igout))+5)451 ,f_star(igout,l+1),l=1,nint(linter(igout))+5) 452 452 endif 453 453 … … 457 457 ! 458 458 CALL thermcell_height(ngrid,nlay,lalim,lmin,linter,lcong,lintercong,lmix,zw2, & 459 &zlev,lmax,zmax,zmax0,zmix,wmax,zcong)459 zlev,lmax,zmax,zmax0,zmix,wmax,zcong) 460 460 ! Attention, w2 est transforme en sa racine carree dans cette routine 461 461 ! Le probleme vient du fait que linter et lmix sont souvent egaux a 1. … … 481 481 ! 482 482 CALL thermcell_dry(ngrid,nlay,zlev,pphi,ztv,alim_star, & 483 &lalim,lmin,zmax_sec,wmax_sec)483 lalim,lmin,zmax_sec,wmax_sec) 484 484 485 485 … … 494 494 write(lunout1,*) ' ig l alim_star entr_star detr_star f_star ' 495 495 write(lunout1,'(i6,i4,e15.5)') (igout,l,alim_star(igout,l) & 496 &,l=1,lalim(igout)+4)496 ,l=1,lalim(igout)+4) 497 497 endif 498 498 … … 509 509 510 510 CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho, & 511 &zlev,lalim,alim_star_clos,zmax_sec,wmax_sec,f)511 zlev,lalim,alim_star_clos,zmax_sec,wmax_sec,f) 512 512 513 513 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 517 517 518 518 CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho, & 519 &zlev,lalim,alim_star,zmax,wmax,f)519 zlev,lalim,alim_star,zmax,wmax,f) 520 520 521 521 … … 543 543 544 544 CALL thermcell_flux2(ngrid,nlay,ptimestep,masse, & 545 &lalim,lmax,alim_star, &546 &entr_star,detr_star,f,rhobarz,zlev,zw2,fm,entr, &547 &detr,zqla,lev_out,lunout1,igout)545 lalim,lmax,alim_star, & 546 entr_star,detr_star,f,rhobarz,zlev,zw2,fm,entr, & 547 detr,zqla,lev_out,lunout1,igout) 548 548 549 549 !IM 060508 & detr,zqla,zmax,lev_out,lunout,igout) … … 609 609 enddo 610 610 call thermcell_dq(ngrid,nlay,dqimpl,ptimestep,fm0,entr0,masse, & 611 &zthl,zdthladj,zta,lev_out)611 zthl,zdthladj,zta,lev_out) 612 612 613 613 do ll=1,nlay … … 617 617 enddo 618 618 call thermcell_dq(ngrid,nlay,dqimpl,ptimestep,fm0,entr0,masse, & 619 &z_o,pdoadj,z_oa,lev_out)619 z_o,pdoadj,z_oa,lev_out) 620 620 621 621 #ifdef ISO … … 629 629 enddo 630 630 call thermcell_dq(ngrid,nlay,dqimpl,ptimestep,fm0,entr0,masse, & 631 &xtpo_tmp,xtpdoadj_tmp,xtzo_tmp,lev_out)631 xtpo_tmp,xtpdoadj_tmp,xtzo_tmp,lev_out) 632 632 do ll=1,nlay 633 633 DO ig=1,ngrid … … 644 644 if (iso_eau.gt.0) then 645 645 call iso_verif_egalite(xtpo(iso_eau,ig,ll), & 646 &p_o(ig,ll),'thermcell_main 594')646 p_o(ig,ll),'thermcell_main 594') 647 647 call iso_verif_egalite(xtpdoadj(iso_eau,ig,ll), & 648 &pdoadj(ig,ll),'thermcell_main 596')648 pdoadj(ig,ll),'thermcell_main 596') 649 649 endif 650 650 if (iso_HDO.gt.0) then 651 651 call iso_verif_aberrant_encadre(xtpo(iso_hdo,ig,ll) & 652 &/p_o(ig,ll),'thermcell_main 610')652 /p_o(ig,ll),'thermcell_main 610') 653 653 endif 654 654 enddo … … 671 671 call thermcell_dv2(ngrid,nlay,ptimestep,fm0,entr0,masse & 672 672 ! & ,fraca*dvdq,zmax & 673 &,fraca,zmax &674 &,zu,zv,pduadj,pdvadj,zua,zva,lev_out)673 ,fraca,zmax & 674 ,zu,zv,pduadj,pdvadj,zua,zva,lev_out) 675 675 676 676 else … … 678 678 ! calcul purement conservatif pour le transport de V 679 679 call thermcell_dq(ngrid,nlay,dqimpl,ptimestep,fm0,entr0,masse & 680 &,zu,pduadj,zua,lev_out)680 ,zu,pduadj,zua,lev_out) 681 681 call thermcell_dq(ngrid,nlay,dqimpl,ptimestep,fm0,entr0,masse & 682 &,zv,pdvadj,zva,lev_out)682 ,zv,pdvadj,zva,lev_out) 683 683 684 684 endif … … 716 716 do ig=1,ngrid 717 717 if ((pcon(ig)<=pplay(ig,k)) & 718 &.and.(pcon(ig)>pplay(ig,k+1))) then718 .and.(pcon(ig)>pplay(ig,k+1))) then 719 719 zcon2(ig)=zlay(ig,k)-(pcon(ig)-pplay(ig,k))/(RG*rho(ig,k))/100. 720 720 endif … … 757 757 if (prt_level>=1) print*,'14d OK convect8' 758 758 if (prt_level>=10)write(lunout,*) & 759 &'WARNING thermcell_main wth2=0. si zw2 > 1.e-10'759 'WARNING thermcell_main wth2=0. si zw2 > 1.e-10' 760 760 do l=1,nlay 761 761 do ig=1,ngrid … … 770 770 endif 771 771 wth3(ig,l)=zf2*(1-2.*fraca(ig,l))/(1-fraca(ig,l)) & 772 &*zw2(ig,l)*zw2(ig,l)*zw2(ig,l)772 *zw2(ig,l)*zw2(ig,l)*zw2(ig,l) 773 773 q2(ig,l)=zf2*(zqta(ig,l)*1000.-p_o(ig,l)*1000.)**2 774 774 !test: on calcul q2/p_o=ratqsc … … 829 829 !============================================================================= 830 830 subroutine test_ltherm(ngrid,nlay,pplay,long,ztv,p_o,ztva, & ! in 831 &zqla,f_star,zw2,comment) ! in831 zqla,f_star,zw2,comment) ! in 832 832 !============================================================================= 833 833 USE lmdz_thermcell_ini, ONLY: prt_level … … 873 873 874 874 subroutine thermcell_tke_transport( & 875 &ngrid,nlay,ptimestep,fm0,entr0,rg,pplev, & ! in876 &therm_tke_max) ! out875 ngrid,nlay,ptimestep,fm0,entr0,rg,pplev, & ! in 876 therm_tke_max) ! out 877 877 USE lmdz_thermcell_ini, ONLY: prt_level 878 878 implicit none … … 942 942 do ig=1,ngrid 943 943 if ((fm(ig,k+1)+detr(ig,k))*ptimestep> & 944 &1.e-5*masse(ig,k)) then944 1.e-5*masse(ig,k)) then 945 945 qa(ig,k)=(fm(ig,k)*qa(ig,k-1)+entr(ig,k)*q(ig,k)) & 946 &/(fm(ig,k+1)+detr(ig,k))946 /(fm(ig,k+1)+detr(ig,k)) 947 947 else 948 948 qa(ig,k)=q(ig,k) … … 976 976 do ig=1,ngrid 977 977 q(ig,k)=q(ig,k)+(detr(ig,k)*qa(ig,k)-entr(ig,k)*q(ig,k) & 978 &-wqd(ig,k)+wqd(ig,k+1)) &979 &*ptimestep/masse(ig,k)978 -wqd(ig,k)+wqd(ig,k+1)) & 979 *ptimestep/masse(ig,k) 980 980 enddo 981 981 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_plume.F90
r5082 r5087 6 6 7 7 SUBROUTINE thermcell_plume(itap,ngrid,nlay,ptimestep,ztv,zthl,po,zl,rhobarz, & 8 &zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, &9 &lalim,f0,detr_star,entr_star,f_star,csc,ztva, &10 &ztla,zqla,zqta,zha,zw2,w_est,ztva_est,zqsatth,lmix,lmix_bis,linter &11 &,lev_out,lunout1,igout)8 zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, & 9 lalim,f0,detr_star,entr_star,f_star,csc,ztva, & 10 ztla,zqla,zqta,zha,zw2,w_est,ztva_est,zqsatth,lmix,lmix_bis,linter & 11 ,lev_out,lunout1,igout) 12 12 ! & ,lev_out,lunout1,igout,zbuoy,zbuoyjam) 13 13 !-------------------------------------------------------------------------- … … 227 227 ztva_est(ig,l) = ztva_est(ig,l)/zpspsk(ig,l) 228 228 ztva_est(ig,l) = ztva_est(ig,l)*(1.+RETV*(zqta(ig,l-1) & 229 &-zqla_est(ig,l))-zqla_est(ig,l))229 -zqla_est(ig,l))-zqla_est(ig,l)) 230 230 231 231 … … 265 265 coefzlmel=Min(1.,(zlmelup-zltdwn)/zdz) 266 266 zbuoyjam(ig,l)=1.*RG*(coefzlmel*(ztva_est(ig,l)- & 267 &ztv(ig,lt))/ztv(ig,lt)+(1.-coefzlmel)*(ztva_est(ig,l)- &268 &ztv(ig,lt-1))/ztv(ig,lt-1))+0.*zbuoy(ig,l)267 ztv(ig,lt))/ztv(ig,lt)+(1.-coefzlmel)*(ztva_est(ig,l)- & 268 ztv(ig,lt-1))/ztv(ig,lt-1))+0.*zbuoy(ig,l) 269 269 270 270 !------------------------------------------------ … … 303 303 304 304 detr_star(ig,l)=f_star(ig,l)*zdz & 305 &*( mix0 * 0.1 / (zalpha+0.001) &306 &+ MAX(detr_min, -afact*zbetalpha*zbuoyjam(ig,l)/zw2m &307 &+ detr_q_coef*(zdqt(ig,l)/zw2m)**detr_q_power))305 *( mix0 * 0.1 / (zalpha+0.001) & 306 + MAX(detr_min, -afact*zbetalpha*zbuoyjam(ig,l)/zw2m & 307 + detr_q_coef*(zdqt(ig,l)/zw2m)**detr_q_power)) 308 308 309 309 if ( iflag_thermals_ed == 20 ) then 310 310 entr_star(ig,l)=f_star(ig,l)*zdz* ( & 311 &mix0 * 0.1 / (zalpha+0.001) &312 &+ zbetalpha*MAX(entr_min, &313 &afact*zbuoyjam(ig,l)/zw2m - fact_epsilon))311 mix0 * 0.1 / (zalpha+0.001) & 312 + zbetalpha*MAX(entr_min, & 313 afact*zbuoyjam(ig,l)/zw2m - fact_epsilon)) 314 314 else 315 315 entr_star(ig,l)=f_star(ig,l)*zdz* ( & 316 &mix0 * 0.1 / (zalpha+0.001) &317 &+ zbetalpha*MAX(entr_min, &318 &afact*zbuoy(ig,l)/zw2m - fact_epsilon))316 mix0 * 0.1 / (zalpha+0.001) & 317 + zbetalpha*MAX(entr_min, & 318 afact*zbuoy(ig,l)/zw2m - fact_epsilon)) 319 319 endif 320 320 … … 326 326 endif 327 327 f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l) & 328 &-detr_star(ig,l)328 -detr_star(ig,l) 329 329 330 330 endif … … 341 341 Zsat=.false. 342 342 ztla(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+ & 343 &(alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) &344 &/(f_star(ig,l+1)+detr_star(ig,l))343 (alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) & 344 /(f_star(ig,l+1)+detr_star(ig,l)) 345 345 zqta(ig,l)=(f_star(ig,l)*zqta(ig,l-1)+ & 346 &(alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) &347 &/(f_star(ig,l+1)+detr_star(ig,l))346 (alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) & 347 /(f_star(ig,l+1)+detr_star(ig,l)) 348 348 349 349 endif … … 362 362 zha(ig,l) = ztva(ig,l) 363 363 ztva(ig,l) = ztva(ig,l)*(1.+RETV*(zqta(ig,l) & 364 &-zqla(ig,l))-zqla(ig,l))364 -zqla(ig,l))-zqla(ig,l)) 365 365 zbuoy(ig,l)=RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) 366 366 zdz=zlev(ig,l+1)-zlev(ig,l) … … 393 393 if (zw2(ig,l+1)<0.) then 394 394 linter(ig)=(l*(zw2(ig,l+1)-zw2(ig,l)) & 395 &-zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l))395 -zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l)) 396 396 zw2(ig,l+1)=0. 397 397 !+CR:04/05/12:correction calcul linter pour calcul de zmax continu 398 398 elseif (f_star(ig,l+1)<0.) then 399 399 linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l)) & 400 &-f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))400 -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l)) 401 401 zw2(ig,l+1)=0. 402 402 !fin CR:04/05/12 -
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_plume_6A.F90
r5082 r5087 6 6 7 7 SUBROUTINE thermcell_plume_6A(itap,ngrid,nlay,ptimestep,ztv,zthl,po,zl,rhobarz, & 8 &zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, &9 &lalim,f0,detr_star,entr_star,f_star,csc,ztva, &10 &ztla,zqla,zqta,zha,zw2,w_est,ztva_est,zqsatth,lmix,lmix_bis,linter &11 &,lev_out,lunout1,igout)8 zlev,pplev,pphi,zpspsk,alim_star,alim_star_tot, & 9 lalim,f0,detr_star,entr_star,f_star,csc,ztva, & 10 ztla,zqla,zqta,zha,zw2,w_est,ztva_est,zqsatth,lmix,lmix_bis,linter & 11 ,lev_out,lunout1,igout) 12 12 ! & ,lev_out,lunout1,igout,zbuoy,zbuoyjam) 13 13 !-------------------------------------------------------------------------- … … 225 225 ztva_est(ig,l) = ztva_est(ig,l)/zpspsk(ig,l) 226 226 ztva_est(ig,l) = ztva_est(ig,l)*(1.+RETV*(zqta(ig,l-1) & 227 &-zqla_est(ig,l))-zqla_est(ig,l))227 -zqla_est(ig,l))-zqla_est(ig,l)) 228 228 229 229 … … 278 278 atv1=(ztv(ig,lt-1)-ztv(ig,lt-2))/(zlev(ig,lt-1)-zlev(ig,lt-2)) 279 279 btv1=(ztv(ig,lt-2)*zlev(ig,lt-1)-ztv(ig,lt-1)*zlev(ig,lt-2)) & 280 &/(zlev(ig,lt-1)-zlev(ig,lt-2))280 /(zlev(ig,lt-1)-zlev(ig,lt-2)) 281 281 atv2=(ztv(ig,lt+2)-ztv(ig,lt+1))/(zlev(ig,lt+2)-zlev(ig,lt+1)) 282 282 btv2=(ztv(ig,lt+1)*zlev(ig,lt+2)-ztv(ig,lt+2)*zlev(ig,lt+1)) & 283 &/(zlev(ig,lt+2)-zlev(ig,lt+1))283 /(zlev(ig,lt+2)-zlev(ig,lt+1)) 284 284 285 285 ztv1=atv1*zlt+btv1 … … 299 299 ztv_est(ig,l)=atv2*zlmel+btv2 300 300 zbuoyjam(ig,l)=fact_shell*RG*(ztva_est(ig,l)-ztv_est(ig,l))/ztv_est(ig,l) & 301 &+(1.-fact_shell)*zbuoy(ig,l)301 +(1.-fact_shell)*zbuoy(ig,l) 302 302 elseif (zlmelup>=zinv) then 303 303 ztv_est2=atv2*0.5*(zlmelup+zinv)+btv2 … … 306 306 307 307 zbuoyjam(ig,l)=fact_shell*RG*(((zlmelup-zinv)/zdz)*(ztva_est(ig,l)- & 308 &ztv_est2)/ztv_est2+((zinv-zlmeldwn)/zdz)*(ztva_est(ig,l)- &309 &ztv_est1)/ztv_est1)+(1.-fact_shell)*zbuoy(ig,l)308 ztv_est2)/ztv_est2+((zinv-zlmeldwn)/zdz)*(ztva_est(ig,l)- & 309 ztv_est1)/ztv_est1)+(1.-fact_shell)*zbuoy(ig,l) 310 310 311 311 else 312 312 ztv_est(ig,l)=atv1*zlmel+btv1 313 313 zbuoyjam(ig,l)=fact_shell*RG*(ztva_est(ig,l)-ztv_est(ig,l))/ztv_est(ig,l) & 314 &+(1.-fact_shell)*zbuoy(ig,l)314 +(1.-fact_shell)*zbuoy(ig,l) 315 315 endif 316 316 … … 319 319 if (zlmeldwn>zltdwn) then 320 320 zbuoyjam(ig,l)=fact_shell*RG*((ztva_est(ig,l)- & 321 &ztv(ig,lt))/ztv(ig,lt))+(1.-fact_shell)*zbuoy(ig,l)321 ztv(ig,lt))/ztv(ig,lt))+(1.-fact_shell)*zbuoy(ig,l) 322 322 else 323 323 zbuoyjam(ig,l)=fact_shell*RG*(((zlmelup-zltdwn)/zdz)*(ztva_est(ig,l)- & 324 &ztv(ig,lt))/ztv(ig,lt)+((zltdwn-zlmeldwn)/zdz)*(ztva_est(ig,l)- &325 &ztv(ig,lt-1))/ztv(ig,lt-1))+(1.-fact_shell)*zbuoy(ig,l)324 ztv(ig,lt))/ztv(ig,lt)+((zltdwn-zlmeldwn)/zdz)*(ztva_est(ig,l)- & 325 ztv(ig,lt-1))/ztv(ig,lt-1))+(1.-fact_shell)*zbuoy(ig,l) 326 326 327 327 endif … … 350 350 coefzlmel=Min(1.,(zlmelup-zltdwn)/zdz) 351 351 zbuoyjam(ig,l)=1.*RG*(coefzlmel*(ztva_est(ig,l)- & 352 &ztv(ig,lt))/ztv(ig,lt)+(1.-coefzlmel)*(ztva_est(ig,l)- &353 &ztv(ig,lt-1))/ztv(ig,lt-1))+0.*zbuoy(ig,l)352 ztv(ig,lt))/ztv(ig,lt)+(1.-coefzlmel)*(ztva_est(ig,l)- & 353 ztv(ig,lt-1))/ztv(ig,lt-1))+0.*zbuoy(ig,l) 354 354 endif ! if (iflag_thermals_ed.lt.8) then 355 355 … … 488 488 489 489 detr_star(ig,l)=f_star(ig,l)*zdz & 490 &*( mix0 * 0.1 / (zalpha+0.001) &491 &+ MAX(detr_min, -afact*zbetalpha*zbuoyjam(ig,l)/zw2m &492 &+ detr_q_coef*(zdqt(ig,l)/zw2m)**detr_q_power))490 *( mix0 * 0.1 / (zalpha+0.001) & 491 + MAX(detr_min, -afact*zbetalpha*zbuoyjam(ig,l)/zw2m & 492 + detr_q_coef*(zdqt(ig,l)/zw2m)**detr_q_power)) 493 493 494 494 ! detr_star(ig,l)=(zdz/zdzbis)*detr_star(ig,l)+ & … … 498 498 499 499 entr_star(ig,l)=f_star(ig,l)*zdz* ( & 500 &mix0 * 0.1 / (zalpha+0.001) &501 &+ zbetalpha*MAX(entr_min, &502 &afact*zbuoyjam(ig,l)/zw2m - fact_epsilon))500 mix0 * 0.1 / (zalpha+0.001) & 501 + zbetalpha*MAX(entr_min, & 502 afact*zbuoyjam(ig,l)/zw2m - fact_epsilon)) 503 503 504 504 … … 531 531 ! Calcul du flux montant normalise 532 532 f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l) & 533 &-detr_star(ig,l)533 -detr_star(ig,l) 534 534 535 535 endif … … 546 546 Zsat=.false. 547 547 ztla(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+ & 548 &(alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) &549 &/(f_star(ig,l+1)+detr_star(ig,l))548 (alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) & 549 /(f_star(ig,l+1)+detr_star(ig,l)) 550 550 zqta(ig,l)=(f_star(ig,l)*zqta(ig,l-1)+ & 551 &(alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) &552 &/(f_star(ig,l+1)+detr_star(ig,l))551 (alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) & 552 /(f_star(ig,l+1)+detr_star(ig,l)) 553 553 554 554 endif … … 567 567 zha(ig,l) = ztva(ig,l) 568 568 ztva(ig,l) = ztva(ig,l)*(1.+RETV*(zqta(ig,l) & 569 &-zqla(ig,l))-zqla(ig,l))569 -zqla(ig,l))-zqla(ig,l)) 570 570 zbuoy(ig,l)=RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) 571 571 zdz=zlev(ig,l+1)-zlev(ig,l) … … 639 639 if (zw2(ig,l+1)<0.) then 640 640 linter(ig)=(l*(zw2(ig,l+1)-zw2(ig,l)) & 641 &-zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l))641 -zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l)) 642 642 zw2(ig,l+1)=0. 643 643 !+CR:04/05/12:correction calcul linter pour calcul de zmax continu 644 644 elseif (f_star(ig,l+1)<0.) then 645 645 linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l)) & 646 &-f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))646 -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l)) 647 647 zw2(ig,l+1)=0. 648 648 !fin CR:04/05/12 … … 860 860 if (ztv(ig,l)> ztv(ig,l+1) .and. ztv(ig,1)>=ztv(ig,l) ) then 861 861 alim_star(ig,l)=MAX((ztv(ig,l)-ztv(ig,l+1)),0.) & 862 & *sqrt(zlev(ig,l+1))862 *sqrt(zlev(ig,l+1)) 863 863 lalim(ig)=l+1 864 864 alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l) … … 939 939 ztva_est(ig,l) = ztva_est(ig,l)/zpspsk(ig,l) 940 940 ztva_est(ig,l) = ztva_est(ig,l)*(1.+RETV*(zqta(ig,l-1) & 941 &-zqla_est(ig,l))-zqla_est(ig,l))941 -zqla_est(ig,l))-zqla_est(ig,l)) 942 942 943 943 !------------------------------------------------ … … 977 977 978 978 entr_star(ig,l)=f_star(ig,l)*zdz* zbetalpha*MAX(0., & 979 &afact*zbuoybis/zw2m - fact_epsilon )979 afact*zbuoybis/zw2m - fact_epsilon ) 980 980 981 981 982 982 detr_star(ig,l)=f_star(ig,l)*zdz & 983 &*MAX(1.e-3, -afact*zbetalpha*zbuoy(ig,l)/zw2m &984 &+ 0.012*(zdqt(ig,l)/zw2m)**0.5 )983 *MAX(1.e-3, -afact*zbetalpha*zbuoy(ig,l)/zw2m & 984 + 0.012*(zdqt(ig,l)/zw2m)**0.5 ) 985 985 986 986 ! En dessous de lalim, on prend le max de alim_star et entr_star pour … … 993 993 ! Calcul du flux montant normalise 994 994 f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l) & 995 &-detr_star(ig,l)995 -detr_star(ig,l) 996 996 997 997 endif … … 1007 1007 Zsat=.false. 1008 1008 ztla(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+ & 1009 &(alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) &1010 &/(f_star(ig,l+1)+detr_star(ig,l))1009 (alim_star(ig,l)+entr_star(ig,l))*zthl(ig,l)) & 1010 /(f_star(ig,l+1)+detr_star(ig,l)) 1011 1011 zqta(ig,l)=(f_star(ig,l)*zqta(ig,l-1)+ & 1012 &(alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) &1013 &/(f_star(ig,l+1)+detr_star(ig,l))1012 (alim_star(ig,l)+entr_star(ig,l))*po(ig,l)) & 1013 /(f_star(ig,l+1)+detr_star(ig,l)) 1014 1014 1015 1015 endif … … 1029 1029 zha(ig,l) = ztva(ig,l) 1030 1030 ztva(ig,l) = ztva(ig,l)*(1.+RETV*(zqta(ig,l) & 1031 &-zqla(ig,l))-zqla(ig,l))1031 -zqla(ig,l))-zqla(ig,l)) 1032 1032 zbuoy(ig,l)=RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) 1033 1033 zdz=zlev(ig,l+1)-zlev(ig,l) … … 1058 1058 if (zw2(ig,l+1)<0.) then 1059 1059 linter(ig)=(l*(zw2(ig,l+1)-zw2(ig,l)) & 1060 &-zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l))1060 -zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l)) 1061 1061 zw2(ig,l+1)=0. 1062 1062 elseif (f_star(ig,l+1)<0.) then 1063 1063 linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l)) & 1064 &-f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))1064 -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l)) 1065 1065 ! print*,"linter plume", linter(ig) 1066 1066 zw2(ig,l+1)=0. -
LMDZ6/branches/Amaury_dev/libf/phylmd/methox.F90
r4593 r5087 60 60 61 61 USE YOEMETH , ONLY : RALPHA1 ,RALPHA2 ,RQLIM ,& 62 &RPBOTOX, RPBOTPH ,RPTOPOX ,RPTOPPH ,&63 & RALPHA3, RLOGPPH62 RPBOTOX, RPBOTPH ,RPTOPOX ,RPTOPPH ,& 63 RALPHA3, RLOGPPH 64 64 65 65 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/phylmd/ocean_forced_mod.F90
r5082 r5087 126 126 IF (iso_eau > 0) THEN 127 127 CALL iso_verif_egalite_choix(xtspechum(iso_eau,i), & 128 &spechum(i),'ocean_forced_mod 111', &129 & errmax,errmaxrel)128 spechum(i),'ocean_forced_mod 111', & 129 errmax,errmaxrel) 130 130 CALL iso_verif_egalite_choix(snow(i), & 131 &xtsnow(iso_eau,i),'ocean_forced_mod 117', &132 &errmax,errmaxrel)131 xtsnow(iso_eau,i),'ocean_forced_mod 117', & 132 errmax,errmaxrel) 133 133 ENDIF !IF (iso_eau > 0) THEN 134 134 ENDDO !DO i=1,knon … … 153 153 CALL limit_read_sst(knon,knindex,tsurf_lim & 154 154 #ifdef ISO 155 &,Roce,rlat &155 ,Roce,rlat & 156 156 #endif 157 &)157 ) 158 158 endif ! knon 159 159 !sb-- … … 215 215 #ifdef ISO 216 216 CALL calcul_iso_surf_oce_vectall(klon, knon,t_coup, & 217 &ps,tsurf_new,spechum,u1_lay, v1_lay, xtspechum, &218 &evap, Roce,xtevap,h1 &217 ps,tsurf_new,spechum,u1_lay, v1_lay, xtspechum, & 218 evap, Roce,xtevap,h1 & 219 219 #ifdef ISOTRAC 220 &,knindex &221 #endif 222 &)220 ,knindex & 221 #endif 222 ) 223 223 #endif 224 224 … … 229 229 DO i = 1, knon 230 230 CALL iso_verif_egalite_choix(snow(i), & 231 &xtsnow(iso_eau,i),'ocean_forced_mod 180', &232 &errmax,errmaxrel)231 xtsnow(iso_eau,i),'ocean_forced_mod 180', & 232 errmax,errmaxrel) 233 233 ENDDO ! DO j=1,knon 234 234 ENDIF !IF (iso_eau > 0) THEN … … 378 378 ! update tsoil and calculate soilcap and soilflux 379 379 CALL soil(dtime, is_sic, knon, snow, tsurf_tmp, qsol, & 380 &longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil,soilcap, soilflux)380 longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil,soilcap, soilflux) 381 381 cal(1:knon) = RCPD / soilcap(1:knon) 382 382 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) … … 430 430 IF (snow(i) > ridicule) THEN 431 431 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), & 432 &'interfsurf 964',errmax,errmaxrel)432 'interfsurf 964',errmax,errmaxrel) 433 433 ENDIF !IF ((snow(i) > ridicule)) THEN 434 434 ENDIF !IF (iso_eau > 0) THEN … … 454 454 snow, qsol, tsurf_new, evap & 455 455 #ifdef ISO 456 &,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag &457 &,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag &458 #endif 459 &)456 ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & 457 ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag & 458 #endif 459 ) 460 460 461 461 … … 467 467 !#endif 468 468 CALL calcul_iso_surf_sic_vectall(klon,knon, & 469 &evap,snow_evap_diag,Tsurf_new,Roce,snow, &470 &fq_fonte_diag,fqfonte_diag,dtime,t_coup, &471 &precip_snow,xtprecip_snow,xtprecip_rain, snow_prec,xtsnow_prec, &472 &xtspechum,spechum,ps, &473 &xtevap,xtsnow,fqcalving_diag, &474 &knindex,is_sic,run_off_lic_diag,coeff_rel_diag,Rland_ice &475 &)469 evap,snow_evap_diag,Tsurf_new,Roce,snow, & 470 fq_fonte_diag,fqfonte_diag,dtime,t_coup, & 471 precip_snow,xtprecip_snow,xtprecip_rain, snow_prec,xtsnow_prec, & 472 xtspechum,spechum,ps, & 473 xtevap,xtsnow,fqcalving_diag, & 474 knindex,is_sic,run_off_lic_diag,coeff_rel_diag,Rland_ice & 475 ) 476 476 #ifdef ISOVERIF 477 477 !write(*,*) 'ocean_forced_mod 391: sortie calcul_iso_surf_sic_vectall' … … 479 479 DO i = 1, knon 480 480 CALL iso_verif_egalite_choix(snow(i), & 481 &xtsnow(iso_eau,i),'ocean_forced_mod 396', &482 &errmax,errmaxrel)481 xtsnow(iso_eau,i),'ocean_forced_mod 396', & 482 errmax,errmaxrel) 483 483 ENDDO ! DO j=1,knon 484 484 ENDIF !IF (iso_eau > 0) then -
LMDZ6/branches/Amaury_dev/libf/phylmd/open_climoz_m.F90
r5075 r5087 64 64 IF(daily.AND.ntim/=year_len) THEN 65 65 WRITE(msg,'(a,3(i4,a))')TRIM(sub)//': Expecting a daily ozone file with',& 66 &year_len,' records (year ',year_cur,') ; found ',ntim,' instead'66 year_len,' records (year ',year_cur,') ; found ',ntim,' instead' 67 67 CALL abort_physic(sub, msg, 1) 68 68 ELSE IF(ALL([360,14]/=ntim)) THEN 69 69 WRITE(msg,'(a,i4,a)')TRIM(sub)//': Expecting an ozone file with 14 (mont'& 70 &//'hly case) or 360 (old style files) records ; found ',ntim,' instead'70 //'hly case) or 360 (old style files) records ; found ',ntim,' instead' 71 71 CALL abort_physic(sub, msg, 1) 72 72 ELSE -
LMDZ6/branches/Amaury_dev/libf/phylmd/pbl_surface_mod.F90
r5082 r5087 241 241 IF (iso_eau >= 0) THEN 242 242 CALL iso_verif_egalite_vect2D( & 243 &xtsnow,snow, &244 &'pbl_surface_mod 170',niso,klon,nbsrf)243 xtsnow,snow, & 244 'pbl_surface_mod 170',niso,klon,nbsrf) 245 245 DO i=1,klon 246 246 IF (iso_eau >= 0) THEN 247 247 CALL iso_verif_egalite(Rland_ice(iso_eau,i),1.0, & 248 &'pbl_surf_mod 177')248 'pbl_surf_mod 177') 249 249 ENDIF 250 250 ENDDO … … 319 319 !!! 320 320 #ifdef ISO 321 &,xtrain_f, xtsnow_f,xt, &322 &wake_dlxt,zxxtevap,xtevap, &323 &d_xt,d_xt_w,d_xt_x, &324 &xtsol,dflux_xt,zxxtsnow,zxfluxxt,flux_xt, &325 &h1_diag,runoff_diag,xtrunoff_diag &321 ,xtrain_f, xtsnow_f,xt, & 322 wake_dlxt,zxxtevap,xtevap, & 323 d_xt,d_xt_w,d_xt_x, & 324 xtsol,dflux_xt,zxxtsnow,zxfluxxt,flux_xt, & 325 h1_diag,runoff_diag,xtrunoff_diag & 326 326 #endif 327 &)327 ) 328 328 !**************************************************************************************** 329 329 ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818 … … 1102 1102 IF (iso_eau >= 0) THEN 1103 1103 CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 1104 &'pbl_surf_mod 585',errmax,errmaxrel)1104 'pbl_surf_mod 585',errmax,errmaxrel) 1105 1105 CALL iso_verif_egalite_choix(xtsnow_f(iso_eau,i),snow_f(i), & 1106 &'pbl_surf_mod 594',errmax,errmaxrel)1106 'pbl_surf_mod 594',errmax,errmaxrel) 1107 1107 IF (iso_verif_egalite_choix_nostop(xtsol(iso_eau,i),qsol(i), & 1108 &'pbl_surf_mod 596',errmax,errmaxrel) == 1) THEN1108 'pbl_surf_mod 596',errmax,errmaxrel) == 1) THEN 1109 1109 WRITE(*,*) 'i=',i 1110 1110 STOP … … 1112 1112 DO nsrf=1,nbsrf 1113 1113 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i,nsrf),snow(i,nsrf), & 1114 &'pbl_surf_mod 598',errmax,errmaxrel)1114 'pbl_surf_mod 598',errmax,errmaxrel) 1115 1115 ENDDO 1116 1116 ENDIF !IF (iso_eau >= 0) THEN … … 1120 1120 IF (iso_eau >= 0) THEN 1121 1121 CALL iso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), & 1122 &'pbl_surf_mod 595',errmax,errmaxrel)1122 'pbl_surf_mod 595',errmax,errmaxrel) 1123 1123 ENDIF !IF (iso_eau >= 0) THEN 1124 1124 ENDDO !DO i=1,knon … … 1708 1708 IF (iso_eau >= 0) THEN 1709 1709 call iso_verif_egalite_choix(ysnow_f(j), & 1710 &yxtsnow_f(iso_eau,j),'pbl_surf_mod 862', &1711 &errmax,errmaxrel)1710 yxtsnow_f(iso_eau,j),'pbl_surf_mod 862', & 1711 errmax,errmaxrel) 1712 1712 call iso_verif_egalite_choix(ysnow(j), & 1713 &yxtsnow(iso_eau,j),'pbl_surf_mod 872', &1714 &errmax,errmaxrel)1713 yxtsnow(iso_eau,j),'pbl_surf_mod 872', & 1714 errmax,errmaxrel) 1715 1715 ENDIF 1716 1716 #endif … … 2144 2144 AcoefH, AcoefQ, BcoefH, BcoefQ & 2145 2145 #ifdef ISO 2146 & ,yxt, CcoefXT, DcoefXT, gama_xt, AcoefXT, BcoefXT &2146 ,yxt, CcoefXT, DcoefXT, gama_xt, AcoefXT, BcoefXT & 2147 2147 #endif 2148 &)2148 ) 2149 2149 ELSE !(iflag_split .eq.0) 2150 2150 CALL climb_hq_down(knon, ycoefh_x, ypaprs, ypplay, & … … 2156 2156 AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x & 2157 2157 #ifdef ISO 2158 & ,yxt_x, CcoefXT_x, DcoefXT_x, gama_xt_x, AcoefXT_x, BcoefXT_x &2158 ,yxt_x, CcoefXT_x, DcoefXT_x, gama_xt_x, AcoefXT_x, BcoefXT_x & 2159 2159 #endif 2160 &)2160 ) 2161 2161 !!! 2162 2162 IF (prt_level >=10) THEN … … 2175 2175 AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w & 2176 2176 #ifdef ISO 2177 & ,yxt_w, CcoefXT_w, DcoefXT_w, gama_xt_w, AcoefXT_w, BcoefXT_w &2177 ,yxt_w, CcoefXT_w, DcoefXT_w, gama_xt_w, AcoefXT_w, BcoefXT_w & 2178 2178 #endif 2179 &)2179 ) 2180 2180 !!! 2181 2181 IF (prt_level >=10) THEN … … 2431 2431 yveget,ylai,yheight & 2432 2432 #ifdef ISO 2433 &,yxtrain_f, yxtsnow_f,yxt1, &2434 &yxtsnow,yxtsol,yxtevap,h1, &2435 &yrunoff_diag,yxtrunoff_diag,yRland_ice &2433 ,yxtrain_f, yxtsnow_f,yxt1, & 2434 yxtsnow,yxtsol,yxtevap,h1, & 2435 yrunoff_diag,yxtrunoff_diag,yRland_ice & 2436 2436 #endif 2437 &)2437 ) 2438 2438 2439 2439 !FC quid qd yveget ylai yheight ne sont pas definit … … 2470 2470 DO ixt=1,ntraciso 2471 2471 CALL iso_verif_noNaN(yxtevap(ixt,j), & 2472 &'pbl_surface 1056a: apres surf_land')2472 'pbl_surface 1056a: apres surf_land') 2473 2473 ENDDO 2474 2474 DO ixt=1,niso 2475 2475 CALL iso_verif_noNaN(yxtsol(ixt,j), & 2476 &'pbl_surface 1056b: apres surf_land')2476 'pbl_surface 1056b: apres surf_land') 2477 2477 ENDDO 2478 2478 ENDDO … … 2483 2483 IF (iso_eau >= 0) THEN 2484 2484 CALL iso_verif_egalite(yxtsnow(iso_eau,j), & 2485 &ysnow(j),'pbl_surf_mod 1043')2485 ysnow(j),'pbl_surf_mod 1043') 2486 2486 ENDIF !if (iso_eau.gt.0) then 2487 2487 ENDDO !DO i=1,klon … … 2510 2510 y_flux_u1, y_flux_v1 & 2511 2511 #ifdef ISO 2512 &,yxtrain_f, yxtsnow_f,yxt1,yRland_ice &2513 &,yxtsnow,yxtsol,yxtevap &2512 ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice & 2513 ,yxtsnow,yxtsol,yxtevap & 2514 2514 #endif 2515 &)2515 ) 2516 2516 2517 2517 !jyg< … … 2540 2540 DO ixt=1,ntraciso 2541 2541 CALL iso_verif_noNaN(yxtevap(ixt,j), & 2542 &'pbl_surface 1095a: apres surf_landice')2542 'pbl_surface 1095a: apres surf_landice') 2543 2543 ENDDO 2544 2544 do ixt=1,niso 2545 2545 call iso_verif_noNaN(yxtsol(ixt,j), & 2546 &'pbl_surface 1095b: apres surf_landice')2546 'pbl_surface 1095b: apres surf_landice') 2547 2547 enddo 2548 2548 enddo … … 2553 2553 IF (iso_eau >= 0) THEN 2554 2554 CALL iso_verif_egalite(yxtsnow(iso_eau,j), & 2555 &ysnow(j),'pbl_surf_mod 1064')2555 ysnow(j),'pbl_surf_mod 1064') 2556 2556 ENDIF !if (iso_eau >= 0) THEN 2557 2557 ENDDO !DO i=1,klon … … 2576 2576 ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss & 2577 2577 #ifdef ISO 2578 &,yxtrain_f, yxtsnow_f,yxt1,Roce, &2579 &yxtsnow,yxtevap,h1 &2578 ,yxtrain_f, yxtsnow_f,yxt1,Roce, & 2579 yxtsnow,yxtevap,h1 & 2580 2580 #endif 2581 &)2581 ) 2582 2582 IF (prt_level >=10) THEN 2583 2583 print *,'arg de surf_ocean: ycdragh ',ycdragh(1:knon) … … 2622 2622 y_flux_u1, y_flux_v1 & 2623 2623 #ifdef ISO 2624 &,yxtrain_f, yxtsnow_f,yxt1,Roce, &2625 &yxtsnow,yxtsol,yxtevap,Rland_ice &2624 ,yxtrain_f, yxtsnow_f,yxt1,Roce, & 2625 yxtsnow,yxtsol,yxtevap,Rland_ice & 2626 2626 #endif 2627 &)2627 ) 2628 2628 2629 2629 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 … … 2639 2639 DO ixt=1,ntraciso 2640 2640 CALL iso_verif_noNaN(yxtevap(ixt,j), & 2641 &'pbl_surface 1165a: apres surf_seaice')2641 'pbl_surface 1165a: apres surf_seaice') 2642 2642 ENDDO 2643 2643 DO ixt=1,niso 2644 2644 CALL iso_verif_noNaN(yxtsol(ixt,j), & 2645 &'pbl_surface 1165b: apres surf_seaice')2645 'pbl_surface 1165b: apres surf_seaice') 2646 2646 ENDDO 2647 2647 ENDDO … … 2652 2652 IF (iso_eau >= 0) THEN 2653 2653 CALL iso_verif_egalite(yxtsnow(iso_eau,j), & 2654 &ysnow(j),'pbl_surf_mod 1106')2654 ysnow(j),'pbl_surf_mod 1106') 2655 2655 ENDIF !IF (iso_eau >= 0) THEN 2656 2656 ENDDO !DO i=1,klon … … 2763 2763 DO j=1,knon 2764 2764 print*,'y_flux_t1,yfluxlat,wakes' & 2765 &, y_flux_t1(j), yfluxlat(j), ywake_s(j)2765 , y_flux_t1(j), yfluxlat(j), ywake_s(j) 2766 2766 print*,'beta_prev, beta, ytsurf_new', ybeta_prev(j), ybeta(j), ytsurf_new(j) 2767 2767 print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j) … … 2937 2937 print*,'Khx,Khw,Kh', Kech_h_x(j), Kech_h_w(j), Kech_h(j) 2938 2938 print*,'t1x, t1w, t1, t1_ancien', & 2939 &yt_x(j,1), yt_w(j,1), yt(j,1), t(j,1)2939 yt_x(j,1), yt_w(j,1), yt(j,1), t(j,1) 2940 2940 print*,'delta_coef,delta_flux,delta_tsurf,tau', delta_coef(j), y_delta_flux_t1(j), y_delta_tsurf(j), tau_eq(j) 2941 2941 ENDDO … … 2943 2943 DO j=1,knon 2944 2944 print*,'fluxT_x, fluxT_w, y_flux_t1, fluxQ_x, fluxQ_w, yfluxlat, wakes' & 2945 &, y_flux_t1_x(j), y_flux_t1_w(j), y_flux_t1(j), y_flux_q1_x(j)*RLVTT, y_flux_q1_w(j)*RLVTT, yfluxlat(j), ywake_s(j)2945 , y_flux_t1_x(j), y_flux_t1_w(j), y_flux_t1(j), y_flux_q1_x(j)*RLVTT, y_flux_q1_w(j)*RLVTT, yfluxlat(j), ywake_s(j) 2946 2946 print*,'beta, ytsurf_new ', ybeta(j), ytsurf_new(j) 2947 2947 print*,'inertia, facteur, cstar', inertia, facteur,wake_cstar(j) … … 2966 2966 y_flux_q(:,:), y_flux_t(:,:), y_d_q(:,:), y_d_t(:,:) & 2967 2967 #ifdef ISO 2968 &,yxt,y_flux_xt1 &2969 &,AcoefXT,BcoefXT,CcoefXT,DcoefXT,gama_xt &2970 &,y_flux_xt(:,:,:),y_d_xt(:,:,:) &2971 #endif 2972 & )2968 ,yxt,y_flux_xt1 & 2969 ,AcoefXT,BcoefXT,CcoefXT,DcoefXT,gama_xt & 2970 ,y_flux_xt(:,:,:),y_d_xt(:,:,:) & 2971 #endif 2972 ) 2973 2973 ELSE !(iflag_split .eq.0) 2974 2974 CALL climb_hq_up(knon, dtime, yt_x, yq_x, & … … 2981 2981 y_flux_q_x(:,:), y_flux_t_x(:,:), y_d_q_x(:,:), y_d_t_x(:,:) & 2982 2982 #ifdef ISO 2983 &,yxt_x,y_flux_xt1_x &2984 &,AcoefXT_x,BcoefXT_x,CcoefXT_x,DcoefXT_x,gama_xt_x &2985 &,y_flux_xt_x(:,:,:),y_d_xt_x(:,:,:) &2986 #endif 2987 & )2983 ,yxt_x,y_flux_xt1_x & 2984 ,AcoefXT_x,BcoefXT_x,CcoefXT_x,DcoefXT_x,gama_xt_x & 2985 ,y_flux_xt_x(:,:,:),y_d_xt_x(:,:,:) & 2986 #endif 2987 ) 2988 2988 ! 2989 2989 CALL climb_hq_up(knon, dtime, yt_w, yq_w, & … … 2996 2996 y_flux_q_w(:,:), y_flux_t_w(:,:), y_d_q_w(:,:), y_d_t_w(:,:) & 2997 2997 #ifdef ISO 2998 &,yxt_w,y_flux_xt1_w &2999 &,AcoefXT_w,BcoefXT_w,CcoefXT_w,DcoefXT_w,gama_xt_w &3000 &,y_flux_xt_w(:,:,:),y_d_xt_w(:,:,:) &3001 #endif 3002 & )2998 ,yxt_w,y_flux_xt1_w & 2999 ,AcoefXT_w,BcoefXT_w,CcoefXT_w,DcoefXT_w,gama_xt_w & 3000 ,y_flux_xt_w(:,:,:),y_d_xt_w(:,:,:) & 3001 #endif 3002 ) 3003 3003 !!! 3004 3004 ENDIF ! (iflag_split .eq.0) … … 3019 3019 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 3020 3020 CALL yamada_c(knon,dtime,ypaprs,ypplay & 3021 &,yu,yv,yt,y_d_u,y_d_v,y_d_t,ycdragm,ytke,ycoefm,ycoefh,ycoefq,y_d_t_diss,yustar &3022 &,iflag_pbl)3021 ,yu,yv,yt,y_d_u,y_d_v,y_d_t,ycdragm,ytke,ycoefm,ycoefh,ycoefq,y_d_t_diss,yustar & 3022 ,iflag_pbl) 3023 3023 ENDIF 3024 3024 ! print*,'yamada_c OK' … … 3036 3036 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 3037 3037 CALL yamada_c(knon,dtime,ypaprs,ypplay & 3038 &,yu_x,yv_x,yt_x,y_d_u_x,y_d_v_x,y_d_t_x,ycdragm_x,ytke_x,ycoefm_x,ycoefh_x &3038 ,yu_x,yv_x,yt_x,y_d_u_x,y_d_v_x,y_d_t_x,ycdragm_x,ytke_x,ycoefm_x,ycoefh_x & 3039 3039 ,ycoefq_x,y_d_t_diss_x,yustar_x & 3040 &,iflag_pbl)3040 ,iflag_pbl) 3041 3041 ENDIF 3042 3042 ! print*,'yamada_c OK' … … 3053 3053 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 3054 3054 CALL yamada_c(knon,dtime,ypaprs,ypplay & 3055 &,yu_w,yv_w,yt_w,y_d_u_w,y_d_v_w,y_d_t_w,ycdragm_w,ytke_w,ycoefm_w,ycoefh_w &3055 ,yu_w,yv_w,yt_w,y_d_u_w,y_d_v_w,y_d_t_w,ycdragm_w,ytke_w,ycoefm_w,ycoefh_w & 3056 3056 ,ycoefq_w,y_d_t_diss_w,yustar_w & 3057 &,iflag_pbl)3057 ,iflag_pbl) 3058 3058 ENDIF 3059 3059 ! print*,'yamada_c OK' … … 3277 3277 IF (iso_eau.gt.0) THEN 3278 3278 call iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 3279 &'pbl_surf_mod 1230',errmax,errmaxrel)3279 'pbl_surf_mod 1230',errmax,errmaxrel) 3280 3280 ENDIF !if (iso_eau.gt.0) then 3281 3281 #endif … … 3489 3489 ! write(*,*) 'iso_eau.gt.0=',iso_eau.gt.0 3490 3490 call iso_verif_noNaN_vect2D( & 3491 &d_xt, &3492 & 'pbl_surface 1385',ntraciso,klon,klev)3491 d_xt, & 3492 'pbl_surface 1385',ntraciso,klon,klev) 3493 3493 IF (iso_eau >= 0) THEN 3494 3494 call iso_verif_egalite_vect2D( & -
LMDZ6/branches/Amaury_dev/libf/phylmd/phys_output_var_mod.F90
r4773 r5087 164 164 165 165 REAL, SAVE, ALLOCATABLE:: tkt(:) ! (klon) 166 ! épaisseur (m) de la couche de diffusion thermique (microlayer)166 ! �paisseur (m) de la couche de diffusion thermique (microlayer) 167 167 ! cool skin thickness 168 168 169 169 REAL, SAVE, ALLOCATABLE:: tks(:) ! (klon) 170 ! épaisseur (m) de la couche de diffusion de masse (microlayer)170 ! �paisseur (m) de la couche de diffusion de masse (microlayer) 171 171 172 172 REAL, SAVE, ALLOCATABLE:: taur(:) ! (klon) momentum flux due to rain, in Pa … … 206 206 allocate (bils_ec(klon),bils_ech(klon),bils_tke(klon),bils_diss(klon),bils_kinetic(klon),bils_enthalp(klon),bils_latent(klon)) 207 207 allocate (d_qw_col(klon), d_ql_col(klon), d_qs_col(klon), d_qbs_col(klon), d_qt_col(klon), d_ek_col(klon), d_h_dair_col(klon) & 208 &, d_h_qw_col(klon), d_h_ql_col(klon), d_h_qs_col(klon), d_h_qbs_col(klon), d_h_col(klon))208 , d_h_qw_col(klon), d_h_ql_col(klon), d_h_qs_col(klon), d_h_qbs_col(klon), d_h_col(klon)) 209 209 d_qw_col=0. ; d_ql_col=0. ; d_qs_col=0. ; d_qbs_col=0. ; d_qt_col=0. ; d_ek_col=0. ; d_h_dair_col =0. 210 210 d_h_qw_col=0. ; d_h_ql_col=0. ; d_h_qs_col=0. ; d_h_qbs_col=0. ; d_h_col=0. … … 274 274 deallocate (bils_ec,bils_ech,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent) 275 275 deallocate (d_qw_col, d_ql_col, d_qs_col, d_qbs_col, d_qt_col, d_ek_col, d_h_dair_col & 276 &, d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col)276 , d_h_qw_col, d_h_ql_col, d_h_qs_col, d_h_qbs_col, d_h_col) 277 277 278 278 ! Outputs used in cloudth_vert -
LMDZ6/branches/Amaury_dev/libf/phylmd/physiq_mod.F90
r5086 r5087 23 23 USE aero_mod 24 24 USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, & 25 &fl_ebil, fl_cor_ebil25 fl_ebil, fl_cor_ebil 26 26 USE assert_m, only: assert 27 27 USE change_srf_frac_mod … … 1859 1859 CALL atke_ini(RG, RD, RPI, RCPD, RV, viscom, viscoh) 1860 1860 CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, & 1861 &RG,RD,RCPD,RKAPPA,RLVTT,RETV)1861 RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1862 1862 CALL ratqs_ini(klon,klev,iflag_thermals,lunout,nbsrf,is_lic,is_ter,RG,RV,RD,RCPD,RLSTT,RLVTT,RTT) 1863 1863 CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_sursat,iflag_ratqs,fl_cor_ebil,RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RG,RV,RPI) … … 1881 1881 ENDIF 1882 1882 CALL cloud_optics_prop_ini(klon, prt_level, lunout, flag_aerosol, & 1883 &ok_cdnc, bl95_b0, &1884 &bl95_b1, latitude_deg, rpi, rg, rd, &1885 &zepsec, novlp, iflag_ice_thermo, ok_new_lscp)1883 ok_cdnc, bl95_b0, & 1884 bl95_b1, latitude_deg, rpi, rg, rd, & 1885 zepsec, novlp, iflag_ice_thermo, ok_new_lscp) 1886 1886 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1887 1887 … … 2673 2673 ! 2674 2674 CALL reevap (klon,klev,iflag_ice_thermo,t_seri,q_seri,ql_seri,qs_seri, & 2675 &d_t_eva,d_q_eva,d_ql_eva,d_qi_eva)2675 d_t_eva,d_q_eva,d_ql_eva,d_qi_eva) 2676 2676 2677 2677 CALL add_phys_tend & … … 5259 5259 write(*,*) 'je vais appeler simu_airs, ok_airs, freq_airs=', ok_airs, freq_airs 5260 5260 CALL simu_airs(itap,rneb, t_seri, cldemi, fiwc, ref_ice, pphi, pplay, paprs,& 5261 &map_prop_hc,map_prop_hist,&5262 &map_emis_hc,map_iwp_hc,map_deltaz_hc,map_pcld_hc,map_tcld_hc,&5263 &map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&5264 &map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&5265 &map_emis_Anv,map_pcld_Anv,map_tcld_Anv,&5266 &map_emis_hist,map_iwp_hist,map_deltaz_hist,map_rad_hist,&5267 &map_ntot,map_hc,map_hist,&5268 &map_Cb,map_ThCi,map_Anv,&5269 &alt_tropo )5261 map_prop_hc,map_prop_hist,& 5262 map_emis_hc,map_iwp_hc,map_deltaz_hc,map_pcld_hc,map_tcld_hc,& 5263 map_emis_Cb,map_pcld_Cb,map_tcld_Cb,& 5264 map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,& 5265 map_emis_Anv,map_pcld_Anv,map_tcld_Anv,& 5266 map_emis_hist,map_iwp_hist,map_deltaz_hist,map_rad_hist,& 5267 map_ntot,map_hc,map_hist,& 5268 map_Cb,map_ThCi,map_Anv,& 5269 alt_tropo ) 5270 5270 ENDIF 5271 5271 -
LMDZ6/branches/Amaury_dev/libf/phylmd/physiqex_mod.F90
r4658 r5087 7 7 8 8 SUBROUTINE physiqex (nlon,nlev, & 9 &debut,lafin,pdtphys, &10 &paprs,pplay,pphi,pphis,presnivs, &11 &u,v,rot,t,qx, &12 &flxmass_w, &13 &d_u, d_v, d_t, d_qx, d_ps)9 debut,lafin,pdtphys, & 10 paprs,pplay,pphi,pphis,presnivs, & 11 u,v,rot,t,qx, & 12 flxmass_w, & 13 d_u, d_v, d_t, d_qx, d_ps) 14 14 15 15 USE dimphy, only : klon,klev -
LMDZ6/branches/Amaury_dev/libf/phylmd/phytrac_mod.F90
r5082 r5087 754 754 IF (it==id_OCS_strat) THEN 755 755 budg_dep_wet_ocs(i)=budg_dep_wet_ocs(i)+d_tr_cv(i,k,it)*(mSatom/mOCSmol) & 756 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys756 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 757 757 ELSEIF (it==id_SO2_strat) THEN 758 758 budg_dep_wet_so2(i)=budg_dep_wet_so2(i)+d_tr_cv(i,k,it)*(mSatom/mSO2mol) & 759 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys759 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 760 760 ELSEIF (it==id_H2SO4_strat) THEN 761 761 budg_dep_wet_h2so4(i)=budg_dep_wet_h2so4(i)+d_tr_cv(i,k,it)*(mSatom/mH2SO4mol) & 762 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys762 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 763 763 ELSEIF (it.GT.nbtr_sulgas) THEN 764 764 budg_dep_wet_part(i)=budg_dep_wet_part(i)+d_tr_cv(i,k,it)*(mSatom/mH2SO4mol) & 765 &*dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 &766 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys765 *dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 & 766 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 767 767 ENDIF 768 768 ENDDO … … 832 832 ! from IPSL note 23, 2002) 833 833 v_dep_dry(:) = pctsrf(:,is_ter) * 2.5e-3 & 834 &+ pctsrf(:,is_oce) * 0.5e-3 &835 &+ pctsrf(:,is_lic) * 2.5e-3 &836 &+ pctsrf(:,is_sic) * 2.5e-3834 + pctsrf(:,is_oce) * 0.5e-3 & 835 + pctsrf(:,is_lic) * 2.5e-3 & 836 + pctsrf(:,is_sic) * 2.5e-3 837 837 838 838 ! compute surface dry deposition flux … … 868 868 ELSEIF (it.GT.nbtr_sulgas) THEN 869 869 budg_dep_dry_part(:)=budg_dep_dry_part(:)-source(:,it)*(mSatom/mH2SO4mol)*dens_aer_dry & 870 &*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3870 *4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 871 871 ENDIF 872 872 ENDIF … … 948 948 IF (it==id_OCS_strat) THEN 949 949 budg_dep_wet_ocs(i)=budg_dep_wet_ocs(i)+d_tr_ls(i,k,it)*(mSatom/mOCSmol) & 950 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys950 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 951 951 ELSEIF (it==id_SO2_strat) THEN 952 952 budg_dep_wet_so2(i)=budg_dep_wet_so2(i)+d_tr_ls(i,k,it)*(mSatom/mSO2mol) & 953 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys953 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 954 954 ELSEIF (it==id_H2SO4_strat) THEN 955 955 budg_dep_wet_h2so4(i)=budg_dep_wet_h2so4(i)+d_tr_ls(i,k,it)*(mSatom/mH2SO4mol) & 956 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys956 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 957 957 ELSEIF (it.GT.nbtr_sulgas) THEN 958 958 budg_dep_wet_part(i)=budg_dep_wet_part(i)+d_tr_ls(i,k,it)*(mSatom/mH2SO4mol) & 959 &*dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 &960 &*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys959 *dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 & 960 *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 961 961 ENDIF 962 962 ENDDO -
LMDZ6/branches/Amaury_dev/libf/phylmd/printflag.F90
r5082 r5087 21 21 PRINT 100 22 22 PRINT *, ' ******************************************************* & 23 & & 24 &************'23 24 ************' 25 25 PRINT *, ' ******** Choix des principales cles de la physique & 26 & & 27 &*********'26 27 *********' 28 28 PRINT *, ' ******************************************************* & 29 & & 30 &************'29 30 ************' 31 31 PRINT 100 32 32 PRINT 10, iflag_cycle_diurne>=1, soil_model … … 35 35 IF (iflag_con==1) THEN 36 36 PRINT *, ' ***** Shema convection LMD & 37 & & 38 &******'37 38 ******' 39 39 ELSE IF (iflag_con==2) THEN 40 40 PRINT *, ' ***** Shema convection Tiedtke & 41 & & 42 &******'41 42 ******' 43 43 ELSE IF (iflag_con>=3) THEN 44 44 PRINT *, ' ***** Shema convection Emanuel & 45 & & 46 &******'45 46 ******' 47 47 END IF 48 48 PRINT 100 … … 80 80 81 81 PRINT *, ' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ & 82 & & 83 &$$$$$$$$$$$$$'82 83 $$$$$$$$$$$$$' 84 84 PRINT 100 85 85 … … 135 135 PRINT 100 136 136 PRINT *, ' ******************************************************* & 137 & & 138 &************'137 138 ************' 139 139 PRINT 100 140 140 -
LMDZ6/branches/Amaury_dev/libf/phylmd/radlwsw_m.F90
r5082 r5087 1297 1297 DO i = 1, kdlon 1298 1298 ZTH_i(i,K)=& 1299 &(t_i(i,K-1)*pplay_i(i,K-1)*(pplay_i(i,K)-paprs_i(i,K))&1300 &+t_i(i,K)*pplay_i(i,K)*(paprs_i(i,K)-pplay_i(i,K-1)))&1301 &*(1.0/(paprs_i(i,K)*(pplay_i(i,K)-pplay_i(i,K-1))))1299 (t_i(i,K-1)*pplay_i(i,K-1)*(pplay_i(i,K)-paprs_i(i,K))& 1300 +t_i(i,K)*pplay_i(i,K)*(paprs_i(i,K)-pplay_i(i,K-1)))& 1301 *(1.0/(paprs_i(i,K)*(pplay_i(i,K)-pplay_i(i,K-1)))) 1302 1302 ENDDO 1303 1303 ENDDO … … 1305 1305 ! Sommet 1306 1306 ZTH_i(i,1)=t_i(i,1)-pplay_i(i,1)*(t_i(i,1)-ZTH_i(i,2))& 1307 &/(pplay_i(i,1)-paprs_i(i,2))1307 /(pplay_i(i,1)-paprs_i(i,2)) 1308 1308 ! Vers le sol 1309 1309 ZTH_i(i,KLEV+1)=t_i(i,KLEV) + 0.5 * & … … 1361 1361 ok_3Deffect, namelist_ecrad_file 1362 1362 CALL RADIATION_SCHEME & 1363 &(ist, iend, klon, klev, naero_spc, NSW, &1364 &namelist_ecrad_file, ok_3Deffect, &1365 &debut, ok_volcan, flag_aerosol_strat, &1366 & day_cur, current_time, &1363 (ist, iend, klon, klev, naero_spc, NSW, & 1364 namelist_ecrad_file, ok_3Deffect, & 1365 debut, ok_volcan, flag_aerosol_strat, & 1366 day_cur, current_time, & 1367 1367 ! Cste solaire/(d_Terre-Soleil)**2 1368 &SOLARIRAD, &1368 SOLARIRAD, & 1369 1369 ! Cos(angle zin), temp sol 1370 &rmu0, tsol, &1370 rmu0, tsol, & 1371 1371 ! Albedo diffuse et directe 1372 & PALBD_NEW,PALBP_NEW, &1372 PALBD_NEW,PALBP_NEW, & 1373 1373 ! Emessivite : PEMIS_WINDOW (???), & 1374 &ZEMIS, ZEMISW, &1374 ZEMIS, ZEMISW, & 1375 1375 ! longitude(rad), sin(latitude), PMASQ_ ??? 1376 &ZGELAM, ZGEMU, &1376 ZGELAM, ZGEMU, & 1377 1377 ! Temp et pres aux interf, vapeur eau, Satur spec humid 1378 & paprs_i, ZTH_i, q_i, qsat_i, &1378 paprs_i, ZTH_i, q_i, qsat_i, & 1379 1379 ! Gas 1380 &ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, &1381 &ZCCL4, POZON_i(:,:,1), ZO2, &1380 ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, & 1381 ZCCL4, POZON_i(:,:,1), ZO2, & 1382 1382 ! nuages : 1383 &cldfra_i, flwc_i, fiwc_i, ZQ_SNOW, &1383 cldfra_i, flwc_i, fiwc_i, ZQ_SNOW, & 1384 1384 ! rayons effectifs des gouttelettes 1385 &ref_liq_i, ref_ice_i, &1385 ref_liq_i, ref_ice_i, & 1386 1386 ! aerosols 1387 &ZAEROSOL_OLD, ZAEROSOL, &1387 ZAEROSOL_OLD, ZAEROSOL, & 1388 1388 ! Outputs 1389 1389 ! Net flux : 1390 &ZSWFT_i, ZLWFT_i, ZSWFT0_ii, ZLWFT0_ii, &1390 ZSWFT_i, ZLWFT_i, ZSWFT0_ii, ZLWFT0_ii, & 1391 1391 ! DWN flux : 1392 &ZFSDWN_i, ZFLUX_i(:,2,:), ZFCDWN_i, ZFLUC_i(:,2,:), &1392 ZFSDWN_i, ZFLUX_i(:,2,:), ZFCDWN_i, ZFLUC_i(:,2,:), & 1393 1393 ! UP flux : 1394 &ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), &1394 ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), & 1395 1395 ! Surf Direct flux : ATTENTION 1396 &ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, &1396 ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, & 1397 1397 ! UV and para flux 1398 &ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, &1398 ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, & 1399 1399 ! & ZFLUX_SW_DN_TOA, 1400 &ZEMIS_OUT, ZLWDERIVATIVE, &1401 &PSFSWDIF, PSFSWDIR, &1402 &cloud_cover_sw)1400 ZEMIS_OUT, ZLWDERIVATIVE, & 1401 PSFSWDIF, PSFSWDIR, & 1402 cloud_cover_sw) 1403 1403 else 1404 1404 print*,' 2e apell Ecrad : ok_3Deffect, namelist_ecrad_file = ', & 1405 1405 ok_3Deffect, namelist_ecrad_file 1406 1406 CALL RADIATION_SCHEME_S2 & 1407 &(ist, iend, klon, klev, naero_grp, NSW, &1408 &namelist_ecrad_file, ok_3Deffect, &1409 &debut, ok_volcan, flag_aerosol_strat, &1410 &day_cur, current_time, &1407 (ist, iend, klon, klev, naero_grp, NSW, & 1408 namelist_ecrad_file, ok_3Deffect, & 1409 debut, ok_volcan, flag_aerosol_strat, & 1410 day_cur, current_time, & 1411 1411 ! Cste solaire/(d_Terre-Soleil)**2 1412 &SOLARIRAD, &1412 SOLARIRAD, & 1413 1413 ! Cos(angle zin), temp sol 1414 &rmu0, tsol, &1414 rmu0, tsol, & 1415 1415 ! Albedo diffuse et directe 1416 &PALBD_NEW,PALBP_NEW, &1416 PALBD_NEW,PALBP_NEW, & 1417 1417 ! Emessivite : PEMIS_WINDOW (???), & 1418 &ZEMIS, ZEMISW, &1418 ZEMIS, ZEMISW, & 1419 1419 ! longitude(rad), sin(latitude), PMASQ_ ??? 1420 &ZGELAM, ZGEMU, &1420 ZGELAM, ZGEMU, & 1421 1421 ! Temp et pres aux interf, vapeur eau, Satur spec humid 1422 & paprs_i, ZTH_i, q_i, qsat_i, &1422 paprs_i, ZTH_i, q_i, qsat_i, & 1423 1423 ! Gas 1424 &ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, &1425 &ZCCL4, POZON_i(:,:,1), ZO2, &1424 ZCO2, ZCH4, ZN2O, ZNO2, ZCFC11, ZCFC12, ZHCFC22, & 1425 ZCCL4, POZON_i(:,:,1), ZO2, & 1426 1426 ! nuages : 1427 &cldfra_i, flwc_i, fiwc_i, ZQ_SNOW, &1427 cldfra_i, flwc_i, fiwc_i, ZQ_SNOW, & 1428 1428 ! rayons effectifs des gouttelettes 1429 &ref_liq_i, ref_ice_i, &1429 ref_liq_i, ref_ice_i, & 1430 1430 ! aerosols 1431 &ZAEROSOL_OLD, ZAEROSOL, &1431 ZAEROSOL_OLD, ZAEROSOL, & 1432 1432 ! Outputs 1433 1433 ! Net flux : 1434 &ZSWFT_i, ZLWFT_i, ZSWFT0_ii, ZLWFT0_ii, &1434 ZSWFT_i, ZLWFT_i, ZSWFT0_ii, ZLWFT0_ii, & 1435 1435 ! DWN flux : 1436 &ZFSDWN_i, ZFLUX_i(:,2,:), ZFCDWN_i, ZFLUC_i(:,2,:), &1436 ZFSDWN_i, ZFLUX_i(:,2,:), ZFCDWN_i, ZFLUC_i(:,2,:), & 1437 1437 ! UP flux : 1438 &ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), &1438 ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), & 1439 1439 ! Surf Direct flux : ATTENTION 1440 &ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, &1440 ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, & 1441 1441 ! UV and para flux 1442 &ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, &1442 ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, & 1443 1443 ! & ZFLUX_SW_DN_TOA, 1444 &ZEMIS_OUT, ZLWDERIVATIVE, &1445 &PSFSWDIF, PSFSWDIR, &1446 &cloud_cover_sw)1444 ZEMIS_OUT, ZLWDERIVATIVE, & 1445 PSFSWDIF, PSFSWDIR, & 1446 cloud_cover_sw) 1447 1447 endif 1448 1448 -
LMDZ6/branches/Amaury_dev/libf/phylmd/reevap.F90
r5082 r5087 1 1 SUBROUTINE reevap (klon,klev,iflag_ice_thermo,t_seri,q_seri,ql_seri,qs_seri, & 2 &d_t_eva,d_q_eva,d_ql_eva,d_qs_eva)2 d_t_eva,d_q_eva,d_ql_eva,d_qs_eva) 3 3 4 4 ! flag to include modifications to ensure energy conservation (if flag >0) -
LMDZ6/branches/Amaury_dev/libf/phylmd/regr_horiz_time_climoz_m.F90
r5075 r5087 660 660 CALL NF95_PUT_ATT(fID_ou, vID_ou(1), "long_name", "ozone mole fraction") 661 661 CALL NF95_PUT_ATT(fID_ou, vID_ou(1), "standard_name", "mole_fraction_of_ozone& 662 &_in_air")662 _in_air") 663 663 IF(SIZE(vID_ou) == 2) THEN 664 664 CALL NF95_DEF_VAR(fID_ou, vars_in(2), NF90_FLOAT, dIDs(1:ndims), vID_ou(2)) 665 665 CALL NF95_PUT_ATT(fID_ou, vID_ou(2), "long_name","ozone mole fraction in da& 666 &ylight")666 ylight") 667 667 END IF 668 668 -
LMDZ6/branches/Amaury_dev/libf/phylmd/regr_lat_time_coefoz_m.F90
r5086 r5087 299 299 300 300 ncerr = nf90_copy_att(ncid_in, varid_in(i), "long_name",& 301 &ncid_out, varid_out(i))301 ncid_out, varid_out(i)) 302 302 call handle_err_copy_att("long_name") 303 303 304 304 ncerr = nf90_copy_att(ncid_in, varid_in(i), "units", ncid_out,& 305 &varid_out(i))305 varid_out(i)) 306 306 call handle_err_copy_att("units") 307 307 308 308 ncerr = nf90_copy_att(ncid_in, varid_in(i), "standard_name", ncid_out,& 309 &varid_out(i))309 varid_out(i)) 310 310 call handle_err_copy_att("standard_name") 311 311 END DO -
LMDZ6/branches/Amaury_dev/libf/phylmd/screenp_mod.F90
r5082 r5087 15 15 ! 16 16 SUBROUTINE screenp(klon, knon, nsrf, & 17 &speed, tair, qair, &18 &ts, qsurf, rugos, lmon, &19 &ustar, testar, qstar, zref, &20 & delu, delte, delq)17 speed, tair, qair, & 18 ts, qsurf, rugos, lmon, & 19 ustar, testar, qstar, zref, & 20 delu, delte, delq) 21 21 IMPLICIT none 22 22 !------------------------------------------------------------------------- … … 73 73 ! 74 74 IF (speed(i)>1.5.AND.lmon(i)<=1.0 & 75 &.AND. rugos(i)<=1.0) THEN75 .AND. rugos(i)<=1.0) THEN 76 76 delu(i) = (ustar(i)/RKAR)* & 77 77 (log(zref/(rugos(i))+1.) + & … … 122 122 ! 123 123 SUBROUTINE screenpn(klon, knon, nsrf, & 124 &speed, tair, qair, &125 &ts, qsurf, rugos, zri1, &126 &zref, &127 & delu, delte, delq)124 speed, tair, qair, & 125 ts, qsurf, rugos, zri1, & 126 zref, & 127 delu, delte, delq) 128 128 IMPLICIT none 129 129 !------------------------------------------------------------------------- -
LMDZ6/branches/Amaury_dev/libf/phylmd/simu_airs.F90
r5086 r5087 23 23 REAL P(N),T(N),alt(N),slope(N) 24 24 REAL P_min, P_max, slope_limit,slope_2km, & 25 &delta_alt_limit,tmp,delta_alt25 delta_alt_limit,tmp,delta_alt 26 26 PARAMETER(P_min=75.0, P_max=470.0) ! hPa 27 27 PARAMETER(slope_limit=0.002) ! 2 K/km converted to K/m … … 66 66 if (first_point>1) then 67 67 tmp=(slope_limit-slope(first_point))/(slope(first_point+1)- & 68 &slope(first_point))*(P(first_point+1)-P(first_point))68 slope(first_point))*(P(first_point+1)-P(first_point)) 69 69 P_tropo=P(first_point)+tmp 70 70 ! print*, 'P_tropo= ', tmp, P(first_point), P_tropo … … 82 82 83 83 subroutine cloud_structure(len_cs, rneb_cs, temp_cs, & 84 &emis_cs, iwco_cs, &85 &pres_cs, dz_cs, rhodz_cs, rad_cs, &86 &cc_tot_cs, cc_hc_cs, cc_hist_cs, &87 &cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, &88 &pcld_hc_cs, tcld_hc_cs, &89 &em_hc_cs, iwp_hc_cs, deltaz_hc_cs, &90 &pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, &91 &pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, &92 &pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, &93 &em_hist_cs, iwp_hist_cs, deltaz_hist_cs, rad_hist_cs)84 emis_cs, iwco_cs, & 85 pres_cs, dz_cs, rhodz_cs, rad_cs, & 86 cc_tot_cs, cc_hc_cs, cc_hist_cs, & 87 cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, & 88 pcld_hc_cs, tcld_hc_cs, & 89 em_hc_cs, iwp_hc_cs, deltaz_hc_cs, & 90 pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, & 91 pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, & 92 pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, & 93 em_hist_cs, iwp_hist_cs, deltaz_hist_cs, rad_hist_cs) 94 94 95 95 … … 103 103 104 104 REAL, intent(out) :: cc_tot_cs, cc_hc_cs, cc_hist_cs, & 105 &cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, &106 &pcld_hc_cs, tcld_hc_cs, em_hc_cs, iwp_hc_cs, &107 &pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, &108 &pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, &109 &pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, &110 &em_hist_cs, iwp_hist_cs, &111 &deltaz_hc_cs, deltaz_hist_cs, rad_hist_cs105 cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, & 106 pcld_hc_cs, tcld_hc_cs, em_hc_cs, iwp_hc_cs, & 107 pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, & 108 pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, & 109 pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, & 110 em_hist_cs, iwp_hist_cs, & 111 deltaz_hc_cs, deltaz_hist_cs, rad_hist_cs 112 112 113 113 REAL, DIMENSION(len_cs) :: rneb_ord … … 117 117 REAL, DIMENSION(:), allocatable :: sCb, sThCi, sAnv 118 118 REAL, DIMENSION(:), allocatable :: iwp_ss, pcld_ss, tcld_ss,& 119 &emis_ss119 emis_ss 120 120 REAL, DIMENSION(:), allocatable :: deltaz_ss, rad_ss 121 121 … … 185 185 do i = 1, nss 186 186 call sous_section(len_cs, rneb_cs, temp_cs, & 187 &emis_cs, iwco_cs, &188 &pres_cs, dz_cs, rhodz_cs, rad_cs, rneb_ord, &189 &rneb_max(i),s(i),s_hc(i),s_hist(i), &190 &sCb(i), sThCi(i), sAnv(i), &191 &emis_ss(i), &192 &pcld_ss(i), tcld_ss(i), iwp_ss(i), deltaz_ss(i), rad_ss(i))187 emis_cs, iwco_cs, & 188 pres_cs, dz_cs, rhodz_cs, rad_cs, rneb_ord, & 189 rneb_max(i),s(i),s_hc(i),s_hist(i), & 190 sCb(i), sThCi(i), sAnv(i), & 191 emis_ss(i), & 192 pcld_ss(i), tcld_ss(i), iwp_ss(i), deltaz_ss(i), rad_ss(i)) 193 193 enddo 194 194 … … 304 304 305 305 if (cc_tot_cs > maxval(rneb_cs) .and. & 306 &abs(cc_tot_cs-maxval(rneb_cs)) > 1.e-4 ) then306 abs(cc_tot_cs-maxval(rneb_cs)) > 1.e-4 ) then 307 307 WRITE(abort_message,*) 'cc_tot_cs > max rneb_cs', cc_tot_cs, maxval(rneb_cs) 308 308 CALL abort_physic(modname,abort_message,1) … … 347 347 348 348 subroutine sous_section(len_cs, rneb_cs, temp_cs, & 349 &emis_cs, iwco_cs, &350 &pres_cs, dz_cs, rhodz_cs, rad_cs, rneb_ord, &351 &rnebmax, stot, shc, shist, &352 &sCb, sThCi, sAnv, &353 &emis, pcld, tcld, iwp, deltaz, rad)349 emis_cs, iwco_cs, & 350 pres_cs, dz_cs, rhodz_cs, rad_cs, rneb_ord, & 351 rnebmax, stot, shc, shist, & 352 sCb, sThCi, sAnv, & 353 emis, pcld, tcld, iwp, deltaz, rad) 354 354 355 355 INTEGER, intent(in) :: len_cs 356 356 REAL, DIMENSION(len_cs), intent(in) :: rneb_cs, temp_cs 357 357 REAL, DIMENSION(len_cs), intent(in) :: emis_cs, iwco_cs, & 358 &rneb_ord358 rneb_ord 359 359 REAL, DIMENSION(len_cs), intent(in) :: pres_cs, dz_cs, rad_cs 360 360 REAL, DIMENSION(len_cs), intent(in) :: rhodz_cs … … 417 417 418 418 call caract(ibeg, iend, temp_cs, tau_cs, iwco_cs, & 419 &pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, &420 &som_tau, som_iwc, som_dz, som_rad)419 pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, & 420 som_tau, som_iwc, som_dz, som_rad) 421 421 422 422 ! On masque le nuage s'il n'est pas detectable … … 437 437 438 438 call caract(ibeg, iend, temp_cs, tau_cs, iwco_cs, & 439 &pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, &440 &som_tau, som_iwc, som_dz, som_rad)439 pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, & 440 som_tau, som_iwc, som_dz, som_rad) 441 441 442 442 tau = som_tau … … 457 457 458 458 if (emis < em_min .or. emis > em_max & 459 &.or. tcld > 230.) then459 .or. tcld > 230.) then 460 460 shist = 0. 461 461 endif … … 515 515 516 516 subroutine masque (ibeg, iend, som_tau, & 517 &visible, w)517 visible, w) 518 518 519 519 INTEGER, intent(in) :: ibeg, iend … … 556 556 557 557 subroutine caract (ibeg, iend, temp_cs, tau_cs, iwco_cs, & 558 &pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, &559 &som_tau, som_iwc, som_dz, som_rad)558 pres_cs, dz_cs, rhodz_cs, rad_cs, pcld, tcld, & 559 som_tau, som_iwc, som_dz, som_rad) 560 560 561 561 INTEGER, intent(in) :: ibeg, iend … … 686 686 687 687 subroutine sim_mesh(rneb_1D, temp_1D, emis_1D, & 688 &iwcon_1D, rad_1D, &689 &pres, dz, &690 &rhodz_1D, cc_tot_mesh, cc_hc_mesh, cc_hist_mesh, pcld_hc_mesh,&691 &tcld_hc_mesh, &692 &em_hc_mesh, iwp_hc_mesh, deltaz_hc_mesh, &693 &cc_Cb_mesh, cc_ThCi_mesh, cc_Anv_mesh, &694 &pcld_Cb_mesh, tcld_Cb_mesh, em_Cb_mesh, &695 &pcld_ThCi_mesh, tcld_ThCi_mesh, em_ThCi_mesh, &696 &pcld_Anv_mesh, tcld_Anv_mesh, em_Anv_mesh, &697 &em_hist_mesh, iwp_hist_mesh, deltaz_hist_mesh, rad_hist_mesh)688 iwcon_1D, rad_1D, & 689 pres, dz, & 690 rhodz_1D, cc_tot_mesh, cc_hc_mesh, cc_hist_mesh, pcld_hc_mesh,& 691 tcld_hc_mesh, & 692 em_hc_mesh, iwp_hc_mesh, deltaz_hc_mesh, & 693 cc_Cb_mesh, cc_ThCi_mesh, cc_Anv_mesh, & 694 pcld_Cb_mesh, tcld_Cb_mesh, em_Cb_mesh, & 695 pcld_ThCi_mesh, tcld_ThCi_mesh, em_ThCi_mesh, & 696 pcld_Anv_mesh, tcld_Anv_mesh, em_Anv_mesh, & 697 em_hist_mesh, iwp_hist_mesh, deltaz_hist_mesh, rad_hist_mesh) 698 698 699 699 USE dimphy 700 700 701 701 REAL, DIMENSION(klev), intent(in) :: rneb_1D, temp_1D, emis_1D, & 702 &iwcon_1D, rad_1D702 iwcon_1D, rad_1D 703 703 REAL, DIMENSION(klev), intent(in) :: pres, dz, rhodz_1D 704 704 REAL, intent(out) :: cc_tot_mesh, cc_hc_mesh, cc_hist_mesh 705 705 REAL, intent(out) :: cc_Cb_mesh, cc_ThCi_mesh, cc_Anv_mesh 706 706 REAL, intent(out) :: em_hc_mesh, pcld_hc_mesh, tcld_hc_mesh, & 707 &iwp_hc_mesh707 iwp_hc_mesh 708 708 709 709 REAL, intent(out) :: pcld_Cb_mesh, tcld_Cb_mesh, em_Cb_mesh 710 710 REAL, intent(out) :: pcld_ThCi_mesh, tcld_ThCi_mesh, & 711 &em_ThCi_mesh711 em_ThCi_mesh 712 712 REAL, intent(out) :: pcld_Anv_mesh, tcld_Anv_mesh, em_Anv_mesh 713 713 … … 716 716 717 717 REAL, DIMENSION(:), allocatable :: rneb_cs, temp_cs, emis_cs, & 718 &iwco_cs718 iwco_cs 719 719 REAL, DIMENSION(:), allocatable :: pres_cs, dz_cs, rad_cs, & 720 &rhodz_cs720 rhodz_cs 721 721 722 722 INTEGER :: i,j,l … … 724 724 725 725 REAL :: som_emi_hc,som_pcl_hc,som_tcl_hc,som_iwp_hc,som_hc,& 726 &som_hist726 som_hist 727 727 REAL :: som_emi_hist, som_iwp_hist, som_deltaz_hc, & 728 &som_deltaz_hist728 som_deltaz_hist 729 729 REAL :: som_rad_hist 730 730 REAL :: som_Cb, som_ThCi, som_Anv … … 849 849 850 850 call cloud_structure(len_cs,rneb_cs,temp_cs,emis_cs,iwco_cs,& 851 &pres_cs, dz_cs, rhodz_cs, rad_cs, &852 &cc_tot_cs, cc_hc_cs, cc_hist_cs, &853 &cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, &854 &pcld_hc_cs, tcld_hc_cs, &855 &em_hc_cs, iwp_hc_cs, deltaz_hc_cs, &856 &pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, &857 &pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, &858 &pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, &859 &em_hist_cs, iwp_hist_cs, deltaz_hist_cs, rad_hist_cs)851 pres_cs, dz_cs, rhodz_cs, rad_cs, & 852 cc_tot_cs, cc_hc_cs, cc_hist_cs, & 853 cc_Cb_cs, cc_ThCi_cs, cc_Anv_cs, & 854 pcld_hc_cs, tcld_hc_cs, & 855 em_hc_cs, iwp_hc_cs, deltaz_hc_cs, & 856 pcld_Cb_cs, tcld_Cb_cs, em_Cb_cs, & 857 pcld_ThCi_cs, tcld_ThCi_cs, em_ThCi_cs, & 858 pcld_Anv_cs, tcld_Anv_cs, em_Anv_cs, & 859 em_hist_cs, iwp_hist_cs, deltaz_hist_cs, rad_hist_cs) 860 860 861 861 … … 897 897 som_iwp_hist = som_iwp_hist + iwp_hist_cs*cc_hist_cs*prod_hh 898 898 som_deltaz_hist = som_deltaz_hist + & 899 &deltaz_hist_cs*cc_hist_cs*prod_hh899 deltaz_hist_cs*cc_hist_cs*prod_hh 900 900 som_rad_hist = som_rad_hist + rad_hist_cs*cc_hist_cs*prod_hh 901 901 … … 956 956 957 957 call normal2_undef(pcld_hc_mesh,som_pcl_hc, & 958 &cc_hc_mesh)958 cc_hc_mesh) 959 959 call normal2_undef(tcld_hc_mesh,som_tcl_hc, & 960 &cc_hc_mesh)960 cc_hc_mesh) 961 961 call normal2_undef(em_hc_mesh,som_emi_hc, & 962 &cc_hc_mesh)962 cc_hc_mesh) 963 963 call normal2_undef(iwp_hc_mesh,som_iwp_hc, & 964 &cc_hc_mesh)964 cc_hc_mesh) 965 965 call normal2_undef(deltaz_hc_mesh,som_deltaz_hc, & 966 &cc_hc_mesh)966 cc_hc_mesh) 967 967 968 968 call normal2_undef(em_Cb_mesh,som_emi_Cb, & 969 &cc_Cb_mesh)969 cc_Cb_mesh) 970 970 call normal2_undef(tcld_Cb_mesh,som_tcld_Cb, & 971 &cc_Cb_mesh)971 cc_Cb_mesh) 972 972 call normal2_undef(pcld_Cb_mesh,som_pcld_Cb, & 973 &cc_Cb_mesh)973 cc_Cb_mesh) 974 974 975 975 call normal2_undef(em_ThCi_mesh,som_emi_ThCi, & 976 &cc_ThCi_mesh)976 cc_ThCi_mesh) 977 977 call normal2_undef(tcld_ThCi_mesh,som_tcld_ThCi, & 978 &cc_ThCi_mesh)978 cc_ThCi_mesh) 979 979 call normal2_undef(pcld_ThCi_mesh,som_pcld_ThCi, & 980 &cc_ThCi_mesh)980 cc_ThCi_mesh) 981 981 982 982 call normal2_undef(em_Anv_mesh,som_emi_Anv, & 983 &cc_Anv_mesh)983 cc_Anv_mesh) 984 984 call normal2_undef(tcld_Anv_mesh,som_tcld_Anv, & 985 &cc_Anv_mesh)985 cc_Anv_mesh) 986 986 call normal2_undef(pcld_Anv_mesh,som_pcld_Anv, & 987 &cc_Anv_mesh)987 cc_Anv_mesh) 988 988 989 989 990 990 call normal2_undef(em_hist_mesh,som_emi_hist, & 991 &cc_hist_mesh)991 cc_hist_mesh) 992 992 call normal2_undef(iwp_hist_mesh,som_iwp_hist, & 993 &cc_hist_mesh)993 cc_hist_mesh) 994 994 call normal2_undef(deltaz_hist_mesh,som_deltaz_hist, & 995 &cc_hist_mesh)995 cc_hist_mesh) 996 996 call normal2_undef(rad_hist_mesh,som_rad_hist, & 997 &cc_hist_mesh)997 cc_hist_mesh) 998 998 999 999 … … 1003 1003 1004 1004 if (cc_tot_mesh > tsom_tot .and. & 1005 &abs(cc_tot_mesh-tsom_tot) > 1.e-4) then1005 abs(cc_tot_mesh-tsom_tot) > 1.e-4) then 1006 1006 WRITE(abort_message,*)'cc_tot_mesh > tsom_tot', cc_tot_mesh, tsom_tot 1007 1007 CALL abort_physic(modname,abort_message,1) … … 1009 1009 1010 1010 if (cc_tot_mesh < maxval(test_tot(1:N_CS)) .and. & 1011 &abs(cc_tot_mesh-maxval(test_tot(1:N_CS))) > 1.e-4) then1011 abs(cc_tot_mesh-maxval(test_tot(1:N_CS))) > 1.e-4) then 1012 1012 WRITE(abort_message,*) 'cc_tot_mesh < max', cc_tot_mesh, maxval(test_tot(1:N_CS)) 1013 1013 CALL abort_physic(modname,abort_message,1) … … 1015 1015 1016 1016 if (cc_hc_mesh > tsom_hc .and. & 1017 &abs(cc_hc_mesh-tsom_hc) > 1.e-4) then1017 abs(cc_hc_mesh-tsom_hc) > 1.e-4) then 1018 1018 WRITE(abort_message,*) 'cc_hc_mesh > tsom_hc', cc_hc_mesh, tsom_hc 1019 1019 CALL abort_physic(modname,abort_message,1) … … 1021 1021 1022 1022 if (cc_hc_mesh < maxval(test_hc(1:N_CS)) .and. & 1023 &abs(cc_hc_mesh-maxval(test_hc(1:N_CS))) > 1.e-4) then1023 abs(cc_hc_mesh-maxval(test_hc(1:N_CS))) > 1.e-4) then 1024 1024 WRITE(abort_message,*) 'cc_hc_mesh < max', cc_hc_mesh, maxval(test_hc(1:N_CS)) 1025 1025 CALL abort_physic(modname,abort_message,1) … … 1027 1027 1028 1028 if (cc_hist_mesh > tsom_hist .and. & 1029 &abs(cc_hist_mesh-tsom_hist) > 1.e-4) then1029 abs(cc_hist_mesh-tsom_hist) > 1.e-4) then 1030 1030 WRITE(abort_message,*) 'cc_hist_mesh > tsom_hist', cc_hist_mesh, tsom_hist 1031 1031 CALL abort_physic(modname,abort_message,1) … … 1038 1038 1039 1039 if ((pcld_hc_mesh > maxval(test_pcld(1:N_CS)) .or. & 1040 &pcld_hc_mesh < minval(test_pcld(1:N_CS))) .and. &1041 &abs(pcld_hc_mesh-maxval(test_pcld(1:N_CS))) > 1. .and. &1042 &maxval(test_pcld(1:N_CS)) /= 999. &1043 &.and. minval(test_pcld(1:N_CS)) /= 999.) then1040 pcld_hc_mesh < minval(test_pcld(1:N_CS))) .and. & 1041 abs(pcld_hc_mesh-maxval(test_pcld(1:N_CS))) > 1. .and. & 1042 maxval(test_pcld(1:N_CS)) /= 999. & 1043 .and. minval(test_pcld(1:N_CS)) /= 999.) then 1044 1044 WRITE(abort_message,*) 'pcld_hc_mesh est faux', pcld_hc_mesh, maxval(test_pcld(1:N_CS)), & 1045 &minval(test_pcld(1:N_CS))1045 minval(test_pcld(1:N_CS)) 1046 1046 CALL abort_physic(modname,abort_message,1) 1047 1047 endif 1048 1048 1049 1049 if ((tcld_hc_mesh > maxval(test_tcld(1:N_CS)) .or. & 1050 &tcld_hc_mesh < minval(test_tcld(1:N_CS))) .and. &1051 &abs(tcld_hc_mesh-maxval(test_tcld(1:N_CS))) > 0.1 .and. &1052 &maxval(test_tcld(1:N_CS)) /= 999. &1053 &.and. minval(test_tcld(1:N_CS)) /= 999.) then1050 tcld_hc_mesh < minval(test_tcld(1:N_CS))) .and. & 1051 abs(tcld_hc_mesh-maxval(test_tcld(1:N_CS))) > 0.1 .and. & 1052 maxval(test_tcld(1:N_CS)) /= 999. & 1053 .and. minval(test_tcld(1:N_CS)) /= 999.) then 1054 1054 WRITE(abort_message,*) 'tcld_hc_mesh est faux', tcld_hc_mesh, maxval(test_tcld(1:N_CS)), & 1055 &minval(test_tcld(1:N_CS))1055 minval(test_tcld(1:N_CS)) 1056 1056 CALL abort_physic(modname,abort_message,1) 1057 1057 endif 1058 1058 1059 1059 if ((em_hc_mesh > maxval(test_em(1:N_CS)) .or. & 1060 &em_hc_mesh < minval(test_em(1:N_CS))) .and. &1061 &abs(em_hc_mesh-maxval(test_em(1:N_CS))) > 1.e-4 .and. &1062 &minval(test_em(1:N_CS)) /= 999. .and. &1063 &maxval(test_em(1:N_CS)) /= 999. ) then1060 em_hc_mesh < minval(test_em(1:N_CS))) .and. & 1061 abs(em_hc_mesh-maxval(test_em(1:N_CS))) > 1.e-4 .and. & 1062 minval(test_em(1:N_CS)) /= 999. .and. & 1063 maxval(test_em(1:N_CS)) /= 999. ) then 1064 1064 WRITE(abort_message,*) 'em_hc_mesh est faux', em_hc_mesh, maxval(test_em(1:N_CS)), & 1065 &minval(test_em(1:N_CS))1065 minval(test_em(1:N_CS)) 1066 1066 CALL abort_physic(modname,abort_message,1) 1067 1067 endif … … 1122 1122 1123 1123 subroutine simu_airs & 1124 &(itap, rneb_airs, temp_airs, cldemi_airs, iwcon0_airs, rad_airs, &1125 &geop_airs, pplay_airs, paprs_airs, &1126 &map_prop_hc,map_prop_hist,&1127 &map_emis_hc,map_iwp_hc,map_deltaz_hc,map_pcld_hc,map_tcld_hc,&1128 &map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&1129 &map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&1130 &map_emis_Anv,map_pcld_Anv,map_tcld_Anv,&1131 &map_emis_hist,map_iwp_hist,map_deltaz_hist,map_rad_hist,&1132 &map_ntot,map_hc,map_hist,&1133 &map_Cb,map_ThCi,map_Anv,alt_tropo )1124 (itap, rneb_airs, temp_airs, cldemi_airs, iwcon0_airs, rad_airs, & 1125 geop_airs, pplay_airs, paprs_airs, & 1126 map_prop_hc,map_prop_hist,& 1127 map_emis_hc,map_iwp_hc,map_deltaz_hc,map_pcld_hc,map_tcld_hc,& 1128 map_emis_Cb,map_pcld_Cb,map_tcld_Cb,& 1129 map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,& 1130 map_emis_Anv,map_pcld_Anv,map_tcld_Anv,& 1131 map_emis_hist,map_iwp_hist,map_deltaz_hist,map_rad_hist,& 1132 map_ntot,map_hc,map_hist,& 1133 map_Cb,map_ThCi,map_Anv,alt_tropo ) 1134 1134 1135 1135 USE dimphy … … 1143 1143 1144 1144 REAL, DIMENSION(klon,klev), intent(in) :: & 1145 &rneb_airs, temp_airs, cldemi_airs, iwcon0_airs, &1146 &rad_airs, geop_airs, pplay_airs, paprs_airs1145 rneb_airs, temp_airs, cldemi_airs, iwcon0_airs, & 1146 rad_airs, geop_airs, pplay_airs, paprs_airs 1147 1147 1148 1148 REAL, DIMENSION(klon,klev) :: & 1149 &rhodz_airs, rho_airs, iwcon_airs1149 rhodz_airs, rho_airs, iwcon_airs 1150 1150 1151 1151 REAL, DIMENSION(klon),intent(out) :: alt_tropo 1152 1152 1153 1153 REAL, DIMENSION(klev) :: rneb_1D, temp_1D, & 1154 &emis_1D, rad_1D, pres_1D, alt_1D, &1155 &rhodz_1D, dz_1D, iwcon_1D1154 emis_1D, rad_1D, pres_1D, alt_1D, & 1155 rhodz_1D, dz_1D, iwcon_1D 1156 1156 1157 1157 INTEGER :: i, j … … 1172 1172 REAL, DIMENSION(klon),intent(out) :: map_emis_Cb,map_pcld_Cb,map_tcld_Cb 1173 1173 REAL, DIMENSION(klon),intent(out) :: & 1174 &map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi1174 map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi 1175 1175 REAL, DIMENSION(klon),intent(out) :: & 1176 &map_emis_Anv,map_pcld_Anv,map_tcld_Anv1176 map_emis_Anv,map_pcld_Anv,map_tcld_Anv 1177 1177 REAL, DIMENSION(klon),intent(out) :: & 1178 &map_emis_hist,map_iwp_hist,map_deltaz_hist,&1179 &map_rad_hist1178 map_emis_hist,map_iwp_hist,map_deltaz_hist,& 1179 map_rad_hist 1180 1180 REAL, DIMENSION(klon),intent(out) :: map_ntot,map_hc,map_hist 1181 1181 REAL, DIMENSION(klon),intent(out) :: map_Cb,map_ThCi,map_Anv … … 1192 1192 do j = 1, klev-1 1193 1193 rhodz_airs(i,j) = & 1194 &(paprs_airs(i,j)-paprs_airs(i,j+1))/RG1194 (paprs_airs(i,j)-paprs_airs(i,j+1))/RG 1195 1195 enddo 1196 1196 rhodz_airs(i,klev) = 0. … … 1200 1200 do j = 1,klev 1201 1201 rho_airs(i,j) = & 1202 &pplay_airs(i,j)/(temp_airs(i,j)*RD)1202 pplay_airs(i,j)/(temp_airs(i,j)*RD) 1203 1203 1204 1204 if (rneb_airs(i,j) > 0.001) then … … 1232 1232 1233 1233 alt_tropo(i) = & 1234 &search_tropopause(pres_1D/100.,temp_1D,alt_1D,klev)1234 search_tropopause(pres_1D/100.,temp_1D,alt_1D,klev) 1235 1235 1236 1236 … … 1240 1240 1241 1241 call sim_mesh(rneb_1D, temp_1D, emis_1D, iwcon_1D, rad_1D, & 1242 &pres_1D, dz_1D, rhodz_1D, &1243 &cc_tot_mesh, cc_hc_mesh, cc_hist_mesh, &1244 &pcld_hc_mesh, tcld_hc_mesh, em_hc_mesh, iwp_hc_mesh, &1245 &deltaz_hc_mesh,&1246 &cc_Cb_mesh, cc_ThCi_mesh, cc_Anv_mesh, &1247 &pcld_Cb_mesh, tcld_Cb_mesh, em_Cb_mesh, &1248 &pcld_ThCi_mesh, tcld_ThCi_mesh, em_ThCi_mesh, &1249 &pcld_Anv_mesh, tcld_Anv_mesh, em_Anv_mesh, &1250 &em_hist_mesh, iwp_hist_mesh, deltaz_hist_mesh, rad_hist_mesh)1242 pres_1D, dz_1D, rhodz_1D, & 1243 cc_tot_mesh, cc_hc_mesh, cc_hist_mesh, & 1244 pcld_hc_mesh, tcld_hc_mesh, em_hc_mesh, iwp_hc_mesh, & 1245 deltaz_hc_mesh,& 1246 cc_Cb_mesh, cc_ThCi_mesh, cc_Anv_mesh, & 1247 pcld_Cb_mesh, tcld_Cb_mesh, em_Cb_mesh, & 1248 pcld_ThCi_mesh, tcld_ThCi_mesh, em_ThCi_mesh, & 1249 pcld_Anv_mesh, tcld_Anv_mesh, em_Anv_mesh, & 1250 em_hist_mesh, iwp_hist_mesh, deltaz_hist_mesh, rad_hist_mesh) 1251 1251 1252 1252 write(*,*) '====================================' 1253 1253 write(*,*) 'itap, i:', itap, i 1254 1254 write(*,*) 'cc_tot, cc_hc, cc_hist, pcld_hc, tcld_hc, em_hc, & 1255 &iwp_hc, em_hist, iwp_hist ='1255 iwp_hc, em_hist, iwp_hist =' 1256 1256 write(*,*) cc_tot_mesh, cc_hc_mesh, cc_hist_mesh 1257 1257 write(*,*) pcld_hc_mesh, tcld_hc_mesh, em_hc_mesh, iwp_hc_mesh … … 1263 1263 1264 1264 call normal2_undef(map_prop_hc(i),cc_hc_mesh, & 1265 &cc_tot_mesh)1265 cc_tot_mesh) 1266 1266 call normal2_undef(map_prop_hist(i),cc_hist_mesh, & 1267 &cc_tot_mesh)1267 cc_tot_mesh) 1268 1268 1269 1269 map_emis_hc(i) = em_hc_mesh -
LMDZ6/branches/Amaury_dev/libf/phylmd/stdlevvar_mod.F90
r5082 r5087 123 123 124 124 CALL cdrag(knon, nsrf, & 125 &speed, t1, q1, z1, &126 &psol, s_pblh, ts1, qsurf, z0m, z0h, &127 &zri_zero, 0, &128 &cdram, cdrah, zri1, pref, prain, tsol, pat1)125 speed, t1, q1, z1, & 126 psol, s_pblh, ts1, qsurf, z0m, z0h, & 127 zri_zero, 0, & 128 cdram, cdrah, zri1, pref, prain, tsol, pat1) 129 129 130 130 ! --- special Dice: on force cdragm ( a defaut de forcer ustar) MPL 05082013 … … 153 153 qstar(i) = (cdrah(i) * zdq(i) * speed(i))/ustar(i) 154 154 lmon(i) = (ustar(i) * ustar(i) * tpot(i))/ & 155 &(RKAR * RG * testar(i))155 (RKAR * RG * testar(i)) 156 156 ENDDO 157 157 ! … … 159 159 zref = 2.0 160 160 CALL screenp(klon, knon, nsrf, speed, tpot, q1, & 161 &ts1, qsurf, z0m, lmon, &162 &ustar, testar, qstar, zref, &163 &delu, delte, delq)161 ts1, qsurf, z0m, lmon, & 162 ustar, testar, qstar, zref, & 163 delu, delte, delq) 164 164 ! 165 165 DO i = 1, knon … … 179 179 okri=.TRUE. 180 180 CALL screenc(klon, knon, nsrf, zxli, & 181 &u_zref, temp, q_zref, zref, &182 & ts1, qsurf, z0m, z0h, psol, &183 &ustar, testar, qstar, okri, ri1, &184 & pref, delu, delte, delq, s_pblh ,prain, tsol, pat1)181 u_zref, temp, q_zref, zref, & 182 ts1, qsurf, z0m, z0h, psol, & 183 ustar, testar, qstar, okri, ri1, & 184 pref, delu, delte, delq, s_pblh ,prain, tsol, pat1) 185 185 ! 186 186 DO i = 1, knon … … 261 261 zref = 10.0 262 262 CALL screenp(klon, knon, nsrf, speed, tpot, q1, & 263 &ts1, qsurf, z0m, lmon, &264 &ustar, testar, qstar, zref, &265 &delu, delte, delq)263 ts1, qsurf, z0m, lmon, & 264 ustar, testar, qstar, zref, & 265 delu, delte, delq) 266 266 ! 267 267 DO i = 1, knon … … 281 281 okri=.TRUE. 282 282 CALL screenc(klon, knon, nsrf, zxli, & 283 &u_zref, temp, q_zref, zref, &284 &ts1, qsurf, z0m, z0h, psol, &285 &ustar, testar, qstar, okri, ri1, &286 &pref, delu, delte, delq, s_pblh ,prain, tsol, pat1)283 u_zref, temp, q_zref, zref, & 284 ts1, qsurf, z0m, z0h, psol, & 285 ustar, testar, qstar, okri, ri1, & 286 pref, delu, delte, delq, s_pblh ,prain, tsol, pat1) 287 287 ! 288 288 DO i = 1, knon … … 451 451 okri=.FALSE. 452 452 CALL cdrag(knon, nsrf, & 453 &speed, t1, q1, z1, &454 &psol, s_pblh, ts1, qsurf, z0m, z0h, &455 &zri_zero, 0, &456 &cdram, cdrah, zri1, pref, prain, tsol, pat1)453 speed, t1, q1, z1, & 454 psol, s_pblh, ts1, qsurf, z0m, z0h, & 455 zri_zero, 0, & 456 cdram, cdrah, zri1, pref, prain, tsol, pat1) 457 457 458 458 ! … … 472 472 ! 473 473 CALL screencn(klon, knon, nsrf, zxli, & 474 &speed, tpot, q1, zref, &475 & ts1, qsurf, z0m, z0h, psol, &476 &cdram, cdrah, okri, &477 &ri1, 1, &478 &pref_new, delm_new, delh_new, ri2m, &479 &s_pblh, prain, tsol, pat1 )474 speed, tpot, q1, zref, & 475 ts1, qsurf, z0m, z0h, psol, & 476 cdram, cdrah, okri, & 477 ri1, 1, & 478 pref_new, delm_new, delh_new, ri2m, & 479 s_pblh, prain, tsol, pat1 ) 480 480 ! 481 481 DO i = 1, knon … … 483 483 u_zref_p(i) = u_zref(i) 484 484 q_zref(i) = delh_new(i)*max(q1(i),0.0) + & 485 &max(qsurf(i),0.0)*(1-delh_new(i))485 max(qsurf(i),0.0)*(1-delh_new(i)) 486 486 q_zref_p(i) = q_zref(i) 487 487 te_zref(i) = delh_new(i)*tpot(i) + ts1(i)*(1-delh_new(i)) … … 495 495 ! 496 496 ok_t2m_toosmall(i)=te_zref(i)<tpot(i).AND. & 497 &te_zref(i)<ts1(i)497 te_zref(i)<ts1(i) 498 498 ok_t2m_toobig(i)=te_zref(i)>tpot(i).AND. & 499 &te_zref(i)>ts1(i)499 te_zref(i)>ts1(i) 500 500 ok_q2m_toosmall(i)=q_zref(i)<q1(i).AND. & 501 &q_zref(i)<qsurf(i)501 q_zref(i)<qsurf(i) 502 502 ok_q2m_toobig(i)=q_zref(i)>q1(i).AND. & 503 &q_zref(i)>qsurf(i)503 q_zref(i)>qsurf(i) 504 504 ok_u2m_toobig(i)=u_zref(i)>speed(i) 505 505 ! … … 515 515 ! 516 516 IF(ok_t2m_toosmall(i).OR.ok_t2m_toobig(i).OR. & 517 &ok_q2m_toosmall(i).OR.ok_q2m_toobig(i).OR. &518 & ok_u2m_toobig(i)) THEN517 ok_q2m_toosmall(i).OR.ok_q2m_toobig(i).OR. & 518 ok_u2m_toobig(i)) THEN 519 519 delm_new(i)=min(max(delm_new(i),0.),1.) 520 520 delh_new(i)=min(max(delh_new(i),0.),1.) … … 522 522 u_zref_p(i) = u_zref(i) 523 523 q_zref(i) = delh_new(i)*max(q1(i),0.0) + & 524 &max(qsurf(i),0.0)*(1-delh_new(i))524 max(qsurf(i),0.0)*(1-delh_new(i)) 525 525 q_zref_p(i) = q_zref(i) 526 526 te_zref(i) = delh_new(i)*tpot(i) + ts1(i)*(1-delh_new(i)) … … 540 540 okri=.TRUE. 541 541 CALL screencn(klon, knon, nsrf, zxli, & 542 &u_zref, temp, q_zref, zref, &543 &ts1, qsurf, z0m, z0h, psol, &544 &cdram, cdrah, okri, &545 &ri1, 0, &546 &pref, delm, delh, ri2m, &547 &s_pblh, prain, tsol, pat1 )542 u_zref, temp, q_zref, zref, & 543 ts1, qsurf, z0m, z0h, psol, & 544 cdram, cdrah, okri, & 545 ri1, 0, & 546 pref, delm, delh, ri2m, & 547 s_pblh, prain, tsol, pat1 ) 548 548 ! 549 549 DO i = 1, knon 550 550 u_zref(i) = delm(i)*speed(i) 551 551 q_zref(i) = delh(i)*max(q1(i),0.0) + & 552 &max(qsurf(i),0.0)*(1-delh(i))552 max(qsurf(i),0.0)*(1-delh(i)) 553 553 te_zref(i) = delh(i)*tpot(i) + ts1(i)*(1-delh(i)) 554 554 ! … … 559 559 ! 560 560 ok_t2m_toosmall(i)=te_zref(i)<tpot(i).AND. & 561 &te_zref(i)<ts1(i)561 te_zref(i)<ts1(i) 562 562 ok_t2m_toobig(i)=te_zref(i)>tpot(i).AND. & 563 &te_zref(i)>ts1(i)563 te_zref(i)>ts1(i) 564 564 ok_q2m_toosmall(i)=q_zref(i)<q1(i).AND. & 565 &q_zref(i)<qsurf(i)565 q_zref(i)<qsurf(i) 566 566 ok_q2m_toobig(i)=q_zref(i)>q1(i).AND. & 567 &q_zref(i)>qsurf(i)567 q_zref(i)>qsurf(i) 568 568 ok_u2m_toobig(i)=u_zref(i)>speed(i) 569 569 ! … … 579 579 ! 580 580 IF(ok_t2m_toosmall(i).OR.ok_t2m_toobig(i).OR. & 581 &ok_q2m_toosmall(i).OR.ok_q2m_toobig(i).OR. &582 & ok_u2m_toobig(i)) THEN581 ok_q2m_toosmall(i).OR.ok_q2m_toobig(i).OR. & 582 ok_u2m_toobig(i)) THEN 583 583 delm(i)=min(max(delm(i),0.),1.) 584 584 delh(i)=min(max(delh(i),0.),1.) 585 585 u_zref(i) = delm(i)*speed(i) 586 586 q_zref(i) = delh(i)*max(q1(i),0.0) + & 587 &max(qsurf(i),0.0)*(1-delh(i))587 max(qsurf(i),0.0)*(1-delh(i)) 588 588 te_zref(i) = delh(i)*tpot(i) + ts1(i)*(1-delh(i)) 589 589 temp(i) = te_zref(i) * (psol(i)/pref(i))**(-RKAPPA) … … 620 620 ! 621 621 CALL screencn(klon, knon, nsrf, zxli, & 622 &speed, tpot, q1, zref, &623 & ts1, qsurf, z0m, z0h, psol, &624 &cdram, cdrah, okri, &625 &ri1, 1, &626 &pref_new, delm_new, delh_new, ri10m, &627 &s_pblh, prain, tsol, pat1 )622 speed, tpot, q1, zref, & 623 ts1, qsurf, z0m, z0h, psol, & 624 cdram, cdrah, okri, & 625 ri1, 1, & 626 pref_new, delm_new, delh_new, ri10m, & 627 s_pblh, prain, tsol, pat1 ) 628 628 ! 629 629 DO i = 1, knon 630 630 u_zref(i) = delm_new(i)*speed(i) 631 631 q_zref(i) = delh_new(i)*max(q1(i),0.0) + & 632 &max(qsurf(i),0.0)*(1-delh_new(i))632 max(qsurf(i),0.0)*(1-delh_new(i)) 633 633 te_zref(i) = delh_new(i)*tpot(i) + ts1(i)*(1-delh_new(i)) 634 634 temp(i) = te_zref(i) * (psol(i)/pref_new(i))**(-RKAPPA) … … 638 638 ! 639 639 ok_t10m_toosmall(i)=te_zref(i)<tpot(i).AND. & 640 &te_zref(i)<ts1(i)640 te_zref(i)<ts1(i) 641 641 ok_t10m_toobig(i)=te_zref(i)>tpot(i).AND. & 642 &te_zref(i)>ts1(i)642 te_zref(i)>ts1(i) 643 643 ok_q10m_toosmall(i)=q_zref(i)<q1(i).AND. & 644 &q_zref(i)<qsurf(i)644 q_zref(i)<qsurf(i) 645 645 ok_q10m_toobig(i)=q_zref(i)>q1(i).AND. & 646 &q_zref(i)>qsurf(i)646 q_zref(i)>qsurf(i) 647 647 ok_u10m_toobig(i)=u_zref(i)>speed(i) 648 648 ! … … 658 658 ! 659 659 IF(ok_t10m_toosmall(i).OR.ok_t10m_toobig(i).OR. & 660 &ok_q10m_toosmall(i).OR.ok_q10m_toobig(i).OR. &661 & ok_u10m_toobig(i)) THEN660 ok_q10m_toosmall(i).OR.ok_q10m_toobig(i).OR. & 661 ok_u10m_toobig(i)) THEN 662 662 delm_new(i)=min(max(delm_new(i),0.),1.) 663 663 delh_new(i)=min(max(delh_new(i),0.),1.) … … 665 665 u_zref_p(i) = u_zref(i) 666 666 q_zref(i) = delh_new(i)*max(q1(i),0.0) + & 667 &max(qsurf(i),0.0)*(1-delh_new(i))667 max(qsurf(i),0.0)*(1-delh_new(i)) 668 668 te_zref(i) = delh_new(i)*tpot(i) + ts1(i)*(1-delh_new(i)) 669 669 temp(i) = te_zref(i) * (psol(i)/pref_new(i))**(-RKAPPA) … … 678 678 okri=.TRUE. 679 679 CALL screencn(klon, knon, nsrf, zxli, & 680 &u_zref, temp, q_zref, zref, &681 &ts1, qsurf, z0m, z0h, psol, &682 &cdram, cdrah, okri, &683 &ri1, 0, &684 &pref, delm, delh, ri10m, &685 &s_pblh, prain, tsol, pat1 )680 u_zref, temp, q_zref, zref, & 681 ts1, qsurf, z0m, z0h, psol, & 682 cdram, cdrah, okri, & 683 ri1, 0, & 684 pref, delm, delh, ri10m, & 685 s_pblh, prain, tsol, pat1 ) 686 686 ! 687 687 DO i = 1, knon 688 688 u_zref(i) = delm(i)*speed(i) 689 689 q_zref(i) = delh(i)*max(q1(i),0.0) + & 690 &max(qsurf(i),0.0)*(1-delh(i))690 max(qsurf(i),0.0)*(1-delh(i)) 691 691 te_zref(i) = delh(i)*tpot(i) + ts1(i)*(1-delh(i)) 692 692 ! … … 697 697 ! 698 698 ok_t10m_toosmall(i)=te_zref(i)<tpot(i).AND. & 699 &te_zref(i)<ts1(i)699 te_zref(i)<ts1(i) 700 700 ok_t10m_toobig(i)=te_zref(i)>tpot(i).AND. & 701 &te_zref(i)>ts1(i)701 te_zref(i)>ts1(i) 702 702 ok_q10m_toosmall(i)=q_zref(i)<q1(i).AND. & 703 &q_zref(i)<qsurf(i)703 q_zref(i)<qsurf(i) 704 704 ok_q10m_toobig(i)=q_zref(i)>q1(i).AND. & 705 &q_zref(i)>qsurf(i)705 q_zref(i)>qsurf(i) 706 706 ok_u10m_toobig(i)=u_zref(i)>speed(i) 707 707 ! … … 717 717 ! 718 718 IF(ok_t10m_toosmall(i).OR.ok_t10m_toobig(i).OR. & 719 &ok_q10m_toosmall(i).OR.ok_q10m_toobig(i).OR. &720 & ok_u10m_toobig(i)) THEN719 ok_q10m_toosmall(i).OR.ok_q10m_toobig(i).OR. & 720 ok_u10m_toobig(i)) THEN 721 721 delm(i)=min(max(delm(i),0.),1.) 722 722 delh(i)=min(max(delh(i),0.),1.) 723 723 u_zref(i) = delm(i)*speed(i) 724 724 q_zref(i) = delh(i)*max(q1(i),0.0) + & 725 &max(qsurf(i),0.0)*(1-delh(i))725 max(qsurf(i),0.0)*(1-delh(i)) 726 726 te_zref(i) = delh(i)*tpot(i) + ts1(i)*(1-delh(i)) 727 727 temp(i) = te_zref(i) * (psol(i)/pref(i))**(-RKAPPA) -
LMDZ6/branches/Amaury_dev/libf/phylmd/sumethox.F90
r2136 r5087 46 46 47 47 USE YOEMETH , ONLY : RALPHA1 ,RALPHA2 ,RQLIM ,& 48 &RPBOTOX, RPBOTPH ,RPTOPOX ,RPTOPPH ,&49 & RALPHA3, RLOGPPH48 RPBOTOX, RPBOTPH ,RPTOPOX ,RPTOPPH ,& 49 RALPHA3, RLOGPPH 50 50 51 51 !* 1. SET VALUES -
LMDZ6/branches/Amaury_dev/libf/phylmd/suphel.F90
r4001 r5087 103 103 WRITE (UNIT=6, FMT='('' *** Radiation ***'')') 104 104 WRITE (UNIT=6, FMT='('' Stefan-Bol. = '',E13.7,'' W m-2 K-4'' & 105 & & 106 &)') rsigma105 106 )') rsigma 107 107 ! IM init. dans conf_phys.F90 WRITE(UNIT=6,FMT='('' Solar const. = 108 108 ! '',E13.7,'' W m-2'')') -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_land_bucket_mod.F90
r5082 r5087 130 130 IF (iso_eau > 0) THEN 131 131 CALL iso_verif_egalite_choix(precip_snow(i), & 132 &xtprecip_snow(iso_eau,i),'surf_land_bucket 131', &133 &errmax,errmaxrel)132 xtprecip_snow(iso_eau,i),'surf_land_bucket 131', & 133 errmax,errmaxrel) 134 134 CALL iso_verif_egalite_choix(qsol(i), & 135 &xtsol(iso_eau,i),'surf_land_bucket 134', &136 &errmax,errmaxrel)135 xtsol(iso_eau,i),'surf_land_bucket 134', & 136 errmax,errmaxrel) 137 137 ENDIF 138 138 ENDDO … … 171 171 IF (soil_model) THEN 172 172 CALL soil(dtime, is_ter, knon, snow, tsurf, qsol, & 173 &longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)173 longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux) 174 174 175 175 DO i=1, knon … … 204 204 IF (iso_eau > 0) THEN 205 205 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i), & 206 &snow(i),'surf_land_bucket 522', &207 & errmax,errmaxrel)206 snow(i),'surf_land_bucket 522', & 207 errmax,errmaxrel) 208 208 ENDIF !IF (iso_eau > 0) then 209 209 ENDDO !DO i=1,knon … … 229 229 IF (iso_eau > 0) THEN 230 230 CALL iso_verif_egalite(qsol_prec(i),xtsol_prec(iso_eau,i), & 231 &'surf_land_bucket 141')231 'surf_land_bucket 141') 232 232 ENDIF 233 233 ENDDO !DO i=1,knon … … 241 241 snow, qsol, tsurf_new, evap & 242 242 #ifdef ISO 243 &,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag &244 &,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag &245 #endif 246 &)243 ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & 244 ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag & 245 #endif 246 ) 247 247 248 248 #ifdef ISO … … 259 259 IF (iso_eau > 0) THEN 260 260 CALL iso_verif_egalite_choix(qsol_prec(i), & 261 &xtsol_prec(iso_eau,i),'surf_land_bucket 628', &262 &errmax,errmaxrel)261 xtsol_prec(iso_eau,i),'surf_land_bucket 628', & 262 errmax,errmaxrel) 263 263 CALL iso_verif_egalite_choix(precip_snow(i), & 264 &xtprecip_snow(iso_eau,i),'surf_land_bucket 227', &265 &errmax,errmaxrel)264 xtprecip_snow(iso_eau,i),'surf_land_bucket 227', & 265 errmax,errmaxrel) 266 266 ! attention, dans fonte_neige, on modifie snow sans modifier 267 267 ! xtsnow … … 270 270 ! write(*,*) 'snow(i)=',snow(i) 271 271 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i), & 272 &snow_prec(i),'surf_land_bucket 245', &273 & errmax,errmaxrel)272 snow_prec(i),'surf_land_bucket 245', & 273 errmax,errmaxrel) 274 274 ENDIF 275 275 IF ((iso_O17 > 0).AND.(iso_O18 > 0)) THEN 276 276 IF (qsol_prec(i) > ridicule_qsol) THEN 277 277 CALL iso_verif_aberrant_o17(xtsol_prec(iso_O17,i)/qsol_prec(i) & 278 &,xtsol_prec(iso_O18,i)/qsol_prec(i) &279 &,'surf_land_bucket 642')278 ,xtsol_prec(iso_O18,i)/qsol_prec(i) & 279 ,'surf_land_bucket 642') 280 280 ENDIF !IF ((qsol_prec(i) > ridicule_qsol) & 281 281 ENDIF !IF ((iso_O17 > 0).AND.(iso_O18 > 0)) THEN … … 285 285 #endif 286 286 CALL calcul_iso_surf_ter_vectall(klon,knon, & 287 &evap,snow_evap_diag,snow, &288 &fq_fonte_diag,fqfonte_diag,dtime,precip_rain,xtprecip_rain, &289 &precip_snow,xtprecip_snow, snow_prec,xtsnow_prec, &290 &tsurf_new,xtspechum,pref,spechum,t_coup,u1_lay,v1_lay,p1lay, &291 &qsol,xtsol,qsol_prec,xtsol_prec, &292 &max_eau_sol_diag, &293 &xtevap,xtsnow,h1,runoff_diag,xtrunoff_diag,fqcalving_diag, &294 &knindex,is_ter,run_off_lic_diag,coeff_rel_diag,Rland_ice &295 &)287 evap,snow_evap_diag,snow, & 288 fq_fonte_diag,fqfonte_diag,dtime,precip_rain,xtprecip_rain, & 289 precip_snow,xtprecip_snow, snow_prec,xtsnow_prec, & 290 tsurf_new,xtspechum,pref,spechum,t_coup,u1_lay,v1_lay,p1lay, & 291 qsol,xtsol,qsol_prec,xtsol_prec, & 292 max_eau_sol_diag, & 293 xtevap,xtsnow,h1,runoff_diag,xtrunoff_diag,fqcalving_diag, & 294 knindex,is_ter,run_off_lic_diag,coeff_rel_diag,Rland_ice & 295 ) 296 296 !#ifdef ISOVERIF 297 297 ! write(*,*) 'surf_land_bucket 303' -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_land_mod.F90
r5022 r5087 181 181 if (iso_eau.gt.0) then 182 182 call iso_verif_egalite_choix(precip_snow(i), & 183 &xtprecip_snow(iso_eau,i),'surf_land_mod 129', &184 &errmax,errmaxrel)183 xtprecip_snow(iso_eau,i),'surf_land_mod 129', & 184 errmax,errmaxrel) 185 185 call iso_verif_egalite_choix(qsol(i), & 186 &xtsol(iso_eau,i),'surf_land_mod 139', &187 &errmax,errmaxrel)186 xtsol(iso_eau,i),'surf_land_mod 139', & 187 errmax,errmaxrel) 188 188 endif 189 189 enddo … … 254 254 if (iso_eau.gt.0) then 255 255 call iso_verif_egalite_choix(xtevap(iso_eau,i),evap(i), & 256 &'surf_land 197',errmax,errmaxrel)256 'surf_land 197',errmax,errmaxrel) 257 257 endif !if (iso_eau.gt.0) then 258 258 enddo !do i=1,knon … … 275 275 ! write(*,*) 'surf_land 247' 276 276 call iso_verif_egalite_vect1D( & 277 &xtsnow,snow,'surf_land_mod 207',niso,klon)277 xtsnow,snow,'surf_land_mod 207',niso,klon) 278 278 #endif 279 279 #endif … … 295 295 ,xtprecip_rain, xtprecip_snow,xtspechum, & 296 296 xtsnow, xtsol,xtevap,h1, & 297 &runoff_diag, xtrunoff_diag,Rland_ice &297 runoff_diag, xtrunoff_diag,Rland_ice & 298 298 #endif 299 &)299 ) 300 300 z0h(1:knon)=z0m(1:knon) ! En attendant mieux 301 301 … … 326 326 IF (iso_eau >= 0) THEN 327 327 call iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), & 328 &'surf_land 241',errmax,errmaxrel)328 'surf_land 241',errmax,errmaxrel) 329 329 ENDIF !if (iso_eau.gt.0) then 330 330 ENDDO !do i=1,knon … … 398 398 DO i=1,knon 399 399 IF ((rlat(knindex(i)) >= lat_min_nudge_qsol).and. & 400 &(rlat(knindex(i)) <= lat_max_nudge_qsol).and. &401 &(rlon(knindex(i)) >= lon_min_nudge_qsol).and. &402 &(rlon(knindex(i)) <= lon_max_nudge_qsol)) THEN400 (rlat(knindex(i)) <= lat_max_nudge_qsol).and. & 401 (rlon(knindex(i)) >= lon_min_nudge_qsol).and. & 402 (rlon(knindex(i)) <= lon_max_nudge_qsol)) THEN 403 403 ! write(*,*) 'surf_land 324: bon domaine: rlat,rlon,qsol=', & 404 404 ! & rlat(knindex(i)),rlon(knindex(i)),qsol(knindex(i)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_landice_mod.F90
r5082 r5087 25 25 flux_u1, flux_v1 & 26 26 #ifdef ISO 27 &,xtprecip_rain, xtprecip_snow,xtspechum,Rland_ice &28 &,xtsnow,xtsol,xtevap &27 ,xtprecip_rain, xtprecip_snow,xtspechum,Rland_ice & 28 ,xtsnow,xtsol,xtevap & 29 29 #endif 30 &)30 ) 31 31 32 32 USE dimphy … … 216 216 IF (iso_eau > 0) THEN 217 217 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), & 218 &'surf_land_ice 126',errmax,errmaxrel)218 'surf_land_ice 126',errmax,errmaxrel) 219 219 ENDIF !IF (iso_eau > 0) THEN 220 220 ENDDO !DO i=1,knon … … 357 357 IF (soil_model) THEN 358 358 CALL soil(dtime, is_lic, knon, snow, tsurf, qsol, & 359 &longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)359 longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux) 360 360 cal(1:knon) = RCPD / soilcap(1:knon) 361 361 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) … … 393 393 IF (snow(i) > ridicule) THEN 394 394 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), & 395 &'surf_land_ice 1151',errmax,errmaxrel)395 'surf_land_ice 1151',errmax,errmaxrel) 396 396 ENDIF !IF ((snow(i) > ridicule)) THEN 397 397 ENDIF !IF (iso_eau > 0) THEN … … 614 614 snow, qsol, tsurf_new, evap_totsnow & 615 615 #ifdef ISO 616 &,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag &617 &,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag &618 #endif 619 &)616 ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & 617 ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag & 618 #endif 619 ) 620 620 621 621 … … 625 625 IF (iso_eau > 0) THEN 626 626 CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 627 &'surf_landice_mod 217',errmax,errmaxrel)627 'surf_landice_mod 217',errmax,errmaxrel) 628 628 ENDIF !IF (iso_eau > 0) THEN 629 629 ENDDO !DO i=1,knon … … 631 631 632 632 CALL calcul_iso_surf_lic_vectall(klon,knon, & 633 &evap,snow_evap_diag,Tsurf_new,snow, &634 &fq_fonte_diag,fqfonte_diag,dtime,t_coup, &635 &precip_snow,xtprecip_snow,precip_rain,xtprecip_rain, snow_prec,xtsnow_prec, &636 &xtspechum,spechum,ps,Rland_ice, &637 &xtevap,xtsnow,fqcalving_diag, &638 &knindex,is_lic,run_off_lic_diag,coeff_rel_diag &639 & )633 evap,snow_evap_diag,Tsurf_new,snow, & 634 fq_fonte_diag,fqfonte_diag,dtime,t_coup, & 635 precip_snow,xtprecip_snow,precip_rain,xtprecip_rain, snow_prec,xtsnow_prec, & 636 xtspechum,spechum,ps,Rland_ice, & 637 xtevap,xtsnow,fqcalving_diag, & 638 knindex,is_lic,run_off_lic_diag,coeff_rel_diag & 639 ) 640 640 641 641 ! call fonte_neige_export_xtrun_off_lic_0(knon,xtrun_off_lic_0_diag) -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_ocean_mod.F90
r5082 r5087 23 23 dt_ds, tkt, tks, taur, sss & 24 24 #ifdef ISO 25 &,xtprecip_rain, xtprecip_snow,xtspechum,Roce, &26 &xtsnow,xtevap,h1 &25 ,xtprecip_rain, xtprecip_snow,xtspechum,Roce, & 26 xtsnow,xtevap,h1 & 27 27 #endif 28 &)28 ) 29 29 30 30 use albedo, only: alboc, alboc_cd … … 184 184 IF (iso_eau > 0) THEN 185 185 CALL iso_verif_egalite_choix(xtspechum(iso_eau,i), & 186 &spechum(i),'surf_ocean_mod 117', &187 & errmax,errmaxrel)186 spechum(i),'surf_ocean_mod 117', & 187 errmax,errmaxrel) 188 188 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i), & 189 &snow(i),'surf_ocean_mod 127', &190 & errmax,errmaxrel)189 snow(i),'surf_ocean_mod 127', & 190 errmax,errmaxrel) 191 191 ENDIF !IF (iso_eau > 0) then 192 192 ENDDO !DO i=1,klon -
LMDZ6/branches/Amaury_dev/libf/phylmd/surf_seaice_mod.F90
r5022 r5087 23 23 flux_u1, flux_v1 & 24 24 #ifdef ISO 25 &,xtprecip_rain, xtprecip_snow,xtspechum,Roce, &26 &xtsnow,xtsol,xtevap,Rland_ice &25 ,xtprecip_rain, xtprecip_snow,xtspechum,Roce, & 26 xtsnow,xtsol,xtevap,Rland_ice & 27 27 #endif 28 &)28 ) 29 29 30 30 USE dimphy -
LMDZ6/branches/Amaury_dev/libf/phylmd/yamada4.F90
r5082 r5087 393 393 tkeprov=q2(ig,k)/ydeux 394 394 tkeprov= tkeprov* & 395 &(tkeprov+dt*(shear(ig,k)+max(0.,buoy(ig,k))))/ &396 &(tkeprov+dt*((-1.)*min(0.,buoy(ig,k))+dissip(ig,k)+drgpro(ig,k)*tkeprov))395 (tkeprov+dt*(shear(ig,k)+max(0.,buoy(ig,k))))/ & 396 (tkeprov+dt*((-1.)*min(0.,buoy(ig,k))+dissip(ig,k)+drgpro(ig,k)*tkeprov)) 397 397 q2(ig,k)=tkeprov*ydeux 398 398 ENDDO … … 430 430 tkeprov= tkeprov+dt*(shear(ig,k)+max(0.,buoy(ig,k))) 431 431 tkeprov= tkeprov* & 432 &tkeprov/ &433 &(tkeprov+dt*((-1.)*min(0.,buoy(ig,k))+dissip(ig,k)))432 tkeprov/ & 433 (tkeprov+dt*((-1.)*min(0.,buoy(ig,k))+dissip(ig,k))) 434 434 q2(ig,k)=tkeprov*ydeux 435 435 ! En cas stable, on traite la flotabilite comme la … … 453 453 winds(ig,k)=sqrt(u(ig,k)**2+v(ig,k)**2) 454 454 tkeprov= (shear(ig,k)+ & 455 &drgpro(ig,k)*(winds(ig,k))**3)*tkeprov/disseff*(1.-tkeexp)+tkeprov*tkeexp455 drgpro(ig,k)*(winds(ig,k))**3)*tkeprov/disseff*(1.-tkeexp)+tkeprov*tkeexp 456 456 q2(ig,k)=tkeprov*ydeux 457 457 ! En cas stable, on traite la flotabilite comme la -
LMDZ6/branches/Amaury_dev/libf/phylmd/yamada_c.F90
r5082 r5087 3 3 ! 4 4 SUBROUTINE yamada_c(ngrid,timestep,plev,play & 5 &,pu,pv,pt,d_u,d_v,d_t,cd,q2,km,kn,kq,d_t_diss,ustar &6 &,iflag_pbl)5 ,pu,pv,pt,d_u,d_v,d_t,cd,q2,km,kn,kq,d_t_diss,ustar & 6 ,iflag_pbl) 7 7 USE dimphy, ONLY: klon, klev 8 8 USE print_control_mod, ONLY: prt_level … … 129 129 fsm(ri)=1.96*(0.1912-ri)*(0.2341-ri)/((1.-ri)*(0.2231-ri)) 130 130 fl(zzz,zl0,zq2,zn2)= & 131 &max(min(l0(ig)*kap*zlev(ig,k)/(kap*zlev(ig,k)+l0(ig)) &132 &,0.5*sqrt(q2(ig,k))/sqrt(max(n2(ig,k),1.e-10))) ,1.)131 max(min(l0(ig)*kap*zlev(ig,k)/(kap*zlev(ig,k)+l0(ig)) & 132 ,0.5*sqrt(q2(ig,k))/sqrt(max(n2(ig,k),1.e-10))) ,1.) 133 133 134 134 … … 242 242 DO ig=1,ngrid 243 243 zlev(ig,nlev)=zlay(ig,nlay) & 244 &+( zlay(ig,nlay) - zlev(ig,nlev-1) )244 +( zlay(ig,nlay) - zlev(ig,nlev-1) ) 245 245 ENDDO 246 246 !!!!!! <----
Note: See TracChangeset
for help on using the changeset viewer.