Changeset 2724 for trunk/LMDZ.GENERIC


Ignore:
Timestamp:
Jun 21, 2022, 11:05:46 AM (3 years ago)
Author:
aslmd
Message:

rneb_generic and RH_generic added

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/condensation_generic_mod.F90

    r2722 r2724  
    55   
    66    subroutine condensation_generic(ngrid,nlayer,nq,ptimestep, pplev, pplay,    &
    7                 pt, pq, pdt, pdq, pdtlsc, pdqvaplsc, pdqliqlsc)
     7                pt, pq, pdt, pdq, pdtlsc, pdqvaplsc, pdqliqlsc, rneb)
    88        use ioipsl_getin_p_mod, only: getin_p !-> to get the metallicity
    99        use generic_cloud_common_h
     
    4343        REAL, intent(out) :: pdqvaplsc(ngrid,nlayer,nq) ! incrementation de la vapeur du traceur
    4444        REAL, intent(out) :: pdqliqlsc(ngrid,nlayer,nq) ! incrementation du traceur liquide
     45        REAL, intent(out) :: rneb(ngrid,nlayer,nq)    ! fraction nuageuse
    4546
    4647!       Options :
     
    9596        qevap(1:ngrid,1:nlayer,1:nq)=0.0
    9697        tevap(1:ngrid,1:nlayer)=0.0
     98        rneb(1:ngrid,1:nlayer,1:nq) = 0.0
    9799        ! Let's loop on tracers
    98100        do iq=1,nq
     
    138140                                        End do ! niter
    139141                                        zcond(i)=MAX(zcond(i),-(pq(i,k,igcm_generic_ice)+pdq(i,k,igcm_generic_ice)*ptimestep))
     142
     143                                        if (zcond(i) .gt. 0.) then
     144                                                rneb(i,k,iq)=1
     145                                        else
     146                                                rneb(i,k,iq)=0.
     147                                        endif
     148
    140149                                        zcond(i) = zcond(i)/ptimestep
    141150                                ENDDO ! i=1,ngrid
  • trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90

    r2722 r2724  
    1717      use radinc_h, only : L_NSPECTI,L_NSPECTV,naerkind
    1818      use watercommon_h, only : RLVTT, Psat_water,epsi,su_watercycle, RV, T_h2o_ice_liq
     19      use generic_cloud_common_h, only : Psat_generic
    1920      use thermcell_mod, only: init_thermcell_mod
    2021      use gases_h, only: gnom, gfrac
     
    415416      real RH(ngrid,nlayer)   ! Relative humidity.
    416417      real psat_tmp
     418
     419      real qsat_generic(ngrid,nlayer,nq) ! generic condensable tracers (GCS) specific concentration at saturation (kg/kg_of_air).
     420      real RH_generic(ngrid,nlayer,nq)   ! generic condensable tracers (GCS) Relative humidity.
     421      real rneb_generic(ngrid,nlayer,nq) ! GCS cloud fraction (generic condensation).
     422      real psat_tmp_generic
     423      real metallicity
    417424     
    418425      logical clearsky ! For double radiative transfer call. By BC
     
    15591566            call condensation_generic(ngrid,nlayer,nq,ptimestep,pplev,pplay,   &
    15601567                                          pt,pq,pdt,pdq,dtlscale_generic, &
    1561                                           dqvaplscale_generic,dqcldlscale_generic)
     1568                                          dqvaplscale_generic,dqcldlscale_generic,rneb_generic)
    15621569            pdt(1:ngrid,1:nlayer) = pdt(1:ngrid,1:nlayer)+dtlscale_generic(1:ngrid,1:nlayer)
    15631570            pdq(1:ngrid,1:nlayer,1:nq) = pdq(1:ngrid,1:nlayer,1:nq)+dqvaplscale_generic(1:ngrid,1:nlayer,1:nq)
     
    15731580               if (is_master) print*,'In generic condensation atmospheric energy change =',dEtot,' W m-2'
    15741581            end if
     1582
     1583            if (.not. water) then ! Compute GCS cloud fraction. For now we can not have both water cloud fraction and GCS cloud fraction
     1584
     1585               ! Let's loop on tracers
     1586               do iq=1,nq
     1587
     1588                  call generic_tracer_index(nq,iq,igcm_generic_vap,igcm_generic_ice,call_ice_vap_generic)
     1589                 
     1590                  if (call_ice_vap_generic) then ! to call only one time the ice/vap pair of a tracer
     1591                     do l = 1, nlayer
     1592                        do ig=1,ngrid
     1593                           cloudfrac(ig,l)=MAX(rneb_generic(ig,l,iq),rneb_man(ig,l))
     1594                           ! To be improved : for now, cloudfrac is only the cloudfrac of the last generic tracer
     1595                           ! Because it is rewritten every tracer
     1596                           ! One should create a cloudfrac_generic(ngrid,nlayer,nq)
     1597                        enddo
     1598                     enddo
     1599                  endif
     1600            end do ! do iq=1,nq loop on tracers
     1601            endif ! .not. water
     1602
    15751603         endif !generic_condensation
    15761604
     
    20832111      endif ! end of 'water'
    20842112
     2113      ! Calculate RH_generic (Generic Relative Humidity) for diagnostic.
     2114      if(generic_condensation)then
     2115         do iq=1,nq
     2116
     2117            call generic_tracer_index(nq,iq,igcm_generic_vap,igcm_generic_ice,call_ice_vap_generic)
     2118           
     2119            if (call_ice_vap_generic) then ! to call only one time the ice/vap pair of a tracer
     2120     
     2121               do l = 1, nlayer
     2122                  do ig=1,ngrid
     2123                     metallicity = 0.
     2124                     call Psat_generic(zt(ig,l),pplay(ig,l),metallicity,psat_tmp_generic,qsat_generic(ig,l,iq))
     2125                     RH_generic(ig,l,iq) = zq(ig,l,igcm_generic_vap) / qsat_generic(ig,l,iq)
     2126                  enddo
     2127               enddo
     2128
     2129            end if
     2130         
     2131         end do ! iq=1,nq
     2132
     2133      endif ! end of 'generic_condensation'
     2134
    20852135
    20862136      if (is_master) print*,'--> Ls =',zls*180./pi
     
    24232473               call writediagfi(ngrid,"snow","snowfall","kg m-2 s-1",2,zdqssnow)
    24242474               call writediagfi(ngrid,"reevap","reevaporation of precipitation","kg m-2 s-1",2,reevap_precip)
     2475            endif
     2476
     2477            if(generic_condensation)then
     2478               call writediagfi(ngrid,"rneb_generic","GCS cloud fraction (generic condensation)"," ",3,rneb_generic)
     2479               call writediagfi(ngrid,"CLF","GCS cloud fraction"," ",3,cloudfrac)
     2480               call writediagfi(ngrid,"RH_generic","GCS relative humidity"," ",3,RH_generic)
    24252481            endif
    24262482
Note: See TracChangeset for help on using the changeset viewer.