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

Last change on this file since 2627 was 2571, checked in by jghattas, 8 years ago

Interface LMDZ/ORCHIDEE :

  • copied previous default module surf_land_orchidee_mod.f90 into surf_land_orchidee_noz0h.f90. This interface can still be compiled if adding cpp key ORCHIDEE_NOZ0H
  • modified default interface by adding z0h as output from ORCHIDEE.
  • added comments in each module surf_land_orchidee_xxx of compatiblity with ORCHIDEE.
  • all modules surf_land_orchidee_xxx now send back z0h and z0m to surf_land_mod. But note that z0m and zOh are different only in the new default version surf_land_orchidee_mod.f90. In the old interfaces, z0h is a copy of z0m.


cosp : some small changes to be able to compile with gfortran

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