Changeset 411
- Timestamp:
- Nov 22, 2011, 5:34:42 PM (14 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/aeropacity.F
r358 r411 428 428 tauscaling(ig) = tauref(ig) * 429 429 & pplev(ig,1) / 700.E0 / taudusttmp(ig) 430 c tauscaling(ig) = 1.e-4 430 431 ENDDO 431 432 … … 435 436 DO ig=1,ngrid 436 437 aerosol(ig,l,iaerdust(iaer)) = max(1E-20, 437 & tauref(ig) * 438 & pplev(ig,1) / 700.E0 * 439 & aerosol(ig,l,iaerdust(iaer)) / 440 & taudusttmp(ig) 441 & ) 438 & aerosol(ig,l,iaerdust(iaer))* tauscaling(ig)) 442 439 ENDDO 443 440 ENDDO 444 441 ENDDO 445 442 443 c output for debug 444 IF (ngrid.NE.1) THEN 445 CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust', 446 & '#',2,taudusttmp) 447 CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling', 448 & '#',2,tauscaling) 449 ELSE 450 CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust', 451 & '#',0,taudusttmp) 452 CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling', 453 & '#',0,tauscaling) 454 ENDIF 446 455 c ----------------------------------------------------------------- 447 456 c Column integrated visible optical depth in each point -
trunk/LMDZ.MARS/libf/phymars/callsedim.F
r358 r411 1 1 SUBROUTINE callsedim(ngrid,nlay, ptimestep, 2 & pplev,zlev, pt, rdust, rice,2 & pplev,zlev, zlay, pt, rdust, rice, 3 3 & rsedcloud,rhocloud, 4 & pq, pdqfi, pdqsed,pdqs_sed,nq) 4 & pq, pdqfi, pdqsed,pdqs_sed,nq, 5 & tau, tauscaling) 5 6 IMPLICIT NONE 6 7 … … 70 71 c Cloud density (kg.m-3) 71 72 real rhocloud(ngridmx,nlayermx) 73 74 c for ice radius computation 75 REAL ccn_factor 76 REAL Mo,No 77 REAL tau(ngrid,nlay), tauscaling(ngrid) 78 REAL zlay(ngrid,nlay) ! altitude at the middle of the layers 79 REAl ccntyp 80 72 81 73 82 … … 121 130 122 131 IF (firstcall) THEN 132 123 133 IF(ngrid.NE.ngridmx) THEN 124 134 PRINT*,'STOP dans callsedim' … … 190 200 stop 191 201 endif 202 ELSE 203 write(*,*) "water_param CCN reduc. fac. ", ccn_factor 204 write(*,*) "Careful: only used when microphys=F, otherwise" 205 write(*,*) " the contact parameter is used instead;" 192 206 ENDIF !of if (scavenging) 193 207 … … 366 380 else if (water.and.(iq.eq.igcm_h2o_ice)) then 367 381 if (microphys) then 368 call newsedim(ngrid,nlay,ngrid*nlay,ngrid*nlay, ptimestep,369 & p plev,masse,epaisseur,pt,rsedcloud,rhocloud,zqi(1,1,iq),370 & wq,1.0)382 call newsedim(ngrid,nlay,ngrid*nlay,ngrid*nlay, 383 & ptimestep,pplev,masse,epaisseur,pt,rsedcloud,rhocloud, 384 & zqi(1,1,iq),wq,1.0) 371 385 else 372 call newsedim(ngrid,nlay,ngrid*nlay,1, ptimestep,373 & p plev,masse,epaisseur,pt,rsedcloud,rho_q(iq),zqi(1,1,iq),374 & wq,1.0)386 call newsedim(ngrid,nlay,ngrid*nlay,1, 387 & ptimestep,pplev,masse,epaisseur,pt,rsedcloud,rho_q(iq), 388 & zqi(1,1,iq),wq,1.0) 375 389 endif ! of if (microphys) 376 390 c Tendencies … … 417 431 ENDDO 418 432 ENDDO 433 434 c Update the ice particle size "rice" 435 c ------------------------------------- 436 IF(scavenging) THEN 437 DO l = 1, nlay 438 DO ig=1,ngrid 439 Mo = zqi(ig,l,igcm_h2o_ice) + 440 & zqi(ig,l,iccn_mass)* tauscaling(ig) + 1.e-30 441 No = zqi(ig,l,iccn_number)* tauscaling(ig)+ 1.e-30 442 rhocloud(ig,l) = zqi(ig,l,igcm_h2o_ice) / Mo * rho_ice 443 & +zqi(ig,l,iccn_mass)* tauscaling(ig) 444 & / Mo * rho_dust 445 rhocloud(ig,l) = 446 & min(max(rhocloud(ig,l),rho_ice),rho_dust) 447 rice(ig,l) = 448 & ( Mo / No * 0.75 / pi / rhocloud(ig,l) ) **(1./3.) 449 if ((Mo.lt.1.e-20) .or. (No.le.1)) rice(ig,l) = 1.e-8 450 c print*, "Mice,Mo, No",zqi(ig,l,igcm_h2o_ice),Mo, No 451 c print*, "rice, rho apres", rice(ig,l), rhocloud(ig,l) 452 453 ENDDO 454 ENDDO 455 ELSE 456 DO l = 1, nlay 457 DO ig=1,ngrid 458 ccntyp = 459 & 1.3e+8*max(tau(ig,1),0.001)/0.1*exp(-zlay(ig,l)/10000.) 460 ccntyp = ccntyp /ccn_factor 461 rice(ig,l)=max( CBRT ( (zqi(ig,l,igcm_h2o_ice)/rho_ice 462 & +ccntyp*(4./3.)*pi*rdust(ig,l)**3.) 463 & /(ccntyp*4./3.*pi) ), rdust(ig,l)) 464 ENDDO 465 ENDDO 466 ENDIF 419 467 420 468 RETURN -
trunk/LMDZ.MARS/libf/phymars/improvedclouds.F
r358 r411 1 1 subroutine improvedclouds(ngrid,nlay,ptimestep, 2 & ppl ay,pt,pdt,2 & pplev,pplay,pt,pdt, 3 3 & pq,pdq,pdqcloud,pdqscloud,pdtcloud, 4 4 & nq,tauscaling,rdust,rice,nuice, … … 37 37 integer nq ! nombre de traceurs 38 38 REAL ptimestep ! pas de temps physique (s) 39 REAL ppl ay(ngrid,nlay) ! pression au milieu des couches (Pa)39 REAL pplev(ngrid,nlay+1),pplay(ngrid,nlay) ! pression au milieu des couches (Pa) 40 40 REAL pt(ngrid,nlay) ! temperature at the middle of the 41 41 ! layers (K) … … 116 116 REAL dN_out(ngridmx,nlayermx) ! mass variation for output 117 117 REAL dM_out(ngridmx,nlayermx) ! number variation for output 118 REAL dM_col(ngridmx) ! total mass condensed in column 119 REAL dN_col(ngridmx) ! total mass condensed in column 118 120 REAL Mcon_out(ngridmx,nlayermx) ! mass to be condensed (not dMice !!) 119 121 REAL gr_out(ngridmx,nlayermx) ! for 1d output 120 122 REAL newvap_out(ngridmx,nlayermx) ! for 1d output 123 REAL Mdust_col(ngridmx) ! total column dust mass 124 REAL Ndust_col(ngridmx) ! total column dust mass 125 REAL Mccn_col(ngridmx) ! total column ccn mass 126 REAL Nccn_col(ngridmx) ! total column ccn mass 127 REAL count 128 121 129 122 130 c------------------------------------------------------------------ … … 186 194 c 1. Initialization 187 195 c----------------------------------------------------------------------- 196 c Initialize the tendencies 197 pdqscloud(1:ngrid,1:nq)=0 198 pdqcloud(1:ngrid,1:nlay,1:nq)=0 199 pdtcloud(1:ngrid,1:nlay)=0 200 188 201 c Update the needed variables 189 190 c write(*,*) "tauscaling", tauscaling191 192 !write(*,*) "pq ccn_mass", pq(ig,:,igcm_ccn_mass)193 !write(*,*) "pdq ccn_mass", pdq(ig,:,igcm_ccn_mass)194 !write(*,*) "pq ccn_number", pq(ig,:,igcm_ccn_number)195 !write(*,*) "pdq ccn_number", pdq(ig,:,igcm_ccn_number)196 197 ! print*, "improvedcloud debut pdq",198 ! & pdq(:,:,igcm_ccn_number)*ptimestep199 ! print*, "improvedcloud debut pq", pq(:,:,igcm_ccn_number)200 201 202 202 do l=1,nlay 203 203 do ig=1,ngrid … … 205 205 zt(ig,l)=pt(ig,l)+ pdt(ig,l)*ptimestep 206 206 c Dust mass mixing ratio 207 c (converted to the true value using tauscaling)208 207 zq(ig,l,igcm_dust_mass) = 209 208 & pq(ig,l,igcm_dust_mass) + 210 209 & pdq(ig,l,igcm_dust_mass) * ptimestep 211 zq(ig,l,igcm_dust_mass) =212 & zq(ig,l,igcm_dust_mass) * tauscaling(ig)213 zq(ig,l,igcm_dust_mass)=max(zq(ig,l,igcm_dust_mass),1.E-30)214 210 zq0(ig,l,igcm_dust_mass)=zq(ig,l,igcm_dust_mass) 215 211 c Dust particle number 216 c (converted to the true value using rdust and tauscaling)217 ! zq(ig,l,igcm_dust_number) =218 ! & pq(ig,l,igcm_dust_number) +219 ! & pdq(ig,l,igcm_dust_number) * ptimestep220 212 zq(ig,l,igcm_dust_number) = 221 & (1.e0/rdust(ig,l))**3. * r3n_q * zq(ig,l,igcm_dust_mass) 222 zq(ig,l,igcm_dust_number)= 223 & max(zq(ig,l,igcm_dust_number),1.E-30) 213 & pq(ig,l,igcm_dust_number) + 214 & pdq(ig,l,igcm_dust_number) * ptimestep 224 215 zq0(ig,l,igcm_dust_number)=zq(ig,l,igcm_dust_number) 216 c Update rdust from last tendencies 217 rdust(ig,l)= 218 & CBRT(r3n_q*zq(ig,l,igcm_dust_mass)/ 219 & max(zq(ig,l,igcm_dust_number),0.01)) 220 rdust(ig,l)=min(max(rdust(ig,l),1.e-10),500.e-6) 225 221 c CCN mass mixing ratio 226 222 zq(ig,l,igcm_ccn_mass)= … … 228 224 zq(ig,l,igcm_ccn_mass)=max(zq(ig,l,igcm_ccn_mass),1.E-30) 229 225 zq0(ig,l,igcm_ccn_mass)=zq(ig,l,igcm_ccn_mass) 230 c write(*,*) "pq,zq ccn_mass", pq(ig,l,igcm_ccn_mass),231 c & zq(ig,l,igcm_ccn_mass)232 226 c CCN particle number 233 227 zq(ig,l,igcm_ccn_number)= … … 235 229 zq(ig,l,igcm_ccn_number)=max(zq(ig,l,igcm_ccn_number),1.E-30) 236 230 zq0(ig,l,igcm_ccn_number)=zq(ig,l,igcm_ccn_number) 237 c write(*,*) "pq,zq ccn_number", pq(ig,l,igcm_ccn_number),238 c & zq(ig,l,igcm_ccn_number)239 231 c Water vapor 240 232 zq(ig,l,igcm_h2o_vap)= … … 249 241 enddo 250 242 enddo 251 252 !print*, "improvedcloud debut pq", pq(1,:,igcm_dust_number) 243 253 244 254 245 c------------------------------------------------------------------ … … 260 251 call watersat(ngridmx*nlayermx,zt,pplay,zqsat) 261 252 262 c write(*,*) "ccn_number avant loop phy", 263 c & zq(ig,:,igcm_ccn_number) 264 c write(*,*) "ccn_mass avant loop phy", 265 c & zq(ig,:,igcm_ccn_mass) 253 count = 0 266 254 267 255 c Main loop over the GCM's grid 268 256 DO l=1,nlay 269 !ig = 1270 257 DO ig=1,ngrid 271 258 … … 273 260 ph2o = zq(ig,l,igcm_h2o_vap) * (44./18.) * pplay(ig,l) 274 261 satu = zq(ig,l,igcm_h2o_vap) / zqsat(ig,l) 275 satu_out(ig,l) = satu 276 !write(*,*) "l | h2o_vap | zqsat | satu | ph2o" 277 !write(*,*) l,zq(ig,l,igcm_h2o_vap), zqsat(ig,l), satu, ph2o 262 263 IF ((satu .ge. 1)! ) THEN ! if we have condensation 264 & .or. ( zq(ig,l,igcm_ccn_number) 265 & .ge. 10) ) THEN ! or sublimation 266 278 267 279 268 c Expand the dust moments into a binned distribution 280 Mo = zq(ig,l,igcm_dust_mass) 281 No = zq(ig,l,igcm_dust_number) + 1.e-30269 Mo = zq(ig,l,igcm_dust_mass)* tauscaling(ig) 270 No = zq(ig,l,igcm_dust_number)* tauscaling(ig)+ 1.e-30 282 271 Rn = rdust(ig,l) 283 272 Rm = Rn * exp( 3. * sigma_ice**2. ) … … 306 295 ! sumcheck = 0 307 296 ! do i = 1, nbin_cld 308 ! sumcheck = sumcheck + M_aer(i)297 ! sumcheck = sumcheck + m_aer(i) 309 298 ! enddo 310 299 ! sumcheck = abs(sumcheck/Mo - 1) 311 300 ! if ((sumcheck .gt. 1e-5) .and. (1./Rn .gt. rmin_cld)) then 312 301 ! print*, "WARNING, Mo sumcheck PROBLEM" 313 ! print*, "sumcheck, No",sumcheck, No302 ! print*, "sumcheck, Mo",sumcheck, Mo 314 303 ! print*, "min radius, Rm, ig, l", rmin_cld, 1./Rm, ig, l 315 304 ! print*, "Dust binned distribution", m_aer … … 318 307 c Get the rates of nucleation 319 308 call nuclea(ph2o,zt(ig,l),satu,n_aer,rate) 309 320 310 321 311 dN = 0. … … 334 324 ! & zq(ig,l,igcm_dust_mass) ) 335 325 336 337 c IF (zq(ig,l,igcm_ccn_number).ge.1.e-20) THEN338 339 326 Mo = zq0(ig,l,igcm_h2o_ice) + 340 & zq0(ig,l,igcm_ccn_mass) + 1.e-30341 No = zq0(ig,l,igcm_ccn_number) 327 & zq0(ig,l,igcm_ccn_mass)* tauscaling(ig) + 1.e-30 328 No = zq0(ig,l,igcm_ccn_number)* tauscaling(ig)+ 1e-30 342 329 !write(*,*) "l,cloud particles,cloud mass",l, No, Mo 343 330 rhocloud(ig,l) = zq0(ig,l,igcm_h2o_ice) / Mo * rho_ice 344 & +zq0(ig,l,igcm_ccn_mass) / Mo * rho_dust 331 & +zq0(ig,l,igcm_ccn_mass)* tauscaling(ig) 332 & / Mo * rho_dust 345 333 rhocloud(ig,l) = min(max(rhocloud(ig,l),rho_ice),rho_dust) 346 334 rice(ig,l) = 347 335 & ( Mo / No * 0.75 / pi / rhocloud(ig,l) ) **(1./3.) 348 nuice(ig,l)=nuice_ref ! used for rad. transfer calculations349 if ( Mo.lt.1.e-20) rice(ig,l) = 1.e-8336 c nuice(ig,l)=nuice_ref ! used for rad. transfer calculations 337 if ((Mo.lt.1.e-20) .or. (No.le.1)) rice(ig,l) = 1.e-8 350 338 seq = exp( 2.*sig(zt(ig,l))*mh2o / 351 339 & (rho_ice*rgp*zt(ig,l)*rice(ig,l)) ) … … 370 358 371 359 c----------- TESTS 1D output --------- 372 if (ngrid.eq.1) then360 satu_out(ig,l) = satu 373 361 Mcon_out(ig,l) = dMice 374 362 newvap_out(ig,l) = newvap … … 376 364 dN_out(ig,l) = dN 377 365 dM_out(ig,l) = dM 378 endif379 366 c------------------------------------- 380 367 … … 387 374 & dMice 388 375 389 390 376 c If all the ice particles sublimate, all the condensation 391 377 c nuclei are released: 392 378 if (zq(ig,l,igcm_h2o_ice).le.1e-30) then 379 c for coherence 380 dM = 0 381 dN = 0 382 dN_out(ig,l) = - zq(ig,l,igcm_ccn_number)*tauscaling(ig) 383 dM_out(ig,l) = - zq(ig,l,igcm_ccn_mass)*tauscaling(ig) 393 384 c Water ice particles 394 385 zq(ig,l,igcm_h2o_ice) = 0. 395 386 c Dust particles 396 zq(ig,l,igcm_dust_mass ) = zq0(ig,l,igcm_dust_mass) +397 & zq 0(ig,l,igcm_ccn_mass)398 zq(ig,l,igcm_dust_number ) = zq0(ig,l,igcm_dust_number) +399 & zq 0(ig,l,igcm_ccn_number)387 zq(ig,l,igcm_dust_mass) = zq(ig,l,igcm_dust_mass) + 388 & zq(ig,l,igcm_ccn_mass) 389 zq(ig,l,igcm_dust_number) = zq(ig,l,igcm_dust_number) + 390 & zq(ig,l,igcm_ccn_number) 400 391 c CCNs 401 392 zq(ig,l,igcm_ccn_mass) = 0. 402 393 zq(ig,l,igcm_ccn_number) = 0. 403 c for coherence404 dM = 0405 dN = 0406 394 endif 407 c ELSE 408 cc Initialize rhocloud and rice to avoid divisions by 0 409 c rhocloud(ig,l) = 1.e-10 410 c rice(ig,l) = 1.e-8 411 c dM = 0 412 c dN = 0 413 c ENDIF ! of if (zq(ig,l,igcm_ccn_number).ge.1.e-20) 414 395 396 dN = dN/ tauscaling(ig) 397 dM = dM/ tauscaling(ig) 415 398 c Dust particles 416 zq(ig,l,igcm_dust_mass ) = zq(ig,l,igcm_dust_mass) - dM417 zq(ig,l,igcm_dust_number ) = zq(ig,l,igcm_dust_number) - dN399 zq(ig,l,igcm_dust_mass) = zq(ig,l,igcm_dust_mass) - dM 400 zq(ig,l,igcm_dust_number) = zq(ig,l,igcm_dust_number) - dN 418 401 c CCNs 419 402 zq(ig,l,igcm_ccn_mass) = zq(ig,l,igcm_ccn_mass) + dM 420 403 zq(ig,l,igcm_ccn_number) = zq(ig,l,igcm_ccn_number) + dN 421 422 ENDDO 423 ENDDO 424 425 426 ! print*, "improvedclouds zq0 abs.", zq0(:,:,igcm_ccn_number) 427 ! print*, "improvedclouds zq abs.", zq(:,:,igcm_ccn_number) 428 c------------------------------------------------------------------ 429 c Convert the initial values back into relative values 430 c (has to be done before updating rdust!) 431 c------------------------------------------------------------------ 432 433 do l=1, nlay 434 do ig=1,ngrid 435 zq0(ig,l,igcm_dust_mass) = 436 & zq0(ig,l,igcm_dust_mass) / tauscaling(ig) 437 zq0(ig,l,igcm_dust_number) = 438 & (1.e0/rdust(ig,l))**3. * r3n_q * 439 & zq0(ig,l,igcm_dust_mass) 440 enddo ! of do ig=1,ngrid 441 enddo ! of do l=1,nlay 442 443 c------------------------------------------------------------------ 444 c Update the dust radius 445 c------------------------------------------------------------------ 446 447 DO l=1,nlay 448 DO ig=1,ngrid 404 405 pdqcloud(ig,l,igcm_dust_mass)=(zq(ig,l,igcm_dust_mass) 406 & -zq0(ig,l,igcm_dust_mass))/ptimestep 407 pdqcloud(ig,l,igcm_dust_number)=(zq(ig,l,igcm_dust_number) 408 & -zq0(ig,l,igcm_dust_number))/ptimestep 409 pdqcloud(ig,l,igcm_ccn_mass)=(zq(ig,l,igcm_ccn_mass) 410 & -zq0(ig,l,igcm_ccn_mass))/ptimestep 411 pdqcloud(ig,l,igcm_ccn_number)=(zq(ig,l,igcm_ccn_number) 412 & -zq0(ig,l,igcm_ccn_number))/ptimestep 413 pdqcloud(ig,l,igcm_h2o_vap)=(zq(ig,l,igcm_h2o_vap) 414 & -zq0(ig,l,igcm_h2o_vap))/ptimestep 415 pdqcloud(ig,l,igcm_h2o_ice)=(zq(ig,l,igcm_h2o_ice) 416 & -zq0(ig,l,igcm_h2o_ice))/ptimestep 417 418 count = count +1 419 ELSE ! for coherence (rdust, rice computations etc ..) 420 zq(ig,l,igcm_dust_mass) = zq0(ig,l,igcm_dust_mass) 421 zq(ig,l,igcm_dust_number) = zq0(ig,l,igcm_dust_number) 422 zq(ig,l,igcm_ccn_mass) = zq0(ig,l,igcm_ccn_mass) 423 zq(ig,l,igcm_ccn_number) = zq0(ig,l,igcm_ccn_number) 424 zq(ig,l,igcm_h2o_ice) = zq0(ig,l,igcm_h2o_ice) 425 zq(ig,l,igcm_h2o_vap) = zq0(ig,l,igcm_h2o_vap) 426 427 ! pour les sorties de test 428 satu_out(ig,l) = satu 429 Mcon_out(ig,l) = 0 430 newvap_out(ig,l) = zq(ig,l,igcm_h2o_ice) 431 gr_out(ig,l) = gr 432 dN_out(ig,l) = dN 433 dM_out(ig,l) = dM 434 435 ENDIF ! end if (saturation ratio > 1) or (there is h2o_ice) 436 437 c-----update temperature 438 lw=(2834.3-0.28*(zt(ig,l)-To)-0.004*(zt(ig,l)-To)**2)*1.e+3 439 pdtcloud(ig,l)=-pdqcloud(ig,l,igcm_h2o_vap)*lw/cpp 440 441 c----- update rice & rhocloud AFTER scavenging 442 Mo = zq(ig,l,igcm_h2o_ice) + 443 & zq(ig,l,igcm_ccn_mass)* tauscaling(ig) + 1.e-30 444 No = zq(ig,l,igcm_ccn_number)* tauscaling(ig)+ 1e-30 445 rhocloud(ig,l) = zq(ig,l,igcm_h2o_ice) / Mo * rho_ice 446 & +zq(ig,l,igcm_ccn_mass)* tauscaling(ig) 447 & / Mo * rho_dust 448 rhocloud(ig,l) = min(max(rhocloud(ig,l),rho_ice),rho_dust) 449 rice(ig,l) = 450 & ( Mo / No * 0.75 / pi / rhocloud(ig,l) ) **(1./3.) 451 if ((Mo.lt.1.e-20) .or. (No.le.1)) rice(ig,l) = 1.e-8 452 453 nuice(ig,l)=nuice_ref ! used for rad. transfer calculations 454 455 c----- update rdust and sedimentation radius 449 456 rdust(ig,l)= 450 457 & CBRT(r3n_q*zq(ig,l,igcm_dust_mass)/ 451 458 & max(zq(ig,l,igcm_dust_number),0.01)) 452 459 rdust(ig,l)=min(max(rdust(ig,l),1.e-10),500.e-6) 453 ENDDO 454 ENDDO 455 456 c------------------------------------------------------------------ 457 c Convert zq back into relative values (only applies to dust) 458 c------------------------------------------------------------------ 459 460 do l=1, nlay 461 do ig=1,ngrid 462 c Dust mass mixing ratio 463 c (converted back into relative value using tauscaling) 464 zq(ig,l,igcm_dust_mass) = 465 & zq(ig,l,igcm_dust_mass) / tauscaling(ig) 466 zq(ig,l,igcm_dust_mass)=max(zq(ig,l,igcm_dust_mass),1.E-30) 467 c Dust particle number 468 c (converted back into relative value) 469 zq(ig,l,igcm_dust_number) = 470 & (1.e0/rdust(ig,l))**3. * r3n_q * zq(ig,l,igcm_dust_mass) 471 zq(ig,l,igcm_dust_number)= 472 & max(zq(ig,l,igcm_dust_number),1.E-30) 473 enddo ! of do ig=1,ngrid 474 enddo ! of do l=1,nlay 475 476 ! print*, "improvedclouds zq0 rel.", zq0(1,:,igcm_ccn_number) 477 ! print*, "improvedclouds zq rel.", zq(1,:,igcm_ccn_number) 478 479 c------------------------------------------------------------------ 480 c Compute the sedimentation radius 481 c------------------------------------------------------------------ 482 483 do l=1, nlay 484 do ig=1,ngrid 460 485 461 rsedcloud(ig,l)=max( rice(ig,l)*(1.+nuice_sed)**3., 486 462 & rdust(ig,l) ) 487 463 rsedcloud(ig,l)=min(rsedcloud(ig,l),1.e-4) 488 enddo ! of do ig=1,ngrid 489 enddo ! of do l=1,nlay 490 491 c------------------------------------------------------------------ 492 c Force positive values 493 c------------------------------------------------------------------ 494 495 ! do l=1, nlay 496 ! do ig=1,ngrid 497 ! zq(ig,l,igcm_ccn_mass)= 498 ! & max(zq(ig,l,igcm_ccn_mass),1e-30) 499 ! zq(ig,l,igcm_ccn_number)= 500 ! & max(zq(ig,l,igcm_ccn_number),1e-30) 501 ! zq(ig,l,igcm_h2o_vap)= 502 ! & max(zq(ig,l,igcm_h2o_vap),1e-30) 503 ! zq(ig,l,igcm_h2o_ice)= 504 ! & max(zq(ig,l,igcm_h2o_ice),1e-30) 505 ! enddo ! of do ig=1,ngrid 506 ! enddo ! of do l=1,nlay 507 508 509 c------------------------------------------------------------------ 510 c Compute the final tendencies 511 c------------------------------------------------------------------ 512 513 c Initialize the tendencies 514 pdqscloud(1:ngrid,1:nq)=0 515 pdqcloud(1:ngrid,1:nlay,1:nq)=0 516 pdtcloud(1:ngrid,1:nlay)=0 517 518 c Update the tendencies 519 do l=1, nlay 520 do ig=1,ngrid 521 pdqcloud(ig,l,igcm_dust_mass)=(zq(ig,l,igcm_dust_mass) 522 & -zq0(ig,l,igcm_dust_mass))/ptimestep 523 pdqcloud(ig,l,igcm_dust_number)=(zq(ig,l,igcm_dust_number) 524 & -pq(ig,l,igcm_dust_number))/ptimestep 525 & - pdq(ig,l,igcm_dust_number) !!! AJOUT TN 526 pdqcloud(ig,l,igcm_ccn_mass)=(zq(ig,l,igcm_ccn_mass) 527 & -zq0(ig,l,igcm_ccn_mass))/ptimestep 528 pdqcloud(ig,l,igcm_ccn_number)=(zq(ig,l,igcm_ccn_number) 529 & -zq0(ig,l,igcm_ccn_number))/ptimestep 530 pdqcloud(ig,l,igcm_h2o_vap)=(zq(ig,l,igcm_h2o_vap) 531 & -zq0(ig,l,igcm_h2o_vap))/ptimestep 532 pdqcloud(ig,l,igcm_h2o_ice)=(zq(ig,l,igcm_h2o_ice) 533 & -zq0(ig,l,igcm_h2o_ice))/ptimestep 534 lw=(2834.3-0.28*(zt(ig,l)-To)-0.004*(zt(ig,l)-To)**2)*1.e+3 535 pdtcloud(ig,l)=-pdqcloud(ig,l,igcm_h2o_vap)*lw/cpp 536 end do 537 end do 538 ! call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3, 539 ! & satu_out) 540 541 ! print*, "improvedclouds pdq*dt", 542 ! & pdqcloud(:,:,igcm_ccn_number)*ptimestep 543 544 545 c------------------------------------------------------------------ 546 c TEST_JBM 547 IF (ngrid.eq.1) THEN 548 c call WRITEDIAGFI(ngrid,"tausca","tauscaling","",0, 549 c & tauscaling) 464 465 ENDDO 466 ENDDO 467 468 469 c------------------------------------------------------------------ 470 c------------------------------------------------------------------ 471 c------------------------------------------------------------------ 472 c------------------------------------------------------------------ 473 c------------------------------------------------------------------ 474 c TESTS 475 476 print*, 'count is ',count, ' i.e. ', 477 & count*100/(nlay*ngrid), '% for microphys computation' 478 479 c dM_col(:) = 0 480 c dN_col(:) = 0 481 c Mdust_col(:) = 0 482 c Ndust_col(:) = 0 483 c Mccn_col(:) = 0 484 c Nccn_col(:) = 0 485 c do l=1, nlay 486 c do ig=1,ngrid 487 c dM_col(ig) = dM_col(ig) + 488 c & dM_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g 489 c dN_col(ig) = dN_col(ig) + 490 c & dN_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g 491 c Mdust_col(ig) = Mdust_col(ig) + 492 c & zq(ig,l,igcm_dust_mass)*tauscaling(ig) 493 c & *(pplev(ig,l) - pplev(ig,l+1)) / g 494 c Ndust_col(ig) = Ndust_col(ig) + 495 c & zq(ig,l,igcm_dust_number)*tauscaling(ig) 496 c & *(pplev(ig,l) - pplev(ig,l+1)) / g 497 c Mccn_col(ig) = Mccn_col(ig) + 498 c & zq(ig,l,igcm_ccn_mass)*tauscaling(ig) 499 c & *(pplev(ig,l) - pplev(ig,l+1)) / g 500 c Nccn_col(ig) = Nccn_col(ig) + 501 c & zq(ig,l,igcm_ccn_number)*tauscaling(ig) 502 c & *(pplev(ig,l) - pplev(ig,l+1)) / g 503 c enddo ! of do ig=1,ngrid 504 c enddo ! of do l=1,nlay 505 506 507 IF (ngrid.eq.0) THEN ! 3D 508 call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3, 509 & satu_out) 510 call WRITEDIAGFI(ngrid,"dM_col","dM column","kg",2, 511 & dM_col) 512 call WRITEDIAGFI(ngrid,"dN_col","dN column","N",2, 513 & dN_col) 514 call WRITEDIAGFI(ngrid,"Ndust_col","M column","N",2, 515 & Ndust_col) 516 call WRITEDIAGFI(ngrid,"Mdust_col","N column","kg",2, 517 & Mdust_col) 518 call WRITEDIAGFI(ngrid,"Nccn_col","M column","N",2, 519 & Nccn_col) 520 call WRITEDIAGFI(ngrid,"Mccn_col","N column","kg",2, 521 & Mccn_col) 522 call WRITEDIAGFI(ngrid,"dM","ccn variation","kg/kg",3, 523 & dM_out) 524 call WRITEDIAGFI(ngrid,"dN","ccn variation","#",3, 525 & dN_out) 526 ENDIF 527 528 IF (ngrid.eq.1) THEN ! 1D 529 550 530 call WRITEDIAGFI(ngrid,"newvap","h2o newvap","kg",1, 551 531 & newvap_out) … … 562 542 call WRITEDIAGFI(ngrid,"satu","ratio saturation","",1, 563 543 & satu_out) 564 call WRITEDIAGFI(ngrid,"rice ","ice radius","m",1,544 call WRITEDIAGFI(ngrid,"rice_sca","ice radius","m",1, 565 545 & rice) 566 546 call WRITEDIAGFI(ngrid,"rdust","rdust","m",1, … … 570 550 call WRITEDIAGFI(ngrid,"rhocloud","rhocloud","kg.m-3",1, 571 551 & rhocloud) 552 call WRITEDIAGFI(ngrid,"dM_col","dM column","kg",0, 553 & dM_col) 554 call WRITEDIAGFI(ngrid,"dN_col","dN column","N",0, 555 & dN_col) 556 call WRITEDIAGFI(ngrid,"Ndust_col","M column","N",0, 557 & Ndust_col) 558 call WRITEDIAGFI(ngrid,"Mdust_col","N column","kg",0, 559 & Mdust_col) 560 call WRITEDIAGFI(ngrid,"Nccn_col","M column","N",0, 561 & Nccn_col) 562 call WRITEDIAGFI(ngrid,"Mccn_col","N column","kg",0, 563 & Mccn_col) 572 564 ENDIF 573 565 c------------------------------------------------------------------ -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r358 r411 315 315 REAL Qabsice ! Water ice absorption coefficient 316 316 317 c Test 1d scavenging317 c Test 1d/3d scavenging 318 318 real h2o_tot 319 319 real ccndust_mass(nlayermx) 320 320 real ccndust_number(nlayermx) 321 real rescale ! to rescale GCM dust quantities 321 322 322 323 REAL time_phys … … 547 548 c Radiative transfer 548 549 c ------------------ 549 550 550 CALL callradite(icount,ngrid,nlayer,nq,zday,zls,pq,albedo, 551 551 $ emis,mu0,pplev,pplay,pt,tsurf,fract,dist_sol,igout, … … 951 951 & pdq(ig,l,igcm_ccn_number)+ 952 952 & zdqcloud(ig,l,igcm_ccn_number) 953 !!!!!!!!!!!!!!!!!!!!! We need to check that we have Nccn > 0954 !!!!!!!!!!!!!!!!!!!!! This is due to single pre icions roiunding problems953 !!!!!!!!!!!!!!!!!!!!! We need to check that we have Nccn & Ndust > 0 954 !!!!!!!!!!!!!!!!!!!!! This is due to single precision rounding problems 955 955 if (((pq(ig,l,igcm_ccn_number) + 956 956 & pdq(ig,l,igcm_ccn_number)*ptimestep)) .le. 0) 957 957 & then 958 958 pdq(ig,l,igcm_ccn_number) = 959 & - pq(ig,l,igcm_ccn_number)/ptimestep 959 & - pq(ig,l,igcm_ccn_number)/ptimestep + 1e-30 960 endif 961 if (((pq(ig,l,igcm_dust_number) + 962 & pdq(ig,l,igcm_dust_number)*ptimestep)) .le. 0) 963 & then 964 pdq(ig,l,igcm_dust_number) = 965 & - pq(ig,l,igcm_dust_number)/ptimestep + 1e-30 960 966 endif 961 967 !!!!!!!!!!!!!!!!!!!!! … … 971 977 ENDDO 972 978 ENDIF ! of IF (water) THEN 979 973 980 ! Increment water ice surface tracer tendency 974 981 DO ig=1,ngrid … … 978 985 979 986 END IF ! of IF (water) 987 980 988 981 989 c 7b. Chemical species … … 1067 1075 1068 1076 call callsedim(ngrid,nlayer, ptimestep, 1069 & pplev,zzlev, pt, rdust, rice,1077 & pplev,zzlev, zzlay, pt, rdust, rice, 1070 1078 & rsedcloud,rhocloud, 1071 & pq, pdq, zdqsed, zdqssed,nq) 1079 & pq, pdq, zdqsed, zdqssed,nq, 1080 & tau,tauscaling) 1072 1081 1073 1082 DO iq=1, nq … … 1085 1094 END IF ! of IF (sedimentation) 1086 1095 1096 1087 1097 c 7d. Updates 1088 1098 c --------- … … 1143 1153 c Temperature at the surface is set there to be the temperature 1144 1154 c corresponding to equilibrium temperature between phases of CO2 1155 1145 1156 1146 1157 IF (tracer.AND.water.AND.(ngridmx.NE.1)) THEN … … 1178 1189 & ptimestep,tsurf,tsoil,capcal,fluxgrd) 1179 1190 ENDIF 1191 1180 1192 1181 1193 c----------------------------------------------------------------------- … … 1394 1406 if (tracer) then 1395 1407 if (water) then 1396 vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap)1397 & *mugaz/mmol(igcm_h2o_vap)1398 call wstats(ngrid,"vmr_h2ovapor",1399 & "H2O vapor volume mixing ratio","mol/mol",1400 & 3,vmr)1401 vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice)1402 & *mugaz/mmol(igcm_h2o_ice)1403 call wstats(ngrid,"vmr_h2oice",1404 & "H2O ice volume mixing ratio","mol/mol",1405 & 3,vmr)1408 c vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap) 1409 c & *mugaz/mmol(igcm_h2o_vap) 1410 c call wstats(ngrid,"vmr_h2ovapor", 1411 c & "H2O vapor volume mixing ratio","mol/mol", 1412 c & 3,vmr) 1413 c vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice) 1414 c & *mugaz/mmol(igcm_h2o_ice) 1415 c call wstats(ngrid,"vmr_h2oice", 1416 c & "H2O ice volume mixing ratio","mol/mol", 1417 c & 3,vmr) 1406 1418 call wstats(ngrid,"h2o_ice_s", 1407 1419 & "surface h2o_ice","kg/m2", … … 1416 1428 & "total mass of water ice","kg/m2", 1417 1429 & 2,icetot) 1418 call wstats(ngrid,"reffice",1419 & "Mean reff","m",1420 & 2,rave)1430 c call wstats(ngrid,"reffice", 1431 c & "Mean reff","m", 1432 c & 2,rave) 1421 1433 c call wstats(ngrid,"rice", 1422 1434 c & "Ice particle size","m", … … 1514 1526 c call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2, 1515 1527 c & emis) 1516 !call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay)1528 call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay) 1517 1529 ! call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",3,zplev) 1518 1530 call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2, … … 1619 1631 & 'total mass of water ice', 1620 1632 & 'kg/m2',2,icetot) 1621 vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice)1622 & *mugaz/mmol(igcm_h2o_ice)1623 call WRITEDIAGFI(ngridmx,'vmr_h2oice','h2o ice vmr',1624 & 'mol/mol',3,vmr)1625 vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap)1626 & *mugaz/mmol(igcm_h2o_vap)1627 call WRITEDIAGFI(ngridmx,'vmr_h2ovap','h2o vap vmr',1628 & 'mol/mol',3,vmr)1629 CALL WRITEDIAGFI(ngridmx,'reffice',1630 & 'Mean reff',1631 & 'm',2,rave)1632 call WRITEDIAGFI(ngridmx,'rice','Ice particle size',1633 & 'm',3,rice)1633 c vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice) 1634 c & *mugaz/mmol(igcm_h2o_ice) 1635 c call WRITEDIAGFI(ngridmx,'vmr_h2oice','h2o ice vmr', 1636 c & 'mol/mol',3,vmr) 1637 c vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap) 1638 c & *mugaz/mmol(igcm_h2o_vap) 1639 c call WRITEDIAGFI(ngridmx,'vmr_h2ovap','h2o vap vmr', 1640 c & 'mol/mol',3,vmr) 1641 c CALL WRITEDIAGFI(ngridmx,'reffice', 1642 c & 'Mean reff', 1643 c & 'm',2,rave) 1644 c call WRITEDIAGFI(ngridmx,'rice','Ice particle size', 1645 c & 'm',3,rice) 1634 1646 c If activice is true, tauTES is computed in aeropacity.F; 1635 1647 if (.not.activice) then … … 1682 1694 c call WRITEDIAGFI(ngridmx,'tau','taudust','SI',2,tau(1,1)) 1683 1695 if (doubleq) then 1684 call WRITEDIAGFI(ngridmx,'qsurf','qsurf',1685 & 'kg.m-2',2,qsurf(1,1))1686 call WRITEDIAGFI(ngridmx,'Nsurf','N particles',1687 & 'N.m-2',2,qsurf(1,2))1696 c call WRITEDIAGFI(ngridmx,'qsurf','qsurf', 1697 c & 'kg.m-2',2,qsurf(1,igcm_dust_mass)) 1698 c call WRITEDIAGFI(ngridmx,'Nsurf','N particles', 1699 c & 'N.m-2',2,qsurf(1,igcm_dust_number)) 1688 1700 c call WRITEDIAGFI(ngridmx,'dqsdev','ddevil lift', 1689 1701 c & 'kg.m-2.s-1',2,zdqsdev(1,1)) 1690 call WRITEDIAGFI(ngridmx,'dqssed','sedimentation', 1691 & 'kg.m-2.s-1',2,zdqssed(1,1)) 1692 call WRITEDIAGFI(ngridmx,'reffdust','reffdust', 1693 & 'm',3,rdust*ref_r0) 1694 call WRITEDIAGFI(ngridmx,'dustq','Dust mass mr', 1695 & 'kg/kg',3,pq(1,1,igcm_dust_mass)) 1696 call WRITEDIAGFI(ngridmx,'dustN','Dust number', 1697 & 'part/kg',3,pq(1,1,igcm_dust_number)) 1702 c call WRITEDIAGFI(ngridmx,'dqssed','sedimentation', 1703 c & 'kg.m-2.s-1',2,zdqssed(1,1)) 1704 c call WRITEDIAGFI(ngridmx,'dqsdif','diffusion', 1705 c & 'kg.m-2.s-1',2,zdqsdif(1,1)) 1706 c call WRITEDIAGFI(ngridmx,'reffdust','reffdust', 1707 c & 'm',3,rdust*ref_r0) 1708 c call WRITEDIAGFI(ngridmx,'dustq','Dust mass mr', 1709 c & 'kg/kg',3,pq(1,1,igcm_dust_mass)) 1710 c call WRITEDIAGFI(ngridmx,'dustN','Dust number', 1711 c & 'part/kg',3,pq(1,1,igcm_dust_number)) 1698 1712 #ifdef MESOINI 1699 1713 call WRITEDIAGFI(ngridmx,'dustN','Dust number', … … 1932 1946 cccccccccccccccccccccc scavenging outputs 1D TN ccccccccccccccccccc 1933 1947 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1934 1948 IF (scavenging) THEN 1935 1949 CALL WRITEDIAGFI(ngridmx,'tauTESap', 1936 1950 & 'tau abs 825 cm-1', … … 1948 1962 1949 1963 end do 1964 1965 1966 do iq=1,nq 1967 call WRITEDIAGFI(ngridmx,trim(noms(iq))//'_s', 1968 & trim(noms(iq))//'_s','kg/kg',0,qsurf(1,iq)) 1969 end do 1970 1950 1971 1951 call WRITEDIAGFI(ngrid,'ccn+dust_mass','CCN+Dust mass', 1952 & 'kg/kg',1,ccndust_mass) 1953 call WRITEDIAGFI(ngrid,'ccn+dust_number', 1954 & 'CCN+Dust number','part/kg',1,ccndust_number) 1955 call WRITEDIAGFI(ngridmx,'h2o_ice_s', 1956 & 'surface h2o_ice', 1957 & 'kg.m-2',0,qsurf(1,igcm_h2o_ice)) 1958 call WRITEDIAGFI(ngrid,'h2otot', 1959 & 'total water mass','kg.m-2',0,h2o_tot) 1972 call WRITEDIAGFI(ngridmx,'dqssed q','sedimentation q', 1973 & 'kg.m-2.s-1',0,zdqssed(:,igcm_dust_number)) 1974 call WRITEDIAGFI(ngridmx,'dqsdif q','diffusion q', 1975 & 'kg.m-2.s-1',0,zdqsdif(:,igcm_dust_number)) 1960 1976 1977 call WRITEDIAGFI(ngridmx,'dqssed N','sedimentation N', 1978 & 'kg.m-2.s-1',0,zdqssed(:,igcm_dust_number)) 1979 call WRITEDIAGFI(ngridmx,'dqsdif N','diffusion N', 1980 & 'kg.m-2.s-1',0,zdqsdif(:,igcm_dust_number)) 1981 1982 call WRITEDIAGFI(ngrid,"rice","ice radius","m",1, 1983 & rice) 1984 ENDIF 1985 1961 1986 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1962 1987 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc -
trunk/LMDZ.MARS/libf/phymars/suaer.F90
r222 r411 376 376 END DO 377 377 ! 2.5 Output display 378 WRITE(*,*) 'Les donnees spectrales :'379 WRITE(*,*) 'Solaire (SW) ---->'380 WRITE(*,*) 'Aerosol number: ', iaer381 WRITE(*,*) 'Rayon aerosol: ', radiustab(iaer,idomain,isize)382 WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g'383 DO isun=1,nsun384 WRITE(*,*) QVISsQREF(isun,iaer,isize),&385 omegavis(isun,iaer,isize),&386 gvis(isun,iaer,isize)387 ENDDO388 WRITE(*,*) 'QREFvis(',iaer,isize,') = ',QREFvis(iaer,isize)389 WRITE(*,*) 'omegaREFvis(',iaer,isize,') = ',&390 omegaREFvis(iaer,isize)378 ! WRITE(*,*) 'Les donnees spectrales :' 379 ! WRITE(*,*) 'Solaire (SW) ---->' 380 ! WRITE(*,*) 'Aerosol number: ', iaer 381 ! WRITE(*,*) 'Rayon aerosol: ', radiustab(iaer,idomain,isize) 382 ! WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g' 383 ! DO isun=1,nsun 384 ! WRITE(*,*) QVISsQREF(isun,iaer,isize),& 385 ! omegavis(isun,iaer,isize),& 386 ! gvis(isun,iaer,isize) 387 ! ENDDO 388 ! WRITE(*,*) 'QREFvis(',iaer,isize,') = ',QREFvis(iaer,isize) 389 ! WRITE(*,*) 'omegaREFvis(',iaer,isize,') = ',& 390 ! omegaREFvis(iaer,isize) 391 391 ! ------------------------------------------------ 392 392 ENDDO … … 427 427 nir-1,longir,epav,omegav,gav,& 428 428 QREFir(iaer,isize),omegaREFir(iaer,isize) ) 429 WRITE(*,*) 'QREFir(',iaer,isize,') = ',QREFir(iaer,isize)430 WRITE(*,*) 'omegaREFir(',iaer,isize,') = ',&431 omegaREFir(iaer,isize)429 ! WRITE(*,*) 'QREFir(',iaer,isize,') = ',QREFir(iaer,isize) 430 ! WRITE(*,*) 'omegaREFir(',iaer,isize,') = ',& 431 ! omegaREFir(iaer,isize) 432 432 433 433 ! 2.5 Computing <QIR>/Qext(longrefvis) 434 434 435 435 DO iir=1,nir-1 436 WRITE(*,*) 'QIRsQREFir Channel ',iir,': ',epav(iir)436 ! WRITE(*,*) 'QIRsQREFir Channel ',iir,': ',epav(iir) 437 437 epav(iir)= epav(iir) * QREFir(iaer,isize) / & 438 438 QREFvis(iaer,isize) 439 439 ENDDO 440 WRITE(*,*) 'Aerosol number', iaer441 WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize)442 WRITE(*,*) 'Rapport Solaire/IR:',&443 QREFvis(iaer,isize) / QREFir(iaer,isize)440 ! WRITE(*,*) 'Aerosol number', iaer 441 ! WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize) 442 ! WRITE(*,*) 'Rapport Solaire/IR:',& 443 ! QREFvis(iaer,isize) / QREFir(iaer,isize) 444 444 445 445 ! 2.6 Variable assignements … … 473 473 ! 2.7 Output display 474 474 475 WRITE(*,*) 'AEROSOL PROPERTIES: Number ',iaer476 WRITE(*,*) 'Thermal IR (LW) ---->'477 WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize)478 WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g'479 DO iir=1,nir480 WRITE(*,*) QIRsQREF(iir,iaer,isize),omegaIR(iir,iaer,isize),&481 gIR(iir,iaer,isize)482 ENDDO483 WRITE(*,*) 'CO2: <Qabs>/Qext(longrefvis) = ',&484 QIRsQREF(1,iaer,isize)*(1-omegaIR(1,iaer,isize))485 WRITE(*,*) ''475 ! WRITE(*,*) 'AEROSOL PROPERTIES: Number ',iaer 476 ! WRITE(*,*) 'Thermal IR (LW) ---->' 477 ! WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize) 478 ! WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g' 479 ! DO iir=1,nir 480 ! WRITE(*,*) QIRsQREF(iir,iaer,isize),omegaIR(iir,iaer,isize),& 481 ! gIR(iir,iaer,isize) 482 ! ENDDO 483 ! WRITE(*,*) 'CO2: <Qabs>/Qext(longrefvis) = ',& 484 ! QIRsQREF(1,iaer,isize)*(1-omegaIR(1,iaer,isize)) 485 ! WRITE(*,*) '' 486 486 487 487 ENDDO ! isize (particle size) ------------------------------------- -
trunk/LMDZ.MARS/libf/phymars/watercloud.F
r358 r411 100 100 IF (microphys) THEN 101 101 CALL improvedclouds(ngrid,nlay,ptimestep, 102 & ppl ay,pt,pdt,102 & pplev,pplay,pt,pdt, 103 103 & pq,pdq,pdqcloud,pdqscloud,pdtcloud, 104 104 & nq,tauscaling,rdust,rice,nuice,
Note: See TracChangeset
for help on using the changeset viewer.