Ignore:
Timestamp:
Apr 26, 2024, 4:27:26 PM (7 months ago)
Author:
slebonnois
Message:

Titan PCM update : optics + microphysics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/optcv.F90

    r3090 r3318  
    11SUBROUTINE OPTCV(PQMO,NLAY,ZLEV,PLEV,TMID,PMID,  &
    22     DTAUV,TAUV,TAUCUMV,WBARV,COSBV,TAURAY,TAUGSURF,SEASHAZEFACT,&
    3      POPT_HAZE,POPT_CLOUDS,CDCOLUMN)
     3     DIAG_OPTH,DIAG_OPTT,CDCOLUMN)
    44
    55  use radinc_h
     
    1111  use callkeys_mod, only: continuum,graybody,callgasvis,corrk_recombin,   &
    1212                          callclouds,callmufi,seashaze,uncoupl_optic_haze,&
    13                           opt4clouds,FHVIS, Fssa
     13                          opt4clouds,FHVIS,FCVIS
    1414  use tracer_h, only: nmicro,nice,ices_indx
    1515
     
    6969  REAL*8, INTENT(OUT) :: WBARV(L_NLAYRAD,L_NSPECTV,L_NGAUSS)
    7070  REAL*8, INTENT(OUT) :: TAUGSURF(L_NSPECTV,L_NGAUSS-1)
    71   REAL*8, INTENT(OUT) :: POPT_HAZE(L_LEVELS,L_NSPECTI,3)
    72   REAL*8, INTENT(OUT) :: POPT_CLOUDS(L_LEVELS,L_NSPECTI,3)
     71  REAL*8, INTENT(OUT) :: DIAG_OPTH(L_LEVELS,L_NSPECTV,6)
     72  REAL*8, INTENT(OUT) :: DIAG_OPTT(L_LEVELS,L_NSPECTV,6)
    7373  ! ==========================================================
    7474 
     
    124124  real*8,save :: rhoaer_s(L_NSPECTV),ssa_s(L_NSPECTV),asf_s(L_NSPECTV)
    125125  real*8,save :: rhoaer_f(L_NSPECTV),ssa_f(L_NSPECTV),asf_f(L_NSPECTV)
    126   real*8,save :: ssa_ccn(L_NSPECTI),asf_ccn(L_NSPECTI)
     126  real*8,save :: ssa_ccn(L_NSPECTV),asf_ccn(L_NSPECTV)
    127127  real*8,save :: ssa_cld(L_NSPECTV),asf_cld(L_NSPECTV)
    128128!$OMP THREADPRIVATE(rhoaer_s,rhoaer_f,ssa_s,ssa_f,ssa_cld,asf_s,asf_f,asf_cld)
     
    191191   end do
    192192 
     193   DIAG_OPTH(:,:,:) = 0.D0
     194   DIAG_OPTT(:,:,:) = 0.D0
     195
    193196   do NW=1,L_NSPECTV
    194197      ! We ignore K=1...
     
    254257            ENDIF
    255258
     259            ! Tuning of optical properties for haze :
     260            !dtauaer_s = dtauaer_s * (FHVIS * (1-ssa_s(nw)) + ssa_s(nw))
     261            !ssa_s(nw) = ssa_s(nw) / (FHVIS * (1-ssa_s(nw)) + ssa_s(nw))
     262            dtauaer_f = dtauaer_f * (FHVIS * (1-ssa_f(nw)) + ssa_f(nw))
     263            ssa_f(nw) = ssa_f(nw) / (FHVIS * (1-ssa_f(nw)) + ssa_f(nw))
     264
    256265            ! Total of Haze opacity (dtau), SSA (w) and ASF (COS) :
    257266            DHAZE_T(k,nw) = dtauaer_s + dtauaer_f
     
    265274               ASF_T(k,nw)   = 1.0
    266275            ENDIF
     276
    267277            ! Diagnostics for the haze :
    268             POPT_HAZE(k,nw,1) = DHAZE_T(k,nw) ! dtau
    269             POPT_HAZE(k,nw,2) = SSA_T(k,nw)   ! wbar
    270             POPT_HAZE(k,nw,3) = ASF_T(k,nw)   ! gbar
     278            DIAG_OPTH(k,nw,1) = DHAZE_T(k,nw) ! dtau
     279            DIAG_OPTH(k,nw,2) = SSA_T(k,nw)   ! wbar
     280            DIAG_OPTH(k,nw,3) = ASF_T(k,nw)   ! gbar
    271281
    272282            !---------------------
     
    277287               m0ccn = pqmo(ilay,5) / 2.0
    278288               m3ccn = pqmo(ilay,6) / 2.0
    279                m3cld = 0.0d0
     289               m3cld  = pqmo(ilay,6) / 2.0
    280290               
    281291               ! Clear / Dark column method :
     
    309319
    310320               ! For small dropplets, opacity of nucleus dominates
     321               dtau_cld = (dtau_cld*m3ccn + dtau_cld*m3cld) / (m3ccn + m3cld)
    311322               ssa_cld(nw) = (ssa_ccn(nw)*m3ccn + ssa_cld(nw)*m3cld) / (m3ccn + m3cld)
    312                ssa_cld(nw) = ssa_cld(nw) * Fssa
    313 
     323
     324               ! Tuning of optical properties for clouds :
     325               dtau_cld = dtau_cld * (FCVIS * (1-ssa_cld(nw)) + ssa_cld(nw))
     326               ssa_cld(nw) = ssa_cld(nw) / (FCVIS * (1-ssa_cld(nw)) + ssa_cld(nw))
     327               
    314328               ! Total of Haze + Clouds opacity (dtau), SSA (w) and ASF (COS) :
    315329               DHAZE_T(k,nw) = dtauaer_s + dtauaer_f + dtau_cld
     
    324338               ENDIF
    325339               
    326                ! Tuning of optical properties (now useless...) :
    327                DHAZE_T(k,nw) = DHAZE_T(k,nw) * (FHVIS * (1-SSA_T(k,nw)) + SSA_T(k,nw))
    328                SSA_T(k,nw)   = SSA_T(k,nw) / (FHVIS * (1-SSA_T(k,nw)) + SSA_T(k,nw))
    329 
    330340               ! Diagnostics for clouds :
    331                POPT_CLOUDS(k,nw,1) = DHAZE_T(k,nw) ! dtau
    332                POPT_CLOUDS(k,nw,2) = SSA_T(k,nw)   ! wbar
    333                POPT_CLOUDS(k,nw,3) = ASF_T(k,nw)   ! gbar
     341               DIAG_OPTT(k,nw,1) = DHAZE_T(k,nw) ! dtau
     342               DIAG_OPTT(k,nw,2) = SSA_T(k,nw)   ! wbar
     343               DIAG_OPTT(k,nw,3) = ASF_T(k,nw)   ! gbar
    334344           
    335345            ELSE
    336346               ! Diagnostics for clouds :
    337                POPT_CLOUDS(k,nw,1) = 0.D0 ! dtau
    338                POPT_CLOUDS(k,nw,2) = 1.0  ! wbar
    339                POPT_CLOUDS(k,nw,3) = 1.0  ! gbar
     347               DIAG_OPTT(k,nw,1) = 0.D0 ! dtau
     348               DIAG_OPTT(k,nw,2) = 1.0  ! wbar
     349               DIAG_OPTT(k,nw,3) = 1.0  ! gbar
    340350            ENDIF
    341351           
     
    346356            if (seashaze) DHAZE_T(k,nw) = DHAZE_T(k,nw)*seashazefact(k)
    347357            ! Diagnostics for the haze :
    348             POPT_HAZE(k,nw,1) = DHAZE_T(k,nw) ! dtau
    349             POPT_HAZE(k,nw,2) = SSA_T(k,nw)   ! wbar
    350             POPT_HAZE(k,nw,3) = ASF_T(k,nw)   ! gbar
     358            DIAG_OPTH(k,nw,1) = DHAZE_T(k,nw) ! dtau
     359            DIAG_OPTH(k,nw,2) = SSA_T(k,nw)   ! wbar
     360            DIAG_OPTH(k,nw,3) = ASF_T(k,nw)   ! gbar
    351361            ! Diagnostics for clouds :
    352             POPT_CLOUDS(k,nw,1) = 0.D0 ! dtau
    353             POPT_CLOUDS(k,nw,2) = 1.0  ! wbar
    354             POPT_CLOUDS(k,nw,3) = 1.0  ! gbar
     362            DIAG_OPTT(k,nw,1) = 0.D0 ! dtau
     363            DIAG_OPTT(k,nw,2) = 1.0  ! wbar
     364            DIAG_OPTT(k,nw,3) = 1.0  ! gbar
    355365         ENDIF ! ENDIF callmufi
    356366         
     
    472482         DTAUKV(K,nw,ng) = DRAYAER + DCONT ! Scattering + parameterized continuum absorption, including Titan's haze
    473483
    474       end do ! k = L_LEVELS
    475    end do ! nw = L_NSPECTI
     484         DIAG_OPTH(K,nw,4) = DRAYAER
     485         DIAG_OPTH(K,nw,5) = TAUGAS
     486         DIAG_OPTH(K,nw,6) = DCONT
     487         DIAG_OPTT(K,nw,4) = DRAYAER
     488         DIAG_OPTT(K,nw,5) = TAUGAS
     489         DIAG_OPTT(K,nw,6) = DCONT
     490
     491      end do ! K = L_LEVELS
     492   end do ! nw = L_NSPECTV
    476493
    477494  !=======================================================================
Note: See TracChangeset for help on using the changeset viewer.