1 | SHORT DESCRIPTION OF THE SOURCE CODE FILES USED BY THE FLEXPART MODEL |
---|
2 | _____________________________________________________________________ |
---|
3 | FLEXPART.f main program, manages reading of run specifications, etc.; |
---|
4 | last call is to timemanager.f, which manages the actual model |
---|
5 | integration |
---|
6 | advance.f advection of the particles by grid-scale and turbulent winds; |
---|
7 | solves the Langevin equations |
---|
8 | assignland.f assigns the fractions of 8 landuse classes to each ECMWF grid |
---|
9 | point |
---|
10 | boundcond_domainfill.f creates particles at the inflowing/destroys particles |
---|
11 | at the outflowing boundary, if domain-filling option is used |
---|
12 | calcfluxes.f calculates the gross N-S, E-W and up-down mass fluxes |
---|
13 | resulting from the motion of a single particle |
---|
14 | calcmatrix.f interface to the convection scheme (convect.f) by K. Emanuel |
---|
15 | calcpar.f calculates boundary layer parameters: friction velocity, |
---|
16 | convective velocity scale, Obukhov length, PBL height, partly |
---|
17 | by calling other routines |
---|
18 | calcpar_nests.f same as calcpar.f, but for the nested grids |
---|
19 | calcpv.f calculates potential vorticity for mother domain grid points |
---|
20 | calcpv_nests.f same as calcpv.f, but for the nested grids |
---|
21 | caldate.f computes calendar date from Julian date |
---|
22 | centerofmass.f calculates the center of mass of n points on the Earth |
---|
23 | clustering.f cluster analysis of particle position |
---|
24 | cmapf1.0.f Program package for coordinate transformations between |
---|
25 | latitude/longitude grid and polar stereographic projection |
---|
26 | conccalc.f calculates concentrations or residence times and/or |
---|
27 | mixing ratios on the output grid and at receptor locations |
---|
28 | concoutput.f writes out concentrationsor residence times and/or |
---|
29 | mixing ratios on the output grid and at receptor locations |
---|
30 | (files grid_conc_date, grid_pptv_date, grid_time_date) |
---|
31 | concoutput_nest.f same as concoutput.f, but for the nested output grid |
---|
32 | convect.f convection scheme written by Kerry Emanuel (slightly modified) |
---|
33 | convmix.f handles all the calculations related to convective mixing |
---|
34 | coordtrafo.f transformation of release point coordinates from geografical |
---|
35 | to grid coordinates |
---|
36 | distance.f calculates distance (km) between 2 points on Earth's surface |
---|
37 | given their positions in degrees |
---|
38 | distance2.f calculates distance (km) between 2 points on Earth's surface |
---|
39 | given their positions in radians |
---|
40 | drydepokernel.f calculates gridded dry deposition field using a uniform kernel |
---|
41 | drydepokernel_nest.f same as drydepokernel.f, but for the nested output grid |
---|
42 | erf.f error function |
---|
43 | ew.f calculation of saturation water vapor pressure for given |
---|
44 | air temperature |
---|
45 | fluxoutput.f writes out mass fluxes on the output grid (grid_flux_date) |
---|
46 | getfields.f manages reading of new wind fields if required, and calls all |
---|
47 | routines that do calculations on the input grids |
---|
48 | getrb.f computes quasilaminar sublayer resistance to dry deposition |
---|
49 | of gases |
---|
50 | getrc.f calculates surface resistance to dry deposition of gases |
---|
51 | getvdep.f calculates dry deposition velocities |
---|
52 | gridcheck.f determines grid domain, resolution, etc., from GRIB file and |
---|
53 | checks whether dimensions comply with settings in includepar |
---|
54 | gridcheck_nests.f same as gridcheck.f, but for the nested grids |
---|
55 | hanna.f parameterization of the turbulent velocity variance and |
---|
56 | the respective timescales; Langevin equation for w'/sigw |
---|
57 | hanna1.f alternative model to hanna.f: Langevin equation for w' |
---|
58 | drift correction velocity after Wilson |
---|
59 | hanna_short.f same as hanna.f, but only for the vertical wind |
---|
60 | includecom include file containing important global variables |
---|
61 | includeconv include file containing variables used in the convection scheme |
---|
62 | includeinterpol include file containing variables used for interpolation in |
---|
63 | routines called from advance.f |
---|
64 | includehanna include file used for turbulence parameterization |
---|
65 | includepar include file containing all globally used parameters |
---|
66 | init_domainfill.f distributes particles homogeneously in the computation domain |
---|
67 | initialize.f initializes the turbulence statistics for a particle |
---|
68 | interpol_all.f interpolates all data needed in advance.f for two levels |
---|
69 | within the PBL and for all surface data |
---|
70 | interpol_all_nests.f same as interpol_all.f, but for the nested grids |
---|
71 | interpol_misslev.f interpolates for a level in the PBL that was not provided |
---|
72 | by interpol_all.f, because particle has moved out of the |
---|
73 | two sandwiched layers |
---|
74 | interpol_misslev_nests.f same as interpol_misslev.f, but for the nested grids |
---|
75 | interpol_rain.f interpolates large-scale and convective precipitation, |
---|
76 | and of total cloud cover |
---|
77 | interpol_rain_nests.f same as interpol_rain.f, but for the nested grids |
---|
78 | interpol_vdep.f interpolates the deposition velocity |
---|
79 | interpol_vdep_nests.f same as interpol_vdep.f, but for the nested grids |
---|
80 | interpol_wind.f interpolates winds above the PBL and calculates the wind's |
---|
81 | standard deviation for grid points around particle location |
---|
82 | interpol_wind_nests.f same as interpol_wind.f, but for the nested grids |
---|
83 | interpol_wind_short.f interpolates winds above the PBL |
---|
84 | interpol_wind_short_nests.f same as interpol_wind_short.f, but for nested grids |
---|
85 | juldate.f compute julian date from calendar date |
---|
86 | mean.f calculates the mean and standard deviation of a field |
---|
87 | obukhov.f calculates Obukhov length from surface heat flux |
---|
88 | openouttraj.f opens the output files for the plume trajectory output |
---|
89 | openreceptors.f opens output files for receptor location output, and writes |
---|
90 | out some basic information (location and names of receptors) |
---|
91 | (files receptor_conc and receptor_pptv) |
---|
92 | outgrid_init.f initializes the output grid and calculates volume and area |
---|
93 | of output grid cells |
---|
94 | outgrid_init_nest.f same as outgrid_init.f, but for the nested output grid |
---|
95 | part0.f calculates time-independent factors for the dry deposition |
---|
96 | of particles |
---|
97 | partdep.f calculates dry deposition velocities for particles |
---|
98 | partoutput.f writes out the particle positions to files partposit_date, or |
---|
99 | partposit_end |
---|
100 | partoutput_short.f dumps particle output in a compact format; particles are |
---|
101 | uniquely numbered |
---|
102 | pbl_profile.f calculates surface stress and sensible heat flux using |
---|
103 | the profile method |
---|
104 | plumetraj.f calculates a plume centroid trajectory and manages particle |
---|
105 | clustering; writes output to file trajectories.txt |
---|
106 | psih.f stability correction term for heat |
---|
107 | psim.f stability correction term for momentum |
---|
108 | qvsat.f saturation specif. humidity at given pressure and temperature |
---|
109 | raerod.f calculation of the aerodynamic resistance ra to dry deposition |
---|
110 | random.f subroutines needed for generation of normally distriubted |
---|
111 | random numbers |
---|
112 | readageclasses.f reads number and time intervals of age classes to be used |
---|
113 | readavailable.f reads, which wind fields are available during the modelling |
---|
114 | period |
---|
115 | readcommand.f reads basic user commands, e.g. start and end of simulation, |
---|
116 | frequency of output, etc. |
---|
117 | readdepo.f reads parameters needed for dry deposition of gases |
---|
118 | readlanduse.f reads landuse inventory and the respective roughness lengths |
---|
119 | readoutgrid.f reads the definition of the output domain |
---|
120 | readoutgrid_nest.f same as readoutgrid.f, but for the nested output grid |
---|
121 | readpartpositions.f reads particle positions from a previous run's |
---|
122 | partposit_end file, in order to initialize particle positions |
---|
123 | for the new run |
---|
124 | readpaths.f reads the path names of input/output files and wind fields |
---|
125 | readreceptors.f reads names and coordinates of receptor points for which the |
---|
126 | parabolic kernel shall be applied |
---|
127 | readreleases.f reads release specifications (start and end of release, |
---|
128 | coordinates, number of particles, masses released, etc.) |
---|
129 | readspecies.f reads physical and chemical properties of gases and aerosols |
---|
130 | readwind.f reads the ECMWF meteorological data fields; contains the |
---|
131 | calls to GRIB decoding routines |
---|
132 | readwind_nests.f same as readwind.f, but for the nested grids |
---|
133 | redist.f redistributes particles according to convective fluxes |
---|
134 | releaseparticles.f releases the particles during the simulation; called every |
---|
135 | lsynctime seconds |
---|
136 | richardson.f calculates convective velocity scale and PBL height using |
---|
137 | critical Richardson number concept |
---|
138 | scalev.f computes friction velocity from surface stress |
---|
139 | shift_field.f shifts global fields by nxshift grid cells, and repeats |
---|
140 | westernmost grid points at easternmost domain boundary |
---|
141 | shift_field_0.f same as shift_field.f, but for some fields with 2 dimensions |
---|
142 | only (e.g. topography) |
---|
143 | skplin.f skips n lines of a given input file |
---|
144 | sort2.f sorts particles according to their coordinates |
---|
145 | timemanager.f time management of FLEXPART model simulation: determines when |
---|
146 | particles are released and advected, when concentrations |
---|
147 | calculations are done and concentrations written out, and |
---|
148 | calls all the respective subroutines |
---|
149 | verttransform.f transforms 3-d fields from eta coordinates to Cartesian |
---|
150 | terrain-following coordinates |
---|
151 | verttransform_nests.f same as verttransform.f, but for the nested grids |
---|
152 | wetdepo.f calculates the wet deposition |
---|
153 | wetdepokernel.f assigns the deposition from an individual particle to the |
---|
154 | deposition fields using a uniform kernel of bandwidths dx, dy |
---|
155 | wetdepokernel_nest.f same as wetdepokernel.f, but for the nested output grid |
---|
156 | windalign.f transforms turbulent velocities from along- and cross-wind |
---|
157 | components to Cartesian u and v components |
---|
158 | writeheader.f creates the file header and writes important information about |
---|
159 | the model run in it |
---|
160 | writeheader_nest.f same as writeheader.f, but for the nested output grid |
---|