Download
Source Code
You can download the latest stable version, distributed under the
GNU General Public License:
Download Polyphemus, version 1.7.4 (2010-06-16), about 1,7MB of
compressed archive (see below for quick installation).
In order to be kept informed of the release of a new version or a patch, you are recommended to subscribe to our announcement mailing list (low traffic) at the polyphemus-announce subscription page.
Documentation
User
You are strongly advised to download and read Polyphemus User's Guide. This is the main documentation and the starting point for beginners. It describes the installation.
A reference documentation for AtmoPy has been generated using Epydoc. You are invited to browse it online.
The main parameterizations in use are described in AtmoData scientific documentation. In addition, this document briefly describes transport and scavenging in Polair3D and Gaussian models.
Developer
For developers:
- Browse SeldonData
documentation online
, or download it; - Browse AtmoData documentation
online
, or download it (the documentation
available for download also contains the documentation for Fortran
routines); - Browse AtmoData documentation
for Fortran routines
.
Installation
The first step is to expand the archive you downloaded:
tar xjvf Polyphemus-[version].tar.bz2
This will create a directory named Polyphemus-[version].
The library AtmoPy makes calls to a C++ program called extract_configuration. You need to compile it to have AtmoPy fully installed:
cd Polyphemus-[version]/include/atmopy/talos
../../../utils/scons.py
For almost every program, instead of makefiles, SConstruct files are provided (further informations about SCons and our support for it are given in the user's guide). Please read the user's guide to perform a complete installation.
To test the whole system, refer to the test cases on this website (Polair3D, Gaussian and Castor test cases).
Release Notes
From version 1.7 (2010-05-07) to version 1.7.4 (2010-06-16):
-
Bug fixes
- The initial and final times provided to the gaseous chemistry solvers of 'ChemistryRACM', 'ChemistryRADM', 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC' could be improperly modified when using the default photolysis rates because a related temporary variable was not systematically initialized.
- Within the aerosol modules 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC', the initial and final times provided to the gaseous chemistry solvers could be improperly modified during the computation of the zenithal angles when using the default photolysis rates.
- The initial and final times provided to the gaseous chemistry solvers of 'ChemistryRACM' and 'ChemistryRADM' could be improperly modified during the computation of the zenithal angles when using the default photolysis rates.
- In the module 'AerosolRACM_SIREAM_AEC', some UNIFAC parameters were erroneously initialized.
From version 1.6 (2009-11-13) to version 1.7 (2010-05-07):
-
General
- Improved the management of plume rise parameters for point sources. In the configuration files for point sources, 'Diameter' replaces 'Section'.
-
Extended the parallelization to:
- the module 'ChemistryRADM' with MPI and OpenMP,
- the driver 'OptimalInterpolationDriver' with MPI.
-
Gaussian models
- In the model 'GaussianPlume', added the possibility to have an initial sigma for line sources.
- In the model 'GaussianPuff', simplified the computation of loss processes, in particular dry deposition with Chamberlain model.
- Added the reflection factor for the model 'PuffChemistry', to allow computation of the dry deposition with the Overcamp model in case there is in-puff chemistry.
-
Aerosol
- Updated UNIFAC parameters and chemical surrogates representation.
- Improved the computational efficiency of the module 'AerosolRACM_SIREAM_AEC'.
-
Driver
-
In the driver 'MonteCarloDriver', added:
- support for a model parallelized with MPI,
- the ability to save in a file the generated random numbers,
- support for a perturbation of the wind angle.
-
In the driver 'MonteCarloDriver', added:
-
Preprocessing
- Modified the program 'discretization' to have half sources at extremities of a segment.
-
Plume-in-grid model
- Added the loss processes.
-
Bug fixes
- The modules 'ChemistryRACM', 'ChemistryRADM', 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC' failed to integrate over a time step whose initial and final dates were in two different years.
- In the module 'AerosolRACM_SIREAM_AEC', the configuration file section '[saturation_pressure_mass]' could be misread.
-
In the library 'AtmoData':
- an error in the function 'LonLatToWRFLccInd' resulted in an offset in the Lcc projection of 'WRF-meteo'.
- the function 'ComputeAttenuation_LWC' miscalculated the attenuation when clouds reached the upper model level.
- In the model 'GaussianPlume', when several line sources were used, the line source and the discretized source were not working when combined together.
- Memory leak problems could arise with the 'GaussianPuff' model.
From version 1.5 (2009-05-20) to version 1.6 (2009-11-13):
-
General
-
Overhauled the parallelization
- the MPI parallelization of the modules 'ChemistryRACM' and 'SplitAdvectionDST3' was simplified and the modules 'DiffusionROS2', 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC' have been parallelized with MPI,
- the modules 'ChemistryRACM', 'SplitAdvectionDST3', 'DiffusionROS2', 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC' have also been parallelized with the shared memory parallel model of OpenMP,
- patches of the external module 'ISORROPIA' have been added to comply with the OpenMP parallelization of 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC'.
-
Added two SCons options for the command line
- to set up the C compiler, and
- to compile with the OpenMP and/or the MPI parallelization library.
-
Overhauled the parallelization
-
Preprocessing
- Added support for WRF, with "meteo/WRF-meteo.cpp".
-
Lagrangian stochastic models
- Added the model 'LagrangianTransport' to solve stochastically the advection-diffusion of gaussian kernel particles. For the particles, 'Horker' and 'Fokker-Planck' formulations have been implemented.
-
Gaussian models
- Added support for continuous line sources in the model 'GaussianPlume'.
-
Modified the program "discretization.cpp".
- Now, several independant segments can be discretized, in addition to a single broken line.
- The emission rate (or quantity) must now be specified per unit of length, in mass/s/m (resp. mass/m).
- The number of points to discretize each segment now includes the segment nodes.
-
Aerosol
- For the module 'AerosolRACM_SIREAM', added a patch for ISORROPIA 1.7 (2009-05-27) to be applied if the OpenMP parallelization is used.
- For the module 'AerosolRACM_SIREAM_AEC', added a new patch for the last release of ISORROPIA 1.7 (2009-05-27).
- For the modules 'AerosolRACM_SIREAM' and 'AerosolRACM_SIREAM_AEC', added the display option "Show_configuration".
-
Bug fixes
- When compiling a program using an aerosol module, the SCons command line option "nacl" was implicitly always set to "yes".
- In the module 'SplitAdvectionDST3', the boundary conditions on the lowest and highest levels were not correctly assigned.
- In the preprocessing program MM5-meteo, results were shifted with an offset of 0.5 cell.
- The programs polair3d-decay, polair3d-siream, polair3d-siream-aec and puff_aer could encounter a segmentation fault when compiled with recent versions of GNU GCC (posterior to 4.3).
- In the simple aqueous submodule of the module 'AerosolRACM_SIREAM', the sulfate concentrations were wrongly computed because of a sign error.
- The program compute_tab that computes the Mie tabulation for the postprocessing program optics could abort with a segmentation fault.
- In the model 'Polair3DAerosol', some configuration checkings were not performed.
- In the module 'AerosolRACM_SIREAM', 'option_adaptive_time_step' was not always explicitly initialized.
From version 1.4 (2008-11-20) to version 1.5 (2009-05-20):
-
General
- Added the Python module 'ensemble_generation'.
-
Preprocessing
- "meteo" and "attenuation" were not able to treat properly ECMWF data created after 2006-02-02. The size of the table containing the hybrid coefficients was indeed supposed to be always equal to 61. Now, this size is determined directly from the actual file "hybrid_coefficients.dat".
- Introduced a new parameterization to compute the critical relative humidity in the program "attenuation".
- In the programs "gaussian_deposition" and "gaussian_deposition_aer", added an option "file" to read the coefficients and deposition velocities in a file with all meteorological situations (examples are "deposition.dat" and "scavenging.dat"). Also added a keyword "Velocity_part" in the configuration file, to mention whether the diffusive or total part of the deposition velocity is given. In the case it is "diffusive", the gravitational settling velocity is computed.
- Modified the programs "discretization" and "discretization_aer" to match the changes in the point sources management: now there can be a list of species, along with a list of corresponding rates or quantities.
- Added the ability to multiply the boundary layer height by a constant in the Troen & Mahrt parameterization.
-
Driver
- Modified the perturbation scheme so that fields with two values per step ('_i' and '_f') are properly handled in 'AssimilationDriver', 'PerturbationManager' and 'MonteCarloDriver'.
- In the drivers 'EnKFDriver', 'RRSQRTDriver' and 'MonteCarloDriver', introduced a more complete re-initialization before any call to the model's integration over one time step. This may be needed for the model to behave properly.
-
Gaussian models
- Added an option for subcycling of chemistry in 'GaussianPuff'.
- Added an option to save the total plume mass in a binary file.
-
Plume-in-grid model
- Added an alternative method to take into account background concentrations for puff chemistry with the plume-in-grid model (option "With_chemistry_feedback").
- Added an alternative method to take into account background concentrations for puff chemistry with the plume-in-grid model (option "With_chemistry_feedback").
-
Other models
- Added the option of adaptive time stepping for RACM, RACM-SIREAM and RACM-SIREAM-AEC gaseous chemistry.
- In 'Polair3DTransport', 'Polair3DChemistry' and 'Polair3DAerosol', moved the computation and the transformation of a few fields from 'InitStep' to 'Forward' so that more raw input fields may be perturbed.
- The aerosol module 'AerosolRACM_SIREAM' now supports parallel computing. Corrected and updated parallel computing for the aerosol module 'AerosolRACM_SIREAM_AEC'.
- In the aerosol modules, the increments of bulk concentrations computed by VSRM are now distributed among sections proportionally to the initial particle distribution.
-
Postprocessing
- Initial import of class 'Source' and several related functions useful to display point sources in AtmoPy.
- Added functions 'fac2', 'fac5', 'nmse_1', 'mg', 'vg' and 'fmt'. Renamed 'nmse' to 'rnmse_2' in AtmoPy.
-
Bug fixes
- In the aerosol module 'AerosolRACM_SIREAM', the redistribution of concentrations in the sections after the aqueous phase computation was not correct.
- Significant differences in the results of the parallelized and serialized versions of programs including the model 'Polair3DChemistry' were encountered when the source splitting method was used. In the parallelized version, data useful to this method were not scattered properly throughout the parallel processes.
- 'InCloudWetDepositionFlux' and 'InCloudWetDepositionFlux_aer' were badly taken into account when parallel computing was used in the aerosol modules.
- When parallelized jobs of "polair3d-siream" or "polair3d-siream-aec" were terminated abnormally, shared memory segments were not properly deleted. Then, the user was not able to relaunch a similar job on the same machine. System ressources were also wasted.
- In the Gaussian puff model, when there was plume rise with the puff above the boundary layer, the standard deviations were computed at the wrong height.
- In the plume-in-grid model, the puff transfer was wrongly done when the puff was above the boundary layer.
- "optics" failed to read properly the OPAC files when they were preprocessed as indicated the user's guide, i.e. when '#' was replaced by ''.
- In the plume-in-grid model, puffs reaching the end of the simulation domain were improperly handled.
- WGRIB was requested in order to compile any program in "preprocessing/meteo/" although only "attenuation" and "meteo" need it.
From version 1.3.1 (2008-05-30) to version 1.4 (2008-11-20):
-
General
-
Replaced the directory "driver/" with:
- the directory "include/driver/" where the drivers are now located, and
- the directory "processing/" where several examples are given with their configuration files.
- Wrote a new support for SCons with improved portability and many options.
- Implemented constraints on the values read in the configuration file(s).
- Renamed the makefiles of Polyphemus to indicate the related compiler.
- Added "utils/check_observation".
- Improved the script "utils/format" so that the formatted files are no more overwritten in case no change was made in them.
-
Replaced the directory "driver/" with:
-
Gaussian models
- Added support of plume rise in the Gaussian puff model.
- Added chemistry for gaseous species in the Gaussian puff model (RACM mechanism).
- Added more plume rise formulae to use in the Gaussian plume/puff model.
- Added an alternative formula to compute the plume/puff standard deviations above the boundary layer.
- Added an alternative formula to compute the plume/puff standard deviations for elevated sources, in the case similarity theory is used.
- Gaussian models now use the point emission manager common to all models for gaseous species. The source configuration files slightly change. The Gaussian puff model automatically discretizes a continuous source into a series of puff, with a specified time step.
- Added the option "spatial_average" for the saver type "coordinates_list": it allows to save the averaged value over a given volume around the point instead of the exact concentration. This is relevant for Gaussian and plume-in-grid models.
-
Other models
- Added chemistry for gaseous species in the plume-in-grid model (RACM mechanism).
- In the plume-in-grid model, the mass transfered in a cell is the exact puff integral over the cell volume instead of an approximation of it.
- In the plume-in-grid model, added a reading of LUC file in order to determine whether to use the urban or rural formulae when using the Briggs parameterization.
- Added a new type of point emissions: temporal emissions. They are like continuous emissions, but with temporal factors that are read in a binary file and applied to the emission rate every given time step.
-
Drivers
- Added support for parallel computing in 'BaseDriver'.
- Added 'PlumeMonteCarloDriver' for Monte Carlo simulations with a Gaussian plume model. An example called "uncertainty-plume" is provided in "processing/gaussian/".
- Added 'PerturbationDriver' that allows to perturb input fields in a model.
- Strongly sped up 'OptimalInterpolationDriver'.
- In 'OptimalInterpolationDriver', added the ability to produce an analysis before the first simulation step (that is, with the initial conditions).
-
Modules
- 'SplitAdvectionDST3' and 'ChemistryRACM' now support parallel computing.
-
Preprocessing
- Corrected weekdays factors in a data file used by "emissions".
-
Bug fixes
- In 'SplitAdvectionDST3::Forward': the number of subcycles along z was taken as that along y.
- In the computation of the Lagrangian vertical time scale, the input parameters where taken in the wrong order in 'ComputeVerticalSigma'.
- The model behaved as if the photolysis data contained one level less than it actually has. In other words, the top altitude in the photolysis input data was simply ignored.
- In 'GaussianPlume::InitMeteo', the inversion height was determined with an uninitialized stability class.
- In 'GroundObservationManager::ReadStation', the paths to the station files could include unwanted trailing spaces.
- In 'SaverUnitDomain_assimilation::Init', the initial date could not be written in the "date file", even if an analysis was saved at that date.
Previous releases
- Source
- Polyphemus, version 1.7.3 (2010-06-04)
- Polyphemus, version 1.7.2 (2010-05-31)
- Polyphemus, version 1.7.1 (2010-05-27)
- Polyphemus, version 1.7 (2010-05-07)
- Polyphemus, version 1.6 (2009-11-13)
- Polyphemus, version 1.5 (2009-05-20)
- Polyphemus, version 1.4 (2008-11-20)
- Polyphemus, version 1.3.1 (2008-05-30)
- Polyphemus, version 1.3 (2008-05-19)
- Polyphemus, version 1.2.2 (2007-12-20)
- Polyphemus, version 1.2.1 (2007-11-05)
- Polyphemus, version 1.2 (2007-10-18)
- Polyphemus, version 1.1.1 (2007-06-21)
- Polyphemus, version 1.1 (2007-05-09)
- Polyphemus, version 1.1 alpha (unstable!) (2007-03-27)
- Polyphemus, version 1.0.1 (2006-12-14)
- Polyphemus, version 1.0 (2006-10-16)
- Polyphemus, version 0.2.1 (2005-09-01)
- Polyphemus, version 0.2(2004-10-13)
- Documentation
- User's Guide for version 1.6.
- User's Guide for version 1.5.
- User's Guide for version 1.4.
- User's Guide for version 1.3 and 1.3.1.
- User's Guide for version 1.2, 1.2.1 and 1.2.2.
- User's Guide for version 1.1 and 1.1.1.
- User's Guide for version 1.1 alpha (unstable!)
- User's Guide for version 1.0 and 1.0.1
- User's Guide for version 0.2 and 0.2.1

Support