source: trunk/LMDZ.GENERIC/libf/phystd/radcommon_h.F90 @ 848

Last change on this file since 848 was 726, checked in by jleconte, 12 years ago

17/07/2012 == JL for LK

  • Generalization of aerosol scheme:
    • any number of aerosols can be used and id numbers are determined consistently by the code. Aerosol order not important anymore.
    • addition of a module with the id numbers for aerosols (aerosol_mod.F90).
    • initialization of aerosols id numbers in iniaerosol.F90
    • compile with -s x where x *must* be equal to the number of aerosols turned on in callphys.def (either by a flag or by dusttau>0 for dust). => may have to erase object files when compiling with s option for the first time.
  • For no aerosols, run with aeroco2=.true. and aerofixco2=.true (the default distribution for fixed co2

aerosols is 1.e-9; can be changed in aeropacity).

  • If starting from an old start file, recreate start file with the q=0 option in newstart.e.
  • update callphys.def with aeroXXX and aerofixXXX options (only XXX=co2,h2o supported for

now). Dust is activated by setting dusttau>0. See the early mars case in deftank.

  • To add other aerosols, see Laura Kerber.
File size: 4.7 KB
Line 
1      module radcommon_h
2
3      use radinc_h
4      implicit none
5
6!----------------------------------------------------------------------C
7!
8!                             radcommon.h
9!
10!----------------------------------------------------------------------C
11!
12!  "Include" grid.h and radinc.h before this file in code that uses
13!  some or all of this common data set
14!
15!     WNOI       - Array of wavenumbers at the spectral interval
16!                  centers for the infrared.  Array is NSPECTI
17!                  elements long.
18!     DWNI       - Array of "delta wavenumber", i.e., the width,
19!                  in wavenumbers (cm^-1) of each IR spectral
20!                  interval.  NSPECTI elements long.
21!     WAVEI      - Array (NSPECTI elements long) of the wavelenght
22!                  (in microns) at the center of each IR spectral
23!                  interval.
24!     WNOV       - Array of wavenumbers at the spectral interval
25!                  center for the VISUAL.  Array is NSPECTV
26!                  elements long.
27!     DWNV       - Array of "delta wavenumber", i.e., the width,
28!                  in wavenumbers (cm^-1) of each VISUAL spectral
29!                  interval.  NSPECTV elements long.
30!     WAVEV      - Array (NSPECTV elements long) of the wavelenght
31!                  (in microns) at the center of each VISUAL spectral
32!                  interval.
33!     STELLARF   - Array (NSPECTV elements) of stellar flux (W/M^2) in
34!                  each spectral interval.  Values are for 1 AU,
35!                  scaled to the planetary distance elsewhere.
36!     TAURAY     - Array (NSPECTV elements) of the pressure-independent
37!                  part of Rayleigh scattering optical depth.
38!     FZEROI     - Fraction of zeros in the IR CO2 k-coefficients, for
39!                  each temperature, pressure, and spectral interval
40!     FZEROV     - Fraction of zeros in the VISUAL CO2 k-coefficients, for
41!                  each temperature, pressure, and spectral interval
42!
43!     AEROSOL RADIATIVE OPTICAL CONSTANTS
44!
45!   Shortwave
46!   ~~~~~~~~~
47!
48! For the "naerkind" kind of aerosol radiative properties :
49! QVISsQREF  :  Qext / Qext("longrefvis")
50! omegavis   :  single scattering albedo
51! gvis       :  assymetry factor
52!
53!   Longwave
54!   ~~~~~~~~
55!
56! For the "naerkind" kind of aerosol radiative properties :
57! QIRsQREF :  Qext / Qext("longrefvis")
58! omegaIR  :  mean single scattering albedo
59! gIR      :  mean assymetry factor
60
61      REAL*8 BWNI(L_NSPECTI+1), WNOI(L_NSPECTI), DWNI(L_NSPECTI), WAVEI(L_NSPECTI)
62      REAL*8 BWNV(L_NSPECTV+1), WNOV(L_NSPECTV), DWNV(L_NSPECTV), WAVEV(L_NSPECTV)
63      REAL*8 STELLARF(L_NSPECTV), TAURAY(L_NSPECTV)
64
65      REAL*8 blami(L_NSPECTI+1)
66      REAL*8 blamv(L_NSPECTV+1) ! these are needed by suaer.F90
67
68      !!! ALLOCATABLE STUFF SO THAT DIMENSIONS ARE READ in *.dat FILES -- AS 12/2011 
69      REAL*8, DIMENSION(:,:,:,:,:), ALLOCATABLE :: gasi, gasv
70      REAL*8, DIMENSION(:), ALLOCATABLE :: PGASREF, TGASREF, WREFVAR, PFGASREF
71      real*8 FZEROI(L_NSPECTI)
72      real*8 FZEROV(L_NSPECTV)
73      real*8 pgasmin, pgasmax
74      real*8 tgasmin, tgasmax
75
76      real QVISsQREF(L_NSPECTV,naerkind,nsizemax)
77      real omegavis(L_NSPECTV,naerkind,nsizemax)
78      real gvis(L_NSPECTV,naerkind,nsizemax)
79      real QIRsQREF(L_NSPECTI,naerkind,nsizemax)
80      real omegair(L_NSPECTI,naerkind,nsizemax)
81      real gir(L_NSPECTI,naerkind,nsizemax)
82
83
84! Reference wavelengths used to compute reference optical depth (m)
85! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87      REAL lamrefir(naerkind),lamrefvis(naerkind)
88
89! Actual number of grain size classes in each domain for a
90!   given aerosol:
91
92      INTEGER          :: nsize(naerkind,2)
93
94! Particle size axis (depend on the kind of aerosol and the
95!   radiation domain)
96
97      DOUBLE PRECISION :: radiustab(naerkind,2,nsizemax)
98
99! Extinction coefficient at reference wavelengths;
100!   These wavelengths are defined in aeroptproperties, and called
101!   longrefvis and longrefir.
102
103      REAL :: QREFvis(naerkind,nsizemax)
104      REAL :: QREFir(naerkind,nsizemax)
105      REAL :: omegaREFvis(naerkind,nsizemax)
106      REAL :: omegaREFir(naerkind,nsizemax)
107
108      REAL tstellar ! Stellar brightness temperature (SW)
109
110      real*8 planckir(L_NSPECTI,NTstop-NTstar+1)
111
112      real*8 PTOP, TAUREF(L_LEVELS+1)
113
114      real*8, parameter :: UBARI = 0.5D0
115
116      real*8 gweight(L_NGAUSS)
117
118!     If the gas optical depth (top to the surface) is less than
119!     this value, we place that Gauss-point into the "zeros"
120!     channel.
121      real*8, parameter :: TLIMIT =  1.0D-30
122
123!     Factor to convert pressures from millibars to Pascals
124      real*8, parameter :: SCALEP = 1.00D+2
125
126      real*8, parameter :: sigma = 5.67032e-8
127
128      real*8 Cmk
129      save Cmk
130
131
132      end module radcommon_h
Note: See TracBrowser for help on using the repository browser.