Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 36 million developers.Sign up
This is a patch release containing the following bug fixes:
#2222 (Improved logic for matching multi-residue patches)
#2229 (Eliminated use of a deprecated shuffle function)
#2218 (Completed CPU implementation of LJPME)
#2231 (Fixed an error in parsing PSF files with multiple segments)
#2232 (Fixed error using 2D tabulated function with CustomHbondForce)
#2241 (Fixed bug involving nested cross products)
#2246 (Properly define GBSAOBC alpha beta gamma constants to be doubles)
#2248 (Fixed error using tabulated functions with a CustomGBForce)
#2255 (Improved behavior of energy minimizer)
#2257 (Fixed inconsistency in computing Ewald self energy)
#2266 (Fixed bug in vector operations in CustomIntegrator on CUDA)
This release adds lots of new features and improvements. Here are some of the most significant ones.
There is a new force class called RMSDForce, which computes the RMSD between the current positions and a reference structure over a set of particles. This is intended mainly for use with CustomCVForce. You can use it to implement various types of biasing forces that depend on an RMSD.
CustomIntegrator now allows expressions to involve vector functions such as cross products and dot products. This does a lot to expand the range of algorithms it's possible to implement with a CustomIntegrator.
Lots of new features have been added to the file importers. The CHARMM importer now supports the polarizable force field, and the Gromacs importer supports a larger set of features (functional forms, combination rules, virtual site types, etc.).
NonbondedForce has a new feature that is very useful for alchemical calculations. It can define global parameters, then automatically modify the charges and LJ parameters of particles based on them. In a constant pH simulation, for example, one could have a global parameter for each titratable site, and changing that parameter would interpolate between two states. This is much more efficient than directly modifying the particle parameters, which is what you had to do before.
This release also includes lots of less visible internal changes. Much of this is to clean up and simplify the code (eliminating thousands of lines in the process). It now requires a compiler that supports C++11, and that has enabled lots of simplification. There also are many changes to improve performance and overall behavior: tuning for Volta GPUs, reducing overhead for CustomIntegrators, making the energy minimizer more robust, improving the performance of custom forces on the CPU platform, and so on.
This release adds built in support for the Amber14 and CHARMM36 force fields. These are modern force fields that often produce more realistic results than the older ones. They also include parameters for other types of molecules that were not supported before, such as lipids and carbohydrates. That means you can now set up membrane simulations entirely in OpenMM without needing to define parameters in a different program.
To go with that, the Modeller class now has a routine for building lipid membranes. It provides built in support for POPC and POPE lipids. You can also build other types of membranes, even mixtures of multiple lipid types, by providing a PDB file with a pre-equilibrated membrane patch that can be tiled to form a membrane.
There is a new class, CustomCVForce, for applying forces based on collective variables. You already could use CVs via the Plumed plugin, but that has one big disadvantage: it's slow. This new class can do everything directly on the GPU, making it much faster. It takes the unique approach of using Force objects to define CVs. That means any function you can define with a Force object (including any of the custom forces) can be used as a collective variable. This is a very flexible approach, and it can compute lots of functions that aren't available in Plumed.
Defining virtual sites with the LocalCoordinatesSite class is more flexible than before. Previously you could define a virtual site based on the positions of any three particles. Now it supports arbitrary numbers of particles, so you can define virtual sites based on the positions of four or more other particles.
Another new feature is that CustomIntegrator lets you define tabulated functions and use them as part of your integration algorithm. This can be very useful for certain types of integrators.
A minor but very handy new feature is that Context.reinitialize() has an option to preserve state within the context. You should still avoid reinitializing the context more than necessary (it's slow), but when you need to do so, it is much easier than before.
This is a patch release that includes the following bug fixes:
#1731 (Fix substeps division in MTSIntegrator)
#1752 (Fixed error adding triclinic solvent boxes)
#1756 (Fixed bugs in multipoles with ZOnly axis type)
#1757 (Allow docs to build in Sphinx 1.3.1 and 1.5.1)
#1761 (Fix bug where CHARMM impropers did not respect toroidal boundary conditions)
#1767 (Fixed error with exclusions for Drude particles)
#1784 (Fixed bug accessing parameters for CustomHbondForce)
#1792 (Bug fixes to CustomHbondForce)
This is a major update with improved performance and lots of new features. Here are some of the most important ones.
Most custom forces now have the ability to compute derivatives of the energy with respect to arbitrary global parameters. This makes it possible to implement lambda dynamics and similar algorithms where extra variables need to be integrated along with the particle positions. It also is very useful for force field optimization.
We now support the Gay-Berne ellipsoid potential. This is similar to a Lennard-Jones force, but instead of depending on the distance between two point particles, it depends on the shortest distance between two ellipsoids. This is very useful for various types of coarse grained models. See the GayBerneForce class for details.
Most bonded forces now have the ability to apply periodic boundary conditions. This is useful in certain situations, such as bulk materials where one periodic copy of the system is bonded to the next one.