source: LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/mod_cosp_constants.F90 @ 5119

Last change on this file since 5119 was 5099, checked in by abarral, 4 months ago

Replace most uses of CPP_DUST by the corresponding logical defined in lmdz_cppkeys_wrapper.F90
Convert several files from .F to .f90 to allow Dust to compile w/o rrtm/ecrad
Create lmdz_yoerad.f90
(lint) Remove "!" on otherwise empty line

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 15.0 KB
Line 
1! (c) British Crown Copyright 2008, the Met Office.
2! All rights reserved.
3
4! Redistribution and use in source and binary forms, with or without modification, are permitted
5! provided that the following conditions are met:
6
7!     * Redistributions of source code must retain the above copyright notice, this list
8!       of conditions and the following disclaimer.
9!     * Redistributions in binary form must reproduce the above copyright notice, this list
10!       of conditions and the following disclaimer in the documentation and/or other materials
11!       provided with the distribution.
12!     * Neither the name of the Met Office nor the names of its contributors may be used
13!       to endorse or promote products derived from this software without specific prior written
14!       permission.
15
16! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
17! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
18! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
19! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21! DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
23! OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25! History:
26! Jul 2007 - A. Bodas-Salcedo - Initial version
27! Jul 2008 - A. Bodas-Salcedo - Added definitions of ISCCP axes
28! Oct 2008 - H. Chepfer       - Added PARASOL_NREFL
29! Jun 2010 - R. Marchand      - Modified to support quickbeam V3, added ifdef for hydrometeor definitions
30
31
32
33!!#INCLUDE "cosp_defs.h"
34#define MMF_V3_SINGLE_MOMENT mmf_v3_single_momen
35MODULE MOD_COSP_CONSTANTS
36    IMPLICIT NONE
37
38    character(len=32) :: COSP_VERSION='COSP v1.4'
39
40    ! Mode debug ou prod (AI 0302018)
41    logical :: ok_debug_cosp = .true.
42
43    ! Indices to address arrays of LS and CONV hydrometeors
44    integer,parameter :: I_LSCLIQ = 1
45    integer,parameter :: I_LSCICE = 2
46    integer,parameter :: I_LSRAIN = 3
47    integer,parameter :: I_LSSNOW = 4
48    integer,parameter :: I_CVCLIQ = 5
49    integer,parameter :: I_CVCICE = 6
50    integer,parameter :: I_CVRAIN = 7
51    integer,parameter :: I_CVSNOW = 8
52    integer,parameter :: I_LSGRPL = 9
53
54    ! Missing value
55    real,parameter :: R_UNDEF = -1.0E30
56
57    ! Number of possible output variables
58    integer,parameter :: N_OUT_LIST = 74 !OPAQ 65+7 !TIBO 72+2
59    integer,parameter :: N3D = 11                   !TIBO 10+1
60    integer,parameter :: N2D = 19        !OPAQ 14+4 !TIBO 18+1
61    integer,parameter :: N1D = 43        !OPAQ 40+3
62
63    ! Value for forward model result from a level that is under the ground
64    real,parameter :: R_GROUND = -1.0E20
65
66    ! Stratiform and convective clouds in frac_out
67    integer, parameter :: I_LSC = 1, & ! Large-scale clouds
68                          I_CVC = 2    ! Convective clouds
69
70    ! Timing of different simulators, including statistics module
71    integer, parameter :: N_SIMULATORS = 7
72    integer,parameter :: I_RADAR = 1
73    integer,parameter :: I_LIDAR = 2
74    integer,parameter :: I_ISCCP = 3
75    integer,parameter :: I_MISR  = 4
76    integer,parameter :: I_MODIS = 5
77    integer,parameter :: I_RTTOV = 6
78    integer,parameter :: I_STATS = 7
79    character*32, dimension(N_SIMULATORS) :: SIM_NAME = (/'Radar','Lidar','ISCCP','MISR ','MODIS','RTTOV','Stats'/)
80    integer,dimension(N_SIMULATORS) :: tsim
81    data tsim/N_SIMULATORS*0.0/
82
83    !--- Radar constants
84    ! CFAD constants
85    integer,parameter :: DBZE_BINS     =   15   ! Number of dBZe bins in histogram (cfad)
86    real,parameter    :: DBZE_MIN      = -100.0 ! Minimum value for radar reflectivity
87    real,parameter    :: DBZE_MAX      =   80.0 ! Maximum value for radar reflectivity
88    real,parameter    :: CFAD_ZE_MIN   =  -50.0 ! Lower value of the first CFAD Ze bin
89    real,parameter    :: CFAD_ZE_WIDTH =    5.0 ! Bin width (dBZe)
90
91
92    !--- Lidar constants
93    ! CFAD constants
94    integer,parameter :: SR_BINS       =   15
95    integer,parameter :: DPOL_BINS     =   6
96    real,parameter    :: LIDAR_UNDEF   =   999.999
97
98    ! Other constants
99    integer,parameter :: LIDAR_NCAT    =   4
100    integer,parameter :: LIDAR_NTYPE   =   3 !OPAQ
101    integer,parameter :: PARASOL_NREFL =   5 ! parasol
102    real,parameter,dimension(PARASOL_NREFL) :: PARASOL_SZA = (/0.0, 20.0, 40.0, 60.0, 80.0/)
103    real,parameter    :: DEFAULT_LIDAR_REFF = 30.0e-6 ! Default lidar effective radius
104
105    integer,parameter :: LIDAR_NTEMP = 40
106    real,parameter,dimension(LIDAR_NTEMP) :: LIDAR_PHASE_TEMP=(/-91.5,-88.5,-85.5,-82.5,-79.5,-76.5,-73.5,-70.5,-67.5,-64.5, &
107                   -61.5,-58.5,-55.5,-52.5,-49.5,-46.5,-43.5,-40.5,-37.5,-34.5, &
108                   -31.5,-28.5,-25.5,-22.5,-19.5,-16.5,-13.5,-10.5, -7.5, -4.5, &
109                    -1.5,  1.5,  4.5,  7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5/)
110    real,parameter,dimension(2,LIDAR_NTEMP) :: LIDAR_PHASE_TEMP_BNDS=reshape(source=(/-273.15,-90.,-90.,-87.,-87.,-84.,-84.,-81.,-81.,-78., &
111                   -78.,-75.,-75.,-72.,-72.,-69.,-69.,-66.,-66.,-63., &
112                   -63.,-60.,-60.,-57.,-57.,-54.,-54.,-51.,-51.,-48., &
113                   -48.,-45.,-45.,-42.,-42.,-39.,-39.,-36.,-36.,-33., &
114                   -33.,-30.,-30.,-27.,-27.,-24.,-24.,-21.,-21.,-18., &
115                   -18.,-15.,-15.,-12.,-12., -9., -9., -6., -6., -3., &
116                    -3.,  0.,  0.,  3.,  3.,  6.,  6.,  9.,  9., 12., &
117                    12., 15., 15., 18., 18., 21., 21., 24., 24.,100./),shape=(/2,40/))
118
119    !--- MISR constants
120    integer,parameter :: MISR_N_CTH = 16
121
122    !--- RTTOV constants
123    integer,parameter :: RTTOV_MAX_CHANNELS = 20
124
125    ! ISCCP tau-Pc axes
126    real,parameter,dimension(7) :: ISCCP_TAU = (/0.15, 0.80, 2.45, 6.5, 16.2, 41.5, 100.0/)
127    real,parameter,dimension(2,7) :: ISCCP_TAU_BNDS = reshape(source=(/0.0,0.3,0.3,1.30,1.30,3.6,3.6,9.4, &
128                                                      9.4,23.0,23.0,60.0,60.0,100000.0/), shape=(/2,7/))
129
130    real,parameter,dimension(7) :: ISCCP_PC = (/90000., 74000., 62000., 50000., 37500., 24500., 9000./)
131    real,parameter,dimension(2,7) :: ISCCP_PC_BNDS = reshape(source=(/100000.0,80000.0,80000.0,68000.0,68000.0,56000.0 &
132                               ,56000.0,44000.0,44000.0,31000.0,31000.0,18000.0,18000.0,0.0/), shape=(/2,7/))
133
134    real,parameter,dimension(MISR_N_CTH) :: MISR_CTH = 1000.0*(/ 0., 0.25, 0.75, 1.25, 1.75, 2.25, 2.75, 3.5, &
135                                            4.5, 6., 8., 10., 12., 14.5, 16., 18./)
136    real,parameter,dimension(2,MISR_N_CTH) :: MISR_CTH_BNDS = 1000.0*reshape(source=(/ &
137                                            -99.0,  0.0,       0.0,  0.5,       0.5,  1.0,      1.0,  1.5, &
138                                              1.5,  2.0,       2.0,  2.5,       2.5,  3.0,      3.0,  4.0, &
139                                              4.0,  5.0,       5.0,  7.0,       7.0,  9.0,      9.0, 11.0, &
140                                             11.0, 13.0,      13.0, 15.0,      15.0, 17.0,     17.0, 99.0/), &
141                                             shape=(/2,MISR_N_CTH/))
142
143    ! The following code was modifed by Roj with implementation of quickbeam V3
144    !   (1) use ifdef to support more than one microphyscis scheme
145    !   (2) added constants  microphysic_scheme_name, LOAD_scale_LUTs, and SAVE_scale_LUTs
146
147    ! directory where LUTs will be stored
148    character*120 :: RADAR_SIM_LUT_DIRECTORY = './'
149
150#ifdef MMF_V3_SINGLE_MOMENT
151
152    !  Table hclass for quickbeam to support one-moment (bulk) microphysics scheme used by MMF V3.0 & V3.5
153
154    ! NOTE:  if ANY value in this section of code is changed, the existing LUT
155    !        (i.e., the associated *.dat file) MUST be deleted so that a NEW
156    !        LUT will be created !!!
157
158    character*120 :: RADAR_SIM_MICROPHYSICS_SCHEME_NAME = 'MMF_v3_single_moment'
159
160    logical :: RADAR_SIM_LOAD_scale_LUTs_flag   = .false.
161    logical :: RADAR_SIM_UPDATE_scale_LUTs_flag = .false.
162    integer,parameter :: N_HYDRO = 9
163
164    integer :: HCLASS_TYPE(N_HYDRO),HCLASS_PHASE(N_HYDRO)
165
166    real :: HCLASS_DMIN(N_HYDRO),HCLASS_DMAX(N_HYDRO), &
167            HCLASS_APM(N_HYDRO),HCLASS_BPM(N_HYDRO),HCLASS_RHO(N_HYDRO), &
168            HCLASS_P1(N_HYDRO),HCLASS_P2(N_HYDRO),HCLASS_P3(N_HYDRO)
169
170    ! HCLASS_CP is not used in the version of Quickbeam included in COSP
171    !                   LSL    LSI      LSR     LSS   CVL    CVI   CVR     CVS   LSG
172    data HCLASS_TYPE/    5,      1,      2,      2,     5,     1,   2,      2,    2/
173    data HCLASS_PHASE/   0,      1,      0,      1,     0,     1,   0,      1,    1/
174    data HCLASS_DMIN/   -1,     -1,     -1,     -1,    -1,    -1,   -1,    -1,   -1/
175    data HCLASS_DMAX/   -1,     -1,     -1,     -1,    -1,    -1,   -1,    -1,   -1/
176    data HCLASS_APM/   524,  110.8,    524,     -1,   524, 110.8,  524,    -1,   -1/
177    data HCLASS_BPM/     3,   2.91,      3,     -1,     3,  2.91,    3,    -1,   -1/
178    data HCLASS_RHO/    -1,     -1,     -1,    100,    -1,    -1,   -1,   100,  400/
179    data HCLASS_P1/     -1,     -1,   8.e6,   3.e6,    -1,    -1, 8.e6,  3.e6, 4.e6/
180    data HCLASS_P2/      6,     40,     -1,      -1,    6,    40,   -1,    -1,   -1/
181    data HCLASS_P3/    0.3,      2,     -1,      -1,  0.3,     2,   -1,    -1,   -1/
182
183    ! NOTES on HCLASS variables
184
185    ! TYPE - Set to
186    ! 1 for modified gamma distribution,
187    ! 2 for exponential distribution,
188    ! 3 for power law distribution,
189    ! 4 for monodisperse distribution,
190    ! 5 for lognormal distribution.
191
192    ! PHASE - Set to 0 for liquid, 1 for ice.
193
194    ! DMIN - The minimum drop size for this class (micron), ignored for monodisperse.
195    ! DMAX - The maximum drop size for this class (micron), ignored for monodisperse.
196    ! Important note: The settings for DMIN and DMAX are
197    ! ignored in the current version for all distributions except for power
198    ! law. Except when the power law distribution is used, particle size
199    ! is fixed to vary from zero to infinity, a restriction that is expected
200    ! to be lifted in future versions. A placeholder must still be specified
201    ! for each.
202
203    ! Density of particles is given by apm*D^bpm or a fixed value rho. ONLY specify ONE of these two!!
204    ! APM - The alpha_m coefficient in equation (1) (kg m**-beta_m )
205    ! BPM - The beta_m coefficient in equation (1), see section 4.1.
206
207    ! RHO - Hydrometeor density (kg m-3 ).
208
209    ! P1, P2, P3 - are default distribution parameters that depend on the type
210    ! of distribution (see quickmbeam documentation for more information)
211
212    ! Modified Gamma (must set P3 and one of P1 or P2)
213    ! P1 - Set to the total particle number concentration Nt /rho_a (kg-1 ), where
214    ! rho_a is the density of air in the radar volume.
215    ! P2 - Set to the particle mean diameter D (micron).
216    ! P3 - Set to the distribution width nu.
217
218    ! Exponetial (set one of)
219    ! P1 - Set to a constant intercept parameter N0 (m-4).
220    ! P2 - Set to a constant lambda (micron-1).
221
222    ! Power Law
223    ! P1 - Set this to the value of a constant power law parameter br
224
225    ! Monodisperse
226    ! P1 - Set to a constant diameter D0 (micron) = Re.
227
228    ! Log-normal (must set P3 and one of P1 or P2)
229    ! P1 - Set to the total particle number concentration Nt /rho_a (kg-1 )
230    ! P2 - Set to the geometric mean particle radius rg (micron).
231    ! P3 - Set to the natural logarithm of the geometric standard deviation.
232
233    real,dimension(N_HYDRO) :: N_ax,N_bx,alpha_x,c_x,d_x,g_x,a_x,b_x,gamma_1,gamma_2,gamma_3,gamma_4
234
235    ! Microphysical settings for the precipitation flux to mixing ratio conversion
236    !                LSL    LSI       LSR       LSS   CVL    CVI       CVR       CVS      LSG
237    data N_ax/       -1.,   -1.,     8.e6,     3.e6,  -1.,   -1.,     8.e6,     3.e6,     4.e6/
238    data N_bx/       -1.,   -1.,      0.0,      0.0,  -1.,   -1.,      0.0,      0.0,      0.0/
239    data alpha_x/    -1.,   -1.,      0.0,      0.0,  -1.,   -1.,      0.0,      0.0,      0.0/
240    data c_x/        -1.,   -1.,    842.0,     4.84,  -1.,   -1.,    842.0,     4.84,     94.5/
241    data d_x/        -1.,   -1.,      0.8,     0.25,  -1.,   -1.,      0.8,     0.25,      0.5/
242    data g_x/        -1.,   -1.,      0.5,      0.5,  -1.,   -1.,      0.5,      0.5,      0.5/
243    data a_x/        -1.,   -1.,    524.0,    52.36,  -1.,   -1.,    524.0,    52.36,   209.44/
244    data b_x/        -1.,   -1.,      3.0,      3.0,  -1.,   -1.,      3.0,      3.0,      3.0/
245    data gamma_1/    -1.,   -1., 17.83725, 8.284701,  -1.,   -1., 17.83725, 8.284701, 11.63230/
246    data gamma_2/    -1.,   -1.,      6.0,      6.0,  -1.,   -1.,      6.0,      6.0,      6.0/
247    data gamma_3/    -1.,   -1.,      2.0,      2.0,  -1.,   -1.,      2.0,      2.0,      2.0/
248    data gamma_4/    -1.,   -1.,      6.0,      6.0,  -1.,   -1.,      6.0,      6.0,      6.0/
249
250
251
252#endif
253
254
255#ifdef MMF_V3p5_TWO_MOMENT
256
257    !  Table hclass for quickbeam to support two-moment "morrison" microphysics scheme used by V3.5 (SAM 6.8)
258
259    !  This Number concentriation Np in [1/kg] MUST be input to COSP/radar simulator
260
261    !  NOTE:  Be sure to check that the ice-density (rho) set it this tables matches what you used
262
263    ! NOTE:  if ANY value in this section of code is changed, the existing LUT
264    !        (i.e., the associated *.dat file) MUST be deleted so that a NEW
265    !        LUT will be created !!!
266
267    character*120 :: RADAR_SIM_MICROPHYSICS_SCHEME_NAME = 'MMF_v3.5_two_moment'
268
269    logical :: RADAR_SIM_LOAD_scale_LUTs_flag   = .false.
270    logical :: RADAR_SIM_UPDATE_scale_LUTs_flag = .false.
271
272    integer,parameter :: N_HYDRO = 9
273
274    integer :: HCLASS_TYPE(N_HYDRO),HCLASS_PHASE(N_HYDRO)
275
276    real :: HCLASS_DMIN(N_HYDRO),HCLASS_DMAX(N_HYDRO), &           
277            HCLASS_APM(N_HYDRO),HCLASS_BPM(N_HYDRO),HCLASS_RHO(N_HYDRO), &
278            HCLASS_P1(N_HYDRO),HCLASS_P2(N_HYDRO),HCLASS_P3(N_HYDRO)
279
280    ! HCLASS_CP is not used in the version of Quickbeam included in COSP
281    !                   LSL    LSI      LSR     LSS   CVL    CVI   CVR     CVS   LSG
282    data HCLASS_TYPE/    1,      1,      1,      1,     1,     1,    1,      1,    1/
283    data HCLASS_PHASE/   0,      1,      0,      1,     0,     1,    0,      1,    1/
284    data HCLASS_DMIN/   -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
285    data HCLASS_DMAX/   -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
286    data HCLASS_APM/   524,     -1,    524,     -1,   524,    -1,  524,     -1,   -1/
287    data HCLASS_BPM/     3,     -1,      3,     -1,     3,    -1,    3,     -1,   -1/
288    data HCLASS_RHO/    -1,    500,     -1,    100,    -1,   500,   -1,    100,  900/
289    data HCLASS_P1/     -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
290    data HCLASS_P2/     -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
291    data HCLASS_P3/     -2,      1,      1,      1,    -2,     1,    1,      1,    1/
292    ! Note: value of "-2" for HCLASS_P3 uses martin 1994 parameteriztion of gamma function width with Number concentration
293#endif
294
295END MODULE MOD_COSP_CONSTANTS
Note: See TracBrowser for help on using the repository browser.