Ignore:
Timestamp:
Nov 28, 2018, 12:30:55 PM (6 years ago)
Author:
jvatant
Message:

Add a simple seasonal+latitudinal variation model (season_haze.F90) for the vertical mean profile
of haze. Based on Karkoscha,2016 . Activable through "seashaze" key (default=T).
--JVO

Location:
trunk/LMDZ.TITAN/libf/phytitan
Files:
1 added
6 edited

Legend:

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

    r2026 r2046  
    1       subroutine callcorrk(ngrid,nlayer,pq,nq,qsurf,           &
     1      subroutine callcorrk(ngrid,nlayer,pq,nq,qsurf,zday,      &
    22          albedo,albedo_equivalent,emis,mu0,pplev,pplay,pt,    &
    33          tsurf,fract,dist_star,                               &
     
    1515      use callkeys_mod, only: global1d, szangle
    1616      use comcstfi_mod, only: pi, mugaz, cpp
    17       use callkeys_mod, only: diurnal,tracer,        &
     17      use callkeys_mod, only: diurnal,tracer,seashaze,         &
    1818                              strictboundcorrk,specOLR
     19      use geometry_mod, only: latitude
    1920
    2021      implicit none
     
    4849      INTEGER,INTENT(IN) :: nq                     ! Number of tracers.
    4950      REAL,INTENT(IN) :: qsurf(ngrid,nq)           ! Tracers on surface (kg.m-2).
     51      REAL,INTENT(IN) :: zday                      ! Time elapsed since Ls=0 (sols).
    5052      REAL,INTENT(IN) :: albedo(ngrid,L_NSPECTV)   ! Spectral Short Wavelengths Albedo. By MT2015
    5153      REAL,INTENT(IN) :: emis(ngrid)               ! Long Wave emissivity.
     
    114116      REAL*8 albedo_temp(L_NSPECTV) ! For equivalent albedo calculation.
    115117      REAL*8 surface_stellar_flux   ! Stellar flux reaching the surface. Useful for equivalent albedo calculation.
    116 
     118     
     119      ! For variable haze
     120      REAL*8 seashazefact(L_LEVELS)
    117121
    118122!=======================================================================
     
    281285         Cmk(:)      = 0.01 * 1.0 / (gzlat(ig,:) * mugaz * 1.672621e-27) ! q_main=1.0 assumed.
    282286         gzlat_ig(:) = gzlat(ig,:)
     287         
     288         ! Compute the haze seasonal modulation factor
     289         if (seashaze) call season_haze(zday,latitude(ig),plevrad,seashazefact)
    283290
    284291!-----------------------------------------------------------------------
     
    298305           
    299306            call optcv(pq(ig,:,1:nmicro),nlayer,plevrad,tmid,pmid,        &
    300                  dtauv,tauv,taucumv,wbarv,cosbv,tauray,taugsurf)
     307                 dtauv,tauv,taucumv,wbarv,cosbv,tauray,taugsurf,seashazefact)
    301308
    302309            call sfluxv(dtauv,tauv,taucumv,albv,dwnv,wbarv,cosbv,  &
     
    340347
    341348         call optci(pq(ig,:,1:nmicro),nlayer,plevrad,tlevrad,tmid,pmid,    &
    342               dtaui,taucumi,cosbi,wbari,taugsurfi)
     349              dtaui,taucumi,cosbi,wbari,taugsurfi,seashazefact)
    343350
    344351         call sfluxi(plevrad,tlevrad,dtaui,taucumi,ubari,albi,      &
  • trunk/LMDZ.TITAN/libf/phytitan/callkeys_mod.F90

    r1947 r2046  
    1414      logical,save :: strictboundcorrk
    1515!$OMP THREADPRIVATE(strictboundcorrk)
    16       logical,save :: uncoupl_optic_haze
    17 !$OMP THREADPRIVATE(uncoupl_optic_haze)
     16      logical,save :: seashaze,uncoupl_optic_haze
     17!$OMP THREADPRIVATE(seashaze,uncoupl_optic_haze)
    1818
    1919      logical,save :: callchim, callmufi, callclouds
  • trunk/LMDZ.TITAN/libf/phytitan/inifis_mod.F90

    r1947 r2046  
    366366
    367367! Microphysics
     368
     369     write(*,*) "Use haze seasonal model from Karkoschka 2016 ?"
     370     seashaze=.true. ! default value
     371     call getin_p("seashaze",seashaze)
     372     write(*,*)" seashaze = ",seashaze
    368373
    369374     write(*,*) "Run with or without microphysics?"
  • trunk/LMDZ.TITAN/libf/phytitan/optci.F90

    r1947 r2046  
    11subroutine optci(PQO,NLAY,PLEV,TLEV,TMID,PMID,      &
    2      DTAUI,TAUCUMI,COSBI,WBARI,TAUGSURF)
     2     DTAUI,TAUCUMI,COSBI,WBARI,TAUGSURF,SEASHAZEFACT)
    33
    44  use radinc_h
     
    66  use gases_h
    77  use comcstfi_mod, only: r
    8   use callkeys_mod, only: continuum,graybody,callclouds,callmufi, uncoupl_optic_haze
     8  use callkeys_mod, only: continuum,graybody,callclouds,callmufi,seashaze,uncoupl_optic_haze
    99  use tracer_h, only : nmicro,nice
    1010  use MMP_OPTICS
     
    4141  REAL*8, INTENT(IN)  :: PLEV(L_LEVELS), TLEV(L_LEVELS)
    4242  REAL*8, INTENT(IN)  :: TMID(L_LEVELS), PMID(L_LEVELS)
     43  REAL*8, INTENT(IN)  :: SEASHAZEFACT(L_LEVELS)
    4344 
    4445  REAL*8, INTENT(OUT) :: DTAUI(L_NLAYRAD,L_NSPECTI,L_NGAUSS)
     
    161162          ! Call fixed vertical haze profile of extinction - same for all columns
    162163          call disr_haze(dz(k),plev(k),wnoi(nw),dhaze_T(k,nw),SSA_T(k,nw),ASF_T(k,nw))
     164          if (seashaze) dhaze_T(k,nw) = dhaze_T(k,nw)*seashazefact(k)
    163165        ENDIF
    164166
  • trunk/LMDZ.TITAN/libf/phytitan/optcv.F90

    r1947 r2046  
    11SUBROUTINE OPTCV(PQO,NLAY,PLEV,TMID,PMID,  &
    2      DTAUV,TAUV,TAUCUMV,WBARV,COSBV,TAURAY,TAUGSURF)
     2     DTAUV,TAUV,TAUCUMV,WBARV,COSBV,TAURAY,TAUGSURF,SEASHAZEFACT)
    33
    44  use radinc_h
     
    66  use gases_h
    77  use comcstfi_mod, only: r
    8   use callkeys_mod, only: continuum,graybody,callgasvis,callclouds,callmufi,uncoupl_optic_haze
     8  use callkeys_mod, only: continuum,graybody,callgasvis,callclouds,callmufi,seashaze,uncoupl_optic_haze
    99  use tracer_h, only: nmicro,nice
    1010  use MMP_OPTICS
     
    4848  REAL*8, INTENT(IN)  :: TMID(L_LEVELS), PMID(L_LEVELS)
    4949  REAL*8, INTENT(IN)  :: TAURAY(L_NSPECTV)
     50  REAL*8, INTENT(IN)  :: SEASHAZEFACT(L_LEVELS)
    5051 
    5152  REAL*8, INTENT(OUT) :: DTAUV(L_NLAYRAD,L_NSPECTV,L_NGAUSS)
     
    184185          ! Call fixed vertical haze profile of extinction - same for all columns
    185186          call disr_haze(dz(k),plev(k),wnov(nw),dhaze_T(k,nw),SSA_T(k,nw),ASF_T(k,nw))
     187          if (seashaze) dhaze_T(k,nw) = dhaze_T(k,nw)*seashazefact(k)
    186188        ENDIF
    187189         
  • trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90

    r2002 r2046  
    854854
    855855               ! standard callcorrk
    856                call callcorrk(ngrid,nlayer,pqo,nq,qsurf,                          &
     856               call callcorrk(ngrid,nlayer,pqo,nq,qsurf,zday,                     &
    857857                              albedo,albedo_equivalent,emis,mu0,pplev,pplay,pt,   &
    858858                              tsurf,fract,dist_star,                              &
Note: See TracChangeset for help on using the changeset viewer.