[4224140] | 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 |
---|