STORMM Source Documentation
Loading...
Searching...
No Matches
dynamics.h
1// -*-c++-*-
2#ifndef STORMM_DYNAMICS_LIBRARY_H
3#define STORMM_DYNAMICS_LIBRARY_H
4
5#include "copyright.h"
6#include "Constants/generalized_born.h"
7#include "DataTypes/stormm_vector_types.h"
8#include "MolecularMechanics/mm_evaluation.h"
9#include "Namelists/nml_dynamics.h"
10#include "Namelists/nml_pppm.h"
11#include "Namelists/nml_precision.h"
12#include "Potential/cellgrid.h"
13#include "Potential/energy_enumerators.h"
14#include "Potential/pme_potential.h"
15#include "Potential/pme_util.h"
16#include "Potential/scorecard.h"
17#include "Potential/local_exclusionmask.h"
18#include "Potential/static_exclusionmask.h"
19#include "Restraints/restraint_apparatus.h"
20#include "Structure/hub_and_spoke.h"
21#include "Structure/settle.h"
22#include "Structure/virtual_site_handling.h"
23#include "Synthesis/phasespace_synthesis.h"
24#include "Synthesis/synthesis_abstracts.h"
25#include "Topology/atomgraph.h"
26#include "Topology/atomgraph_abstracts.h"
27#include "Trajectory/integration.h"
28#include "Trajectory/motion_sweeper.h"
29#include "Trajectory/phasespace.h"
30#include "Trajectory/thermostat.h"
31#include "Trajectory/trim.h"
32#include "kinetic.h"
33
34namespace stormm {
35namespace mm {
36
37using energy::CellGrid;
38using energy::CellGridReader;
39using energy::CellGridWriter;
40using energy::contributeCellGridForces;
41using energy::evaluateParticleParticleEnergy;
42using energy::ewaldCoefficient;
43using energy::LocalExclusionMask;
44using energy::LocalExclusionMaskReader;
45using energy::NonbondedTheme;
46using energy::restoreType;
47using energy::ScoreCard;
48using energy::ScoreCardWriter;
49using energy::StaticExclusionMask;
50using energy::StaticExclusionMaskReader;
51using energy::VdwSumMethod;
52using namelist::DynamicsControls;
53using namelist::PrecisionControls;
54using namelist::PPPMControls;
55using restraints::RestraintApparatus;
56using restraints::RestraintKit;
57using structure::placeVirtualSites;
58using structure::rattleVelocities;
59using structure::settlePositions;
60using structure::settleVelocities;
61using structure::shakePositions;
62using structure::transmitVirtualSiteForces;
63using synthesis::PhaseSpaceSynthesis;
64using synthesis::PsSynthesisReader;
65using synthesis::PsSynthesisWriter;
66using synthesis::SyAtomUpdateKit;
67using synthesis::SyNonbondedKit;
68using synthesis::SyRestraintKit;
69using synthesis::SyValenceKit;
70using topology::AtomGraph;
71using topology::ConstraintKit;
72using topology::ImplicitSolventKit;
73using topology::NonbondedKit;
74using topology::ValenceKit;
75using topology::VirtualSiteKit;
76using trajectory::MotionSweeper;
77using trajectory::PhaseSpace;
78using trajectory::PhaseSpaceWriter;
79using trajectory::removeMomentum;
80using trajectory::Thermostat;
81using trajectory::ThermostatReader;
82using trajectory::ThermostatWriter;
83using trajectory::velocityVerletVelocityUpdate;
84using trajectory::velocityVerletCoordinateUpdate;
85using namespace generalized_born_defaults;
86
136template <typename Tcoord, typename Tcalc, typename Tcalc2, typename Tcalc4>
137void dynaStep(const Tcoord* xcrd, const Tcoord* ycrd, const Tcoord* zcrd, const Tcoord* xvel,
138 const Tcoord* yvel, const Tcoord* zvel, Tcoord* xfrc, Tcoord* yfrc, Tcoord* zfrc,
139 Tcoord* xalt, Tcoord* yalt, Tcoord* zalt, Tcoord* vxalt, Tcoord* vyalt,
140 Tcoord* vzalt, Tcoord* fxalt, Tcoord* fyalt, Tcoord* fzalt, ScoreCard *sc,
141 const ThermostatWriter<Tcalc> &tstr, const ValenceKit<Tcalc> &vk,
142 const NonbondedKit<Tcalc> &nbk, const ImplicitSolventKit<Tcalc> &isk,
143 const NeckGeneralizedBornKit<Tcalc> &neck_gbk, Tcoord* effective_gb_radii,
144 Tcoord* psi, Tcoord* sumdeijda, const RestraintKit<Tcalc, Tcalc2, Tcalc4> &rar,
145 const VirtualSiteKit<Tcalc> &vsk, const ChemicalDetailsKit &cdk,
146 const ConstraintKit<Tcalc> &cnk, const StaticExclusionMaskReader &ser,
147 const DynamicsControls &dyncon, int system_index = 0, Tcalc gpos_scale_factor = 1.0,
148 Tcalc vel_scale_factor = 1.0, Tcalc frc_scale_factor = 1.0);
149
150template <typename Tcoord, typename Tacc, typename Tcoord4,
151 typename Tcalc, typename Tcalc2, typename Tcalc4>
152void dynaStep(PsSynthesisWriter *poly_psw, CellGridWriter<void, void, void, void> *cgw_v,
154 const SyValenceKit<Tcalc> &poly_vk, const SyNonbondedKit<Tcalc, Tcalc2> &poly_nbk,
157 const LocalExclusionMaskReader &lemr, Tcalc cutoff, Tcalc qqew_coeff,
158 VdwSumMethod vdw_sum, int ntpr);
159
160void dynaStep(PhaseSpaceWriter *psw, ScoreCard *sc, const ThermostatWriter<double> &tstr,
161 const ValenceKit<double> &vk, const NonbondedKit<double> &nbk,
163 const NeckGeneralizedBornKit<double> &neck_gbk, double* effective_gb_radii,
164 double* psi, double* sumdeijda, const RestraintKit<double, double2, double4> &rar,
165 const VirtualSiteKit<double> &vsk, const ChemicalDetailsKit &cdk,
167 const DynamicsControls &dyncon, int system_index = 0);
169
187void dynamics(PhaseSpace *ps, Thermostat *heat_bath, ScoreCard *sc, const AtomGraph *ag,
188 const NeckGeneralizedBornTable *neck_gbtab, const StaticExclusionMask *se,
189 const RestraintApparatus *ra, const DynamicsControls &dyncon, int system_index = 0,
190 const std::string &trajectory_file_name = std::string(""),
191 const std::string &restart_file_name = std::string(""));
192
193void dynamics(PhaseSpace *ps, Thermostat *heat_bath, ScoreCard *sc, const AtomGraph &ag,
194 const NeckGeneralizedBornTable &neck_gbtab, const StaticExclusionMask &se,
195 const RestraintApparatus &ra, const DynamicsControls &dyncon, int system_index = 0,
196 const std::string &trajectory_file_name = std::string(""),
197 const std::string &restart_file_name = std::string(""));
198
199template <typename Tcoord, typename Tacc, typename Tcalc, typename Tcoord4>
201 ScoreCard *sc, Thermostat *heat_bath, const AtomGraphSynthesis &poly_ag,
202 const LocalExclusionMask &lem, const DynamicsControls &dyncon,
203 const PrecisionControls &preccon, const PPPMControls &pmecon);
205
206
207
209
210} // namespace mm
211} // namespace stormm
212
213#include "dynamics.tpp"
214
215#endif
An object to manage the spatial decomposition of a system of particles. The general strategy is to ar...
Definition cellgrid.h:562
The local exclusion mask is an generalized form of the ForwardExclusionMask, listing all exclusions i...
Definition local_exclusionmask.h:208
Track the energy components of a collection of systems in an HPC-capable array. This object uses the ...
Definition scorecard.h:101
A simple pair list for an all-to-all calculation with exclusion masks. The list stores masks for 16 x...
Definition static_exclusionmask.h:81
Object to hold a complex array of constants referenced by various GB calculations using the "neck" fo...
Definition generalized_born.h:151
Object to encapsulate molecular dynamics control information. Like other namelist encapsualtors,...
Definition nml_dynamics.h:123
Object to encapsulate electrostatic and Lennard-Jones particle-mesh interaction controls....
Definition nml_pppm.h:38
Object to encapsulate energy precision control information. Like other namelist encapsualtors,...
Definition nml_precision.h:40
A collection of all restraints pertaining to a specific topology for the purposes of one simulation,...
Definition restraint_apparatus.h:109
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
Store the parameters for a simulation thermostat. Includes Berendsen, Andersen, and Langevin methods....
Definition thermostat.h:221
Writeable abstract for the CellGrid object, able to receive new coordinates or accumulate forces.
Definition cellgrid.h:137
A lean, read-only abstract for the LocalExclusionMask class.
Definition local_exclusionmask.h:100
The abstract for a StaticExclusionMask object, read-only due to the const-ness of the data() member f...
Definition static_exclusionmask.h:45
Abstract for the NeckGeneralizedBornTable object, in single- or double-precision.
Definition generalized_born.h:130
Double-precision reader abstract for the RestraintApparatus class. Restraints are very detailed thing...
Definition restraint_apparatus.h:28
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
Collect the virtual site details and constraint parameters of the topology synthesis into a single ab...
Definition synthesis_abstracts.h:257
Collect the critical non-bonded parameters and masking information for work unit-based evaluation of ...
Definition synthesis_abstracts.h:181
Collect the critical restraint parameters and masking information for work unit-based evaluation of t...
Definition synthesis_abstracts.h:100
Collect the critical valence parameters and indexing information for work unit-based evaluation of th...
Definition synthesis_abstracts.h:19
Information on atoms and residues which may be useful for applying atom masks or identifying specific...
Definition atomgraph_abstracts.h:382
Information needed to manage constraint groups. This additional abstract is needed due to the way tha...
Definition atomgraph_abstracts.h:466
Information needed for Generalized Born (and perhaps other) implicit solvent methods....
Definition atomgraph_abstracts.h:352
Information needed for non-bonded real-space calculations. Templating is used as above,...
Definition atomgraph_abstracts.h:287
Information need for bonded calculations. Templating is used to serve either of two levels of precisi...
Definition atomgraph_abstracts.h:88
Information needed for the placement of virtual sites and transmission of forces on these sites to th...
Definition atomgraph_abstracts.h:430
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31
Partially writeable abstract for the Thermostat object. As with the MMControlKit struct (see the libr...
Definition thermostat.h:58