Ignore:
Timestamp:
Apr 26, 2020, 7:45:46 PM (5 years ago)
Author:
jvatant
Message:

Add a generic n-layer aerosol scheme to replace the former buggy 2-layer scheme as well as the hard-coded NH3 cloud.

It can be called using 'aeronlay=.true.' in callphys.def, and set the number of layers (up to 4) with 'nlayaero'.
Then, the following parameters are read as arrays of size nlayaero in callphys.def (separated by blank space)


*aeronlay_tauref (Optical depth of aerosol layer at ref wavelenght)
*aeronlay_lamref (Ref wavelenght (m))
*aeronlay_choice (Choice for vertical profile - 1:tau follows atm scale height btwn top and bottom - 2:tau follows it own scale height)
*aeronlay_pbot (Bottom pressure (Pa))
*aeronlay_ptop (Top pressure (Pa) - useful only if choice=1)
*aeronlay_sclhght (Ratio of aerosol layer scale height / atmospheric scale height - useful only if choice=2 )
*aeronlay_size (Particle size (m))
*optprop_aeronlay_vis File for VIS opt properties.
*optprop_aeronlay_ir File for IR opt properties.

+Extra info :

+ In addition of solving the bug from 2-layer it enables different optical properties.
+ The former scheme are left for retrocompatibility (for now) but you should use the new one.
+ See aeropacity.F90 for the calculations

+ Each layer can have different optical properties, size of particle ...
+ You have different choices for vertical profile of the aerosol layers :

  • aeronlay_choice = 1 : Layer tau is spread between ptop and pbot following atm scale height.
  • aeronlay_choice = 2 : Layer tau follows its own scale height above cloud deck (pbot).

In this case ptop is dummy and sclhght gives the ratio H_cl/H_atm.

+ The reference wavelenght for input optical depth is now read as input (aeronlay_lamref)
+ Following the last point some comment is added in suaer_corrk about the 'not-really-dummy'ness of IR lamref..

File:
1 edited

Legend:

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

    r2283 r2297  
    4343      logical,save :: aeroco2,aeroh2o,aeroh2so4,aeroback2lay
    4444!$OMP THREADPRIVATE(aeroco2,aeroh2o,aeroh2so4,aeroback2lay)
    45       logical,save :: aeronh3, aeroaurora
    46 !$OMP THREADPRIVATE(aeronh3,aeroaurora)
     45      logical,save :: aeronh3, aeronlay, aeroaurora
     46!$OMP THREADPRIVATE(aeronh3,aeronlay,aeroaurora)
    4747      logical,save :: aerofixco2,aerofixh2o
    4848!$OMP THREADPRIVATE(aerofixco2,aerofixh2o)
     
    6262!$OMP THREADPRIVATE(photochem)
    6363
    64       integer,save :: versH2H2cia
    6564      integer,save :: iddist
    6665      integer,save :: iaervar
    6766      integer,save :: iradia
    6867      integer,save :: startype
    69 !$OMP THREADPRIVATE(versH2H2cia,iddist,iaervar,iradia,startype)
     68      integer,save :: versH2H2cia
     69      integer,save :: nlayaero
     70!$OMP THREADPRIVATE(iddist,iaervar,iradia,startype,versH2H2cia,nlayaero)
     71      integer,dimension(:),allocatable,save :: aeronlay_choice
     72!$OMP THREADPRIVATE(aeronlay_choice)
     73
     74      character(64),save :: optprop_back2lay_vis
     75      character(64),save :: optprop_back2lay_ir
     76      character(64),dimension(:),allocatable,save :: optprop_aeronlay_vis
     77      character(64),dimension(:),allocatable,save :: optprop_aeronlay_ir
     78!$OMP THREADPRIVATE(optprop_back2lay_vis,optprop_back2lay_ir,optprop_aeronlay_vis,optprop_aeronlay_ir)
    7079
    7180      real,save :: tplanckmin
     
    8493      real,save :: obs_tau_col_strato
    8594!$OMP THREADPRIVATE(Tstrat,tplanet,obs_tau_col_tropo,obs_tau_col_strato)
    86       character(64),save :: optprop_back2lay_vis
    87       character(64),save :: optprop_back2lay_ir
    8895      real,save :: pres_bottom_tropo
    8996      real,save :: pres_top_tropo
     
    101108      real,save :: tau_nh3_cloud
    102109!$OMP THREADPRIVATE(size_nh3_cloud, pres_nh3_cloud, tau_nh3_cloud)
     110      real,dimension(:),allocatable,save :: aeronlay_tauref
     111      real,dimension(:),allocatable,save :: aeronlay_lamref
     112      real,dimension(:),allocatable,save :: aeronlay_ptop
     113      real,dimension(:),allocatable,save :: aeronlay_pbot
     114      real,dimension(:),allocatable,save :: aeronlay_sclhght
     115      real,dimension(:),allocatable,save :: aeronlay_size
     116!$OMP THREADPRIVATE(aeronlay_tauref,aeronlay_lamref,aeronlay_ptop,aeronlay_pbot,aeronlay_sclhght,aeronlay_size)
    103117      real,save :: co2supsat
    104118      real,save :: pceil
Note: See TracChangeset for help on using the changeset viewer.