STORMM Source Documentation
Loading...
Searching...
No Matches
isomerization.h
1// -*-c++-*-
2#ifndef STORMM_ISOMERIZATION_H
3#define STORMM_ISOMERIZATION_H
4
5#include "copyright.h"
6#include "Constants/behavior.h"
7#include "Constants/fixed_precision.h"
8#include "Chemistry/chemical_features.h"
9#include "Chemistry/chemistry_enumerators.h"
10#include "DataTypes/common_types.h"
11#include "Math/matrix_ops.h"
12#include "Math/rounding.h"
13#include "Topology/atomgraph.h"
14#include "Trajectory/coordinateframe.h"
15#include "Trajectory/coordinate_series.h"
16#include "Trajectory/phasespace.h"
17#include "Synthesis/condensate.h"
18#include "Synthesis/phasespace_synthesis.h"
19
20namespace stormm {
21namespace structure {
22
23using chemistry::ChemicalFeatures;
24using chemistry::ChiralInversionProtocol;
25using chemistry::IsomerPlan;
26using constants::PrecisionModel;
27using data_types::isSignedIntegralScalarType;
28using numerics::globalpos_scale_nonoverflow_bits;
29using stmath::rotationMatrixAboutVector;
30using stmath::roundUp;
31using synthesis::Condensate;
32using synthesis::CondensateWriter;
33using synthesis::PhaseSpaceSynthesis;
34using synthesis::PsSynthesisWriter;
35using topology::AtomGraph;
36using topology::UnitCellType;
37using trajectory::CoordinateFrame;
38using trajectory::CoordinateFrameWriter;
39using trajectory::CoordinateSeries;
40using trajectory::CoordinateSeriesWriter;
41using trajectory::PhaseSpace;
42using trajectory::PhaseSpaceWriter;
43
82template <typename Tcoord, typename Tcalc>
83void rotateAboutBond(Tcoord* xcrd, Tcoord* ycrd, Tcoord* zcrd, int atom_i, int atom_j,
84 const int* moving_atoms, int moving_atom_count, Tcalc rotation_angle,
85 Tcalc globalpos_scale_factor = 1.0);
86
87void rotateAboutBond(CoordinateFrame *cf, int atom_i, int atom_j,
88 const std::vector<int> &moving_atoms, double rotation_angle);
89
90void rotateAboutBond(CoordinateFrameWriter cfw, int atom_i, int atom_j,
91 const std::vector<int> &moving_atoms, double rotation_angle);
92
93void rotateAboutBond(PhaseSpace *ps, int atom_i, int atom_j, const std::vector<int> &moving_atoms,
94 double rotation_angle);
95
96void rotateAboutBond(PhaseSpaceWriter psw, int atom_i, int atom_j,
97 const std::vector<int> &moving_atoms, double rotation_angle);
98
99template <typename Tcoord, typename Tcalc>
100void rotateAboutBond(CoordinateSeries<Tcoord> *cs, int frame_index, int atom_i, int atom_j,
101 const std::vector<int> &moving_atoms, Tcalc rotation_angle);
102
103template <typename Tcoord, typename Tcalc>
104void rotateAboutBond(CoordinateSeriesWriter<Tcoord> csw, int frame_index, int atom_i, int atom_j,
105 const int* moving_atoms, int moving_atom_count, Tcalc rotation_angle);
106
107template <typename Tcalc>
108void rotateAboutBond(PhaseSpaceSynthesis *psynth, int system_index, int atom_i, int atom_j,
109 const std::vector<int> &moving_atoms, Tcalc rotation_angle);
110
111template <typename Tcalc>
112void rotateAboutBond(PsSynthesisWriter psynthw, int system_index, int atom_i, int atom_j,
113 const int* moving_atoms, int moving_atom_count, Tcalc rotation_angle);
114
115template <typename Tcalc>
116void rotateAboutBond(Condensate *cdns, int system_index, int atom_i, int atom_j,
117 const std::vector<int> &moving_atoms, Tcalc rotation_angle);
118
119template <typename Tcalc>
120void rotateAboutBond(CondensateWriter cdnsw, int system_index, int atom_i, int atom_j,
121 const std::vector<int> &moving_atoms, Tcalc rotation_angle);
123
155template <typename Tcoord, typename Tcalc>
156void flipChiralCenter(Tcoord* xcrd, Tcoord* ycrd, Tcoord* zcrd, int center_idx,
157 const std::vector<int> &chiral_centers,
158 const std::vector<ChiralInversionProtocol> &chiral_protocols,
159 const std::vector<IsomerPlan> &inversion_groups,
160 Tcalc globalpos_scale_factor = 1.0);
161
162void flipChiralCenter(CoordinateFrame *cf, int center_idx,
163 const std::vector<int> &chiral_centers,
164 const std::vector<ChiralInversionProtocol> &chiral_protocols,
165 const std::vector<IsomerPlan> &inversion_groups);
166
167void flipChiralCenter(CoordinateFrameWriter cfw, int center_idx,
168 const std::vector<int> &chiral_centers,
169 const std::vector<ChiralInversionProtocol> &chiral_protocols,
170 const std::vector<IsomerPlan> &inversion_groups);
171
172void flipChiralCenter(PhaseSpace *ps, int center_idx, const std::vector<int> &chiral_centers,
173 const std::vector<ChiralInversionProtocol> &chiral_protocols,
174 const std::vector<IsomerPlan> &inversion_groups);
175
176void flipChiralCenter(PhaseSpaceWriter psw, int center_idx, const std::vector<int> &chiral_centers,
177 const std::vector<ChiralInversionProtocol> &chiral_protocols,
178 const std::vector<IsomerPlan> &inversion_groups);
179
180template <typename Tcoord, typename Tcalc>
181void flipChiralCenter(CoordinateSeries<Tcoord> *cs, int frame_index, int center_idx,
182 const std::vector<int> &chiral_centers,
183 const std::vector<ChiralInversionProtocol> &chiral_protocols,
184 const std::vector<IsomerPlan> &inversion_groups);
185
186template <typename Tcoord, typename Tcalc>
187void flipChiralCenter(CoordinateSeriesWriter<Tcoord> csw, int frame_index, int center_idx,
188 const std::vector<int> &chiral_centers,
189 const std::vector<ChiralInversionProtocol> &chiral_protocols,
190 const std::vector<IsomerPlan> &inversion_groups);
191
192template <typename Tcalc>
193void flipChiralCenter(PsSynthesisWriter psynthw, int system_index, int center_idx,
194 const std::vector<int> &chiral_centers,
195 const std::vector<ChiralInversionProtocol> &chiral_protocols,
196 const std::vector<IsomerPlan> &inversion_groups);
197
198template <typename Tcalc>
199void flipChiralCenter(PhaseSpaceSynthesis *psynth, int system_index, int center_idx,
200 const std::vector<int> &chiral_centers,
201 const std::vector<ChiralInversionProtocol> &chiral_protocols,
202 const std::vector<IsomerPlan> &inversion_groups);
203
204template <typename Tcalc>
205void flipChiralCenter(Condensate *cdns, int system_index, int center_idx,
206 const std::vector<int> &chiral_centers,
207 const std::vector<ChiralInversionProtocol> &chiral_protocols,
208 const std::vector<IsomerPlan> &inversion_groups);
209
210template <typename Tcalc>
211void flipChiralCenter(CondensateWriter cdnsw, int system_index, int center_idx,
212 const std::vector<int> &chiral_centers,
213 const std::vector<ChiralInversionProtocol> &chiral_protocols,
214 const std::vector<IsomerPlan> &inversion_groups);
216
217} // namespace structure
218} // namespace stormm
219
220#include "isomerization.tpp"
221
222#endif
Condense the data format, and possibly offer a reduced representation of coordinates,...
Definition condensate.h:146
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
Store the coordinates and box information for a frame, only. This abridged struct can serve when the ...
Definition coordinateframe.h:111
Store the coordinates and box information for a series of frames, in one of several levels of precisi...
Definition coordinate_series.h:137
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
Writeable abstract for the Condensate class, wherein coordinates (only) can be modified as a conseque...
Definition condensate.h:64
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
Collect C-style pointers for the elements of a writable CoordinateFrame object.
Definition coordinateframe.h:30
Collect C-style pointers and critical constants for a writeable CoordinateSeries object.
Definition coordinate_series.h:66
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31