source: trunk/src/com_mod.f90 @ 24

Last change on this file since 24 was 24, checked in by igpis, 10 years ago

version 9.2 beta. Changes from HH, AST, MC, NIK, IP. Changes in vert transform. New SPECIES input includes scavenging coefficients

  • Property svn:executable set to *
File size: 29.5 KB
Line 
1!*******************************************************************************
2!        Include file for particle diffusion model FLEXPART                    *
3!        This file contains a global common block used by FLEXPART             *
4!                                                                              *
5!        Author: A. Stohl                                                      *
6!                                                                              *
7!        June 1996                                                             *
8!                                                                              *
9!        Last update:15 August 2013 IP                                         *
10!                                                                              *
11!*******************************************************************************
12
13module com_mod
14
15  use par_mod, only: dp, numpath, maxnests, maxageclass, maxspec, ni, &
16       numclass, nymax, nxmax, maxcolumn, maxwf, nzmax, nxmaxn, nymaxn, &
17       maxreceptor, maxpart, maxrand, nwzmax, nuvzmax
18
19  implicit none
20
21  !****************************************************************
22  ! Variables defining where FLEXPART input/output files are stored
23  !****************************************************************
24
25  character :: path(numpath+2*maxnests)*120
26  integer :: length(numpath+2*maxnests)
27  character(len=256) :: pathfile, flexversion, arg1, arg2
28 
29  ! path                    path names needed for trajectory model
30  ! length                  length of path names needed for trajectory model
31  ! pathfile                file where pathnames are stored
32  ! flexversion             version of flexpart
33  ! arg                     input arguments from launch at command line
34
35  !********************************************************
36  ! Variables defining the general model run specifications
37  !********************************************************
38
39  integer :: ibdate,ibtime,iedate,ietime
40  real(kind=dp) :: bdate,edate
41
42
43  ! ibdate                  beginning date (YYYYMMDD)
44  ! ibtime                  beginning time (HHMISS)
45  ! iedate                  ending date (YYYYMMDD)
46  ! ietime                  ending time (HHMISS)
47  ! bdate                   beginning date of simulation (julian date)
48  ! edate                   ending date of simulation (julian date)
49
50
51  integer :: ldirect,ideltas
52
53  ! ldirect                 1 for forward, -1 for backward simulation
54  ! ideltas                 length of trajectory loop from beginning to
55  !                    ending date (s)
56
57  integer :: loutstep,loutaver,loutsample,method,lsynctime
58  real :: outstep
59
60  ! loutstep [s]            gridded concentration output every loutstep seconds
61  ! loutaver [s]            concentration output is an average over [s] seconds
62  ! loutsample [s]          sampling interval of gridded concentration output
63  ! lsynctime [s]           synchronisation time of all particles
64  ! method                  indicator which dispersion method is to be used
65  ! outstep = real(abs(loutstep))
66
67  real :: ctl,fine
68  integer :: ifine,iout,ipout,ipin,iflux,mdomainfill
69  integer :: mquasilag,nested_output,ind_source,ind_receptor
70  integer :: ind_rel,ind_samp,ioutputforeachrelease,linit_cond,surf_only
71  logical :: turbswitch
72
73  ! ctl      factor, by which time step must be smaller than Lagrangian time scale
74  ! ifine    reduction factor for time step used for vertical wind
75  !     Langevin equation for the vertical wind component
76  ! ioutputforeachrelease Should each release be a seperate output field?
77  ! iflux    flux calculation options: 1 calculation of fluxes, 2 no fluxes
78  ! iout     output options: 1 conc. output (ng/m3), 2 mixing ratio (pptv), 3 both
79  ! ipout    particle dump options: 0 no, 1 every output interval, 2 only at end
80  ! ipin     read in particle positions from dumped file from a previous run
81  ! fine     real(ifine)
82  ! mdomainfill 0: normal run
83  !        1: particles are initialized according to atmospheric mass distribution
84  ! ind_source switches between different units for concentrations at the source
85  !  NOTE that in backward simulations the release of computational particles
86  !  takes place at the "receptor" and the sampling of particles at the "source".
87  !     1= mass units
88  !     2= mass mixing ratio units
89  ! ind_receptor switches between different units for FLEXPART concentration at the receptor
90  !     1= mass units
91  !     2= mass mixing ratio units
92  ! linit_cond  switch on the output of sensitivity to initial conditions for backward runs
93  !     0=no, 1=mass unit, 2=mass mixing ratio unit
94  ! mquasilag 0: normal run
95  !      1: Particle position output is produced in a condensed format and particles are numbered
96  ! surf_only   switch output in grid_time files for surface only or full vertical resolution
97  !      0=no (full vertical resolution), 1=yes (surface only)
98  ! nested_output: 0 no, 1 yes
99  ! turbswitch              determines how the Markov chain is formulated
100
101  ! ind_rel and ind_samp  are used within the code to change between mass and mass-mix (see readcommand.f)
102
103
104  integer :: mintime,itsplit
105
106  ! mintime                 minimum time step to be used by FLEXPART
107  ! itsplit                 time constant for splitting particles
108
109  integer :: lsubgrid,lconvection,lagespectra
110
111  ! lsubgrid     1 if subgrid topography parameterization switched on, 2 if not
112  ! lconvection  1 if convection parameterization switched on, 0 if not
113  ! lagespectra  1 if age spectra calculation switched on, 2 if not
114
115
116  integer :: nageclass,lage(maxageclass)
117
118  ! nageclass               number of ageclasses for the age spectra calculation
119  ! lage [s]                ageclasses for the age spectra calculation
120
121
122  logical :: gdomainfill
123
124  ! gdomainfill             .T., if domain-filling is global, .F. if not
125
126
127
128  !*********************************************************************
129  ! Variables defining the release locations, released species and their
130  ! properties, etc.
131  !*********************************************************************
132
133  !change Sabine Eckhardt, only save the first 1000 identifier for releasepoints
134  character :: compoint(1001)*45
135  integer :: numpoint
136  !sec, now dynamically allocated:
137  ! ireleasestart(maxpoint),ireleaseend(maxpoint)
138  !      real xpoint1(maxpoint),ypoint1(maxpoint)
139  !real xpoint2(maxpoint),ypoint2(maxpoint)
140  !real zpoint1(maxpoint),zpoint2(maxpoint)
141  !integer*2 kindz(maxpoint)
142  integer :: specnum(maxspec)
143  !real xmass(maxpoint,maxspec)
144  real :: decay(maxspec)
145  real :: weta(maxspec),wetb(maxspec)
146! NIK: 31.01.2013- parameters for in-cloud scavening
147  real :: weta_in(maxspec), wetb_in(maxspec), wetc_in(maxspec), wetd_in(maxspec)
148  real :: reldiff(maxspec),henry(maxspec),f0(maxspec)
149  real :: density(maxspec),dquer(maxspec),dsigma(maxspec)
150  real :: vsetaver(maxspec),cunningham(maxspec),weightmolar(maxspec)
151  real :: vset(maxspec,ni),schmi(maxspec,ni),fract(maxspec,ni)
152  real :: ri(5,numclass),rac(5,numclass),rcl(maxspec,5,numclass)
153  real :: rgs(maxspec,5,numclass),rlu(maxspec,5,numclass)
154  real :: rm(maxspec),dryvel(maxspec),kao(maxspec),ohreact(maxspec)
155  ! se  it is possible to associate a species with a second one to make transfer from gas to aerosol
156  integer :: spec_ass(maxspec)
157
158  real :: area_hour(maxspec,24),point_hour(maxspec,24)
159  real :: area_dow(maxspec,7),point_dow(maxspec,7)
160
161  !integer npart(maxpoint)
162  integer :: nspec,maxpointspec_act
163  character(len=10) :: species(maxspec)
164
165
166  ! compoint                comment, also "name" of each starting point
167  ! numpoint                actual number of trajectory starting/ending points
168  ! ireleasestart,ireleaseend [s] starting and ending time of each release
169  ! xmass                   total mass emitted
170  ! xpoint1,ypoint1         lower left coordinates of release area
171  ! xpoint2,ypoint2         upper right coordinates of release area
172  ! zpoint1,zpoint2         min./max. z-coordinates of release points
173  ! kindz                   1: zpoint is in m agl, 2: zpoint is in m asl
174  ! npart                   number of particles per release point
175  ! nspec                   number of different species allowed for one release
176  ! maxpointspec_act        number of releaspoints for which a different output shall be created
177  ! species                 name of species
178  ! decay                   decay constant of radionuclide
179
180  ! WET DEPOSITION
181  ! weta, wetb              parameters for determining below-cloud wet scavenging coefficients
182  ! weta_in, wetb_in       parameters for determining in-cloud wet scavenging coefficients
183  ! wetc_in, wetd_in       parameters for determining in-cloud wet scavenging coefficients
184
185  ! GAS DEPOSITION
186  ! reldiff                 diffusivitiy of species relative to diff. of H2O
187  ! henry [M/atm]           Henry constant
188  ! f0                      reactivity relative to that of O3
189  ! ri [s/m]                stomatal resistance
190  ! rcl [s/m]               lower canopy resistance
191  ! rgs [s/m]               ground resistance
192  ! rlu [s/m]               leaf cuticular resistance
193  ! rm [s/m]                mesophyll resistance
194  ! dryvel [m/s]            constant dry deposition velocity
195
196  ! PARTICLE DEPOSITION
197  ! density [kg/m3]         density of particles
198  ! dquer [m]               mean diameter of particles
199  ! dsigma                  dsigma=10 or dsigma=0.1 means that 68% of the
200  !                    mass are between 0.1*dquer and 10*dquer
201
202  ! fract                   mass fraction of each diameter interval
203  ! vset [m/s]              gravitational settling velocity in ni intervals
204  ! cunningham              Cunningham slip correction (strictly valid only near surface)
205  ! vsetaver [m/s]          average gravitational settling velocity
206  ! schmi                   Schmidt number**2/3 of each diameter interval
207  ! weightmolar [g/mol]     molecular weight
208
209  ! TIME VARIATION OF EMISSION
210  ! area_hour, point_hour   daily variation of emission strengths for area and point sources
211  ! area_dow, point_dow     day-of-week variation of emission strengths for area and point sources
212
213
214
215  !**********************************************************
216  ! Variables used for domain-filling trajectory calculations
217  !**********************************************************
218
219  integer :: nx_we(2),ny_sn(2)
220  integer :: numcolumn
221  integer :: numcolumn_we(2,0:nymax-1),numcolumn_sn(2,0:nxmax-1)
222  real :: zcolumn_we(2,0:nymax-1,maxcolumn)
223  real :: zcolumn_sn(2,0:nxmax-1,maxcolumn)
224  real :: xmassperparticle
225  real :: acc_mass_we(2,0:nymax-1,maxcolumn)
226  real :: acc_mass_sn(2,0:nxmax-1,maxcolumn)
227
228  ! nx_we(2)                x indices of western and eastern boundary of domain-filling
229  ! ny_sn(2)                y indices of southern and northern boundary of domain-filling
230  ! numcolumn_we            number of particles to be released within one column
231  !                    at the western and eastern boundary surfaces
232  ! numcolumn_sn            same as numcolumn_we, but for southern and northern domain boundary
233  ! numcolumn               maximum number of particles to be released within a single
234  !                    column
235  ! zcolumn_we              altitudes where particles are to be released
236  !                    at the western and eastern boundary surfaces
237  ! zcolumn_sn              same as zcolumn_we, but for southern and northern domain boundary
238  ! xmassperparticle        air mass per particle in the domain-filling traj. option
239  ! acc_mass_we             mass that has accumulated at the western and eastern boundary;
240  !                    if it exceeds xmassperparticle, a particle is released and
241  !                    acc_mass_we is reduced accordingly
242  ! acc_mass_sn             same as acc_mass_we, but for southern and northern domain boundary
243
244
245
246  !******************************************************************************
247  ! Variables associated with the ECMWF meteorological input data ("wind fields")
248  !******************************************************************************
249
250  integer :: numbwf,wftime(maxwf),lwindinterv
251  character(len=255) :: wfname(maxwf),wfspec(maxwf)
252
253  ! lwindinterv [s]         Interval between wind fields currently in memory
254  ! numbwf                  actual number of wind fields
255  ! wftime(maxwf) [s]       times relative to beginning time of wind fields
256  ! wfname(maxwf)           file names of wind fields
257  ! wfspec(maxwf)           specifications of wind field file, e.g. if on hard
258  !                    disc or on tape
259
260  integer :: memtime(2),memind(2)
261
262  ! memtime [s]             validation times of wind fields in memory
263  ! memind                  pointer to wind field, in order to avoid shuffling
264  !                    of wind fields
265
266
267
268  !****************************************************************************
269  ! Variables defining actual size and geographical location of the wind fields
270  !****************************************************************************
271
272  integer :: nx,ny,nxmin1,nymin1,nxfield,nuvz,nwz,nz,nmixz,nlev_ec
273  real :: dx,dy,xlon0,ylat0,dxconst,dyconst,height(nzmax)
274
275  ! nx,ny,nz                actual dimensions of wind fields in x,y and z
276  !                    direction, respectively
277  ! nxmin1,nymin1           nx-1, ny-1, respectively
278  ! nuvz,nwz                vertical dimension of original ECMWF data
279  ! nxfield                 same as nx for limited area fields,
280  !                    but for global fields nx=nxfield+1
281  ! nmixz                   number of levels up to maximum PBL height (3500 m)
282
283  ! nuvz is used for u,v components
284  ! nwz is used for w components (staggered grid)
285  ! nz is used for the levels in transformed coordinates (terrain-following Cartesian
286  ! coordinates)
287
288  ! nlev_ec  number of levels ECMWF model
289  ! dx                      grid distance in x direction
290  ! dy                      grid distance in y direction
291  ! dxconst,dyconst         auxiliary variables for utransform,vtransform
292  ! height                  heights of all levels
293  ! xlon0                   geographical longitude and
294  ! ylat0                   geographical latitude of lower left grid point
295
296
297
298  !*************************************************
299  ! Variables used for vertical model discretization
300  !*************************************************
301
302  real :: akm(nwzmax),bkm(nwzmax)
303  real :: akz(nuvzmax),bkz(nuvzmax)
304  real :: aknew(nzmax),bknew(nzmax)
305
306  ! akm,bkm: coeffizients which regulate vertical discretization of ecmwf model
307  !     (at the border of model layers)
308  ! akz,bkz: model discretization coeffizients at the centre of the layers
309  ! aknew,bknew model discretization coeffizients at the interpolated levels
310
311
312
313  ! Fixed fields, unchangeable with time
314  !*************************************
315
316  real :: oro(0:nxmax-1,0:nymax-1)
317  real :: excessoro(0:nxmax-1,0:nymax-1)
318  real :: lsm(0:nxmax-1,0:nymax-1)
319  real :: xlanduse(0:nxmax-1,0:nymax-1,numclass)
320
321  ! oro [m]              orography of the ECMWF model
322  ! excessoro            excess orography mother domain
323  ! lsm                  land sea mask of the ECMWF model
324  ! xlanduse [0-1]       area fractions in percent
325
326  ! 3d fields
327  !**********
328
329  real :: uu(0:nxmax-1,0:nymax-1,nzmax,2)
330  real :: vv(0:nxmax-1,0:nymax-1,nzmax,2)
331  real :: uupol(0:nxmax-1,0:nymax-1,nzmax,2)
332  real :: vvpol(0:nxmax-1,0:nymax-1,nzmax,2)
333  real :: ww(0:nxmax-1,0:nymax-1,nzmax,2)
334  real :: tt(0:nxmax-1,0:nymax-1,nzmax,2)
335  real :: qv(0:nxmax-1,0:nymax-1,nzmax,2)
336  real :: pv(0:nxmax-1,0:nymax-1,nzmax,2)
337  real :: rho(0:nxmax-1,0:nymax-1,nzmax,2)
338  real :: drhodz(0:nxmax-1,0:nymax-1,nzmax,2)
339  real :: tth(0:nxmax-1,0:nymax-1,nuvzmax,2)
340  real :: qvh(0:nxmax-1,0:nymax-1,nuvzmax,2)
341  real :: pplev(0:nxmax-1,0:nymax-1,nuvzmax,2)
342  integer(kind=1) :: clouds(0:nxmax-1,0:nymax-1,nzmax,2)
343  integer :: cloudsh(0:nxmax-1,0:nymax-1,2)
344
345
346  ! uu,vv,ww [m/2]       wind components in x,y and z direction
347  ! uupol,vvpol [m/s]    wind components in polar stereographic projection
348  ! tt [K]               temperature data
349  ! qv                   specific humidity data
350  ! pv (pvu)             potential vorticity
351  ! rho [kg/m3]          air density
352  ! drhodz [kg/m2]       vertical air density gradient
353  ! tth,qvh              tth,qvh on original eta levels
354  ! clouds:   no cloud, no precipitation   0
355  !      cloud, no precipitation      1
356  !      rainout  conv/lsp dominated  2/3
357  !      washout  conv/lsp dominated  4/5
358
359  ! pplev for the GFS version
360
361  ! 2d fields
362  !**********
363
364  real :: ps(0:nxmax-1,0:nymax-1,1,2)
365  real :: sd(0:nxmax-1,0:nymax-1,1,2)
366  real :: msl(0:nxmax-1,0:nymax-1,1,2)
367  real :: tcc(0:nxmax-1,0:nymax-1,1,2)
368  real :: u10(0:nxmax-1,0:nymax-1,1,2)
369  real :: v10(0:nxmax-1,0:nymax-1,1,2)
370  real :: tt2(0:nxmax-1,0:nymax-1,1,2)
371  real :: td2(0:nxmax-1,0:nymax-1,1,2)
372  real :: lsprec(0:nxmax-1,0:nymax-1,1,2)
373  real :: convprec(0:nxmax-1,0:nymax-1,1,2)
374  real :: sshf(0:nxmax-1,0:nymax-1,1,2)
375  real :: ssr(0:nxmax-1,0:nymax-1,1,2)
376  real :: surfstr(0:nxmax-1,0:nymax-1,1,2)
377  real :: ustar(0:nxmax-1,0:nymax-1,1,2)
378  real :: wstar(0:nxmax-1,0:nymax-1,1,2)
379  real :: hmix(0:nxmax-1,0:nymax-1,1,2)
380  real :: tropopause(0:nxmax-1,0:nymax-1,1,2)
381  real :: oli(0:nxmax-1,0:nymax-1,1,2)
382  real :: diffk(0:nxmax-1,0:nymax-1,1,2)
383
384  ! ps                   surface pressure
385  ! sd                   snow depth
386  ! msl                  mean sea level pressure
387  ! tcc                  total cloud cover
388  ! u10                  10 meter u
389  ! v10                  10 meter v
390  ! tt2                  2 meter temperature
391  ! td2                  2 meter dew point
392  ! lsprec [mm/h]        large scale total precipitation
393  ! convprec [mm/h]      convective precipitation
394  ! sshf                 surface sensible heat flux
395  ! ssr                  surface solar radiation
396  ! surfstr              surface stress
397  ! ustar [m/s]          friction velocity
398  ! wstar [m/s]          convective velocity scale
399  ! hmix  [m]            mixing height
400  ! tropopause [m]       altitude of thermal tropopause
401  ! oli [m]              inverse Obukhov length (1/L)
402  ! diffk [m2/s]         diffusion coefficient at reference height
403
404
405  real :: vdep(0:nxmax-1,0:nymax-1,maxspec,2)
406
407  ! vdep [m/s]           deposition velocities
408
409
410  !********************************************************************
411  ! Variables associated with the ECMWF input data (nested wind fields)
412  !********************************************************************
413
414  ! NOTE: all nested variables have the same name as the variables used
415  ! for the mother domain, except with a 'n' appended at the end
416  !********************************************************************
417
418  integer :: numbnests
419
420  ! numbnests    number of nested grids
421
422  character(len=255) :: wfnamen(maxnests,maxwf)
423  character(len=18) :: wfspecn(maxnests,maxwf)
424
425  ! wfnamen      nested wind field names
426  ! wfspecn      specifications of wind field file, e.g. if on hard
427  !         disc or on tape
428
429
430  !*********************************************************************
431  ! Variables characterizing size and location of the nested wind fields
432  !*********************************************************************
433
434  integer :: nxn(maxnests),nyn(maxnests)
435  real :: dxn(maxnests),dyn(maxnests),xlon0n(maxnests),ylat0n(maxnests)
436
437  ! nxn,nyn      actual dimensions of nested wind fields in x and y direction
438  ! dxn,dyn      grid distances in x,y direction for the nested grids
439  ! xlon0n       geographical longitude of lower left grid point of nested wind fields
440  ! ylat0n       geographical latitude of lower left grid point of nested wind fields
441
442
443  ! Nested fields, unchangeable with time
444  !**************************************
445
446  real :: oron(0:nxmaxn-1,0:nymaxn-1,maxnests)
447  real :: excessoron(0:nxmaxn-1,0:nymaxn-1,maxnests)
448  real :: lsmn(0:nxmaxn-1,0:nymaxn-1,maxnests)
449  real :: xlandusen(0:nxmaxn-1,0:nymaxn-1,numclass,maxnests)
450
451
452  ! 3d nested fields
453  !*****************
454
455  real :: uun(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
456  real :: vvn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
457  real :: wwn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
458  real :: ttn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
459  real :: qvn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
460  real :: pvn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
461  integer(kind=1) :: cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,2,maxnests)
462  integer :: cloudsnh(0:nxmaxn-1,0:nymaxn-1,2,maxnests)
463  real :: rhon(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
464  real :: drhodzn(0:nxmaxn-1,0:nymaxn-1,nzmax,2,maxnests)
465  real :: tthn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,2,maxnests)
466  real :: qvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,2,maxnests)
467
468  ! 2d nested fields
469  !*****************
470
471  real :: psn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
472  real :: sdn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
473  real :: msln(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
474  real :: tccn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
475  real :: u10n(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
476  real :: v10n(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
477  real :: tt2n(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
478  real :: td2n(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
479  real :: lsprecn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
480  real :: convprecn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
481  real :: sshfn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
482  real :: ssrn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
483  real :: surfstrn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
484  real :: ustarn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
485  real :: wstarn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
486  real :: hmixn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
487  real :: tropopausen(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
488  real :: olin(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
489  real :: diffkn(0:nxmaxn-1,0:nymaxn-1,1,2,maxnests)
490  real :: vdepn(0:nxmaxn-1,0:nymaxn-1,maxspec,2,maxnests)
491
492
493  !*************************************************
494  ! Certain auxiliary variables needed for the nests
495  !*************************************************
496
497  real :: xresoln(0:maxnests),yresoln(0:maxnests)
498
499  ! xresoln, yresoln   Factors by which the resolutions in the nests
500  !               are enhanced compared to mother grid
501
502  real :: xln(maxnests),yln(maxnests),xrn(maxnests),yrn(maxnests)
503
504  ! xln,yln,xrn,yrn    Corner points of nested grids in grid coordinates
505  !               of mother grid
506
507
508  !******************************************************
509  ! Variables defining the polar stereographic projection
510  !******************************************************
511
512  logical :: xglobal,sglobal,nglobal
513  real :: switchnorthg,switchsouthg
514
515  !xglobal             T for global fields, F for limited area fields
516  !sglobal             T if domain extends towards south pole
517  !nglobal             T if domain extends towards north pole
518  !switchnorthg,switchsouthg   same as parameters switchnorth,
519  !                    switchsouth, but in grid units
520
521  real :: southpolemap(9),northpolemap(9)
522
523  !southpolemap,northpolemap   define stereographic projections
524  !                    at the two poles
525
526
527  !******************
528  ! Landuse inventory
529  ! Sabine Eckhardt Dec 06: change to new landuse inventary - 11 classes, 1200 x 600 global
530  !******************
531
532  integer(kind=1) :: landinvent(1200,600,6)
533  real :: z0(numclass)
534
535  ! landinvent         landuse inventory (numclass=11 classes)
536  ! z0                  roughness length for the landuse classes
537
538
539
540  !**************************************************************************
541  ! Variables characterizing the output grid and containing the model results
542  !**************************************************************************
543
544  integer :: numxgrid,numygrid,numzgrid
545  real :: dxout,dyout,outlon0,outlat0,xoutshift,youtshift
546  integer :: numxgridn,numygridn
547  real :: dxoutn,dyoutn,outlon0n,outlat0n,xoutshiftn,youtshiftn
548  !real outheight(maxzgrid),outheighthalf(maxzgrid)
549  logical :: DEP,DRYDEP,DRYDEPSPEC(maxspec),WETDEP,OHREA,ASSSPEC
550
551  ! numxgrid,numygrid       number of grid points in x,y-direction
552  ! numxgridn,numygridn     number of grid points in x,y-direction for nested output grid
553  ! numzgrid                number of vertical levels of output grid
554  ! dxout,dyout             grid distance of output grid
555  ! dxoutn,dyoutn           grid distance of nested output grid
556  ! outlon0,outlat0         lower left corner of output grid
557  ! outlon0n,outlat0n       lower left corner of nested output grid
558  ! xoutshift,youtshift     xlon0-outlon0, ylat0-outlat0
559  ! xoutshiftn,youtshiftn   xlon0-outlon0n, ylat0-outlat0n
560  ! outheight [m]           upper levels of the output grid
561  ! outheighthalf [m]       half (middle) levels of the output grid cells
562  ! DEP                     .true., if either dry or wet depos. is switched on
563  ! DRYDEP                  .true., if dry deposition is switched on
564  ! DRYDEPSPEC              .true., if dry deposition is switched on for that species
565  ! WETDEP                  .true., if wet deposition is switched on
566  ! OHREA                   .true., if OH reaction is switched on
567  ! ASSSPEC                 .true., if there are two species asscoiated
568  !                    (i.e. transfer of mass between these two occurs
569
570
571
572  !  if output for each releasepoint shall be created maxpointspec=number of releasepoints
573  !  else maxpointspec is 1 -> moved to unc_mod
574  !  the OUTGRID is moved to the module outg_mod
575  !******************************************************************************
576
577  !real gridunc(0:maxxgrid-1,0:maxygrid-1,maxzgrid,maxspec,
578  !    +             maxpointspec_act,nclassunc,maxageclass)
579  !real griduncn(0:maxxgridn-1,0:maxygridn-1,maxzgrid,maxspec,
580  !    +              maxpointspec_act,nclassunc,maxageclass)
581  !real wetgridunc(0:maxxgrid-1,0:maxygrid-1,maxspec,
582  !    +                maxpointspec_act,nclassunc,maxageclass)
583  !real wetgriduncn(0:maxxgridn-1,0:maxygridn-1,maxspec,
584  !    +ct                 maxpointspec,nclassunc,maxageclass)
585  !real drygridunc(0:maxxgrid-1,0:maxygrid-1,maxspec,maxpointspec,
586  !    +                nclassunc,maxageclass)
587  !real drygriduncn(0:maxxgridn-1,0:maxygridn-1,maxspec,
588  !    +                 maxpointspec,nclassunc,maxageclass)
589
590  !real oroout(0:maxxgrid-1,0:maxygrid-1)
591  !real orooutn(0:maxxgridn-1,0:maxygridn-1)
592  !     real area(0:maxxgrid-1,0:maxygrid-1)
593  !real arean(0:maxxgridn-1,0:maxygridn-1)
594  !real volume(0:maxxgrid-1,0:maxygrid-1,maxzgrid)
595  !real volumen(0:maxxgridn-1,0:maxygridn-1,maxzgrid)
596
597  !real areaeast(0:maxxgrid-1,0:maxygrid-1,maxzgrid)
598  !real areanorth(0:maxxgrid-1,0:maxygrid-1,maxzgrid)
599
600
601  ! gridunc,griduncn        uncertainty of outputted concentrations
602  ! wetgridunc,wetgriduncn  uncertainty of accumulated wet deposited mass on output grid
603  ! drygridunc,drygriduncn  uncertainty of accumulated dry deposited mass on output grid
604  ! oroout,orooutn [m]      height of model topography at output grid
605  ! area,arean [m2]         area of each grid cell
606  ! volume,volumen [m3]     volume of each grid cell
607  ! ... field names with n at the end indicate a nested output grid
608
609
610  !***********************************
611  ! Variables defining receptor points
612  !***********************************
613
614  real :: xreceptor(maxreceptor),yreceptor(maxreceptor)
615  real :: receptorarea(maxreceptor)
616  real :: creceptor(maxreceptor,maxspec)
617  character(len=16) :: receptorname(maxreceptor)
618  integer :: numreceptor
619
620  ! xreceptor,yreceptor     receptor position
621  ! creceptor               concentrations at receptor points
622  ! receptorarea            area of 1*1 grid cell at receptor point
623
624
625
626  !***************************************
627  ! Variables characterizing each particle
628  !***************************************
629
630  integer :: numpart,itra1(maxpart)
631  integer :: npoint(maxpart),nclass(maxpart)
632  integer :: idt(maxpart),itramem(maxpart),itrasplit(maxpart)
633  integer :: numparticlecount
634
635  real(kind=dp) :: xtra1(maxpart),ytra1(maxpart)
636  real :: ztra1(maxpart),xmass1(maxpart,maxspec)
637
638  ! numpart                 actual number of particles in memory
639  ! itra1 (maxpart) [s]     temporal positions of the particles
640  ! npoint(maxpart)         indicates the release point of each particle
641  ! nclass (maxpart)        one of nclassunc classes to which the particle is attributed
642  ! itramem (maxpart) [s]   memorized release times of the particles
643  ! itrasplit (maxpart) [s] next time when particle is to be split into two
644  ! idt(maxpart) [s]        time step to be used for next integration
645  ! numparticlecount        counts the total number of particles that have been released
646  ! xtra1,ytra1,ztra1       spatial positions of the particles
647  ! xmass1 [kg]             particle masses
648
649
650
651  !*******************************************************
652  ! Info table on available chemical species/radionuclides
653  !*******************************************************
654
655  !character*10 specname(maxtable)
656  !real decaytime(maxtable),wetscava(maxtable),wetscavb(maxtable)
657  !real drydiff(maxtable),dryhenry(maxtable),dryactiv(maxtable)
658  !real partrho(maxtable),partmean(maxtable),partsig(maxtable)
659  !real dryvelo(maxtable),weightmol(maxtable),ohreact(maxtable)
660
661  ! specname            Name of chemical species/radionuclide
662  ! decaytime           Half time of radionuclides
663  ! wetscava, wetscavb  Parameters for calculating scavenging coefficients
664  ! drydiff             diffusivitiy of species relative to diff. of H2O
665  ! dryhenry [M/atm]    Henry constant
666  ! dryactiv            reactivity relative to that of O3
667  ! partrho [kg/m3]     density of particles
668  ! partmean [m]        mean diameter of particles
669  ! partsig [m]         mean stand. deviation of particle diameter
670  ! dryvelo [cm/s]      constant dry deposition velocity
671  ! weightmol [g/mol]   molecular weight
672  ! ohreact             OH reaction rate
673
674
675  !********************
676  ! Random number field
677  !********************
678
679  real :: rannumb(maxrand)
680
681  ! rannumb                 field of normally distributed random numbers
682
683  !********************
684  ! Verbosity, testing flags
685  !********************   
686  integer :: verbosity=0
687  integer :: info_flag=0
688  INTEGER :: count_clock, count_clock0,  count_rate, count_max
689   
690
691end module com_mod
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG