source: LMDZ5/trunk/libf/phylmd/cosp/cosp_constants.F90 @ 2428

Last change on this file since 2428 was 2428, checked in by idelkadi, 8 years ago

Mise a jour du simulateur COSP (passage de la version v3.2 a la version v1.4) :

  • mise a jour des sources pour ISCCP, CALIPSO et PARASOL
  • prise en compte des changements de phases pour les nuages (Calipso)
  • rajout de plusieurs diagnostiques (fraction nuageuse en fonction de la temperature, ...)

http://lmdz.lmd.jussieu.fr/Members/aidelkadi/cosp

  • 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
38    use netcdf, only: nf90_fill_real
39    IMPLICIT NONE
40
41    character(len=32) :: COSP_VERSION='COSP v1.4'
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!    real,parameter :: R_UNDEF = nf90_fill_real
57
58    ! Number of possible output variables
59    integer,parameter :: N_OUT_LIST = 63
60    integer,parameter :: N3D = 8
61    integer,parameter :: N2D = 14
62    integer,parameter :: N1D = 40
63
64    ! Value for forward model result from a level that is under the ground
65    real,parameter :: R_GROUND = -1.0E20
66
67    ! Stratiform and convective clouds in frac_out
68    integer, parameter :: I_LSC = 1, & ! Large-scale clouds
69                          I_CVC = 2    ! Convective clouds
70
71    ! Timing of different simulators, including statistics module
72    integer, parameter :: N_SIMULATORS = 7
73    integer,parameter :: I_RADAR = 1
74    integer,parameter :: I_LIDAR = 2
75    integer,parameter :: I_ISCCP = 3
76    integer,parameter :: I_MISR  = 4
77    integer,parameter :: I_MODIS = 5
78    integer,parameter :: I_RTTOV = 6
79    integer,parameter :: I_STATS = 7
80    character*32, dimension(N_SIMULATORS) :: SIM_NAME = (/'Radar','Lidar','ISCCP','MISR ','MODIS','RTTOV','Stats'/)
81    integer,dimension(N_SIMULATORS) :: tsim
82    data tsim/N_SIMULATORS*0.0/
83
84    !--- Radar constants
85    ! CFAD constants
86    integer,parameter :: DBZE_BINS     =   15   ! Number of dBZe bins in histogram (cfad)
87    real,parameter    :: DBZE_MIN      = -100.0 ! Minimum value for radar reflectivity
88    real,parameter    :: DBZE_MAX      =   80.0 ! Maximum value for radar reflectivity
89    real,parameter    :: CFAD_ZE_MIN   =  -50.0 ! Lower value of the first CFAD Ze bin
90    real,parameter    :: CFAD_ZE_WIDTH =    5.0 ! Bin width (dBZe)
91
92
93    !--- Lidar constants
94    ! CFAD constants
95    integer,parameter :: SR_BINS       =   15
96    integer,parameter :: DPOL_BINS     =   6
97    real,parameter    :: LIDAR_UNDEF   =   999.999
98
99    ! Other constants
100    integer,parameter :: LIDAR_NCAT    =   4
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
144    !
145    ! The following code was modifed by Roj with implementation of quickbeam V3
146    !   (1) use ifdef to support more than one microphyscis scheme
147    !   (2) added constants  microphysic_scheme_name, LOAD_scale_LUTs, and SAVE_scale_LUTs
148    !
149
150    ! directory where LUTs will be stored
151    character*120 :: RADAR_SIM_LUT_DIRECTORY = './'
152
153#ifdef MMF_V3_SINGLE_MOMENT
154
155    !       
156    !  Table hclass for quickbeam to support one-moment (bulk) microphysics scheme used by MMF V3.0 & V3.5
157    !
158
159    !
160    ! NOTE:  if ANY value in this section of code is changed, the existing LUT
161    !        (i.e., the associated *.dat file) MUST be deleted so that a NEW
162    !        LUT will be created !!!
163    !
164    character*120 :: RADAR_SIM_MICROPHYSICS_SCHEME_NAME = 'MMF_v3_single_moment'
165
166    logical :: RADAR_SIM_LOAD_scale_LUTs_flag   = .false.
167    logical :: RADAR_SIM_UPDATE_scale_LUTs_flag = .false.
168    integer,parameter :: N_HYDRO = 9
169
170    integer :: HCLASS_TYPE(N_HYDRO),HCLASS_PHASE(N_HYDRO)
171
172    real :: HCLASS_DMIN(N_HYDRO),HCLASS_DMAX(N_HYDRO), &
173            HCLASS_APM(N_HYDRO),HCLASS_BPM(N_HYDRO),HCLASS_RHO(N_HYDRO), &
174            HCLASS_P1(N_HYDRO),HCLASS_P2(N_HYDRO),HCLASS_P3(N_HYDRO)
175
176    ! HCLASS_CP is not used in the version of Quickbeam included in COSP
177    !                   LSL    LSI      LSR     LSS   CVL    CVI   CVR     CVS   LSG
178    data HCLASS_TYPE/    5,      1,      2,      2,     5,     1,   2,      2,    2/
179    data HCLASS_PHASE/   0,      1,      0,      1,     0,     1,   0,      1,    1/
180    data HCLASS_DMIN/   -1,     -1,     -1,     -1,    -1,    -1,   -1,    -1,   -1/
181    data HCLASS_DMAX/   -1,     -1,     -1,     -1,    -1,    -1,   -1,    -1,   -1/
182    data HCLASS_APM/   524,  110.8,    524,     -1,   524, 110.8,  524,    -1,   -1/
183    data HCLASS_BPM/     3,   2.91,      3,     -1,     3,  2.91,    3,    -1,   -1/
184    data HCLASS_RHO/    -1,     -1,     -1,    100,    -1,    -1,   -1,   100,  400/
185    data HCLASS_P1/     -1,     -1,   8.e6,   3.e6,    -1,    -1, 8.e6,  3.e6, 4.e6/
186    data HCLASS_P2/      6,     40,     -1,      -1,    6,    40,   -1,    -1,   -1/
187    data HCLASS_P3/    0.3,      2,     -1,      -1,  0.3,     2,   -1,    -1,   -1/
188
189    ! NOTES on HCLASS variables
190    !
191    ! TYPE - Set to
192    ! 1 for modified gamma distribution,
193    ! 2 for exponential distribution,
194    ! 3 for power law distribution,
195    ! 4 for monodisperse distribution,
196    ! 5 for lognormal distribution.
197
198    ! PHASE - Set to 0 for liquid, 1 for ice.
199
200    ! DMIN - The minimum drop size for this class (micron), ignored for monodisperse.
201    ! DMAX - The maximum drop size for this class (micron), ignored for monodisperse.
202    ! Important note: The settings for DMIN and DMAX are
203    ! ignored in the current version for all distributions except for power
204    ! law. Except when the power law distribution is used, particle size
205    ! is fixed to vary from zero to infinity, a restriction that is expected
206    ! to be lifted in future versions. A placeholder must still be specified
207    ! for each.
208
209    ! Density of particles is given by apm*D^bpm or a fixed value rho. ONLY specify ONE of these two!!
210    ! APM - The alpha_m coefficient in equation (1) (kg m**-beta_m )
211    ! BPM - The beta_m coefficient in equation (1), see section 4.1.
212
213    ! RHO - Hydrometeor density (kg m-3 ).
214
215    ! P1, P2, P3 - are default distribution parameters that depend on the type
216    ! of distribution (see quickmbeam documentation for more information)
217    !
218    ! Modified Gamma (must set P3 and one of P1 or P2)
219    ! P1 - Set to the total particle number concentration Nt /rho_a (kg-1 ), where
220    ! rho_a is the density of air in the radar volume.
221    ! P2 - Set to the particle mean diameter D (micron).
222    ! P3 - Set to the distribution width nu.
223    !
224    ! Exponetial (set one of)
225    ! P1 - Set to a constant intercept parameter N0 (m-4).
226    ! P2 - Set to a constant lambda (micron-1).
227    !
228    ! Power Law
229    ! P1 - Set this to the value of a constant power law parameter br
230    !
231    ! Monodisperse
232    ! P1 - Set to a constant diameter D0 (micron) = Re.
233    !
234    ! Log-normal (must set P3 and one of P1 or P2)
235    ! P1 - Set to the total particle number concentration Nt /rho_a (kg-1 )
236    ! P2 - Set to the geometric mean particle radius rg (micron).
237    ! P3 - Set to the natural logarithm of the geometric standard deviation.
238    !
239
240
241    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
242
243    ! Microphysical settings for the precipitation flux to mixing ratio conversion
244    !                LSL    LSI       LSR       LSS   CVL    CVI       CVR       CVS      LSG
245    data N_ax/       -1.,   -1.,     8.e6,     3.e6,  -1.,   -1.,     8.e6,     3.e6,     4.e6/
246    data N_bx/       -1.,   -1.,      0.0,      0.0,  -1.,   -1.,      0.0,      0.0,      0.0/
247    data alpha_x/    -1.,   -1.,      0.0,      0.0,  -1.,   -1.,      0.0,      0.0,      0.0/
248    data c_x/        -1.,   -1.,    842.0,     4.84,  -1.,   -1.,    842.0,     4.84,     94.5/
249    data d_x/        -1.,   -1.,      0.8,     0.25,  -1.,   -1.,      0.8,     0.25,      0.5/
250    data g_x/        -1.,   -1.,      0.5,      0.5,  -1.,   -1.,      0.5,      0.5,      0.5/
251    data a_x/        -1.,   -1.,    524.0,    52.36,  -1.,   -1.,    524.0,    52.36,   209.44/
252    data b_x/        -1.,   -1.,      3.0,      3.0,  -1.,   -1.,      3.0,      3.0,      3.0/
253    data gamma_1/    -1.,   -1., 17.83725, 8.284701,  -1.,   -1., 17.83725, 8.284701, 11.63230/
254    data gamma_2/    -1.,   -1.,      6.0,      6.0,  -1.,   -1.,      6.0,      6.0,      6.0/
255    data gamma_3/    -1.,   -1.,      2.0,      2.0,  -1.,   -1.,      2.0,      2.0,      2.0/
256    data gamma_4/    -1.,   -1.,      6.0,      6.0,  -1.,   -1.,      6.0,      6.0,      6.0/
257
258
259
260#endif
261
262
263#ifdef MMF_V3p5_TWO_MOMENT
264
265    !
266    !  Table hclass for quickbeam to support two-moment "morrison" microphysics scheme used by V3.5 (SAM 6.8)
267    !
268    !  This Number concentriation Np in [1/kg] MUST be input to COSP/radar simulator
269    !
270    !  NOTE:  Be sure to check that the ice-density (rho) set it this tables matches what you used
271    !
272
273    !
274    ! NOTE:  if ANY value in this section of code is changed, the existing LUT
275    !        (i.e., the associated *.dat file) MUST be deleted so that a NEW
276    !        LUT will be created !!!
277    !
278    character*120 :: RADAR_SIM_MICROPHYSICS_SCHEME_NAME = 'MMF_v3.5_two_moment'
279
280    logical :: RADAR_SIM_LOAD_scale_LUTs_flag   = .false.
281    logical :: RADAR_SIM_UPDATE_scale_LUTs_flag = .false.
282
283    integer,parameter :: N_HYDRO = 9
284
285    integer :: HCLASS_TYPE(N_HYDRO),HCLASS_PHASE(N_HYDRO)
286
287    real :: HCLASS_DMIN(N_HYDRO),HCLASS_DMAX(N_HYDRO), &           
288            HCLASS_APM(N_HYDRO),HCLASS_BPM(N_HYDRO),HCLASS_RHO(N_HYDRO), &
289            HCLASS_P1(N_HYDRO),HCLASS_P2(N_HYDRO),HCLASS_P3(N_HYDRO)
290
291    ! HCLASS_CP is not used in the version of Quickbeam included in COSP
292    !                   LSL    LSI      LSR     LSS   CVL    CVI   CVR     CVS   LSG
293    data HCLASS_TYPE/    1,      1,      1,      1,     1,     1,    1,      1,    1/
294    data HCLASS_PHASE/   0,      1,      0,      1,     0,     1,    0,      1,    1/
295    data HCLASS_DMIN/   -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
296    data HCLASS_DMAX/   -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
297    data HCLASS_APM/   524,     -1,    524,     -1,   524,    -1,  524,     -1,   -1/
298    data HCLASS_BPM/     3,     -1,      3,     -1,     3,    -1,    3,     -1,   -1/
299    data HCLASS_RHO/    -1,    500,     -1,    100,    -1,   500,   -1,    100,  900/
300    data HCLASS_P1/     -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
301    data HCLASS_P2/     -1,     -1,     -1,     -1,    -1,    -1,   -1,     -1,   -1/
302    data HCLASS_P3/     -2,      1,      1,      1,    -2,     1,    1,      1,    1/
303    ! Note: value of "-2" for HCLASS_P3 uses martin 1994 parameteriztion of gamma function width with Number concentration
304#endif
305
306END MODULE MOD_COSP_CONSTANTS
Note: See TracBrowser for help on using the repository browser.