source: LMDZ5/branches/IPSLCM6.0.10/libf/phylmd/cosp/cosp_constants.F90 @ 5445

Last change on this file since 5445 was 2720, checked in by Laurent Fairhead, 8 years ago

Merged trunk changes r2664:2719 into testing branch

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