109 lines
5.0 KiB
Markdown
109 lines
5.0 KiB
Markdown
Introduction
|
|
============
|
|
|
|
PMSCO stands for PEARL multiple-scattering cluster calculations and structural optimization.
|
|
It is a collection of computer programs to calculate photoelectron diffraction patterns,
|
|
and to optimize structural models based on measured data.
|
|
|
|
The actual scattering calculation is done by code developed by other parties.
|
|
PMSCO wraps around those programs and facilitates parameter handling, cluster building, structural optimization and parallel processing.
|
|
In the current version, the [EDAC](http://garciadeabajos-group.icfo.es/widgets/edac/) code
|
|
developed by F. J. García de Abajo, M. A. Van Hove, and C. S. Fadley (1999) is used for scattering calculations.
|
|
Instead of EDAC built-in routines, alternatively,
|
|
the PHAGEN program from [MsSpec-1.0](https://msspec.cnrs.fr/index.html) can be used to calculate atomic scattering factors.
|
|
|
|
|
|
Highlights
|
|
----------
|
|
|
|
- angle and energy scanned XPD.
|
|
- various scanning modes including energy, manipulator angle (polar/azimuthal), emission angle.
|
|
- averaging over multiple domains and emitters.
|
|
- global optimization of multiple scans.
|
|
- structural optimization algorithms: particle swarm optimization, genetic algorithm, grid scan, table scan.
|
|
- detailed reports and graphs of result files.
|
|
- calculation of the modulation function.
|
|
- calculation of the weighted R-factor.
|
|
- automatic parallel processing using OpenMPI.
|
|
- compatible with Slurm resource manager on Linux cluster machines.
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
PMSCO is written in Python 3.6.
|
|
The code will run in any recent Linux environment on a workstation or virtual machine.
|
|
Scientific Linux, CentOS7, [Ubuntu](https://www.ubuntu.com/)
|
|
and [Lubuntu](http://lubuntu.net/) (recommended for virtual machine) have been tested.
|
|
For optimization jobs, a cluster with 20-50 available processor cores is recommended.
|
|
The code requires about 2 GB of RAM per process.
|
|
|
|
Detailed installation instructions and dependencies can be found in the documentation
|
|
(docs/src/installation.dox).
|
|
A [Doxygen](http://www.stack.nl/~dimitri/doxygen/index.html) compiler with Doxypypy is required to generate the documentation in HTML format.
|
|
|
|
The easiest way to set up an environment with all dependencies and without side-effects on other installed software is to use a [Singularity](https://www.sylabs.io/guides/3.7/user-guide/index.html) container.
|
|
A Singularity recipe file is part of the distribution, see the PMSCO documentation for details, Singularity must be installed separately.
|
|
Installation in a [virtual box](https://www.virtualbox.org/) on Windows or Mac is straightforward using pre-compiled images with [Vagrant](https://www.vagrantup.com/).
|
|
A Vagrant definition file is included in the distribution.
|
|
|
|
The public distribution of PMSCO does not contain the [EDAC](http://garciadeabajos-group.icfo.es/widgets/edac/) code.
|
|
Please obtain the EDAC source code from the original author, copy it to the pmsco/edac directory, and apply the edac_all.patch patch.
|
|
|
|
|
|
License
|
|
=======
|
|
|
|
The source code of PMSCO is licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
|
Please read and respect the license agreement.
|
|
|
|
Please share your extensions of the code with the original author.
|
|
The gitlab facility can be used to create forks and to submit pull requests.
|
|
Attribution notices for your contributions shall be added to the NOTICE.md file.
|
|
|
|
|
|
Author
|
|
------
|
|
|
|
Matthias Muntwiler, <mailto:matthias.muntwiler@psi.ch>
|
|
|
|
Copyright
|
|
---------
|
|
|
|
Copyright 2015-2021 by [Paul Scherrer Institut](http://www.psi.ch)
|
|
|
|
|
|
Release Notes
|
|
=============
|
|
|
|
For a detailed list of changes, see the CHANGES.md file.
|
|
|
|
3.0.0 (2021-02-08)
|
|
------------------
|
|
|
|
- Run file interface replaces command line arguments:
|
|
- Specify all run-time parameters in a JSON-formatted text file.
|
|
- Override any public attribute of the project class.
|
|
- Only the name of the run file is needed on the command line.
|
|
- The command line interface is still available, some default values and the handling of directory paths have changed.
|
|
Check your code for compatibility.
|
|
- Integrated job scheduling with the Slurm resource manager:
|
|
- Declare all job arguments in the run file and have PMSCO submit the job.
|
|
- Graphics scripts for genetic chart and swarm population (experimental feature).
|
|
- Update for compatibility with recent Ubuntu (20.04), Anaconda (4.8) and Singularity (3.7).
|
|
- Drop compatibility with Python 2.7, minimum requirement is Python 3.6.
|
|
|
|
|
|
2.2.0 (2020-09-04)
|
|
------------------
|
|
|
|
This release breaks existing project code unless the listed refactorings are applied.
|
|
|
|
- Major refactoring: The 'symmetry' calculation level is renamed to 'domain'.
|
|
The previous Domain class is renamed to ModelSpace, Params to CalculatorParams.
|
|
The refactorings must be applied to project code as well.
|
|
- Included periodic table of elements with electron binding energies and scattering cross-sections.
|
|
- Various bug fixes in cluster routines, data file handling, and in the PHAGEN interface.
|
|
- Experimental sqlite3 database interface for optimization results.
|
|
|