Changeset 3948 for trunk/LMDZ.PLUTO/libf


Ignore:
Timestamp:
Nov 3, 2025, 5:05:25 PM (6 weeks ago)
Author:
tbertrand
Message:

PLUTO PCM :
Simple scheme for CH4 clouds with number of nuclei determined by the haze number mixing ratio and not a fixed number in callphys.def (Nmix)
TB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/phypluto/ch4cloud.F90

    r3585 r3948  
    66      use comgeomfi_h
    77      use comcstfi_mod, only: pi, g, cpp
    8       use tracer_h, only: igcm_ch4_gas, igcm_ch4_ice, rho_ch4_ice, lw_ch4
    9       use callkeys_mod, only: Nmix_ch4
     8      use tracer_h, only: igcm_ch4_gas, igcm_ch4_ice, &
     9             rho_ch4_ice,lw_ch4,micro_indx
     10      use callkeys_mod, only: Nmix_ch4, callmufi
    1011
    1112      IMPLICIT NONE
     
    7475      REAL zqsat(ngrid,nlay)    ! saturation
    7576      REAL zt(ngrid,nlay)       ! local value of temperature
     77      REAL nmix(ngrid,nlay)     ! Profil of Nmix
    7678
    7779      REAL vecnull(ngrid*nlay)
     
    134136!    On effectue qqes calculs preliminaires sur les couches :
    135137
     138      zt(:,:)=pt(:,:)+ pdt(:,:)*ptimestep
     139      zq(:,:,i_ch4)=pq(:,:,i_ch4)+pdq(:,:,i_ch4)*ptimestep
     140      zq(:,:,i_ice)=pq(:,:,i_ice)+pdq(:,:,i_ice)*ptimestep
     141
     142      if (callmufi) then
     143        zq(:,:,micro_indx(1))=pq(:,:,micro_indx(1))+ &
     144                    pdq(:,:,micro_indx(1))*ptimestep
     145        zq(:,:,micro_indx(3))=pq(:,:,micro_indx(3))+ &
     146                    pdq(:,:,micro_indx(3))*ptimestep
     147      endif
     148
    136149      do l=1,nlay
    137150        do ig=1,ngrid
    138           zt(ig,l)=pt(ig,l)+ pdt(ig,l)*ptimestep
    139           zq(ig,l,i_ch4)=pq(ig,l,i_ch4)+pdq(ig,l,i_ch4)*ptimestep
    140151          zq(ig,l,i_ch4)=max(zq(ig,l,i_ch4),1.E-30)
    141           zq(ig,l,i_ice)=pq(ig,l,i_ice)+pdq(ig,l,i_ice)*ptimestep
    142152          zq(ig,l,i_ice)=max(zq(ig,l,i_ice),0.)
    143153        enddo
    144154      enddo
     155      if (callmufi) then
     156       do l=1,nlay
     157        do ig=1,ngrid
     158          zq(ig,l,micro_indx(1))=max(zq(ig,l,micro_indx(1)),1.E-30)
     159          zq(ig,l,micro_indx(3))=max(zq(ig,l,micro_indx(3)),1.E-30)
     160        enddo
     161       enddo
     162      endif
    145163
    146164      pdqscloud(1:ngrid,1:nq)=0
    147165      pdqcloud(1:ngrid,1:nlay,1:nq)=0
    148166      pdtcloud(1:ngrid,1:nlay)=0
     167
     168      ! Nmix profile
     169      if (callmufi) then
     170         nmix(:,:)=zq(ig,l,micro_indx(1))+zq(ig,l,micro_indx(3))
     171      else
     172         nmix(:,:)=Nmix_ch4
     173      endif
    149174
    150175!    ----------------------------------------------
     
    208233                zq(ig,l,i_ice)= &
    209234                 zq(ig,l,i_ice)+pdqcloud(ig,l,i_ice)*ptimestep
    210                 rice_ch4(ig,l)=max( CBRT ( (zq(ig,l,i_ice)/rho_ch4_ice  &
    211                +Nmix_ch4*(4./3.)*pi*rnuclei**3.)/(Nmix_ch4*4./3.*pi)), &
     235                rice_ch4(ig,l)=max( CBRT ( (zq(ig,l,i_ice)/rho_ch4_ice &
     236            +nmix(ig,l)*(4./3.)*pi*rnuclei**3.)/(nmix(ig,l)*4./3.*pi)), &
    212237                                             rnuclei)
    213238             end if
Note: See TracChangeset for help on using the changeset viewer.