Ignore:
Timestamp:
Jan 5, 2018, 4:45:21 PM (7 years ago)
Author:
emillour
Message:

Mars GCM:

  • fix in co2cloud.F: use "co2cloudfrac" instead of "cloudfrac" to avoid output naming collisions with the water cycle.

EM

File:
1 edited

Legend:

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

    r1820 r1885  
    173173      REAL ::  zteff(ngrid, nlay)! effective temperature in the cloud,neb
    174174      REAL ::  pqeff(ngrid, nlay, nq)! effective tracers quantities in the cloud
    175       REAL ::  cloudfrac(ngrid,nlay) ! cloud fraction
     175      REAL ::  co2cloudfrac(ngrid,nlay) ! cloud fraction
    176176      REAL ::  mincloud ! min cloud frac
    177177      DOUBLE PRECISION:: rho,zu,NN,gradT !For Saturation Index computation
     
    287287        print*,'   i, rad_cldco2(i), Qext1bins(i)'
    288288        do i=1,nbinco2_cld
    289           write(*,'(i3,3x,3(e12.6,4x))') i, rad_cldco2(i),
     289          write(*,'(i3,3x,3(e13.6,4x))') i, rad_cldco2(i),
    290290     &    Qext1bins(i)
    291291        enddo
     
    337337
    338338         spant=spantCO2         ! delta T for the temprature distribution
    339          mincloud=0.1           ! min cloudfrac when there is ice 
     339         mincloud=0.1           ! min co2cloudfrac when there is ice 
    340340         zteff(:,:)=pt(:,:)
    341          cloudfrac(:,:)=mincloud
     341         co2cloudfrac(:,:)=mincloud
    342342         
    343343c-----Tendencies
     
    358358
    359359
    360          call WRITEDIAGFI(ngrid,"pzlev","pzlev","km",3,
     360         call WRITEDIAGFI(ngrid,"co2cloud_pzlev","pzlev","km",3,
    361361     &        pzlev)
    362          call WRITEDIAGFI(ngrid,"pzlay","pzlay","km",3,
     362         call WRITEDIAGFI(ngrid,"co2cloud_pzlay","pzlay","km",3,
    363363     &        pzlay)
    364          call WRITEDIAGFI(ngrid,"pplay","pplay","Pa",3,
     364         call WRITEDIAGFI(ngrid,"co2cloud_pplay","pplay","Pa",3,
    365365     &        pplay)
    366366
     
    412412     &             .or. tcond(ig,l) .le. 0 ) THEN !The entire fraction is saturated
    413413                  zteff(ig,l)=zt(ig,l)
    414                   cloudfrac(ig,l)=1.
     414                  co2cloudfrac(ig,l)=1.
    415415               ELSE IF (tcond(ig,l) .le. (zt(ig,l)-zdelt)) THEN ! No saturation at all
    416416                  zteff(ig,l)=zt(ig,l)-zdelt
    417                   cloudfrac(ig,l)=mincloud
     417                  co2cloudfrac(ig,l)=mincloud
    418418               ELSE
    419                   cloudfrac(ig,l)=(tcond(ig,l)-zt(ig,l)+zdelt)/
     419                  co2cloudfrac(ig,l)=(tcond(ig,l)-zt(ig,l)+zdelt)/
    420420     &                 (2.0*zdelt)
    421421                  zteff(ig,l)=(tcond(ig,l)+zt(ig,l)-zdelt)/2. !Mean temperature of the cloud fraction
    422422               END IF           !ig if (tcond(ig,l) ...
    423423               zteff(ig,l)=zteff(ig,l)-pdt(ig,l)*ptimestep
    424                IF (cloudfrac(ig,l).le. mincloud) THEN
    425                   cloudfrac(ig,l)=mincloud
    426                ELSE IF (cloudfrac(ig,l).gt. 1) THEN
    427                   cloudfrac(ig,l)=1.
     424               IF (co2cloudfrac(ig,l).le. mincloud) THEN
     425                  co2cloudfrac(ig,l)=mincloud
     426               ELSE IF (co2cloudfrac(ig,l).gt. 1) THEN
     427                  co2cloudfrac(ig,l)=1.
    428428               END IF
    429429             ENDDO
     
    431431!SatIndex not favorable for GW : leave pt untouched
    432432             zteff(ig,l)=pt(ig,l)
    433              cloudfrac(ig,l)=mincloud
     433             co2cloudfrac(ig,l)=mincloud
    434434           ENDIF                 ! of if(SatIndexmap...
    435435         ENDDO ! of DO ig=1,ngrid
     
    494494            pqeff(:,:,:)=pq(:,:,:) ! prevent from buggs (A. Pottier)
    495495            pqeff(:,:,igcm_ccnco2_mass) =pq(:,:,igcm_ccnco2_mass)/
    496      &           cloudfrac(:,:)
     496     &           co2cloudfrac(:,:)
    497497            pqeff(:,:,igcm_ccnco2_number)=
    498      &           pq(:,:,igcm_ccnco2_number)/cloudfrac(:,:)
     498     &           pq(:,:,igcm_ccnco2_number)/co2cloudfrac(:,:)
    499499            pqeff(:,:,igcm_co2_ice)= pq(:,:,igcm_co2_ice)/
    500      &           cloudfrac(:,:)
     500     &           co2cloudfrac(:,:)
    501501        ELSE
    502502            pqeff(:,:,:)=pq(:,:,:)
     
    869869        enddo
    870870      enddo
    871 !Everything modified by CO2 microphysics must be wrt cloudfrac
     871!Everything modified by CO2 microphysics must be wrt co2cloudfrac
    872872      IF (CLFvaryingCO2) THEN
    873             DO l=1,nlay
    874                DO ig=1,ngrid
    875                   pdqcloudco2(ig,l,igcm_ccn_mass)=
    876      &             pdqcloudco2(ig,l,igcm_ccn_mass)*cloudfrac(ig,l)
    877                   pdqcloudco2(ig,l,igcm_ccnco2_mass)=
    878      &             pdqcloudco2(ig,l,igcm_ccnco2_mass)*cloudfrac(ig,l)
    879                   pdqcloudco2(ig,l,igcm_ccn_number)=
    880      &             pdqcloudco2(ig,l,igcm_ccn_number)*cloudfrac(ig,l)
    881                   pdqcloudco2(ig,l,igcm_ccnco2_number)=
    882      &             pdqcloudco2(ig,l,igcm_ccnco2_number)*cloudfrac(ig,l)
    883                   pdqcloudco2(ig,l,igcm_dust_mass)=
    884      &             pdqcloudco2(ig,l,igcm_dust_mass)*cloudfrac(ig,l)
    885                   pdqcloudco2(ig,l,igcm_dust_number)=
    886      &             pdqcloudco2(ig,l,igcm_dust_number)*cloudfrac(ig,l)
    887                   pdqcloudco2(ig,l,igcm_h2o_ice)=
    888      &             pdqcloudco2(ig,l,igcm_h2o_ice)*cloudfrac(ig,l)
    889                   pdqcloudco2(ig,l,igcm_co2_ice)=
    890      &             pdqcloudco2(ig,l,igcm_co2_ice)*cloudfrac(ig,l)
    891                   pdqcloudco2(ig,l,igcm_co2)=
    892      &             pdqcloudco2(ig,l,igcm_co2)*cloudfrac(ig,l)
    893                   pdtcloudco2(ig,l)=pdtcloudco2(ig,l)*cloudfrac(ig,l)
    894                   Qext1bins2(ig,l)=Qext1bins2(ig,l)*cloudfrac(ig,l)
    895                ENDDO
    896             ENDDO   
     873        DO l=1,nlay
     874          DO ig=1,ngrid
     875            pdqcloudco2(ig,l,igcm_ccn_mass)=
     876     &        pdqcloudco2(ig,l,igcm_ccn_mass)*co2cloudfrac(ig,l)
     877            pdqcloudco2(ig,l,igcm_ccnco2_mass)=
     878     &        pdqcloudco2(ig,l,igcm_ccnco2_mass)*co2cloudfrac(ig,l)
     879            pdqcloudco2(ig,l,igcm_ccn_number)=
     880     &        pdqcloudco2(ig,l,igcm_ccn_number)*co2cloudfrac(ig,l)
     881            pdqcloudco2(ig,l,igcm_ccnco2_number)=
     882     &        pdqcloudco2(ig,l,igcm_ccnco2_number)*co2cloudfrac(ig,l)
     883            pdqcloudco2(ig,l,igcm_dust_mass)=
     884     &        pdqcloudco2(ig,l,igcm_dust_mass)*co2cloudfrac(ig,l)
     885            pdqcloudco2(ig,l,igcm_dust_number)=
     886     &        pdqcloudco2(ig,l,igcm_dust_number)*co2cloudfrac(ig,l)
     887            pdqcloudco2(ig,l,igcm_h2o_ice)=
     888     &        pdqcloudco2(ig,l,igcm_h2o_ice)*co2cloudfrac(ig,l)
     889            pdqcloudco2(ig,l,igcm_co2_ice)=
     890     &        pdqcloudco2(ig,l,igcm_co2_ice)*co2cloudfrac(ig,l)
     891            pdqcloudco2(ig,l,igcm_co2)=
     892     &        pdqcloudco2(ig,l,igcm_co2)*co2cloudfrac(ig,l)
     893            pdtcloudco2(ig,l)=pdtcloudco2(ig,l)*co2cloudfrac(ig,l)
     894            Qext1bins2(ig,l)=Qext1bins2(ig,l)*co2cloudfrac(ig,l)
     895          ENDDO
     896        ENDDO   
    897897      ENDIF
    898898! opacity in mesh ig is the sum over l of Qext1bins2: Is this true ?
     
    910910      call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
    911911     &        ,3,riceco2)         
    912       call WRITEdiagfi(ngrid,"cloudfrac","co2 cloud fraction"
    913      &        ," ",3,cloudfrac)
     912      call WRITEdiagfi(ngrid,"co2cloudfrac","co2 cloud fraction"
     913     &        ," ",3,co2cloudfrac)
    914914      call WRITEdiagfi(ngrid,"rsedcloudco2","rsed co2"
    915915     &        ,"m",3,rsedcloudco2)
Note: See TracChangeset for help on using the changeset viewer.