Ignore:
Timestamp:
Nov 12, 2025, 6:12:16 PM (5 weeks ago)
Author:
debatzbr
Message:

Pluto PCM: Take clouds into account in radiative transfer.
BBT

File:
1 edited

Legend:

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

    r3947 r3959  
    1515                     igas_CH4, igas_N2
    1616  use comcstfi_mod, only: g, r, mugaz
    17   use callkeys_mod, only: kastprof,continuum,graybody,callgasvis,callmufi,Fabs_aers_VI,Fabs_aerf_VI
     17  use callkeys_mod, only: kastprof,continuum,graybody,callgasvis,callmufi,callmuclouds, &
     18                          Fabs_aers_VI,Fabs_aerf_VI,Fabs_cldd_VI
    1819  use recombin_corrk_mod, only: corrk_recombin, gasv_recomb
    1920  use tpindex_mod, only: tpindex
     
    146147  wbarv_aer(:,:,:) = 1.0
    147148
    148   if(callmufi) then
     149  if (callmufi) then
    149150   Fabs_aer(1) = Fabs_aers_VI
    150151   Fabs_aer(2) = Fabs_aerf_VI
     152   if (callmuclouds) then
     153      Fabs_aer(3) = Fabs_cldd_VI
     154   endif
    151155  else
    152156   Fabs_aer(:) = 1.0
     
    185189        do K=5,L_LEVELS
    186190           TAEROS(K,NW,IAER) = TAUAERO(K,IAER) * QXVAER(K,NW,IAER)
    187            ! Aerosol absorption correction --> impact on opacity.
     191           ! Aerosol/Cloud absorption correction --> impact on opacity.
    188192           if (callmufi .and. (TAEROS(K,NW,IAER).gt.0.d0)) then
    189193            TAEROS(K,NW,IAER) = TAEROS(K,NW,IAER) * &
     
    376380            btemp(L,NW) = btemp(L,NW) + TAUAEROLK(K,NW,2) + TAUAEROLK(K+1,NW,2)
    377381         endif
     382
     383         ! Cloud absorption correction --> impact on single scattering albedo.
     384         if (callmuclouds) then
     385            if ((TAEROS(K,NW,3).gt.0.d0) .and. TAEROS(K+1,NW,3).gt.0.d0) then
     386               btemp(L,NW) = btemp(L,NW) + &
     387                           (TAUAEROLK(K,NW,3) / &
     388                           (QSVAER(K,NW,3)/QXVAER(K,NW,3) + &
     389                              Fabs_aer(3)*(1.-QSVAER(K,NW,3)/QXVAER(K,NW,3)))) + &
     390                           (TAUAEROLK(K+1,NW,3) / &
     391                           (QSVAER(K+1,NW,3)/QXVAER(K+1,NW,3) + &
     392                              Fabs_aer(3)*(1.-QSVAER(K+1,NW,3)/QXVAER(K+1,NW,3))))
     393            else
     394               btemp(L,NW) = btemp(L,NW) + TAUAEROLK(K,NW,3) + TAUAEROLK(K+1,NW,3)
     395            endif
     396         endif ! end callmuclouds
    378397      else
    379398         btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind)) + SUM(TAUAEROLK(K+1,NW,1:naerkind))
     
    409428         btemp(L,NW) = btemp(L,NW) + TAUAEROLK(K,NW,2)
    410429      endif
     430      ! Cloud absorption correction --> impact on single scattering albedo.
     431      if (callmuclouds) then
     432         if (TAEROS(K,NW,3).gt.0.d0) then
     433            btemp(L,NW) = btemp(L,NW) + &
     434                          (TAUAEROLK(K,NW,3) / &
     435                          (QSVAER(K,NW,3)/QXVAER(K,NW,3) + &
     436                           Fabs_aer(3)*(1.-QSVAER(K,NW,3)/QXVAER(K,NW,3))))
     437         else
     438            btemp(L,NW) = btemp(L,NW) + TAUAEROLK(K,NW,3)
     439         endif
     440      endif ! end callmuclouds
    411441     else
    412442      btemp(L,NW) = SUM(TAUAEROLK(K,NW,1:naerkind))
     
    421451    DO NW=1,L_NSPECTV
    422452     DO L=1,L_NLAYRAD-1
    423 
    424453        K              = 2*L+1
    425454        DTAUV(L,nw,ng) = DTAUKV(K,NW,NG) + DTAUKV(K+1,NW,NG)
    426455        WBARV(L,nw,ng) = ctemp(L,NW) / DTAUV(L,nw,ng)
    427 
    428456      END DO ! L vertical loop
    429457
    430         ! Last level
    431 
    432         L              = L_NLAYRAD
    433         K              = 2*L+1
    434         DTAUV(L,nw,ng) = DTAUKV(K,NW,NG)
    435 
    436         WBARV(L,NW,NG) = ctemp(L,NW) / DTAUV(L,NW,NG)
    437 
    438      END DO                 ! NW spectral loop
    439   END DO                    ! NG Gauss loop
     458      ! Last level
     459      !-----------
     460      L = L_NLAYRAD
     461      K = 2*L+1
     462           
     463      DTAUV(L,nw,ng) = DTAUKV(K,NW,NG)
     464      WBARV(L,NW,NG) = ctemp(L,NW) / DTAUV(L,NW,NG)
     465     END DO ! NW spectral loop
     466  END DO ! NG Gauss loop
    440467
    441468  ! Aerosols extinction optical depths
Note: See TracChangeset for help on using the changeset viewer.