Changeset 420 for trunk/LMDZ.MARS/libf
- Timestamp:
- Nov 24, 2011, 9:54:55 AM (14 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
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.