STORMM Source Documentation
Loading...
Searching...
No Matches
trim.h
1// -*-c++-*-
2#ifndef STORMM_TRAJECTORY_TRIM_H
3#define STORMM_TRAJECTORY_TRIM_H
4
5#include "copyright.h"
6#include "Accelerator/gpu_details.h"
7#include "Constants/behavior.h"
8#include "DataTypes/common_types.h"
9#include "Math/formulas.h"
10#include "Math/matrix_ops.h"
11#include "Math/vector_ops.h"
12#include "Numerics/split_fixed_precision.h"
13#include "Parsing/parsing_enumerators.h"
14#include "Parsing/parse.h"
15#include "Synthesis/atomgraph_synthesis.h"
16#include "Synthesis/phasespace_synthesis.h"
17#include "Synthesis/synthesis_abstracts.h"
18#include "Topology/atomgraph.h"
19#include "Topology/atomgraph_enumerators.h"
20#include "motion_sweeper.h"
21#include "phasespace.h"
22
23namespace stormm {
24namespace trajectory {
25
26using card::GpuDetails;
27using constants::ExceptionResponse;
28using constants::PrecisionModel;
29using data_types::isSignedIntegralScalarType;
30using parse::NumberFormat;
31using parse::realToString;
32using stmath::angleOnAxes;
33using stmath::angleOnAxesf;
34using stmath::crossProduct;
35using stmath::invertSquareMatrix;
36using stmath::leibnizDeterminant;
37using synthesis::AtomGraphSynthesis;
38using synthesis::PhaseSpaceSynthesis;
39using synthesis::PsSynthesisReader;
40using synthesis::PsSynthesisWriter;
41using synthesis::SyAtomUpdateKit;
42using topology::AtomGraph;
43
51template <typename T>
52bool checkInertialTensor(const std::vector<T> &inrt, int natom,
53 ExceptionResponse policy = ExceptionResponse::WARN);
54
85template <typename Tcoord, typename Tmass, typename Tcalc>
86void removeMomentum(Tcoord* xcrd, Tcoord* ycrd, Tcoord* zcrd, int* xcrd_ovrf, int* ycrd_ovrf,
87 int* zcrd_ovrf, Tcoord* xvel, Tcoord* yvel, Tcoord* zvel, int* xvel_ovrf,
88 int* yvel_ovrf, int* zvel_ovrf, const Tmass* masses, UnitCellType unit_cell,
89 int natom, Tcalc gpos_scale = 1.0, Tcalc vel_scale = 1.0,
90 ExceptionResponse policy = ExceptionResponse::WARN);
91
92void removeMomentum(PhaseSpace *ps, const AtomGraph *ag,
93 ExceptionResponse policy = ExceptionResponse::WARN);
94
95void removeMomentum(PhaseSpace *ps, const AtomGraph &ag,
96 ExceptionResponse policy = ExceptionResponse::WARN);
97
98void removeMomentum(PhaseSpaceSynthesis *poly_ps, const AtomGraphSynthesis *poly_ag,
99 const PrecisionModel prec, ExceptionResponse policy = ExceptionResponse::WARN);
100
101void removeMomentum(PhaseSpaceSynthesis *poly_ps, const AtomGraphSynthesis &poly_ag,
102 const PrecisionModel prec, ExceptionResponse policy = ExceptionResponse::WARN);
103
104void removeMomentum(PhaseSpaceSynthesis *poly_ps, const AtomGraphSynthesis &poly_ag,
105 MotionSweeper *mos, const GpuDetails &gpu = null_gpu,
106 ExceptionResponse policy = ExceptionResponse::WARN);
108
119void accumulateCenterOfMassMotion(MotionSweepWriter *mosw,
121 const PsSynthesisReader &poly_psr,
122 const GpuDetails &gpu = null_gpu);
123
132void removeCenterOfMassMotion(PsSynthesisWriter *poly_psw, const MotionSweepReader &mosr,
133 const GpuDetails &gpu = null_gpu);
134
140void accumulateAngularMomentum(MotionSweepWriter *mosw,
142 const PsSynthesisReader &poly_psr,
143 const GpuDetails &gpu = null_gpu);
144
152void removeAngularMomentum(PsSynthesisWriter *poly_psw, const MotionSweepReader &mosr,
153 const GpuDetails &gpu = null_gpu,
154 ExceptionResponse policy = ExceptionResponse::WARN);
155
156} // namespace trajectory
157} // namespace stormm
158
159#include "trim.tpp"
160
161#endif
Pertinent aspects of one particular GPU. Condensing the data for each GPU in this manner helps to ens...
Definition gpu_details.h:27
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
Object to manage and stage recentering and momentum removal for a coordinate synthesis....
Definition motion_sweeper.h:226
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
The reader for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:199
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
Read-only abstract of the MotionSweeper class, below, with const pointers to non-modifiable data.
Definition motion_sweeper.h:117
Abstract of the MotionSweeper class, below, with non-const pointers to modifiable data.
Definition motion_sweeper.h:21