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 that program and facilitates parameter handling, cluster building, structural optimization and parallel processing. In the current version, the EDAC code developed by F. J. García de Abajo, M. A. Van Hove, and C. S. Fadley (1999) is used for scattering calculations. Other code can be integrated as well.
Highlights
- angle or energy scanned XPD.
- various scanning modes including energy, polar angle, azimuthal angle, analyser angle.
- averaging over multiple symmetries (domains or emitters).
- global optimization of multiple scans.
- structural optimization algorithms: particle swarm optimization, grid search, gradient search.
- calculation of the modulation function.
- calculation of the weighted R-factor.
- automatic parallel processing using OpenMPI.
Installation
PMSCO is written in Python 3.6 and compatible with Python 2.7. The code will run in any recent Linux environment on a workstation or in a virtual machine. Scientific Linux, CentOS7, Ubuntu and Lubuntu (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 compiler with Doxypy is required to generate the documentation in HTML or LaTeX format.
The public distribution of PMSCO does not contain the 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. 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-2018 by Paul Scherrer Institut