CTBTO FLEXPART WO4 (2015-10-15)
 All Classes Files Functions Variables
par_mod.F90
Go to the documentation of this file.
1 !**********************************************************************
2 ! Copyright 1998,1999,2000,2001,2002,2005,2007,2008,2009,2010 *
3 ! Andreas Stohl, Petra Seibert, A. Frank, Gerhard Wotawa, *
4 ! Caroline Forster, Sabine Eckhardt, John Burkhart, Harald Sodemann *
5 ! *
6 ! This file is part of FLEXPART. *
7 ! *
8 ! FLEXPART is free software: you can redistribute it and/or modify *
9 ! it under the terms of the GNU General Public License as published by*
10 ! the Free Software Foundation, either version 3 of the License, or *
11 ! (at your option) any later version. *
12 ! *
13 ! FLEXPART is distributed in the hope that it will be useful, *
14 ! but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16 ! GNU General Public License for more details. *
17 ! *
18 ! You should have received a copy of the GNU General Public License *
19 ! along with FLEXPART. If not, see <http://www.gnu.org/licenses/>. *
20 !**********************************************************************
21 
22 !*******************************************************************************
23 ! Include file for calculation of particle trajectories (Program FLEXPART) *
24 ! This file contains the parameter statements used in FLEXPART *
25 ! *
26 ! Author: A. Stohl *
27 ! *
28 ! 1997 *
29 ! *
30 ! Last update 10 August 2000 *
31 ! *
32 !*******************************************************************************
33 
34 module par_mod
35 
36  implicit none
37 
38  !****************************************************************
39  ! Parameter defining ECMWF vs GFS mode
40  !****************************************************************
41  integer,parameter :: unknown_metdata=0
42  integer,parameter :: ecmwf_metdata=1
43  integer,parameter :: gfs_metdata=2
44 
45  !****************************************************************
46  ! Parameter defining KIND parameter for "double precision"
47  !****************************************************************
48 
49  integer,parameter :: dp=selected_real_kind(P=15)
50 
51 
52  !***********************************************************
53  ! Number of directories/files used for FLEXPART input/output
54  !***********************************************************
55 
56  integer,parameter :: numpath=4
57 
58  ! numpath Number of different pathnames for input/output files
59 
60 
61  !*****************************
62  ! Physical and other constants
63  !*****************************
64 
65  real,parameter :: pi=3.14159265, r_earth=6.371e6, r_air=287.05, ga=9.81
66  real,parameter :: cpa=1004.6, kappa=0.286, pi180=pi/180., vonkarman=0.4
67 
68  ! pi number "pi"
69  ! pi180 pi/180.
70  ! r_earth radius of earth [m]
71  ! r_air individual gas constant for dry air [J/kg/K]
72  ! ga gravity acceleration of earth [m/s**2]
73  ! cpa specific heat for dry air
74  ! kappa exponent of formula for potential temperature
75  ! vonkarman von Karman constant
76 
77  real,parameter :: karman=0.40, href=15., convke=2.0
78  real,parameter :: hmixmin=100., hmixmax=4500., turbmesoscale=0.16
79  real,parameter :: d_trop=50., d_strat=0.1
80 
81  ! karman Karman's constant
82  ! href [m] Reference height for dry deposition
83  ! konvke Relative share of kinetic energy used for parcel lifting
84  ! hmixmin,hmixmax Minimum and maximum allowed PBL height
85  ! turbmesoscale the factor by which standard deviations of winds at grid
86  ! points surrounding the particle positions are scaled to
87  ! yield the scales for the mesoscale wind velocity fluctuations
88  ! d_trop [m2/s] Turbulent diffusivity for horizontal components in the troposphere
89  ! d_strat [m2/s] Turbulent diffusivity for vertical component in the stratosphere
90 
91  real,parameter :: xmwml=18.016/28.960
92 
93  ! xmwml ratio of molar weights of water vapor and dry air
94  !****************************************************
95  ! Constants related to the stratospheric ozone tracer
96  !****************************************************
97 
98  real,parameter :: ozonescale=60., pvcrit=2.0
99 
100  ! ozonescale ppbv O3 per PV unit
101  ! pvcrit PV level of the tropopause
102 
103 
104 
105  !********************
106  ! Some time constants
107  !********************
108 
109  integer,parameter :: idiffnorm=10800, idiffmax=2*idiffnorm, minstep=1
110 
111  ! idiffnorm [s] normal time interval between two wind fields
112  ! idiffmax [s] maximum time interval between two wind fields
113  ! minstep [s] minimum time step to be used within FLEXPART
114 
115 
116  !*****************************************************************
117  ! Parameters for polar stereographic projection close to the poles
118  !*****************************************************************
119 
120  real,parameter :: switchnorth=75., switchsouth=-75.
121 
122  ! switchnorth use polar stereographic grid north of switchnorth
123  ! switchsouth use polar stereographic grid south of switchsouth
124 
125 
126  !*********************************************
127  ! Maximum dimensions of the input mother grids
128  !*********************************************
129 
130  !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92
131  !integer,parameter :: nxmax=361,nymax=181,nuvzmax=61,nwzmax=61,nzmax=61
132  integer,parameter :: nxmax=721,nymax=361,nuvzmax=140,nwzmax=140,nzmax=140
133  !integer,parameter :: nxshift=359 ! for ECMWF
134  integer,parameter :: nxshift=0 ! for GFS
135 
136  integer,parameter :: nconvlevmax = nuvzmax-1
137  integer,parameter :: na = nconvlevmax+1
138 
139 
140  ! nxmax,nymax maximum dimension of wind fields in x and y
141  ! direction, respectively
142  ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z
143  ! direction (for fields on eta levels)
144  ! nzmax maximum dimension of wind fields in z direction
145  ! for the transformed Cartesian coordinates
146  ! nxshift for global grids (in x), the grid can be shifted by
147  ! nxshift grid points, in order to accomodate nested
148  ! grids, and output grids overlapping the domain "boundary"
149  ! nxshift must not be negative; "normal" setting would be 0
150  ! ntracermax maximum number of tracer species in convection
151  ! nconvlevmax maximum number of levels for convection
152  ! na parameter used in Emanuel's convect subroutine
153 
154 
155  !*********************************************
156  ! Maximum dimensions of the nested input grids
157  !*********************************************
158 
159  integer,parameter :: maxnests=0, nxmaxn=451, nymaxn=226
160  !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0
161  !integer,parameter :: maxnests=1,nxmaxn=251,nymaxn=151
162 
163  ! maxnests maximum number of nested grids
164  ! nxmaxn,nymaxn maximum dimension of nested wind fields in
165  ! x and y direction, respectively
166 
167 
168  !*********************************
169  ! Parmaters for GRIB file decoding
170  !*********************************
171 
172  integer,parameter :: jpack=4*nxmax*nymax, jpunp=4*jpack
173 
174  ! jpack,jpunp maximum dimensions needed for GRIB file decoding
175 
176 
177  !**************************************
178  ! Maximum dimensions of the output grid
179  !**************************************
180 
181  !integer,parameter :: maxageclass=1,maxzgrid=10,nclassunc=1
182  integer,parameter :: maxageclass=1,nclassunc=1
183 
184  ! nclassunc number of classes used to calculate the uncertainty
185  ! of the output
186  ! maxageclass maximum number of age classes used for output
187 
188  ! Sabine Eckhardt, June, 2008
189  ! the dimensions of the OUTGRID are now set dynamically during runtime
190  ! maxxgrid,maxygrid,maxzgrid maximum dimensions in x,y,z direction
191  ! maxxgridn,maxygridn maximum dimension of the nested grid
192  !integer maxxgrid,maxygrid,maxzgrid,maxxgridn,maxygridn
193  !integer,parameter :: maxxgrid=361,maxygrid=181,maxxgridn=0,maxygridn=0)
194 
195  integer,parameter :: maxreceptor=200
196 
197  ! maxreceptor maximum number of receptor points
198 
199 
200  !**************************************************
201  ! Maximum number of particles, species, and similar
202  !**************************************************
203 
204 #if defined WITH_CTBTO_PATCHES
205  integer,parameter :: maxpart=30000000
206  integer,parameter :: maxspec=1
207 #else
208  integer,parameter :: maxpart=2000000
209  integer,parameter :: maxspec=6
210 #endif
211 
212  ! maxpart Maximum number of particles
213  ! maxspec Maximum number of chemical species per release
214 
215  ! maxpoint is also set dynamically during runtime
216  ! maxpoint Maximum number of release locations
217 
218  ! ---------
219  ! Sabine Eckhardt: change of landuse inventary numclass=13
220  ! ---------
221  integer,parameter :: maxwf=50000, maxtable=1000, numclass=13, ni=11
222 
223  ! maxwf maximum number of wind fields to be used for simulation
224  ! maxtable Maximum number of chemical species that can be
225  ! tabulated for FLEXPART
226  ! numclass Number of landuse classes available to FLEXPART
227  ! ni Number of diameter classes of particles
228 
229  !**************************************************************************
230  ! dimension of the OH field
231  !**************************************************************************
232  integer,parameter :: maxxOH=72, maxyOH=46, maxzOH=7
233 
234  !**************************************************************************
235  ! Maximum number of particles to be released in a single atmospheric column
236  ! for the domain-filling trajectories option
237  !**************************************************************************
238 
239  integer,parameter :: maxcolumn=3000
240 
241 
242  !*********************************
243  ! Dimension of random number field
244  !*********************************
245 
246  integer,parameter :: maxrand=2000000
247 
248  ! maxrand number of random numbers used
249 
250 
251  !*****************************************************
252  ! Number of clusters to be used for plume trajectories
253  !*****************************************************
254 
255  integer,parameter :: ncluster=5
256 
257  !************************************
258  ! Unit numbers for input/output files
259  !************************************
260 
261  integer,parameter :: unitpath=1, unitcommand=1, unitageclasses=1, unitgrid=1
262  integer,parameter :: unitavailab=1, unitreleases=88, unitpartout=93
263  integer,parameter :: unitpartin=93, unitflux=98, unitouttraj=96
264  integer,parameter :: unitvert=1, unitoro=1, unitpoin=1, unitreceptor=1
265  integer,parameter :: unitoutgrid=97, unitoutgridppt=99, unitoutinfo=1
266  integer,parameter :: unitspecies=1, unitoutrecept=91, unitoutreceptppt=92
267  integer,parameter :: unitlsm=1, unitsurfdata=1, unitland=1, unitwesely=1
268  integer,parameter :: unitOH=1
269  integer,parameter :: unitdates=94, unitheader=90, unitshortpart=95
270  integer,parameter :: unitboundcond=89
271 
272 end module par_mod
273