Changeset 1649 for trunk


Ignore:
Timestamp:
Jan 24, 2017, 6:41:02 PM (8 years ago)
Author:
jaudouard
Message:

Cleaning of the CO2 clouds scheme outputs, now 3D ready; Added callphys.def and traceur.def co2clouds files in the deftank

Location:
trunk/LMDZ.MARS
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1629 r1649  
    23692369-  Moved CO2 clouds outuputs from physiq_mod.F to co2cloud.F
    23702370-  Removed some CO2 clouds properties computation in physiq_mod.F (now done in post-treatment)
     2371
     2372== 24/01/2017 == JA
     2373-Modification of CO2 clouds routines : removal of some screen ouputs, modification for 3D of the writediagfi outputs in co2cloud.F, improvedCO2clouds.F and physiq_mod.F
     2374-callphys.def.co2clouds was added in deftank. It contains the necessary flags and constant for including co2clouds
     2375-traceur.def.co2clouds was added in deftank. It supplies the necessary tracers for running the co2 clouds scheme
  • trunk/LMDZ.MARS/libf/phymars/co2cloud.F

    r1629 r1649  
    256256       DO l=1, nlay
    257257          DO ig=1,ngrid
    258              Niceco2=tempo_traceurs(ig,l,igcm_co2_ice)
     258             Niceco2=max(tempo_traceurs(ig,l,igcm_co2_ice),1.e-30)
    259259             Nccnco2=max(tempo_traceurs(ig,l,igcm_ccnco2_number),
    260260     &            1.e-30)
     
    271271                rdust(ig,l)=max(rdust(ig,l),1.e-9)   
    272272             end if
    273              rhocloudco2t(ig,l) = (Niceco2 *rho_ice_co2
    274      &            + Qccnco2*rho_dust)
    275      &            / (Niceco2 + Qccnco2)
     273c             rhocloudco2t(ig,l) = (Niceco2 *rho_ice_co2
     274c     &            + Qccnco2*rho_dust)
     275c     &            / (Niceco2 + Qccnco2)
    276276             riceco2(ig,l)= Niceco2*3.0/
    277277     &            (4.0*rho_ice_co2*pi*Nccnco2)
    278278     &            +rdust(ig,l)*rdust(ig,l)*rdust(ig,l)
    279279             riceco2(ig,l)=riceco2(ig,l)**(1.0/3.0)
    280              write(*,*) "in co2clouds, rice = ",riceco2(ig,l)
    281              write(*,*) "in co2clouds, rho = ",rhocloudco2t(ig,l)
    282 
    283               call updaterice_microCO2(Niceco2,Qccnco2,Nccnco2,
     280c             write(*,*) "in co2clouds, rice = ",riceco2(ig,l)
     281c             write(*,*) "in co2clouds, rho = ",rhocloudco2t(ig,l)
     282
     283             call updaterice_microCO2(Niceco2,Qccnco2,Nccnco2,
    284284     &            tauscaling(ig),riceco2(ig,l),rhocloudco2t(ig,l))
    285               write(*,*) "in co2clouds, rice update = ",riceco2(ig,l)
    286               write(*,*) "in co2clouds, rho update = "
    287      &             ,rhocloudco2t(ig,l)
     285c              write(*,*) "in co2clouds, rice update = ",riceco2(ig,l)
     286c              write(*,*) "in co2clouds, rho update = "
     287c     &             ,rhocloudco2t(ig,l)
    288288
    289289              rsedcloudco2(ig,l)=max(riceco2(ig,l)*
     
    291291     &            rdust(ig,l))
    292292             rsedcloudco2(ig,l)=min(rsedcloudco2(ig,l),5.e-4)
    293              write(*,*) 'Rsedcloud = ',rsedcloudco2(ig,l)
     293c             write(*,*) 'Rsedcloud = ',rsedcloudco2(ig,l)
    294294             !write(*,*) 'Rhocloudco2 = ',rhocloudco2t(ig,l)
    295295
     
    657657     &       pdqcloudco2(ig,l,igcm_ccnco2_mass))*ptimestep)*
    658658     &       tauscaling(ig),1.e-30)
    659         rhocloudco2t(ig,l) = (Niceco2 *rho_ice_co2 + Qccnco2*rho_dust)
    660      &       / (Niceco2 + Qccnco2)
     659c        rhocloudco2t(ig,l) = (Niceco2 *rho_ice_co2 + Qccnco2*rho_dust)
     660c     &       / (Niceco2 + Qccnco2)
    661661c        rhocloudco2(ig,l) = min(max(rhocloudco2t,rho_ice_co2),rho_dust)
    662662
     
    669669
    670670        riceco2(ig,l)=riceco2(ig,l)**(1.0/3.0)
    671         write(*,*) "In co2cloud, after loop, riceco2 =",riceco2(ig,l)
    672         write(*,*) "In co2cloud, after loop, rhoco2 ="
    673      &       ,rhocloudco2t(ig,l)
     671c        write(*,*) "In co2cloud, after loop, riceco2 =",riceco2(ig,l)
     672c        write(*,*) "In co2cloud, after loop, rhoco2 ="
     673c     &       ,rhocloudco2t(ig,l)
    674674
    675675        call updaterice_microCO2(Niceco2,Qccnco2,Nccnco2,
    676676     &             tauscaling(ig),riceco2(ig,l),rhocloudco2t(ig,l))
    677677
    678         write(*,*) "In co2cloud, after loop and update, riceco2 ="
    679      &       ,riceco2(ig,l)
    680         write(*,*) "In co2cloud, after loop and update, rhoco2 ="
    681      &       ,rhocloudco2t(ig,l)
     678c        write(*,*) "In co2cloud, after loop and update, riceco2 ="
     679c     &       ,riceco2(ig,l)
     680c        write(*,*) "In co2cloud, after loop and update, rhoco2 ="
     681c     &       ,rhocloudco2t(ig,l)
    682682
    683683        if ( Niceco2
     
    752752     &              (mmean(ig,l)/44.01)*pplay(ig,l)/zqsatco2(ig,l)
    753753                 
    754                write(*,*) "In CO2 pt,sat ",pt(ig,l),satuco2(ig,l)
     754c               write(*,*) "In CO2 pt,sat ",pt(ig,l),satuco2(ig,l)
    755755            enddo
    756756         enddo
    757        call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",1,
     757       call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",3,
    758758     &        satuco2)
    759759       call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
    760      &        ,1,riceco2)
     760     &        ,3,riceco2)
    761761! or output in diagfi.nc (for testphys1d)
    762762c         call WRITEDIAGFI(ngrid,'ps','Surface pressure','Pa',0,ps)
     
    764764c     &                       'K JA',1,pt)
    765765         
    766       call WRITEdiagfi(ngrid,"rsedcloudco2","rsed co2","m",1,
     766      call WRITEdiagfi(ngrid,"rsedcloudco2","rsed co2","m",3,
    767767     &   rsedcloudco2)
    768768     
  • trunk/LMDZ.MARS/libf/phymars/improvedCO2clouds.F

    r1632 r1649  
    302302
    303303           IF ( satu .ge. 1d0 ) THEN ! if there is condensation
    304               write(*,*)
    305               write(*,*) "l, pco2, satu= ",l,pco2,satu
     304c              write(*,*)
     305c              write(*,*) "l, pco2, satu= ",l,pco2,satu
    306306c              Masse_atm=mmean(ig,l)*1.e-3*pplay(ig,l)/rgp/zt(ig,l) !Kg par couche
    307307
     
    309309              call updaterccn(zq(ig,l,igcm_dust_mass),
    310310     &             zq(ig,l,igcm_dust_number),rdust(ig,l),tauscaling(ig))
    311               write(*,*) "Improved, l,Rdust = ",l,rdust(ig,l)
     311c              write(*,*) "Improved, l,Rdust = ",l,rdust(ig,l)
    312312
    313313              rdust(ig,l)= zq(ig,l,igcm_dust_mass)
     
    315315     &             / zq(ig,l,igcm_dust_number)
    316316              rdust(ig,l)= rdust(ig,l)**(1./3.)
    317               write(*,*) "Improved2, l,Rdust = ",l,rdust(ig,l)
     317c              write(*,*) "Improved2, l,Rdust = ",l,rdust(ig,l)
    318318            rdust(ig,l)=max(1.e-9,rdust(ig,l))
    319319            rdust(ig,l)=min(2e-6,rdust(ig,l))
    320               write(*,*) "Improved3, l,Rdust = ",l,rdust(ig,l)
     320c              write(*,*) "Improved3, l,Rdust = ",l,rdust(ig,l)
    321321
    322322c       Expand the dust moments into a binned distribution
    323323              Mo = zq(ig,l,igcm_dust_mass)* tauscaling(ig)
    324324              No = zq(ig,l,igcm_dust_number)* tauscaling(ig)
    325               write(*,*) "dust number, mass = ",
    326      &             zq(ig,l,igcm_dust_number)* tauscaling(ig),
    327      &             zq(ig,l,igcm_dust_mass)* tauscaling(ig)
     325c              write(*,*) "dust number, mass = ",
     326c     &             zq(ig,l,igcm_dust_number)* tauscaling(ig),
     327c     &             zq(ig,l,igcm_dust_mass)* tauscaling(ig)
    328328c              write(*,*) "No, Mo = ",No, Mo
    329329              Rn = rdust(ig,l)
     
    461461c + enlever les CCN a la distri de dust
    462462
    463               write(*,*) "new dust_mass, number =",
    464      &             zq(ig,l,igcm_dust_mass)* tauscaling(ig),
    465      &             zq(ig,l,igcm_dust_number)*tauscaling(ig)
    466               write(*,*) "new ccn mass, number =",
    467      &             zq(ig,l,igcm_ccnco2_mass)* tauscaling(ig)
    468      &             ,zq(ig,l,igcm_ccnco2_number)*tauscaling(ig)
     463c              write(*,*) "new dust_mass, number =",
     464c     &             zq(ig,l,igcm_dust_mass)* tauscaling(ig),
     465c     &             zq(ig,l,igcm_dust_number)*tauscaling(ig)
     466c              write(*,*) "new ccn mass, number =",
     467c     &             zq(ig,l,igcm_ccnco2_mass)* tauscaling(ig)
     468c     &             ,zq(ig,l,igcm_ccnco2_number)*tauscaling(ig)
    469469           
    470470           ENDIF                ! of is satu >1
     
    497497     &             zq(ig,l,igcm_dust_number) .lt. 0. ) THEN
    498498               
    499                  write(*,*) "before growth CCN N,M = "         
     499                 write(*,*) "CO2 clouds before growth CCN N,M = "         
    500500     &                ,zq(ig,l,igcm_ccnco2_number)*tauscaling(ig)
    501501     &                ,zq(ig,l,igcm_ccnco2_mass)*tauscaling(ig)
     
    522522          ! WATCH OUT: CO2 nuclei is supposed to be dust
    523523          ! only when deriving rhocloud (otherwise would need to keep info on  water embedded in co2) - listo
    524               write(*,*) "Rdust before growth = ",rdust(ig,l)
    525               write(*,*) "Riceco2 before growth = ",riceco2(ig,l)
     524c              write(*,*) "Rdust before growth = ",rdust(ig,l)
     525c              write(*,*) "Riceco2 before growth = ",riceco2(ig,l)
    526526
    527527              !! Niceco2,Qccnco2,Nccnco2
     
    531531              call updaterice_microCO2(Niceco2,Qccnco2,Nccnco2,
    532532     &             tauscaling(ig),riceco2(ig,l),rhocloudco2(ig,l))
    533               write(*,*) "Riceco2 update before growth = ",riceco2(ig,l)
     533c              write(*,*) "Riceco2 update before growth = ",riceco2(ig,l)
    534534
    535535              No   = zq(ig,l,igcm_ccnco2_number)* tauscaling(ig)
     
    550550     &             riceco2(ig,l)*rho_ice_co2)*Ic_rice
    551551              dMice =  No * Ic_rice * ptimestep ! Kg par kg d'air, <0 si croissance !           
    552               write(*,*) "dMicev0 in improved = " , dMice
     552c              write(*,*) "dMicev0 in improved = " , dMice
    553553
    554554             if (dMice .gt. 0) dMice = min(dMice,zq0(ig,l,igcm_co2_ice))
     
    561561c              write(*,*) "riceco2+dr/dt = ", riceco2(ig,l)
    562562
    563               write(*,*) "dMice in improved = " , dMice
     563c              write(*,*) "dMice in improved = " , dMice
    564564             
    565565             
     
    574574     &             *tauscaling(ig)) +rdust(ig,l)*rdust(ig,l)
    575575     &             *rdust(ig,l) )**(1.0/3.0)
    576               write(*,*) "new riceco2 = ",riceco2(ig,l)
     576c              write(*,*) "new riceco2 = ",riceco2(ig,l)
    577577               
    578578              !! Niceco2,Qccnco2,Nccnco2
     
    582582              call updaterice_microCO2(Niceco2,Qccnco2,Nccnco2,
    583583     &             tauscaling(ig),riceco2(ig,l),rhocloudco2(ig,l))
    584               write(*,*) "new riceco2 updaterad= ",riceco2(ig,l)
     584c              write(*,*) "new riceco2 updaterad= ",riceco2(ig,l)
    585585
    586586! latent heat release       
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r1640 r1649  
    11651165     &           nq,tau,tauscaling,rdust,rice,riceco2,nuice,
    11661166     &           rsedcloudco2,rhocloudco2,zzlev,zdqssed_co2)
    1167            
    1168            
    1169             call WRITEdiagfi(ngrid,"rhocloudco2","rho cloud co2","kk",1,
    1170      &           rhocloudco2)
    1171            
     1167               
    11721168
    11731169c Temperature variation due to latent heat release
     
    22822278c        call WRITEDIAGFI(ngrid,'lw_htrt','lw heat. rate',
    22832279c    &                   'w.m-2',3,zdtlw)
     2280 
     2281         if (co2clouds) then
     2282            do iq=1, nq
     2283               call WRITEDIAGFI(ngrid,trim(noms(iq)),
     2284     &              trim(noms(iq)),'kg/kg',3,zq(:,:,iq))
     2285            end do
     2286         endif
    22842287            if (.not.activice) then
    22852288               CALL WRITEDIAGFI(ngrid,'tauTESap',
Note: See TracChangeset for help on using the changeset viewer.