FV3 Bundle
Profile_Utility_Parameters.f90
Go to the documentation of this file.
1 !
2 ! Profile_Utility_Parameters
3 !
4 ! Module containing parameters used in the profile utility modules.
5 !
6 !
7 ! CREATION HISTORY:
8 ! Written by: Paul van Delst, 30-Aug-2002
9 ! paul.vandelst@noaa.gov
10 !
11 
13 
14  ! -----------------
15  ! Environment setup
16  ! -----------------
17  ! Modules used
18  USE type_kinds, ONLY: fp
19  USE fundamental_constants, ONLY : na => avogadro_constant, &
20  r0 => molar_gas_constant, &
21  l0 => loschmidt_constant, &
22  p0 => standard_atmosphere, &
23  t0 => standard_temperature, &
24  g0 => standard_gravity, &
25  pi
26  ! Disable all implicit typing
27  IMPLICIT NONE
28 
29 
30  ! ------------
31  ! Visibilities
32  ! ------------
33  ! Everything is default private
34  PRIVATE
35  ! Make renamed fundamental constants public
36  PUBLIC :: na
37  PUBLIC :: r0
38  PUBLIC :: l0
39  PUBLIC :: p0
40  PUBLIC :: t0
41  PUBLIC :: g0
42  PUBLIC :: pi
43 
44 
45  ! ---------------------
46  ! Parameter definitions
47  ! ---------------------
48 
49  ! Literal constants
50  REAL(fp), PUBLIC, PARAMETER :: zero = 0.0_fp
51  REAL(fp), PUBLIC, PARAMETER :: one = 1.0_fp
52  REAL(fp), PUBLIC, PARAMETER :: two = 2.0_fp
53  REAL(fp), PUBLIC, PARAMETER :: hundred = 100.0_fp
54 
55  ! Precision... ~EPSILON(ONE) for double precision.
56  REAL(fp), PUBLIC, PARAMETER :: tolerance = 2.0e-16_fp
57 
58  ! Conversion factors
59  REAL(fp), PUBLIC, PARAMETER :: celsius_to_kelvin = t0
60  REAL(fp), PUBLIC, PARAMETER :: g_to_kg = 1.0e-03_fp
61  REAL(fp), PUBLIC, PARAMETER :: kg_to_g = 1.0e+03_fp
62  REAL(fp), PUBLIC, PARAMETER :: pa_to_hpa = 1.0e-02_fp
63  REAL(fp), PUBLIC, PARAMETER :: hpa_to_pa = 1.0e+02_fp
64  REAL(fp), PUBLIC, PARAMETER :: ppmv_to_ppv = 1.0e-06_fp
65  REAL(fp), PUBLIC, PARAMETER :: ppv_to_ppmv = 1.0e+06_fp
66  REAL(fp), PUBLIC, PARAMETER :: cm_to_m = 1.0e-02_fp
67  REAL(fp), PUBLIC, PARAMETER :: m_to_cm = 1.0e+02_fp
68  REAL(fp), PUBLIC, PARAMETER :: from_percent = 1.0e-02_fp
69  REAL(fp), PUBLIC, PARAMETER :: to_percent = 1.0e+02_fp
70 
71  ! Number of units specifiers. Same as for LBLRTM
72  INTEGER, PUBLIC, PARAMETER :: n_absorber_units = 8
73 
74  ! Units specifiers. Same as for LBLRTM
75  INTEGER, PUBLIC, PARAMETER :: invalid_units = 0 ! Invalid
76  INTEGER, PUBLIC, PARAMETER :: ppmv_units = 1 ! Volume mixing ratio (ppmv)
77  INTEGER, PUBLIC, PARAMETER :: nd_units = 2 ! Number density (cm^-3)
78  INTEGER, PUBLIC, PARAMETER :: mr_units = 3 ! Mass mixing ratio (g/kg)
79  INTEGER, PUBLIC, PARAMETER :: md_units = 4 ! Mass density (g.m^-3)
80  INTEGER, PUBLIC, PARAMETER :: pp_units = 5 ! Partial pressure (hPa)
81  INTEGER, PUBLIC, PARAMETER :: dpk_units = 6 ! Dew point (Kelvin) [H2O only]
82  INTEGER, PUBLIC, PARAMETER :: dpc_units = 7 ! Dew point (Celsius) [H2O only]
83  INTEGER, PUBLIC, PARAMETER :: rh_units = 8 ! Relative humidity (%) [H2O only]
84 
85  INTEGER, PUBLIC, PARAMETER :: absorber_units_id(0:n_absorber_units) = &
86  (/ invalid_units, &
87  ppmv_units , &
88  nd_units , &
89  mr_units , &
90  md_units , &
91  pp_units , &
92  dpk_units , & ! [H2O only]
93  dpc_units , & ! [H2O only]
94  rh_units /) ! [H2O only]
95  CHARACTER(*), PUBLIC, PARAMETER :: absorber_units_name(0:n_absorber_units) = &
96  (/ 'Invalid', &
97  'ppmv ', &
98  'cm^-3 ', &
99  'g/kg ', &
100  'g.m^-3 ', &
101  'hPa ', &
102  'DP, K ', & ! [H2O only]
103  'DP, C ', & ! [H2O only]
104  'RH, % ' /) ! [H2O only]
105  CHARACTER(*), PUBLIC, PARAMETER :: absorber_units_char(0:n_absorber_units) = &
106  (/ '-', &
107  'A', &
108  'B', &
109  'C', &
110  'D', &
111  'E', &
112  'F', & ! [H2O only]
113  'G', & ! [H2O only]
114  'H' /) ! [H2O only]
115 
116  ! Maximum number of molecular species (as for HITRAN)
117  INTEGER, PUBLIC, PARAMETER :: max_n_molecular_species = 32
118 
119  ! HITRAN molecular IDs and symbols
120  INTEGER, PUBLIC, PARAMETER :: id_h2o = 1
121  INTEGER, PUBLIC, PARAMETER :: id_co2 = 2
122  INTEGER, PUBLIC, PARAMETER :: id_o3 = 3
123  INTEGER, PUBLIC, PARAMETER :: id_n2o = 4
124  INTEGER, PUBLIC, PARAMETER :: id_co = 5
125  INTEGER, PUBLIC, PARAMETER :: id_ch4 = 6
126  INTEGER, PUBLIC, PARAMETER :: id_o2 = 7
127 
128  INTEGER, PUBLIC, PARAMETER :: id_no = 8
129  INTEGER, PUBLIC, PARAMETER :: id_so2 = 9
130  INTEGER, PUBLIC, PARAMETER :: id_no2 = 10
131  INTEGER, PUBLIC, PARAMETER :: id_nh3 = 11
132  INTEGER, PUBLIC, PARAMETER :: id_hno3 = 12
133  INTEGER, PUBLIC, PARAMETER :: id_oh = 13
134  INTEGER, PUBLIC, PARAMETER :: id_hf = 14
135 
136  INTEGER, PUBLIC, PARAMETER :: id_hcl = 15
137  INTEGER, PUBLIC, PARAMETER :: id_hbr = 16
138  INTEGER, PUBLIC, PARAMETER :: id_hi = 17
139  INTEGER, PUBLIC, PARAMETER :: id_clo = 18
140  INTEGER, PUBLIC, PARAMETER :: id_ocs = 19
141  INTEGER, PUBLIC, PARAMETER :: id_h2co = 20
142  INTEGER, PUBLIC, PARAMETER :: id_hocl = 21
143 
144  INTEGER, PUBLIC, PARAMETER :: id_n2 = 22
145  INTEGER, PUBLIC, PARAMETER :: id_hcn = 23
146  INTEGER, PUBLIC, PARAMETER :: id_ch3cl = 24
147  INTEGER, PUBLIC, PARAMETER :: id_h2o2 = 25
148  INTEGER, PUBLIC, PARAMETER :: id_c2h2 = 26
149  INTEGER, PUBLIC, PARAMETER :: id_c2h6 = 27
150  INTEGER, PUBLIC, PARAMETER :: id_ph3 = 28
151 
152  INTEGER, PUBLIC, PARAMETER :: id_cof2 = 29
153  INTEGER, PUBLIC, PARAMETER :: id_sf6 = 30
154  INTEGER, PUBLIC, PARAMETER :: id_h2s = 31
155  INTEGER, PUBLIC, PARAMETER :: id_hcooh = 32
156 
157  CHARACTER(*), PUBLIC, PARAMETER :: molecular_symbol(max_n_molecular_species) = &
158  (/ 'H2O ','CO2 ','O3 ','N2O ', &
159  'CO ','CH4 ','O2 ','NO ', &
160  'SO2 ','NO2 ','NH3 ','HNO3 ', &
161  'OH ','HF ','HCL ','HBR ', &
162  'HI ','CLO ','OCS ','H2CO ', &
163  'HOCL ','N2 ','HCN ','CH3CL', &
164  'H2O2 ','C2H2 ','C2H6 ','PH3 ', &
165  'COF2 ','SF6 ','H2S ','HCOOH' /)
166 
167 
168  ! Molecular weights of first seven HITRAN molecular species
169  REAL(fp), PUBLIC, PARAMETER :: mw_h2o = 18.01528_fp
170  REAL(fp), PUBLIC, PARAMETER :: mw_co2 = 44.00950_fp
171  REAL(fp), PUBLIC, PARAMETER :: mw_o3 = 47.99820_fp
172  REAL(fp), PUBLIC, PARAMETER :: mw_n2o = 44.01288_fp
173  REAL(fp), PUBLIC, PARAMETER :: mw_co = 28.01010_fp
174  REAL(fp), PUBLIC, PARAMETER :: mw_ch4 = 16.04246_fp
175  REAL(fp), PUBLIC, PARAMETER :: mw_o2 = 31.99880_fp
176  REAL(fp), PUBLIC, PARAMETER :: mw_n2 = 28.01348_fp
177 
178  ! Weights of all 32 HITRAN molecular species
179  REAL(fp), PUBLIC, PARAMETER :: molecular_weight(max_n_molecular_species) = &
180  (/ mw_h2o, mw_co2, mw_o3, mw_n2o, &
181  mw_co , mw_ch4, mw_o2, 30.00614_fp, &
182  64.06480_fp, 46.00554_fp, 17.03056_fp, 63.01288_fp, &
183  17.00734_fp, 20.00634_fp, 36.46064_fp, 80.91194_fp, &
184  127.91241_fp, 51.45210_fp, 60.07610_fp, 30.02598_fp, &
185  52.46004_fp, mw_n2 , 27.02538_fp, 50.48722_fp, &
186  34.01468_fp, 26.03728_fp, 30.06904_fp, 33.99758_fp, &
187  66.00690_fp, 146.05643_fp, 34.08188_fp, 46.02538_fp /)
188 
189  ! Average molecular weight of dry air
190  REAL(fp), PUBLIC, PARAMETER :: mw_dryair = 28.9648_fp
191 
192  ! Ratio of water vapor and dry air weights for conversion routines
193  REAL(fp), PUBLIC, PARAMETER :: eps = mw_h2o / mw_dryair
194 
195  ! Gas constant for dry air. Units are J.K-1.kg-1
196  REAL(fp), PUBLIC, PARAMETER :: r_dryair = r0 / ( mw_dryair * g_to_kg )
197 
198  ! Specific heat of dry air. Units are J.K-1.kg-1
199  REAL(fp), PUBLIC, PARAMETER :: cp_dryair = ( 7.0_fp/two ) * r_dryair
200 
integer, parameter, public n_absorber_units
real(fp), parameter, public g_to_kg
character(*), dimension(max_n_molecular_species), parameter, public molecular_symbol
real(fp), parameter, public cm_to_m
integer, parameter, public id_hno3
real(fp), parameter, public zero
real(fp), dimension(max_n_molecular_species), parameter, public molecular_weight
integer, parameter, public id_c2h6
real(fp), parameter, public m_to_cm
real(fp), parameter, public hundred
integer, parameter, public fp
Definition: Type_Kinds.f90:124
real(fp), parameter, public mw_co
real(fp), parameter, public r_dryair
character(*), dimension(0:n_absorber_units), parameter, public absorber_units_char
integer, parameter, public rh_units
real(fp), parameter, public loschmidt_constant
integer, parameter, public dpk_units
integer, dimension(0:n_absorber_units), parameter, public absorber_units_id
real(fp), parameter, public mw_ch4
real(fp), parameter, public hpa_to_pa
real(fp), parameter, public mw_n2
real(fp), parameter, public mw_n2o
integer, parameter, public invalid_units
real(fp), parameter, public standard_temperature
integer, parameter, public nd_units
real(fp), parameter, public mw_co2
integer, parameter, public id_ch3cl
character(*), dimension(0:n_absorber_units), parameter, public absorber_units_name
integer, parameter, public id_h2co
integer, parameter, public max_n_molecular_species
real(fp), parameter, public standard_atmosphere
integer, parameter, public id_c2h2
real(fp), parameter, public avogadro_constant
integer, parameter, public dpc_units
real(fp), parameter, public mw_o2
real(fp), parameter, public kg_to_g
integer, parameter, public id_cof2
real(fp), parameter, public one
real(fp), parameter, public tolerance
real(fp), parameter, public two
real(fp), parameter, public to_percent
integer, parameter, public id_h2o2
real(fp), parameter, public mw_o3
real(fp), parameter, public ppmv_to_ppv
real(fp), parameter, public molar_gas_constant
real(fp), parameter, public ppv_to_ppmv
real(fp), parameter, public from_percent
integer, parameter, public mr_units
integer, parameter, public id_hocl
real(fp), parameter, public standard_gravity
real(fp), parameter, public mw_dryair
integer, parameter, public ppmv_units
real(fp), parameter, public pa_to_hpa
integer, parameter, public id_hcooh
real(fp), parameter, public celsius_to_kelvin
integer, parameter, public md_units
real(fp), parameter, public mw_h2o
integer, parameter, public pp_units
real(fp), parameter, public cp_dryair
real(fp), parameter, public pi