Changeset 4148


Ignore:
Timestamp:
Mar 23, 2026, 3:43:50 PM (5 days ago)
Author:
aarfaux
Message:

Titan PCM:

Correct clear and dark columns averaging.
AA

File:
1 edited

Legend:

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

    r4099 r4148  
    1414      use gases_h
    1515      USE tracer_h
    16       use callkeys_mod, only: global1d, szangle
    1716      use comcstfi_mod, only: pi, mugaz, cpp
    18       use callkeys_mod, only: diurnal,tracer,seashaze,corrk_recombin,   &
    19                               strictboundcorrk,specOLR,diagdtau,        &
     17      use callkeys_mod, only: global1d, szangle,                      &
     18                              diurnal,tracer,seashaze,corrk_recombin, &
     19                              strictboundcorrk,specOLR,diagdtau,      &
    2020                              tplanckmin,tplanckmax,callclouds,Fcloudy
    2121      use geometry_mod, only: latitude
     
    6060      INTEGER,INTENT(IN) :: nq                     ! Number of tracers.
    6161      REAL,INTENT(IN) :: qsurf(ngrid,nq)           ! Tracers on surface (kg.m-2).
    62       REAL,INTENT(IN) :: zday                      ! Time elapsed since Ls=0 (sols).
     62      REAL,INTENT(IN) :: zday                      ! Time elapsed since Ls=0 (sols).
    6363      REAL,INTENT(IN) :: albedo(ngrid,L_NSPECTV)   ! Spectral Short Wavelengths Albedo. By MT2015
    6464      REAL,INTENT(IN) :: emis(ngrid)               ! Long Wave emissivity.
     
    198198!             I.  Initialization on every call   
    199199!=======================================================================
    200  
     200
    201201
    202202      ! How much light do we get ?
     
    513513              dtauv_dc,tauv_dc,taucumv_dc,wbarv_dc,cosbv_dc,tauray,taugsurf,seashazefact,&
    514514              diag_opthv,diag_opttv_dc,cdcolumn)
    515          
     515
    516516         ! Mean opacity, ssa and asf :
    517          where ((exp(-dtauv_cc(:,:,:)).ge.1.d-40) .and. (exp(-dtauv_dc(:,:,:)).ge.1.d-40))
    518             dtauv(:,:,:) = -log((1-Fcloudy)*exp(-dtauv_cc(:,:,:)) + Fcloudy*exp(-dtauv_dc(:,:,:)))
     517         where (dtauv_cc(:,:,:) .le. 100 .and. dtauv_dc(:,:,:) .le. 100.)
     518            dtauv(:,:,:) = (1-Fcloudy)*dtauv_cc(:,:,:) + Fcloudy*dtauv_dc(:,:,:)
    519519         elsewhere
    520520            dtauv(:,:,:) = dtauv_dc(:,:,:) ! No need to average...
     
    524524               taucumv(1,nw,ng) = 0.0d0
    525525               do k = 2, L_LEVELS
    526                   if ((exp(-taucumv_cc(k,nw,ng)).ge.1.d-40) .and. (exp(-taucumv_dc(k,nw,ng)).ge.1.d-40)) then
    527                      taucumv(k,nw,ng) = taucumv(k-1,nw,ng) - log((1-Fcloudy)*exp(-taucumv_cc(k,nw,ng)) + Fcloudy*exp(-taucumv_dc(k,nw,ng)))
     526                  if ((taucumv_cc(k,nw,ng).le.100.) .and. (taucumv_dc(k,nw,ng).le.100.)) then
     527                     taucumv(k,nw,ng) = taucumv(k-1,nw,ng) + (1-Fcloudy)*taucumv_cc(k,nw,ng) + Fcloudy*taucumv_dc(k,nw,ng)
    528528                  else
    529529                     taucumv(k,nw,ng) = taucumv(k-1,nw,ng) + taucumv_dc(k,nw,ng) ! No need to average...
     
    536536            end do
    537537         end do
    538          wbarv = (1-Fcloudy) * wbarv_cc + Fcloudy * wbarv_dc
    539          cosbv = (1-Fcloudy) * cosbv_cc + Fcloudy * cosbv_dc
    540        
     538
     539         wbarv = ((1-Fcloudy) * wbarv_cc*dtauv_cc            + Fcloudy * wbarv_dc *dtauv_dc)
     540         wbarv = wbarv /((1-Fcloudy) * dtauv_cc              + Fcloudy * dtauv_dc  + 1.e-30)
     541
     542         cosbv = ((1-Fcloudy) * cosbv_cc * wbarv_cc*dtauv_cc + Fcloudy * cosbv_dc  * wbarv_dc *dtauv_dc)
     543         cosbv = cosbv /((1-Fcloudy) * wbarv_cc*dtauv_cc     + Fcloudy * wbarv_dc *dtauv_dc + 1.e-30)
     544         !------------------------------------------------------------------------------
     545         
    541546         ! Diagnostics for clouds :
     547
    542548         if (callclouds) then
    543549            where (diag_opttv_cc(:,:,1) .lt. 1.d-30)
     
    585591         end if
    586592
    587 
    588593         ! Equivalent Albedo Calculation (for OUTPUT). MT2015
    589594         if(fract(ig) .ge. 1.0e-4) then ! equivalent albedo makes sense only during daylight.       
     
    620625
    621626         ! Mean opacity, ssa and asf :
    622          where ((exp(-dtaui_cc(:,:,:)).ge.1.d-40) .and. (exp(-dtaui_dc(:,:,:)).ge.1.d-40))
    623             dtaui(:,:,:) = -log((1-Fcloudy)*exp(-dtaui_cc(:,:,:)) + Fcloudy*exp(-dtaui_dc(:,:,:)))
     627         where (dtaui_cc(:,:,:).le.100. .and. dtaui_dc(:,:,:).le.100.)
     628            dtaui(:,:,:) = (1-Fcloudy)*dtaui_cc(:,:,:) + Fcloudy*dtaui_dc(:,:,:)
    624629         elsewhere
    625630            dtaui(:,:,:) = dtaui_dc(:,:,:) ! No need to average...
     
    629634               taucumi(1,nw,ng) = 0.0d0
    630635               do k = 2, L_LEVELS
    631                   if ((exp(-taucumi_cc(k,nw,ng)).ge.1.d-40) .and. (exp(-taucumi_dc(k,nw,ng)).ge.1.d-40)) then
    632                      taucumi(k,nw,ng) = taucumi(k-1,nw,ng) - log((1-Fcloudy)*exp(-taucumi_cc(k,nw,ng)) + Fcloudy*exp(-taucumi_dc(k,nw,ng)))
     636                  if (taucumi_cc(k,nw,ng).le.100. .and. taucumi_dc(k,nw,ng).le.100.) then
     637                     taucumi(k,nw,ng) = taucumi(k-1,nw,ng) + (1-Fcloudy)*taucumi_cc(k,nw,ng) + Fcloudy*taucumi_dc(k,nw,ng)
    633638                  else
    634639                     taucumi(k,nw,ng) = taucumi(k-1,nw,ng) + taucumi_dc(k,nw,ng) ! No need to average...
     
    637642            end do
    638643         end do
    639          wbari = (1-Fcloudy) * wbari_cc + Fcloudy * wbari_dc
    640          cosbi = (1-Fcloudy) * cosbi_cc + Fcloudy * cosbi_dc
     644          wbari = ((1-Fcloudy) * wbari_cc*dtaui_cc + Fcloudy * wbari_dc *dtaui_dc)
     645          wbari = wbari /((1-Fcloudy) * dtaui_cc+ Fcloudy * dtaui_dc+1.e-10)
     646          cosbi = ((1-Fcloudy) * cosbi_cc * wbari_cc* dtaui_cc + Fcloudy * cosbi_dc  * wbari_dc *dtaui_dc)
     647          cosbi =  cosbi /((1-Fcloudy) * wbari_cc*dtaui_cc + Fcloudy * wbari_dc *dtaui_dc+1.e-10)
     648
     649         !----------------------------------------------------------------------
    641650
    642651         ! Diagnostics for clouds :
Note: See TracChangeset for help on using the changeset viewer.