Abstract
The Tinker-OpenMM package for AMOEBA molecular dynamics on GPU has long been limited to the Monte Carlo barostat due to the lack of virial calculation. In this paper, we report the calculation of the internal virial for the AMOEBA forcefield. This constitutes the first GPU implementation of a polarizable internal virial. This is followed by the implementation of the Berendsen barostat into Tinker-OpenMM as a demonstration of the capability of Tinker-OpenMM to calculate the virial with sufficient accuracy to enable pressure control. These additions enable the further improvement of Tinker-OpenMM to include a wide range of virial-based barostat algorithms.
Introduction:
Proper pressure control is essential for molecular dynamics (MD) that requires simulation of pressure effects[1]. For example, molecular dynamics has proven invaluable in the prediction of the structure of compounds such as glasses[2], nanomaterials[3], and metals[4],[5] under extreme pressures as high as 1,000,000 Atmospheres. Many of the common spectroscopic techniques are ineffective under high pressures. For example, even pioneering NMR studies are limited to around 2000–3000 Atmospheres[6]. Since NMR is the main technique to gain dynamics information about molecular systems, MD simulations act as a valuable complement to the limited experimental tools available at higher pressures. As another, biological example, proteins have evolved to maintain structure and function at the pressure experienced by an organism. For most organisms, this pressure is near 1 Atm. However, there has been increasing interest in the dynamics of proteins from piezophiles that live under extreme pressures as high at 1100 Atms[7], pressures that would denature most proteins. Molecular dynamics studies of the pressure stability of these enzymes have revealed that protein dynamics of pressure tolerant enzymes (at least in Dihydrofolate Reductase) are altered to enable increased flexibility at high pressures[8], thus enabling substrate exchange. A better understanding of these adaptations may allow for biosynthetic applications or mutagenesis of proteins for high pressure industrial applications[9]. Material science and biochemical studies such as these require robust pressure control that allows for simulation in not only ambient pressures, but also at extreme pressures. This pressure control is implemented via a simulation component known as a barostat.
Most barostat implementations require the calculation of a system property known as the virial[10]. The virial is defined as the change in energy with respect to volume (i.e. dU/dV). The virial is the sum of two components, an internal, potential interaction derived component, and a kinetic energy term. For most systems, the internal virial has a tendency to push system volume inwards, while the kinetic term pulls system volume outwards. For simple pairwise forces, the internal virial expression is also equivalent to the dot product of force and distance. However, for some forces, internal virial calculations derived from dU/dV are required (such as during the calculation of the virial due to multipole forces using Ewald summation[11]). The virial can then be converted into an instantaneous pressure using the equation with KE being kinetic energy, and W being the average of the diagonal components of the internal virial tensor for the case of an isotropic barostat. This instantaneous pressure is then used to scale box dimensions and coordinates in order to bring the instantaneous pressure closer to the target external pressure. There are a wide range of virial-requiring barostats, including the Nose Hoover barostat[12–14], the Berendsen barostat[1], and the Langevin piston method[15].
Tinker-OpenMM[16] is a modified version of OpenMM[17, 18] designed for GPU computation containing many features not present in the main release of OpenMM. These additions include the latest modifications of the AMOEBA polarizable forcefield[19, 20] and the ability to perform free energy perturbation calculations. However, Tinker-OpenMM is lacking in pressure control methodologies. Since Tinker-OpenMM currently doesn′t compute the AMOEBA virial (unlike the base Tinker package[21, 22] for CPU computation), Tinker GPU pressure scaling can only be accomplished via a Monte Carlo Barostat[23]. The Monte Carlo barostat uses the target pressure, and system energy to probabilistically select increases or decreases in system box size. The Monte Carlo barostat results in the correct equilibrium system density and volume ensemble. However, the Monte Carlo barostat is less effective than virial-based barostats in the equilibration of molecular systems that are far from equilibrium density. Therefore, it is desirable for Tinker-OpenMM to contain virial-based barostats.
When making an initial choice of barostats, we wanted to implement a barostat that was already present in Tinker CPU so as to enable comparisons of these already well-validated platforms with the GPU results. Tinker CPU currently supports the Nose-Hoover barostat and the Berendsen barostat. The Nose-Hoover barostat was initially considered, however, the Tinker implementation of the Nose-Hoover barostat contains a thermostat coupled to a barostat. This coupling introduces complications in analysis, leaving the possibility that any error is due to the thermostat, not just the barostat. By implementing the Berendsen barostat, temperature control can be handled by the already implemented Bussi thermostat[24] .One disadvantage of the Berendsen barostat is that correct volume ensembles are not achieved.[23] This makes the Berendsen barostat inappropriate for production simulations, and limits effective use cases to initial equilibration. However, implementation of the Berendsen barostat can act as an effective initial test of if a GPU based virial can enable consistent pressure control. This is especially important since forces (and thus the virial, which uses many force intermediate terms in its calculation) needs to be calculate at a lesser, 32-bit precision (as opposed to the 64-bit computation utilized by Tinker CPU). This lack of precision could result in a drift in equilibrium densities in the GPU when compared to the CPU. Indeed, significant total energy drifts are observed when integrating positions at 32-bit precision, indicating that calculation of system properties using 32bit precision can cause significant difference in system behavior[17]. Since the AMOEBA internal virial (or indeed, any polarizable virial) has not been implemented in CUDA for GPU-MD, it is unclear if a GPU based implementation of the AMOEBA virial would enable sufficient precision for robust pressure control. In this paper, we show implementation of the AMOEBA virial on GPUs within Tinker-OpenMM and use the Berendsen Barostat as a test of the utilization of this virial for pressure control schemes.
Methods:
Derivation of virial:
Given unit cell vectors, aα = [aα1, aα2, aα3]T, α = 1, 2, 3, which form the edges of the cell, the cell matrix is defined as
(1) |
The instantaneous pressure is given by [25]
(2) |
The first term on the RHS corresponds to the kinetic energy contribution while the second term is the internal virial:
The average of three diagonal components of pressure tensor give the usual scalar pressure in an isotropic system.
The virial tensor can also be evaluated from derivatives of potential energy [26]
which can be conveniently applied to obtain virial for a system handled by Ewald sum
(4) |
Note the partial derivative is with respect fixed s, fractional coordinate (refer to SI for further details).
The Ewald energy for multipoles is
(5) |
The self-energy term is independent of cell dimension a and makes no contribution to pressure. The real space component of pressure tensor intuitively takes the form [27]
where is the force between site i and j computed in the Ewald real space, and the summation is over all pairs of sites. The remaining reciprocal component is to be derived using above eq (4) and is presented in the supplementary materials.
The virial due to torque( for the x,x component) is calculated as ΔXx * Fxx + ΔXy * Fxy + ΔXz * Fxz. Subscripts denote the X, Y, and Z frame defining atoms. All other terms are calculated analogously. This dot product definition of the virial can be used because this torque is not volume dependent[28]. The forces used in this calculation ignore the self-torque component.
Virial Implementation:
Calculation of the diagonal and off diagonal components of the virial tensor were added to the end of the appropriate GPU force kernels (contained in Tinker-Openmm/plugins/amoeba/platform/cuda/src/kernels) via adaptation of the vir() array modifications present in the Tinker CPU codebase. Modifications were made to the Multipole, van der Waals, angle, angle-torsion, bond, out of plane bend, pi-torsion, stretch-bend, stretch-torsion, torsion-torsion, and torsion forces. For all forces except the more complicated multipole force (along with polarization), all changes were made at the end of the kernel, guarded by an if USES_VIRIAL preprocessor directive. The multipole virial is contained throughout multipole.cu, multipolePme.cu, and pmeMultipoleElectrostatics.cu, with all virial components either utilizing the USES_VIRIAL directive or are contained within routines that are executed only if the virial is required for a given simulation. The flagging of virial-requiring terms with the USES_VIRIAL directive enables virial-dependent calculations only in simulations in which the virial is required, removing computational expenses in simulations that do not use the virial. GPU virial computation can be turned on in the interface by a call to OpenMM_System_setUsesVirial (omm->system, (OpenMM_Boolean) true). The GPU virial was split into fast, bonded (available by calling CudaContext.getFastVirial()) and slow, nonbonded (available by calling CudaContext.getSlowVirial()) components. This separation allows for the implementation of multistep algorithms (such as r-RESPA[29]) that require averaging of fast components by the number of inner steps.
Berendsen Barostat Implementation:
The Berendsen barostat was coded for use with the RESPA integrator present in Tinker-OpenMM. Briefly, a routine scaleBox() was added into the CustomStepKernel implementation present in platforms/cuda/src/CudaKernels.cpp. The scaleBox routine performs pressure scaling identical to that present in the Tinker interface, based on the barostat scheme presented in[1] Briefly, after each step, the kinetic energy and virial potential were used to determine the box length scaling constant according to the equation Lengthscale The compressibility (ϐ ) was chosen as that of water (0.000046), with τ equaling the default Tinker CPU value of 2.0. The instantaneous pressure was calculated using the equation with k being a conversion factor between kJ/mol/Å3 to Atmospheres (equal to 16.39). In order to increase system stability, the fast virial was averaged across all inner steps. The actual scaling of atomic coordinates is accomplished using the GPU kernel scaleCoordinates() inside platforms/cuda/src/kernel/monteCarloBarostat.cu, which scales the positions of molecular centers(as opposed to scaling each individual atom independently). The command addscalebox () was placed at the end of the RESPA definition in the Tinker ommstuff.cpp interface, after the BUSSI scaling routine, causing the scaleBox() routine to be called at the end of each r-RESPA step.
Virial Value Confirmation:
The virial build of Tinker-OpenMM was modified to print both the fast, bonded virial, and the slow, non-bonded virial at each r-RESPA inner step. 1000 steps of MD were then performed using a 1.0 fs timestep, with output of a structural archive files every step. The total virial for each GPU generated frame was then calculated using the Tinker “analyze” routine. The average and percent difference were then calculated on a per-component basis using only the diagonal component of the virial. The first 500 frames were ignored, in order to compare near-equilibrium frames
MD Procedures:
All Molecular Dynamics calculations were performed using a 2.0fs timestep, and the RESPA integrator, with structural output every 1ps. All calculations were performed at 1Atm pressure using the Berendsen barostat, and 298K temperature using the BUSSI thermostat[24], unless otherwise noted. Simulations utilized an Ewald cutoff of 7.0 Å, and a van der Waals(vdW) cutoff of 12.0 Å.
Molecular Systems:
All small molecule systems consisted of pure liquids available in the example/ folder of the tinker release and utilized the amoeba09 parameters. The water system utilized consisted of a cubic box of 2,210 water molecules run using the AMOEBAwater14 forcefield. The protein system utilized was the bench7.xyz solvated Dihydrofolate Reductase (DHFR) test system of 23,558 atoms. Bench7 is included in the bench/ folder of the Tinker CPU distribution, and uses the amoebabio09 parameters. The RNA system utilized was a solvated double stranded RNA molecule consisting of the sequence 5′-AAGCUGCCAG-3’, 3′-UCGACGGU-5′, using the amoebanuc17 parameter file, and contained 40, 303 atoms.
Results:
Virial CPU vs GPU Comparison
Since the virial for each force often contains mathematical intermediates of the force (or even the calculated force itself), a computationally efficient internal virial must be calculated at 32-bit precision. This potentially limits internal virial accuracy when compared to the 64-bit precision utilized by Tinker CPU. Initial tests of the internal virial consisted of calculating the difference in the diagonal internal virial components calculated using the Tinker-OpenMM GPU and Tinker CPU platforms. Since only the diagonal components contribute to isotropic pressure, the off-diagonal internal virial tensor components were ignored. This comparison was accomplished by performing 1000 steps of MD on a minimized starting structure, using a build of Tinker-OpenMM modified to print out the slow and fast virials every r-RESPA inner step. The first 500 structures of this simulation were not included in internal virial analysis in order to test near-equilibrium values. The internal virial tensor for these final 500 frames were then calculated using Tinker′s “analyze” routine. The Dihydrofolate Reductase (DHFR) protein system showed an average diagonal internal virial component difference of 9.0±6.0 kcal/mol/Å3, with a percent difference of 0.08±0.06% (Table 1). The RNA system displayed slightly greater raw divergence, at 14.3±9.6 kcal/mol/Å3 due to larger system size. For the RNA system, the percent difference was identical to that of the protein system, with a percent difference of 0.08±0.05%. It was unclear if this degree of accuracy was sufficient to enable virial-based pressure control. Most of the divergence in CPU and GPU calculated internal virial was identified as being a result of the particle mesh Ewald virial, which cannot be improved upon without increasing to 64-bit precision. Calculation at this increased precision would result in an unacceptable approximately 30-fold reduction in performance[17]. At this speed reduction, the performance advantage of the GPU platform is essentially negated. It was thus decided to proceed with Berendsen pressure control testing with this virial divergence.
Table 1:
Average and absolute virial divergence between simulation frames generated using Berendsen barostat Molecular Dynamics (MD) on GPU and the CPU analysis of these frames. GPU MD was run for 1000 steps of MD using a 1fs timestep, and per-component average divergence was calculated for frames 500 to 1000.
Protein | RNA | |
---|---|---|
Absolute Difference(kcal/mol/Å3) | 9.0±6.0 | 14.3±9.6 |
Percent Difference | 0.08±0.06% | 0.08±0.05% |
Equilibration of Small Molecule Systems:
Since it was uncertain if the internal virial accuracy was sufficient to enable pressure control, it was necessary to test the capabilities of the GPU platform on a wide range of small molecules. In addition to water, pure liquids of formamide, benzene, and methanol were chosen to represent a diverse set of molecular properties. This series of compounds was simulated at 1 Atmosphere pressure using Tinker CPU for 1ns to generate equilibrium structures and velocities using a well validated computational platform. These simulation starting points were then run using the Berendsen barostat for 30ns at 1A tm to confirm that this equilibrium is maintained. All of the tested small molecules maintained the same density as in the CPU simulation (Table 2), an indication that the Tinker-OpenMM system is able to maintain stable simulations for a wide range of chemical moieties.
Table 2.
Comparison of equilibrium density of CPU and GPU Berendsen barostat simulations, and GPU Monte Carlo. GPU results are taken over 30ns, and CPU results are taken over 1ns. Both results ignore the first 200ps.
Compound | GPU Density | CPU Density | Monte Carlo |
---|---|---|---|
Benzene | 0.878±0.007 | 0.877±0.007 | 0.880±0.009 |
Formamide | 1.124±0.004 | 1.124±0.004 | 1.124±0.006 |
Methanol | 0.781±0.002 | 0.783 ±0.002 | 0.782±0.004 |
Water | 0.994±0.003 | 1.002±0.003 | 0.998±0.005 |
Equilibration of Water at High Pressures
It is essential that any barostat be able to equilibrate systems that are at an initial none-quilibrium density. The previous series of tests started the simulated systems at equilibrium, and did not determine the ability of the Tinker-OpenMM platform to simulate systems at pressures other than 1 atm. In order to test both capabilities, a series of simulations of water were conducted at 1, 1000, 2000, and 4000 atmospheres. Critically, all 4 series of simulations were started with structures and velocities of a 1 Atmosphere water system generated using CPU. Therefore, reaching the correct equilibrium requires that the higher-pressure systems increase in density, demonstrating the capability of the GPU Berendsen barostat to equilibrate to different pressures. This series of Berendsen simulations reached near-equilibrium densities within 20ps and displayed equilibrium densities essentially identical to those observed in the 1ns CPU simulation (Figure 1) that were started at 1 Atm pressure. The minor shift observed in equilibrium densities is likely due to integration and velocity precision differences. The percent virial divergence is small enough so as this consistent shift is not easily explained by virial divergence. The previous test (with all compounds at 1 Atm) could have been passed by a barostat with little to no box size evolution. The change of box size to reach equilibrium densities occurs relatively rapidly, while still maintaining an appropriate long-term equilibrium. This is a strong indication that the Tinker-OpenMM Berendsen barostat can perform pressure equilibration to densities identical to that of the CPU Berendsen platform, despite the less accurate virial.
Figure 1:
Average density for Berendsen GPU and Berendsen CPU MD simulations on water at various pressures. Values are reported as average ± standard deviation. First 200ps of simulation time was ignored in calculation. CPU simulations were conducted for 1ns, and GPU simulations were simulated for 30ns.
Comparison of Berendsen and Monte Carlo Barostats on GPU
The only previous pressure equilibration platform present in Tinker-OpenMM was the Monte Carlo Barostat. Unlike the Berendsen barostat, the Monte Carlo barostat displayed ensemble pressure and velocity fluctuations, and thus is more suitable for production simulation. The weakness of the Monte Carlo barostat, however, is the equilibration of structures far from equilibrium. Therefore, a likely pipeline would consist of an initial equilibration with the Berendsen barostat, followed by production simulations using Monte Carlo, or another (to be developed) virial based barostat such as Nose-Hoover. In order for this pipeline to work effectively, the equilibrium densities of the Monte Carlo and Berendsen barostat should be in agreement. To test this agreement, the water density tests at 1, 1000, 2000, and 4000 Atmospheres, as well as the other liquids at 1 Atmosphere, were repeated using the Monte Carlo barostat in Tinker-OpenMM on GPUs. The Monte Carlo barostat showed comparable densities to the GPU Berendsen barostat for both water (Figure 2) and organic liquids (Table 2). This close agreement enables a smooth transition between the Monte Carlo and Berendsen barostats. This agreement is even closer than that observed between the GPU and CPU Berendsen barostats. This is an indication that the small divergence observed between the two platforms may be due to precision issues related to the velocity and components of the platform rather than the barostat.
Figure 2:
Average density for Berendsen GPU and Monte Carlo GPU simulations on water at various pressures. Values are reported as average ±standard deviation. First 200ps of simulation time was ignored in calculation. Both series of simulations were simulated for 30ns.
Conclusions:
Over time, Tinker-OpenMM is nearing the molecular dynamics capabilities of the Tinker-CPU platform. One of the biggest limitations of the Tinker-OpenMM platform has previously been the lack of virial-based pressure control methods. These virial-based methods are often more stable during initial equilibration than the Monte Carlo barostat. While the Berendsen barostat lacks the proper ensemble volume averages, it is an important steppingstone in virial-based pressure control on GPU. Prior to this study, it was unclear if the lesser accuracy of OpenMM force (and thus virial) calculation would be accurate enough to enable robust pressure control. The results of this study indicate that this inaccuracy is unlikely to be an issue in the implementation of pressure control schemes. In the near future, we aim to add a wide range of the diversity of barostats that require the virial, such as Nose-Hoover or the Langevin Piston.
Supplementary Material
Acknowledgements:
The authors are grateful for support by the National Institutes of Health (R01GM106137 and R01GM114237)
References:
- 1.Berendsen HJ, et al. , Molecular dynamics with coupling to an external bath. The Journal of chemical physics, 1984. 81(8): p. 3684–3690s DOI: 10.1063/1.448118. [DOI] [Google Scholar]
- 2.Ghosh DB, Karki BB, and Stixrude L, First-principles molecular dynamics simulations of MgSiO3 glass: Structure, density, and elasticity at high pressure. American Mineralogist, 2014. 99(7): p. 1304–1314s DOI: 10.2138/am.2014.4631. [DOI] [Google Scholar]
- 3.Dong Y, Rismiller SC, and Lin J, Molecular dynamic simulation of layered graphene clusters formation from polyimides under extreme conditions. Carbon, 2016. 104: p. 47–55s DOI: 10.1016/j.carbon.2016.03.050. [DOI] [Google Scholar]
- 4.Fomin YD, et al. , Dynamic transition in supercritical iron. Sci Rep, 2014. 4: p. 7194s DOI: 10.1038/srep07194. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 5.Gubin S, et al. , Molecular-dynamics study melting aluminum at high pressures. Physics Procedia, 2015. 72: p. 338–341s DOI: 10.1016/j.phpro.2015.09.106. [DOI] [Google Scholar]
- 6.Caro JA and Wand AJ, Practical aspects of high-pressure NMR spectroscopy and its applications in protein biophysics and structural biology. Methods, 2018. 148: p. 67–80s DOI: 10.1016/j.ymeth.2018.06.012. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 7.Ichiye T Enzymes from piezophiles. in Seminars in cell & developmental biology. 2018. Elsevier. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 8.Huang Q, et al. , Extreme biophysics: Enzymes under pressure. J Comput Chem, 2017. 38(15): p. 1174–1182s DOI: 10.1002/jcc.24737. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 9.Wright PC, Westacott RE, and Burja AM, Piezotolerance as a metabolic engineering tool for the biosynthesis of natural products. Biomolecular engineering, 2003. 20(4–6): p. 325–331s DOI: 10.1016/S1389-0344(03)00042-X. [DOI] [PubMed] [Google Scholar]
- 10.Tsai D, The virial theorem and stress calculation in molecular dynamics. The Journal of Chemical Physics, 1979. 70(3): p. 1375–1382s DOI: 10.1063/1.437577. [DOI] [Google Scholar]
- 11.Essmann U, et al. , A smooth particle mesh Ewald method. The Journal of chemical physics, 1995. 103(19): p. 8577–8593s DOI: 10.1063/1.470117. [DOI] [Google Scholar]
- 12.Martyna GJ, Klein ML, and Tuckerman M, Nosé–Hoover chains: The canonical ensemble via continuous dynamics. The Journal of chemical physics, 1992. 97(4): p. 2635–2643s DOI: 10.1063/1.463940. [DOI] [Google Scholar]
- 13.Nosé S, A unified formulation of the constant temperature molecular dynamics methods. The Journal of chemical physics, 1984. 81(1): p. 511–519s DOI: 10.1063/1.447334. [DOI] [Google Scholar]
- 14.Hoover WG, Canonical dynamics: Equilibrium phase-space distributions. Phys Rev A Gen Phys, 1985. 31(3): p. 1695–1697s DOI: 10.1103/PhysRevA.31.1695. [DOI] [PubMed] [Google Scholar]
- 15.Feller SE, et al. , Constant pressure molecular dynamics simulation: the Langevin piston method. The Journal of chemical physics, 1995. 103(11): p. 4613–4621s DOI: 10.1063/1.470648. [DOI] [Google Scholar]
- 16.Harger M, et al. , Tinker‐OpenMM: Absolute and relative alchemical free energies using AMOEBA on GPUs. Journal of computational chemistry, 2017. 38(23): p. 2047–2055s DOI: 10.1002/jcc.24853. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 17.Eastman P, et al. , OpenMM 7: Rapid development of high performance algorithms for molecular dynamics. PLoS Comput Biol, 2017. 13(7): p. e1005659s DOI: 10.1371/journal.pcbi.1005659. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 18.Eastman P and Pande V, OpenMM: a hardware-independent framework for molecular simulations. Computing in Science & Engineering, 2010. 12(4): p. 34–39s DOI: 10.1109/MCSE.2010.27 [DOI] [PMC free article] [PubMed] [Google Scholar]
- 19.Wu JC, et al. , Polarizable molecular dynamics simulation of Zn (II) in water using the AMOEBA force field. Journal of chemical theory and computation, 2010. 6(7): p. 2059–2070s DOI: 10.1021/ct100091j. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 20.Shi Y, et al. , The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput, 2013. 9(9): p. 4046–4063s DOI: 10.1021/ct4003702. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 21.Ponder JW, TINKER: Software tools for molecular design. 2004, Version. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 22.Rackers JA, et al. , Tinker 8: Software Tools for Molecular Design. J Chem Theory Comput, 2018. 14(10): p. 5273–5289s DOI: 10.1021/acs.jctc.8b00529. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 23.Åqvist J, et al. , Molecular dynamics simulations of water and biomolecules with a Monte Carlo constant pressure algorithm. Chemical physics letters, 2004. 384(4–6): p. 288–294s DOI: 10.1016/j.cplett.2003.12.039. [DOI] [Google Scholar]
- 24.Bussi G, Donadio D, and Parrinello M, Canonical sampling through velocity rescaling. The Journal of chemical physics, 2007. 126(1): p. 014101s DOI: 10.1063/1.2408420. [DOI] [PubMed] [Google Scholar]
- 25.Allen MP and Tildesley DJ, Computer simulation of liquids. 2017: Oxford university press. [Google Scholar]
- 26.Nosé S and Klein M, Constant pressure molecular dynamics for molecular systems. Molecular Physics, 1983. 50(5): p. 1055–1076s DOI: 10.1080/00268978300102851. [DOI] [Google Scholar]
- 27.Toukmaji A, Paul D, and John A Jr. Distributed Patrticle-Mesh Ewald: A Parallel Ewald Summation Method. in PDPTA. 1996. [Google Scholar]
- 28.Louwerse MJ and Baerends EJ, Calculation of pressure in case of periodic boundary conditions. Chemical physics letters, 2006. 421(1–3): p. 138–141s DOI: 10.1016/j.cplett.2006.01.087. [DOI] [Google Scholar]
- 29.Tuckerman M, Berne BJ, and Martyna GJ, Reversible multiple time scale molecular dynamics. The Journal of chemical physics, 1992. 97(3): p. 1990–2001s DOI: 10.1063/1.463137. [DOI] [Google Scholar]
Associated Data
This section collects any data citations, data availability statements, or supplementary materials included in this article.