@@ -9,9 +9,9 @@ This issue refers to Merge Request (insert MR reference)
- [ ] Is the module documentation sufficiently detailed?
- [ ] Is it mergeable? (i.e., there should be no merge conflicts)
- [ ] Are the build instructions sufficient? (If not the MR should be updated)
- [ ] Are the build instructions sufficient - source code locations, build instructions, etc.? (If not the MR should be updated)
- [ ] Did it pass the tests? (Are there unit/regression tests? Do they pass?)
- [ ] If it introduces new functionality, is it tested? (Unit tests?)
- [ ] Is it well formatted? (typos, line length, brackets,...)
- [ ] Is all new source code sufficiently documented? (functions, their arguments,...)
- [ ] Did it change any interfaces? Only additions are allowed without a major version increment (if >v1.0). Changing file formats also requires a major version number increment.
- [ ] Is there a description of any applications the module has? (This is a hard requirement for E-CAM PDRAs)
The information in this section describes OpenPathSampling as a whole.
Information specific to the additions in this module are in subsequent
sections.
Language
Python (2.7)
[+Python (3.6)]
Documentation Tool
Sphinx, numpydoc format (ReST)
Application Documentation
http://openpathsampling.org
Relevant Training Material
http://openpathsampling.org/latest/examples/
Licence
LGPL, v. 2.1 or later
.. contents:: :local:
This module implements the "shooting from the top" algorithm as detailed in `the paper "Transition path sampling of rare events by shooting from the top" <http://dx.doi.org/10.1063/1.4997378>`_.
Purpose of Module
_________________
The purpose of this algorithm is to increase the number of generated transitions in a transition path sampling simulation by exclusively shooting from the transition state ensemble (TSE)/the top of the barrier (hence the name). Naturally this only works if the approximate location of the TSE is already known and can be given as a function of the atomic coordinates. In this module any `openpathsampling.Volume`_ object can be used by the user to define the shooting range volume. This enables the user to define the shooting range for example as a function of one or more collective variables. See also the :ref:`tse_module` for finding the TSE.
The implementation in this module includes:
* A ``ShootingRangeSelector`` subclass of ``openpathsampling.ShootingPointSelector`` to pick shooting points only in the predefined shooting range volume.
Background Information
______________________
This module builds on OpenPathSampling, a Python package for path sampling
simulations. To learn more about OpenPathSampling, you might be interested in
Tests in OpenPathSampling and sr_shooter use the `nose`_ package.
.. IF YOUR MODULE IS IN A SEPARATE REPOSITORY
To test this module you need to first install OpenPathSampling, then download the source files for this package (see the ``Source Code`` section below) and install it using
``python setup.py install`` or ``pip install -e .`` from the root directory of the package.
In the root folder then type ``nosetests`` to test the module using the `nose`_ package.
Examples
________
| There are two `example jupyter notebooks <https://gitlab.e-cam2020.eu/hejung/sr_shooter/tree/master/examples>`_ in the example directory of the repository:
| One shows the `general setup of a two way shooting transition path sampling with a shooting range on a toy system <https://gitlab.e-cam2020.eu/hejung/sr_shooter/blob/master/examples/toy_example.ipynb>`_.
| The other is a `comparison between one way shooting and two way shooting from the shooting range <https://gitlab.e-cam2020.eu/hejung/sr_shooter/blob/master/examples/OneWayShooting_vs_TwoWayShooting.ipynb>`_ and shows that path space is explored faster with two way shooting when using a (well placed) shooting range. The reason beeing that the shots initiated at the barrier top have a high probability of success and two way shooting decorrelates faster (if using randomized velocities even faster).
Source Code
___________
The source code for this module can be found in https://gitlab.e-cam2020.eu/hejung/sr_shooter.
.. CLOSING MATERIAL -------------------------------------------------------
This is a collection of the modules that have been created by E-CAM community within the area of Electronic Structure. This documentation is created using ReStructured Text and the git repository for the documentation
source files can be found at
https://gitlab.e-cam2020.eu/e-cam/Electronic-Structure-Modules which are
https://gitlab.e-cam2020.eu/e-cam/E-CAM-Library which are
public and open to contributions.
In the context of E-CAM, the definition of a software module is any piece of software that could be of use to the E-CAM community and that encapsulates some additional functionality, enhanced performance or improved usability for people performing computational simulations in the domain areas of interest to us.
@@ -27,7 +27,7 @@ This is a collection of the modules that have been created by E-CAM community
within the area of Meso- and Multi-scale Modelling. This documentation is
created using ReStructured Text and the git repository for the documentation
source files can be found at
https://gitlab.e-cam2020.eu/e-cam/Meso-Multi-Scale-Modelling-Modules which are
https://gitlab.e-cam2020.eu/e-cam/E-CAM-Library which are
public and open to contributions.
In the context of E-CAM, the definition of a software module is any piece of software that could be of use to the E-CAM community and that encapsulates some additional functionality, enhanced performance or improved usability for people performing computational simulations in the domain areas of interest to us.
One of primary activity of E-CAM is to engage with pilot projects with industrial partners. These projects are conceived
together with the partner and typically are to facilitate or improve the scope of computational simulation within the
partner. The related code development for the pilot projects are open source (where the licence of the underlying
software allows this) and are described in the modules associated with the pilot projects.
The `pilot project <https://www.e-cam2020.eu/pilot-project-ibm/>`_ of the WP3 in collaboration with IBM_ is
related to quantum computing and improvements of the quantum computer technology.
One of our main topic was development of software for construction of control pulses necessary for operating quantum logical gates
between qubits in a universal quantum computer using the Local Control Theory. [PLCT]_
More information can be found on the `pilot project <https://www.e-cam2020.eu/pilot-project-ibm/>`_ web site.
Below are listed the pilot project modules created so far:
.. toctree::
:glob:
:maxdepth: 1
...
...
@@ -91,12 +106,8 @@ Pilot Projects
./modules/OpenQubit/readme
**OpenQubit** is an extension to the LocConQubit code for the construction of controlled pulses in a more realistic environment with
disipating effects.
dissipating effects.
One of primary activity of E-CAM is to engage with pilot projects with industrial partners. These projects are conceived
together with the partner and typically are to facilitate or improve the scope of computational simulation within the
partner. The related code development for the pilot projects are open source (where the licence of the underlying
software allows this) and are described in the modules associated with the pilot projects.
Extended Software Development Workshops
=======================================
...
...
@@ -105,7 +116,7 @@ ESDW Maison de la Simulation (Paris 2016)
-----------------------------------------
The first Quantum Dynamics ESDW was held in June-July 2016 at the `Maison de la Simulation`_ near Paris. 10 students
and 6 tutors, including Dr. Ivano Tavernelli representing the industrial partner of the WP3, IBM, worked to develop
and 6 tutors, including Dr. Ivano Tavernelli representing the industrial partner of the WP3, IBM_, worked to develop
software modules in the following areas:
- Exact quantum propagation methods for low dimensional systems to be used to provide benchmarks for approximate schemes
...
...
@@ -122,7 +133,7 @@ centered on presentations made by the students and the senior participants. The
development, including the Git repository, and tools for the documentation (Doxygen) and performance analysis
were presented by E-CAM staff members and participants were instructed on their use via tutorials.
The program was further enriched by the interactions with experts on software and hardware development working
at La Maison de la Simulation who gave talks on topics such as architectures and programming paradigms and the
at Maison de la Simulation who gave talks on topics such as architectures and programming paradigms and the
use of advanced visualization tools such as the Image wall hosted by the Maison de la Simulation.
.. _Maison de la Simulation: http://www.maisondelasimulation.fr/en/index.php?a
...
...
@@ -130,7 +141,36 @@ use of advanced visualization tools such as the Image wall hosted by the Maison
ESDW University College Dublin (2017)
-------------------------------------
The second Quantum Dynamics ESDW was held in July 2017 at the University College Dublin.
The second Quantum Dynamics ESDW was held in July 2017 (first part) and March 2018 (wrap up meeting) at
`University College Dublin <http://www.ucd.ie/>`_. 21 participants, including the representative of WP3’s
current industrial partner IBM_, worked to develop and upload on the E-CAM repositories software
modules in the following areas:
- Calculation of approximate quantum time correlation functions via the PaPIM code;
- Mixed quantum-classical algorithms, with specific reference to Surface Hopping and Wigner-Liouville methods;
- Implementation of the factorization scheme for quantum dynamics in CPMD_;
- Interfacing of quantum codes with electronic structure codes;
- Grid based exact propagation schemes;
- Design and optimization of qubit control pulses.
Teams of coders assisted by senior tutors, E-CAM’s Software Manager, Dr. Alan O’Cais, and WP3 Software
Developer, Dr. Liang Liang, performed the work.
Specific discussions on optimal parallelization strategies for the E-CAM’s quantum dynamical codes
(PaPIM and Quantics) were also initiated and implemented.
The coding work was accompanied by scientific presentations on the themes of the workshops and by
the instruction from E-CAM personnel on the CoE’s tools for software production, testing, documentation
and maintaining.
The participants benefitted also from the proximity of software and hardware experts from the
`ICHEC <https://www.ichec.ie/>`_ supercomputing center that offered, in particular, a set of
lectures and tutorials on OpenMP parallelization.
.. _IBM: https://www.zurich.ibm.com/
List of available Modules
=========================
...
...
@@ -142,7 +182,7 @@ List of available Modules
./modules/SODLIB/sod_readme
The **SodLib** module provides exact wavefunction propagation using the second-order differencing (SOD) integrator
scheme to solve the time-dependent Schroedinger equation. This routine has been implemented and tested as an added
scheme to solve the time-dependent Schrödinger equation. This routine has been implemented and tested as an added
functionality within the Quantics_ quantum dynamics package.
.. toctree::
...
...
@@ -163,19 +203,28 @@ routine has been implemented and tested as an added functionality within the Qu
The **PhysConst** enables the use of physical constants and the correct isotopic masses.
.. toctree::
:glob:
:maxdepth: 1
./modules/QuantumModelLib/readme
The **QuantumModelLib** use potential energy surfaces extracted from the literature and can be linked to quantum dynamics codes.
PaPIM
-----
PaPIM is a code for calculation of equilibrated system properties (observables). Some properties can be directly obtained from
the sampled system distribution function, while properties that depends on the exact dynamics of the system, such as the structure
factor, [Mon2]_ infrared spectrum [Beu]_ or reaction rates, can be easily obtained from corresponding correlation functions.
PaPIM code samples either the quantum (Wigner) or classical (Boltzmann) density functions and calculates the corresponding correlation
functions. The code is highly parallelized which makes it suitable for use on large HPC machines.
The code's modular structure enables an easy update/change of any of its modules as well as that the coded functionalities
can be used independently of each other.
the distribution function of the system, while properties that depends on the exact dynamics of the system, such as the structure
factor, [Mon2]_ infrared spectrum [Beu]_ or reaction rates, can be obtained from the evolution of appropriate time correlation functions.
PaPIM samples either the quantum (Wigner) or classical (Boltzmann) density functions and computes approximate quantum and
classical correlation functions.
The code is highly parallelized and suitable for use on large HPC machines.
The code's modular structure enables an easy update/change of any of its modules.
Furthermore the coded functionalities can be used independently of each other.
The code is specifically design with simplicity and readability in mind to enable any user to easily implement its own functionalities.
The code has been extensively used for the calculation of the infrared spectrum of the :math:`\text{CH}_{5}^{+}` cation in gas phase,
while recently new calculations on water dimer, and protonated water dimer systems were started.
while recently new calculations on the water dimer, and protonated water dimer systems were started.
.. toctree::
...
...
@@ -184,11 +233,13 @@ while recently new calculations on water dimer, and protonated water dimer syste
./modules/PaPIM/readme
**PaPIM** is the current version of the code with all included functionalities.
**PaPIM** is the current version of the code, including all available functionalities.
The following modules make up the PaPIM code and can be used as stand-alone software libraries for e.g. sampling of the Wigner distribution,
sampling of the classical Boltzmann distribution, or building MPI parallelized Fortran codes. Such libraries are rarely available to the community in a Fortran program format.
Some of the functionalities coded within the code are specifically design for computation of infrared spectra, and serve as a template
The following modules make up the PaPIM code and can be used as stand-alone software libraries for e.g.
sampling of the Wigner distribution, sampling of the classical Boltzmann distribution, or building MPI
parallelized Fortran codes.
Such libraries are rarely available to the community in a Fortran program format.
Some of the functionalities within the code are specifically designed for computation of infrared spectra, and serve as a template
for the user to implement its own functionalities.
...
...
@@ -198,8 +249,8 @@ for the user to implement its own functionalities.
./modules/PIM_wd/readme
**PIM_wd** samples, via the Phase Integration Method, [Mon1]_ the system's quantum Wigner density distribution function. The distribution is
given in the phase-space representation and is the basis for any further calculation of system's quantum observables.
**PIM_wd** samples, via the Phase Integration Method, [Mon1]_ the system's quantum Wigner density function.
The function is given in the phase-space representation and is the basis for any further calculation of system's quantum observables.
.. toctree::
...
...
@@ -231,7 +282,9 @@ Results obtained from classical sampling can be used to assess the relevance of
**PotMod** is a library of potential energy functions and interfaces for external potential energy calculation codes.
Currently available in the library are the harmonic and Morse potentials (different molecular systems can be simulated depending on parameters
provided by the user); empirical potential of the ground state of :math:`\text{CH}_{5}^{+}` based on high level
electronic structure calculations [Jin]_, and interface to the ab initio CP2K_ code.
electronic structure calculations [RJin]_.
.. , and interface to the ab initio `CP2K code <https://www.cp2k.org/>`_.
.. _CP2K: https://www.cp2k.org/
...
...
@@ -253,20 +306,22 @@ It also contains a library of adapted MPI subroutines for easier programming of
./modules/Openmpbeads/readme
**Openmpbeads** is a patch to the PaPIM code which enables parallelization of the sampling of the
polyer chains within the PIM algorithm.
polymer chains within the PIM algorithm, improving efficiency in sampling of the Wigner density.
References
==========
.. [Mon1] M. Monteferrante, S. Bonella, G. Ciccotti `Linearized symmetrized quantum time correlation functions calculation via phase pre-averaging`_ *Mol. Phys.* **109** (2011) 3015
.. [Mon2] M. Monteferrante, S. Bonella, G. Ciccotti `Quantum dynamical structure factor of liquid neon via a quasiclassical symmetrized method`_ *J. Chem. Phys.* **138** (2013) 054118
.. [Beu] J. Beutier, M. Monteferrante, S. Bonella, R. Vuilleumier, G. Ciccotti `Gas phase infrared spectra via the phase integration quasi-classical method`_ *Mol. Sim.* **40** (2014) 196
.. [Jin] Jin, Braams, Bowman `An ab Initio Based Global Potential Energy Surface Describing :math:'\text{CH}_{5}^{+} \rightarrow \text{CH}_{3}^{+} + \text{H}_{2}'`_ *J. Phys. Chem. A* **110** (2006) 1569
.. _Linearized symmetrized quantum time correlation functions calculation via phase pre-averaging: http://dx.doi.org/10.1080/00268976.2011.619506
.. _Quantum dynamical structure factor of liquid neon via a quasiclassical symmetrized method: http://dx.doi.org/10.1063/1.4789760
.. _Gas phase infrared spectra via the phase integration quasi-classical method: http://dx.doi.org/10.1080/08927022.2013.843776
.. _An ab Initio Based Global Potential Energy Surface Describing :math:'\text{CH}_{5}^{+} \rightarrow \text{CH}_{3}^{+} + \text{H}_{2}': pubs.acs.org/doi/abs/10.1021/jp053848o
.. Jin, Braams, Bowman `An ab Initio Based Global Potential Energy Surface Describing :math:'\text{CH}_{5}^{+} \rightarrow \text{CH}_{3}^{+} + \text{H}_{2}'`_ *J. Phys. Chem. A* **110** (2006) 15
.. _E-CAM: https://www.e-cam2020.eu/
.. [PLCT] B. F. E. Curchod, T. J. Penfold, U. Rothlisberger, I. Tavernelli *Phys. Rev. A*
.. This is an example of what a *module* for E-CAM looks like. Please add to this template any additional items that are
.. straightforward to fill out in the general case. You are free add any level of complexity you wish (within the bounds of
.. what ReST_ can do).
.. To add your module, fork this GitLab repository to your account on GitLab. Clone your repository, make a feature branch
.. and add a directory that will contain your module information. Copy this :download:`readme.rst` file there. Push your
.. changes back to GitLab and immediately open a merge request from your feature branch against our repository. We can
.. discuss your module in the merge request and help you get it accepted.
.. Add technical info as a sidebar and allow text below to wrap around it
Purpose of Module
_________________
LocConQubit is a code for constructing controlled pulses on isolated qubit systems that can either drive the population
**LocConQubit** is a code for constructing controlled pulses on isolated qubit systems that can either drive the population
between specific qubit states or work as a logical gates between qubits.
LocConQubit implements the Local Control Theory (LCT) which generates the required pulses on-the-fly.
The generated pulses can be further post-processed with a variety of tools accompanying the LocConQubit module in order
...
...
@@ -42,7 +32,7 @@ Local Control Theory (LCT)
______________________________
In general Local Control Theory is an on-the-fly procedure for updating the time-dependent Hamiltonian (:math:`\hat{H}(t)`) to achieve
a population transfer from some initial quantum state to a designated quantum target state (:math:`| \psi \rangle`). [LCT1]_ [LCT2]_
population transfer from some initial quantum state to a designated quantum target state (:math:`| \psi \rangle`). [LCT1]_ [LCT2]_
LCT achieves its full capacity if the time-dependent component of the full system Hamiltonian :math:`\hat{H}(t)` can be decomposed as an external perturbation
(:math:`V^{\prime}(t) \times \hat{H}^{\prime}`) acting on a system with a time-independent Hamiltonian (:math:`\hat{H}_{0}`),
...
...
@@ -58,7 +48,7 @@ LCT in this case constructs a time-dependent perturbation :math:`V^{\prime}(t)`
which will achieve the required population transfer from any initial state to the :math:`| \psi \rangle` target state.
The new time-dependent potential component :math:`V^{\prime}(t)` updates the time-dependent component of the full Hamiltonian
describing the evolution of the system with the time-dependent Schrödinger equation
describing the evolution of the system via the time-dependent Schrödinger equation