Last change
on this file since 2613 was
2297,
checked in by jvatant, 5 years ago
|
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 size:
1.1 KB
|
Rev | Line | |
---|
[726] | 1 | !================================================================== |
---|
| 2 | module aerosol_mod |
---|
[747] | 3 | implicit none |
---|
| 4 | save |
---|
[726] | 5 | !================================================================== |
---|
| 6 | |
---|
[747] | 7 | ! aerosol indexes: these are initialized to be 0 if the |
---|
[726] | 8 | ! corresponding aerosol was not activated in callphys.def |
---|
[747] | 9 | ! -- otherwise a value is given in iniaerosol |
---|
| 10 | integer :: iaero_co2 = 0 |
---|
| 11 | integer :: iaero_h2o = 0 |
---|
| 12 | integer :: iaero_dust = 0 |
---|
| 13 | integer :: iaero_h2so4 = 0 |
---|
| 14 | logical :: noaero = .false. |
---|
[1026] | 15 | |
---|
| 16 | ! two-layer simple aerosol model |
---|
| 17 | integer :: iaero_back2lay = 0 |
---|
[1677] | 18 | ! NH3 cloud |
---|
| 19 | integer :: iaero_nh3 = 0 |
---|
[2297] | 20 | ! N-layer aerosol model (replaces the 2-layer and hard-coded clouds) |
---|
| 21 | integer,dimension(:),allocatable,save :: iaero_nlay |
---|
| 22 | ! Auroral aerosols |
---|
[1677] | 23 | integer :: iaero_aurora = 0 |
---|
[2297] | 24 | !$OMP THREADPRIVATE(iaero_co2,iaero_h2o,iaero_dust,iaero_h2so4,noaero,iaero_back2lay,iaero_nh3,iaero_nlay,iaero_aurora) |
---|
[741] | 25 | |
---|
[726] | 26 | !================================================================== |
---|
| 27 | end module aerosol_mod |
---|
| 28 | !================================================================== |
---|
Note: See
TracBrowser
for help on using the repository browser.