Changeset 411


Ignore:
Timestamp:
Nov 22, 2011, 5:34:42 PM (14 years ago)
Author:
tnavarro
Message:

changed scavenging in improvedclouds.F, updated ice radius in callsedim.F and commented outputs in suaer.F90 & aeropacity.F

Location:
trunk/LMDZ.MARS/libf/phymars
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/aeropacity.F

    r358 r411  
    428428          tauscaling(ig) = tauref(ig) *
    429429     &                     pplev(ig,1) / 700.E0 / taudusttmp(ig)
     430c          tauscaling(ig) = 1.e-4
    430431      ENDDO
    431432
     
    435436          DO ig=1,ngrid
    436437            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))
    442439          ENDDO
    443440        ENDDO
    444441      ENDDO
    445 
     442     
     443c 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
    446455c -----------------------------------------------------------------
    447456c Column integrated visible optical depth in each point
  • trunk/LMDZ.MARS/libf/phymars/callsedim.F

    r358 r411  
    11      SUBROUTINE callsedim(ngrid,nlay, ptimestep,
    2      &                pplev,zlev, pt, rdust, rice,
     2     &                pplev,zlev, zlay, pt, rdust, rice,
    33     &                rsedcloud,rhocloud,
    4      &                pq, pdqfi, pdqsed,pdqs_sed,nq)
     4     &                pq, pdqfi, pdqsed,pdqs_sed,nq,
     5     &                tau, tauscaling)
    56      IMPLICIT NONE
    67
     
    7071c     Cloud density (kg.m-3)
    7172      real rhocloud(ngridmx,nlayermx)
     73     
     74c     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
    7281
    7382
     
    121130
    122131      IF (firstcall) THEN
     132         
    123133         IF(ngrid.NE.ngridmx) THEN
    124134            PRINT*,'STOP dans callsedim'
     
    190200            stop
    191201          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;"
    192206        ENDIF !of if (scavenging)
    193207
     
    366380          else if (water.and.(iq.eq.igcm_h2o_ice)) then
    367381            if (microphys) then
    368               call newsedim(ngrid,nlay,ngrid*nlay,ngrid*nlay,ptimestep,
    369      &        pplev,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)
    371385            else
    372               call newsedim(ngrid,nlay,ngrid*nlay,1,ptimestep,
    373      &        pplev,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)
    375389            endif ! of if (microphys)
    376390c           Tendencies
     
    417431        ENDDO
    418432      ENDDO
     433     
     434c     Update the ice particle size "rice"
     435c     -------------------------------------
     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
     450c           print*, "Mice,Mo, No",zqi(ig,l,igcm_h2o_ice),Mo, No
     451c           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
    419467
    420468      RETURN
  • trunk/LMDZ.MARS/libf/phymars/improvedclouds.F

    r358 r411  
    11      subroutine improvedclouds(ngrid,nlay,ptimestep,
    2      &             pplay,pt,pdt,
     2     &             pplev,pplay,pt,pdt,
    33     &             pq,pdq,pdqcloud,pdqscloud,pdtcloud,
    44     &             nq,tauscaling,rdust,rice,nuice,
     
    3737      integer nq                 ! nombre de traceurs
    3838      REAL ptimestep             ! pas de temps physique (s)
    39       REAL pplay(ngrid,nlay)     ! pression au milieu des couches (Pa)
     39      REAL pplev(ngrid,nlay+1),pplay(ngrid,nlay)     ! pression au milieu des couches (Pa)
    4040      REAL pt(ngrid,nlay)        ! temperature at the middle of the
    4141                                 !   layers (K)
     
    116116      REAL dN_out(ngridmx,nlayermx)  ! mass variation for output
    117117      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
    118120      REAL Mcon_out(ngridmx,nlayermx) ! mass to be condensed (not dMice !!)
    119121      REAL gr_out(ngridmx,nlayermx)   ! for 1d output
    120122      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
    121129
    122130c------------------------------------------------------------------
     
    186194c     1. Initialization
    187195c-----------------------------------------------------------------------
     196c     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     
    188201c     Update the needed variables
    189 
    190 c      write(*,*) "tauscaling", tauscaling
    191      
    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)*ptimestep
    199 !      print*, "improvedcloud debut pq", pq(:,:,igcm_ccn_number)
    200 
    201 
    202202      do l=1,nlay
    203203        do ig=1,ngrid
     
    205205          zt(ig,l)=pt(ig,l)+ pdt(ig,l)*ptimestep
    206206c         Dust mass mixing ratio
    207 c           (converted to the true value using tauscaling)
    208207          zq(ig,l,igcm_dust_mass) =
    209208     &      pq(ig,l,igcm_dust_mass) +
    210209     &      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)
    214210          zq0(ig,l,igcm_dust_mass)=zq(ig,l,igcm_dust_mass)
    215211c         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) * ptimestep
    220212          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
    224215          zq0(ig,l,igcm_dust_number)=zq(ig,l,igcm_dust_number)
     216c         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)         
    225221c         CCN mass mixing ratio
    226222          zq(ig,l,igcm_ccn_mass)=
     
    228224          zq(ig,l,igcm_ccn_mass)=max(zq(ig,l,igcm_ccn_mass),1.E-30)
    229225          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)
    232226c         CCN particle number
    233227          zq(ig,l,igcm_ccn_number)=
     
    235229          zq(ig,l,igcm_ccn_number)=max(zq(ig,l,igcm_ccn_number),1.E-30)
    236230          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)
    239231c         Water vapor
    240232          zq(ig,l,igcm_h2o_vap)=
     
    249241        enddo
    250242      enddo
    251      
    252       !print*, "improvedcloud debut pq", pq(1,:,igcm_dust_number)
     243
    253244
    254245c------------------------------------------------------------------
     
    260251      call watersat(ngridmx*nlayermx,zt,pplay,zqsat)
    261252           
    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
    266254
    267255c     Main loop over the GCM's grid
    268256      DO l=1,nlay
    269       !ig = 1
    270257        DO ig=1,ngrid
    271258
     
    273260        ph2o = zq(ig,l,igcm_h2o_vap) * (44./18.) * pplay(ig,l)
    274261        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
    278267
    279268c       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-30
     269        Mo = zq(ig,l,igcm_dust_mass)* tauscaling(ig)
     270        No = zq(ig,l,igcm_dust_number)* tauscaling(ig)+ 1.e-30
    282271        Rn = rdust(ig,l)
    283272        Rm = Rn * exp( 3. * sigma_ice**2. )
     
    306295!        sumcheck = 0
    307296!        do i = 1, nbin_cld
    308 !          sumcheck = sumcheck + M_aer(i)
     297!          sumcheck = sumcheck + m_aer(i)
    309298!        enddo
    310299!        sumcheck = abs(sumcheck/Mo - 1)
    311300!        if ((sumcheck .gt. 1e-5) .and.  (1./Rn .gt. rmin_cld)) then
    312301!          print*, "WARNING, Mo sumcheck PROBLEM"
    313 !          print*, "sumcheck, No",sumcheck, No
     302!          print*, "sumcheck, Mo",sumcheck, Mo
    314303!          print*, "min radius, Rm, ig, l", rmin_cld, 1./Rm, ig, l
    315304!          print*, "Dust binned distribution", m_aer
     
    318307c       Get the rates of nucleation
    319308        call nuclea(ph2o,zt(ig,l),satu,n_aer,rate)
     309       
    320310
    321311        dN = 0.
     
    334324!     &                 zq(ig,l,igcm_dust_mass) )
    335325
    336 
    337 c        IF (zq(ig,l,igcm_ccn_number).ge.1.e-20) THEN
    338 
    339326          Mo   = zq0(ig,l,igcm_h2o_ice) +
    340      &           zq0(ig,l,igcm_ccn_mass) + 1.e-30
    341           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
    342329          !write(*,*) "l,cloud particles,cloud mass",l, No, Mo
    343330          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
    345333          rhocloud(ig,l) = min(max(rhocloud(ig,l),rho_ice),rho_dust)
    346334          rice(ig,l) =
    347335     &      ( Mo / No * 0.75 / pi / rhocloud(ig,l) ) **(1./3.)
    348           nuice(ig,l)=nuice_ref ! used for rad. transfer calculations
    349           if (Mo.lt.1.e-20) rice(ig,l) = 1.e-8
     336c          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
    350338          seq  = exp( 2.*sig(zt(ig,l))*mh2o /
    351339     &           (rho_ice*rgp*zt(ig,l)*rice(ig,l)) )
     
    370358     
    371359c----------- TESTS 1D output ---------
    372           if (ngrid.eq.1) then
     360             satu_out(ig,l) = satu
    373361             Mcon_out(ig,l) = dMice
    374362             newvap_out(ig,l) = newvap
     
    376364             dN_out(ig,l) = dN
    377365             dM_out(ig,l) = dM
    378           endif
    379366c-------------------------------------
    380367         
     
    387374     &        dMice
    388375
    389  
    390376c         If all the ice particles sublimate, all the condensation
    391377c           nuclei are released:
    392378          if (zq(ig,l,igcm_h2o_ice).le.1e-30) then
     379c           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)
    393384c           Water ice particles
    394385            zq(ig,l,igcm_h2o_ice) = 0.
    395386c           Dust particles
    396             zq(ig,l,igcm_dust_mass ) = zq0(ig,l,igcm_dust_mass) +
    397      &        zq0(ig,l,igcm_ccn_mass)
    398             zq(ig,l,igcm_dust_number ) = zq0(ig,l,igcm_dust_number) +
    399      &        zq0(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)
    400391c           CCNs
    401392            zq(ig,l,igcm_ccn_mass) = 0.
    402393            zq(ig,l,igcm_ccn_number) = 0.
    403 c           for coherence
    404             dM = 0
    405             dN = 0
    406394          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)
    415398c       Dust particles
    416         zq(ig,l,igcm_dust_mass ) = zq(ig,l,igcm_dust_mass ) - dM
    417         zq(ig,l,igcm_dust_number ) = zq(ig,l,igcm_dust_number ) - dN
     399        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
    418401c       CCNs
    419402        zq(ig,l,igcm_ccn_mass) = zq(ig,l,igcm_ccn_mass) + dM
    420403        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       
     437c-----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         
     441c----- 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
     455c----- update rdust and sedimentation radius
    449456          rdust(ig,l)=
    450457     &      CBRT(r3n_q*zq(ig,l,igcm_dust_mass)/
    451458     &      max(zq(ig,l,igcm_dust_number),0.01))
    452459          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         
    485461          rsedcloud(ig,l)=max( rice(ig,l)*(1.+nuice_sed)**3.,
    486462     &                         rdust(ig,l) )
    487463          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     
     469c------------------------------------------------------------------
     470c------------------------------------------------------------------
     471c------------------------------------------------------------------
     472c------------------------------------------------------------------
     473c------------------------------------------------------------------
     474c     TESTS
     475 
     476      print*, 'count is ',count, ' i.e. ',
     477     &     count*100/(nlay*ngrid), '% for microphys computation'     
     478
     479c      dM_col(:)    = 0
     480c      dN_col(:)    = 0
     481c      Mdust_col(:) = 0
     482c      Ndust_col(:) = 0
     483c      Mccn_col(:)  = 0
     484c      Nccn_col(:)  = 0
     485c      do l=1, nlay
     486c        do ig=1,ngrid
     487c          dM_col(ig) = dM_col(ig) +
     488c     &       dM_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g
     489c          dN_col(ig) = dN_col(ig) +
     490c     &       dN_out(ig,l)*(pplev(ig,l) - pplev(ig,l+1)) / g
     491c          Mdust_col(ig) = Mdust_col(ig) +
     492c     &       zq(ig,l,igcm_dust_mass)*tauscaling(ig)
     493c     &       *(pplev(ig,l) - pplev(ig,l+1)) / g
     494c          Ndust_col(ig) = Ndust_col(ig) +
     495c     &       zq(ig,l,igcm_dust_number)*tauscaling(ig)
     496c     &       *(pplev(ig,l) - pplev(ig,l+1)) / g
     497c          Mccn_col(ig) = Mccn_col(ig) +
     498c     &       zq(ig,l,igcm_ccn_mass)*tauscaling(ig)
     499c     &       *(pplev(ig,l) - pplev(ig,l+1)) / g
     500c          Nccn_col(ig) = Nccn_col(ig) +
     501c     &       zq(ig,l,igcm_ccn_number)*tauscaling(ig)
     502c     &       *(pplev(ig,l) - pplev(ig,l+1)) / g
     503c        enddo ! of do ig=1,ngrid
     504c      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
    550530         call WRITEDIAGFI(ngrid,"newvap","h2o newvap","kg",1,
    551531     &                    newvap_out)
     
    562542         call WRITEDIAGFI(ngrid,"satu","ratio saturation","",1,
    563543     &                    satu_out)
    564          call WRITEDIAGFI(ngrid,"rice","ice radius","m",1,
     544         call WRITEDIAGFI(ngrid,"rice_sca","ice radius","m",1,
    565545     &                    rice)
    566546         call WRITEDIAGFI(ngrid,"rdust","rdust","m",1,
     
    570550         call WRITEDIAGFI(ngrid,"rhocloud","rhocloud","kg.m-3",1,
    571551     &                    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)
    572564      ENDIF
    573565c------------------------------------------------------------------
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r358 r411  
    315315      REAL Qabsice                ! Water ice absorption coefficient
    316316
    317 c Test 1d scavenging
     317c Test 1d/3d scavenging
    318318      real h2o_tot
    319319      real ccndust_mass(nlayermx)
    320320      real ccndust_number(nlayermx)
     321      real rescale                ! to rescale GCM dust quantities
    321322
    322323      REAL time_phys
     
    547548c          Radiative transfer
    548549c          ------------------
    549 
    550550           CALL callradite(icount,ngrid,nlayer,nq,zday,zls,pq,albedo,
    551551     $     emis,mu0,pplev,pplay,pt,tsurf,fract,dist_sol,igout,
     
    951951     &                      pdq(ig,l,igcm_ccn_number)+
    952952     &                      zdqcloud(ig,l,igcm_ccn_number)
    953 !!!!!!!!!!!!!!!!!!!!! We need to check that we have Nccn > 0
    954 !!!!!!!!!!!!!!!!!!!!! This is due to single preicions roiunding problems    
     953!!!!!!!!!!!!!!!!!!!!! We need to check that we have Nccn & Ndust > 0
     954!!!!!!!!!!!!!!!!!!!!! This is due to single precision rounding problems 
    955955                   if (((pq(ig,l,igcm_ccn_number) +
    956956     &                 pdq(ig,l,igcm_ccn_number)*ptimestep)) .le. 0)
    957957     &             then
    958958                       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
    960966                   endif
    961967!!!!!!!!!!!!!!!!!!!!!
     
    971977             ENDDO
    972978           ENDIF ! of IF (water) THEN
     979
    973980! Increment water ice surface tracer tendency
    974981         DO ig=1,ngrid
     
    978985         
    979986         END IF  ! of IF (water)
     987
    980988
    981989c   7b. Chemical species
     
    10671075
    10681076           call callsedim(ngrid,nlayer, ptimestep,
    1069      &                pplev,zzlev, pt, rdust, rice,
     1077     &                pplev,zzlev, zzlay, pt, rdust, rice,
    10701078     &                rsedcloud,rhocloud,
    1071      &                pq, pdq, zdqsed, zdqssed,nq)
     1079     &                pq, pdq, zdqsed, zdqssed,nq,
     1080     &                tau,tauscaling)
    10721081
    10731082           DO iq=1, nq
     
    10851094         END IF   ! of IF (sedimentation)
    10861095
     1096
    10871097c   7d. Updates
    10881098c     ---------
     
    11431153c  Temperature at the surface is set there to be the temperature
    11441154c  corresponding to equilibrium temperature between phases of CO2
     1155
    11451156
    11461157      IF (tracer.AND.water.AND.(ngridmx.NE.1)) THEN
     
    11781189     &          ptimestep,tsurf,tsoil,capcal,fluxgrd)
    11791190      ENDIF
     1191     
    11801192
    11811193c-----------------------------------------------------------------------
     
    13941406           if (tracer) then
    13951407             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)
     1408c               vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap)
     1409c     &                  *mugaz/mmol(igcm_h2o_vap)
     1410c               call wstats(ngrid,"vmr_h2ovapor",
     1411c     &                    "H2O vapor volume mixing ratio","mol/mol",
     1412c     &                    3,vmr)
     1413c               vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice)
     1414c     &                  *mugaz/mmol(igcm_h2o_ice)
     1415c               call wstats(ngrid,"vmr_h2oice",
     1416c     &                    "H2O ice volume mixing ratio","mol/mol",
     1417c     &                    3,vmr)
    14061418               call wstats(ngrid,"h2o_ice_s",
    14071419     &                    "surface h2o_ice","kg/m2",
     
    14161428     &                    "total mass of water ice","kg/m2",
    14171429     &                    2,icetot)
    1418                call wstats(ngrid,"reffice",
    1419      &                    "Mean reff","m",
    1420      &                    2,rave)
     1430c               call wstats(ngrid,"reffice",
     1431c     &                    "Mean reff","m",
     1432c     &                    2,rave)
    14211433c              call wstats(ngrid,"rice",
    14221434c    &                    "Ice particle size","m",
     
    15141526c        call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
    15151527c    &                  emis)
    1516 !         call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay)
     1528         call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay)
    15171529!         call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",3,zplev)
    15181530         call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2,
     
    16191631     &                       'total mass of water ice',
    16201632     &                       '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)
     1633c            vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_ice)
     1634c     &                *mugaz/mmol(igcm_h2o_ice)
     1635c            call WRITEDIAGFI(ngridmx,'vmr_h2oice','h2o ice vmr',
     1636c     &                       'mol/mol',3,vmr)
     1637c            vmr=zq(1:ngridmx,1:nlayermx,igcm_h2o_vap)
     1638c     &                *mugaz/mmol(igcm_h2o_vap)
     1639c            call WRITEDIAGFI(ngridmx,'vmr_h2ovap','h2o vap vmr',
     1640c     &                       'mol/mol',3,vmr)
     1641c             CALL WRITEDIAGFI(ngridmx,'reffice',
     1642c     &                       'Mean reff',
     1643c     &                       'm',2,rave)
     1644c            call WRITEDIAGFI(ngridmx,'rice','Ice particle size',
     1645c     &                       'm',3,rice)
    16341646c            If activice is true, tauTES is computed in aeropacity.F;
    16351647             if (.not.activice) then
     
    16821694c          call WRITEDIAGFI(ngridmx,'tau','taudust','SI',2,tau(1,1))
    16831695           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))
     1696c            call WRITEDIAGFI(ngridmx,'qsurf','qsurf',
     1697c     &                       'kg.m-2',2,qsurf(1,igcm_dust_mass))
     1698c            call WRITEDIAGFI(ngridmx,'Nsurf','N particles',
     1699c     &                       'N.m-2',2,qsurf(1,igcm_dust_number))
    16881700c            call WRITEDIAGFI(ngridmx,'dqsdev','ddevil lift',
    16891701c    &                       '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))
     1702c            call WRITEDIAGFI(ngridmx,'dqssed','sedimentation',
     1703c     &                       'kg.m-2.s-1',2,zdqssed(1,1))
     1704c            call WRITEDIAGFI(ngridmx,'dqsdif','diffusion',
     1705c     &                       'kg.m-2.s-1',2,zdqsdif(1,1))
     1706c             call WRITEDIAGFI(ngridmx,'reffdust','reffdust',
     1707c     &                        'm',3,rdust*ref_r0)
     1708c             call WRITEDIAGFI(ngridmx,'dustq','Dust mass mr',
     1709c     &                        'kg/kg',3,pq(1,1,igcm_dust_mass))
     1710c             call WRITEDIAGFI(ngridmx,'dustN','Dust number',
     1711c     &                        'part/kg',3,pq(1,1,igcm_dust_number))
    16981712#ifdef MESOINI
    16991713             call WRITEDIAGFI(ngridmx,'dustN','Dust number',
     
    19321946cccccccccccccccccccccc scavenging outputs 1D TN ccccccccccccccccccc
    19331947ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    1934 
     1948         IF (scavenging) THEN
    19351949             CALL WRITEDIAGFI(ngridmx,'tauTESap',
    19361950     &                         'tau abs 825 cm-1',
     
    19481962     
    19491963           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
    19501971         
    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))
    19601976     
     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         
    19611986ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    19621987ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
  • trunk/LMDZ.MARS/libf/phymars/suaer.F90

    r222 r411  
    376376  END DO
    377377! 2.5 Output display
    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)
     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)
    391391! ------------------------------------------------
    392392ENDDO
     
    427427       nir-1,longir,epav,omegav,gav,&
    428428       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)
    432432
    433433! 2.5 Computing  <QIR>/Qext(longrefvis)
    434434
    435435  DO iir=1,nir-1
    436     WRITE(*,*) 'QIRsQREFir Channel ',iir,': ',epav(iir)
     436!    WRITE(*,*) 'QIRsQREFir Channel ',iir,': ',epav(iir)
    437437    epav(iir)=  epav(iir) * QREFir(iaer,isize) / &
    438438                            QREFvis(iaer,isize)
    439439  ENDDO
    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)
     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)
    444444
    445445! 2.6 Variable assignements
     
    473473! 2.7 Output display
    474474
    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(*,*) ''
     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(*,*) ''
    486486
    487487ENDDO ! isize (particle size) -------------------------------------
  • trunk/LMDZ.MARS/libf/phymars/watercloud.F

    r358 r411  
    100100      IF (microphys) THEN
    101101        CALL improvedclouds(ngrid,nlay,ptimestep,
    102      &             pplay,pt,pdt,
     102     &             pplev,pplay,pt,pdt,
    103103     &             pq,pdq,pdqcloud,pdqscloud,pdtcloud,
    104104     &             nq,tauscaling,rdust,rice,nuice,
Note: See TracChangeset for help on using the changeset viewer.