Changeset 420
- Timestamp:
- Nov 24, 2011, 9:54:55 AM (13 years ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/README
r414 r420 1286 1286 1287 1287 >> Small changes to the molecular diffusion scheme to fix the number of species considered, to avoid problems when compiling with more than 15 tracers (for example, when CH4 is included). Modified subroutines: aeronomars/moldiff.F and aeronomars/moldiffcoeff.F 1288 1289 == 24/11/11 == TN 1290 1291 >> corrected minor bug in updatereffrad.F : reffdust was not saved 1292 1293 >> ccn_factor as not correctly used in sedimentation. 1294 It is now initialized in inifis.F, declared in tracer.h and 1295 used in both simpleclouds.F & callsedim.F to update ice radius. 1296 1297 >> Commented diagfi outputs in aeropacity.F & improvedclouds.F for 1298 non scavenging users. 1299 1300 1301 1302 1303 -
trunk/LMDZ.MARS/libf/phymars/aeropacity.F
r411 r420 442 442 443 443 c output for debug 444 IF (ngrid.NE.1) THEN445 CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust',446 & '#',2,taudusttmp)447 CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling',448 & '#',2,tauscaling)449 ELSE450 CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust',451 & '#',0,taudusttmp)452 CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling',453 & '#',0,tauscaling)454 ENDIF444 c IF (ngrid.NE.1) THEN 445 c CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust', 446 c & '#',2,taudusttmp) 447 c CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling', 448 c & '#',2,tauscaling) 449 c ELSE 450 c CALL WRITEDIAGFI(ngridmx,'taudusttmp','virtual tau dust', 451 c & '#',0,taudusttmp) 452 c CALL WRITEDIAGFI(ngridmx,'tausca','tauscaling', 453 c & '#',0,tauscaling) 454 c ENDIF 455 455 c ----------------------------------------------------------------- 456 456 c Column integrated visible optical depth in each point … … 466 466 c Density scaled opacity and column opacity output 467 467 c ----------------------------------------------------------------- 468 dsodust(1:ngrid,1:nlayer) = 0.469 DO iaer=1,naerdust470 DO l=1,nlayermx471 DO ig=1,ngrid472 dsodust(ig,l) = dsodust(ig,l) +473 & aerosol(ig,l,iaerdust(iaer)) * g /474 & (pplev(ig,l) - pplev(ig,l+1))475 ENDDO476 ENDDO477 IF (ngrid.NE.1) THEN478 write(txt2,'(i1.1)') iaer479 call WRITEDIAGFI(ngridmx,'taudust'//txt2,480 & 'Dust col opacity',481 & ' ',2,tau(1,iaerdust(iaer)))482 IF (callstats) THEN483 CALL wstats(ngridmx,'taudust'//txt2,484 & 'Dust col opacity',485 & ' ',2,tau(1,iaerdust(iaer)))486 ENDIF487 ENDIF488 ENDDO489 490 IF (ngrid.NE.1) THEN468 c dsodust(1:ngrid,1:nlayer) = 0. 469 c DO iaer=1,naerdust 470 c DO l=1,nlayermx 471 c DO ig=1,ngrid 472 c dsodust(ig,l) = dsodust(ig,l) + 473 c & aerosol(ig,l,iaerdust(iaer)) * g / 474 c & (pplev(ig,l) - pplev(ig,l+1)) 475 c ENDDO 476 c ENDDO 477 c IF (ngrid.NE.1) THEN 478 c write(txt2,'(i1.1)') iaer 479 c call WRITEDIAGFI(ngridmx,'taudust'//txt2, 480 c & 'Dust col opacity', 481 c & ' ',2,tau(1,iaerdust(iaer))) 482 c IF (callstats) THEN 483 c CALL wstats(ngridmx,'taudust'//txt2, 484 c & 'Dust col opacity', 485 c & ' ',2,tau(1,iaerdust(iaer))) 486 c ENDIF 487 c ENDIF 488 c ENDDO 489 490 c IF (ngrid.NE.1) THEN 491 491 c CALL WRITEDIAGFI(ngridmx,'dsodust','tau*g/dp', 492 492 c & 'm2.kg-1',3,dsodust) 493 IF (callstats) THEN494 CALL wstats(ngridmx,'dsodust',495 & 'tau*g/dp',496 & 'm2.kg-1',3,dsodust)497 ENDIF498 ELSE499 CALL WRITEDIAGFI(ngrid,"dsodust","dsodust","m2.kg-1",1,500 & dsodust)501 ENDIF ! of IF (ngrid.NE.1)493 c IF (callstats) THEN 494 c CALL wstats(ngridmx,'dsodust', 495 c & 'tau*g/dp', 496 c & 'm2.kg-1',3,dsodust) 497 c ENDIF 498 c ELSE 499 c CALL WRITEDIAGFI(ngrid,"dsodust","dsodust","m2.kg-1",1, 500 c & dsodust) 501 c ENDIF ! of IF (ngrid.NE.1) 502 502 c ----------------------------------------------------------------- 503 503 return -
trunk/LMDZ.MARS/libf/phymars/callsedim.F
r411 r420 73 73 74 74 c for ice radius computation 75 REAL ccn_factor76 75 REAL Mo,No 77 76 REAL tau(ngrid,nlay), tauscaling(ngrid) … … 200 199 stop 201 200 endif 202 ELSE203 write(*,*) "water_param CCN reduc. fac. ", ccn_factor204 write(*,*) "Careful: only used when microphys=F, otherwise"205 write(*,*) " the contact parameter is used instead;"206 201 ENDIF !of if (scavenging) 207 202 … … 461 456 rice(ig,l)=max( CBRT ( (zqi(ig,l,igcm_h2o_ice)/rho_ice 462 457 & +ccntyp*(4./3.)*pi*rdust(ig,l)**3.) 463 & /(ccntyp*4./3.*pi) ), rdust(ig,l)) 458 & /(ccntyp*4./3.*pi) ), rdust(ig,l)) 464 459 ENDDO 465 460 ENDDO -
trunk/LMDZ.MARS/libf/phymars/improvedclouds.F
r411 r420 111 111 REAL sigma_ice ! Variance of the ice and CCN distributions 112 112 SAVE sigma_ice 113 114 c some outputs for 1D 113 114 c---------------------------------- 115 c some outputs for 1D -- TEMPORARY 115 116 REAL satu_out(ngridmx,nlayermx) ! satu ratio for output 116 117 REAL dN_out(ngridmx,nlayermx) ! mass variation for output … … 125 126 REAL Mccn_col(ngridmx) ! total column ccn mass 126 127 REAL Nccn_col(ngridmx) ! total column ccn mass 127 REAL count 128 128 INTEGER count 129 130 LOGICAL output_sca ! scavenging outputs flag for tests 131 output_sca = .false. 132 c---------------------------------- 133 c---------------------------------- 129 134 130 135 c------------------------------------------------------------------ … … 428 433 satu_out(ig,l) = satu 429 434 Mcon_out(ig,l) = 0 430 newvap_out(ig,l) = zq(ig,l,igcm_h2o_ ice)431 gr_out(ig,l) = gr432 dN_out(ig,l) = dN433 dM_out(ig,l) = dM435 newvap_out(ig,l) = zq(ig,l,igcm_h2o_vap) 436 gr_out(ig,l) = 0 437 dN_out(ig,l) = 0 438 dM_out(ig,l) = 0 434 439 435 440 ENDIF ! end if (saturation ratio > 1) or (there is h2o_ice) … … 473 478 c------------------------------------------------------------------ 474 479 c TESTS 480 481 IF (output_sca) then 475 482 476 483 print*, 'count is ',count, ' i.e. ', 477 484 & count*100/(nlay*ngrid), '% for microphys computation' 478 485 479 cdM_col(:) = 0480 cdN_col(:) = 0481 cMdust_col(:) = 0482 cNdust_col(:) = 0483 cMccn_col(:) = 0484 cNccn_col(:) = 0485 cdo l=1, nlay486 cdo ig=1,ngrid487 cdM_col(ig) = dM_col(ig) +488 c& dM_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g489 cdN_col(ig) = dN_col(ig) +490 c& dN_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g491 cMdust_col(ig) = Mdust_col(ig) +492 c& zq(ig,l,igcm_dust_mass)*tauscaling(ig)493 c& *(pplev(ig,l) - pplev(ig,l+1)) / g494 cNdust_col(ig) = Ndust_col(ig) +495 c& zq(ig,l,igcm_dust_number)*tauscaling(ig)496 c& *(pplev(ig,l) - pplev(ig,l+1)) / g497 cMccn_col(ig) = Mccn_col(ig) +498 c& zq(ig,l,igcm_ccn_mass)*tauscaling(ig)499 c& *(pplev(ig,l) - pplev(ig,l+1)) / g500 cNccn_col(ig) = Nccn_col(ig) +501 c& zq(ig,l,igcm_ccn_number)*tauscaling(ig)502 c& *(pplev(ig,l) - pplev(ig,l+1)) / g503 cenddo ! of do ig=1,ngrid504 cenddo ! of do l=1,nlay505 506 507 IF (ngrid. eq.0) THEN ! 3D486 dM_col(:) = 0 487 dN_col(:) = 0 488 Mdust_col(:) = 0 489 Ndust_col(:) = 0 490 Mccn_col(:) = 0 491 Nccn_col(:) = 0 492 do l=1, nlay 493 do ig=1,ngrid 494 dM_col(ig) = dM_col(ig) + 495 & dM_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g 496 dN_col(ig) = dN_col(ig) + 497 & dN_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g 498 Mdust_col(ig) = Mdust_col(ig) + 499 & zq(ig,l,igcm_dust_mass)*tauscaling(ig) 500 & *(pplev(ig,l) - pplev(ig,l+1)) / g 501 Ndust_col(ig) = Ndust_col(ig) + 502 & zq(ig,l,igcm_dust_number)*tauscaling(ig) 503 & *(pplev(ig,l) - pplev(ig,l+1)) / g 504 Mccn_col(ig) = Mccn_col(ig) + 505 & zq(ig,l,igcm_ccn_mass)*tauscaling(ig) 506 & *(pplev(ig,l) - pplev(ig,l+1)) / g 507 Nccn_col(ig) = Nccn_col(ig) + 508 & zq(ig,l,igcm_ccn_number)*tauscaling(ig) 509 & *(pplev(ig,l) - pplev(ig,l+1)) / g 510 enddo ! of do ig=1,ngrid 511 enddo ! of do l=1,nlay 512 513 514 IF (ngrid.ne.1) THEN ! 3D 508 515 call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3, 509 516 & satu_out) … … 544 551 call WRITEDIAGFI(ngrid,"rice_sca","ice radius","m",1, 545 552 & rice) 546 call WRITEDIAGFI(ngrid,"rdust ","rdust","m",1,553 call WRITEDIAGFI(ngrid,"rdust_sca","rdust","m",1, 547 554 & rdust) 548 555 call WRITEDIAGFI(ngrid,"rsedcloud","rsedcloud","m",1, … … 563 570 & Mccn_col) 564 571 ENDIF 572 ENDIF ! endif output_sca 565 573 c------------------------------------------------------------------ 566 574 return -
trunk/LMDZ.MARS/libf/phymars/inifis.F
r414 r420 62 62 #include "slope.h" 63 63 #include "microphys.h" 64 #include "tracer.h" 64 65 #ifdef MESOSCALE 65 66 #include "comsoil.h" !!MESOSCALE -- needed to fill volcapa … … 417 418 stop 418 419 endif 420 421 ! ccn factor if no scavenging 422 write(*,*) "water param CCN reduc. factor ?", ccn_factor 423 ccn_factor = 4.5 424 call getin("ccn_factor",ccn_factor) 425 write(*,*)" ccn_factor = ",ccn_factor 426 write(*,*)"Careful: only used when microphys=F, otherwise" 427 write(*,*)"the contact parameter is used instead;" 428 419 429 ! microphys 420 430 write(*,*)"Microphysical scheme for water-ice clouds?" -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r414 r420 318 318 c Test 1d/3d scavenging 319 319 real h2o_tot 320 real ccndust_mass(nlayermx)321 real ccndust_number(nlayermx)322 real rescale ! to rescale GCM dust quantities323 320 324 321 REAL time_phys … … 1994 1991 do l=1,nlayer 1995 1992 h2o_tot = h2o_tot + 1996 & (zq(ig,l,igcm_h2o_vap) + zq(ig,l,igcm_h2o_ice)) 1997 & * (pplev(ig,l) - pplev(ig,l+1)) / g 1998 ccndust_mass(l) = 1999 & pq(1,l,igcm_dust_mass)+pq(1,l,igcm_ccn_mass) 2000 ccndust_number(l) = 2001 & pq(1,l,igcm_dust_number)+pq(1,l,igcm_ccn_number) 2002 1993 & (zq(1,l,igcm_h2o_vap) + zq(1,l,igcm_h2o_ice)) 1994 & * (pplev(1,l) - pplev(1,l+1)) / g 2003 1995 end do 2004 1996 -
trunk/LMDZ.MARS/libf/phymars/simpleclouds.F
r358 r420 89 89 ! Typical dust number density (#/kg) 90 90 c CCN reduction factor 91 REAL, PARAMETER :: ccn_factor = 4.5 !! comme TESTS_JB // 1. avant91 c REAL, PARAMETER :: ccn_factor = 4.5 !! comme TESTS_JB // 1. avant 92 92 93 93 REAL Mcon_out(ngridmx,nlayermx) ! mass to be condensed (not dMice !!) 94 95 96 c------------------------------------------------------------------97 98 c Write ccn_factor;99 IF (firstcall) THEN100 write(*,*) "water_param CCN reduc. fac. ", ccn_factor101 write(*,*) "Careful: only used when microphys=F, otherwise"102 write(*,*) " the contact parameter is used instead;"103 firstcall=.false.104 END IF105 94 106 95 c----------------------------------------------------------------------- -
trunk/LMDZ.MARS/libf/phymars/tracer.h
r358 r420 16 16 real nuice_sed ! Sedimentation effective variance of the water ice dist. 17 17 real ref_r0 ! for computing reff=ref_r0*r0 (in log.n. distribution) 18 19 real ccn_factor ! ratio of nuclei for water ice particles 18 20 19 21 real dryness(ngridmx)!"Dryness coefficient" for grnd water ice sublimation … … 73 75 COMMON/tracer/radius,rho_q,alpha_lift,alpha_devil,mmol, & 74 76 & varian,r3n_q,rho_dust,rho_ice,nuice_ref,nuice_sed, & 75 & ref_r0, dryness77 & ref_r0,ccn_factor,dryness 76 78 COMMON/tracer2/ & 77 79 & igcm_dustbin,igcm_dust_mass,igcm_dust_number, & -
trunk/LMDZ.MARS/libf/phymars/updatereffrad.F
r358 r420 76 76 EXTERNAL CBRT 77 77 78 realnueffdust(ngridmx,nlayermx) ! Dust effective variance78 REAL,SAVE :: nueffdust(ngridmx,nlayermx) ! Dust effective variance 79 79 80 80 c Local saved variables:
Note: See TracChangeset
for help on using the changeset viewer.