2#ifndef STORMM_GLOBAL_MANIPULATION_H
3#define STORMM_GLOBAL_MANIPULATION_H
7#include "Constants/behavior.h"
8#include "DataTypes/common_types.h"
9#include "Reporting/error_format.h"
10#include "Synthesis/condensate.h"
11#include "Synthesis/phasespace_synthesis.h"
12#include "Topology/atomgraph.h"
13#include "Topology/atomgraph_abstracts.h"
14#include "Trajectory/coordinateframe.h"
15#include "Trajectory/coordinate_series.h"
16#include "Trajectory/phasespace.h"
17#include "Trajectory/trajectory_enumerators.h"
18#include "virtual_site_handling.h"
23using constants::PrecisionModel;
24using data_types::isSignedIntegralScalarType;
25using data_types::isSignedIntegralHpcVectorType;
26using synthesis::Condensate;
27using synthesis::CondensateWriter;
28using synthesis::PhaseSpaceSynthesis;
29using synthesis::PsSynthesisWriter;
30using topology::AtomGraph;
31using topology::VirtualSiteKit;
32using trajectory::CoordinateFrame;
33using trajectory::CoordinateFrameWriter;
34using trajectory::CoordinateSeries;
35using trajectory::CoordinateSeriesWriter;
36using trajectory::PhaseSpace;
37using trajectory::PhaseSpaceWriter;
38using trajectory::TrajectoryKind;
54std::vector<T> beardRotationMatrix(
const T om_x,
const T om_y,
const T om_z);
98template <
typename T,
typename Tcalc>
99void rotateCoordinates(T *x, T *y, T *z,
const Tcalc* axis_a,
const Tcalc* axis_b,
100 const Tcalc* axis_c, Tcalc globalpos_scale_factor = 1.0);
102template <
typename T,
typename Tcalc>
103void rotateCoordinates(T *x, T *y, T *z,
const Tcalc* umat, Tcalc globalpos_scale_factor = 1.0);
105template <
typename T,
typename Tcalc>
106void rotateCoordinates(T* x, T* y, T* z,
size_t n,
const Tcalc* axis_a,
const Tcalc* axis_b,
107 const Tcalc* axis_c, Tcalc globalpos_scale_factor = 1.0);
109template <
typename T,
typename Tcalc>
110void rotateCoordinates(T* x, T* y, T* z,
size_t n,
const Tcalc* umat,
111 Tcalc globalpos_scale_factor = 1.0);
113template <
typename T,
typename Tcalc>
114void rotateCoordinates(std::vector<T> *x, std::vector<T> *y, std::vector<T> *z,
115 const std::vector<Tcalc> &axis_a,
const std::vector<Tcalc> &axis_b,
116 const std::vector<Tcalc> &axis_c, Tcalc globalpos_scale_factor = 1.0);
118template <
typename T,
typename Tcalc>
119void rotateCoordinates(std::vector<T> *x, std::vector<T> *y, std::vector<T> *z,
120 const std::vector<Tcalc> &umat, Tcalc globalpos_scale_factor = 1.0);
122template <
typename T,
typename Tcalc>
125 const Hybrid<Tcalc> &axis_c, Tcalc globalpos_scale_factor = 1.0);
127template <
typename T,
typename Tcalc>
129 Tcalc globalpos_scale_factor = 1.0);
131template <
typename T3,
typename Tcalc>
132void rotateCoordinates(T3 *c,
const T3 axis_a,
const T3 axis_b,
const T3 axis_c,
133 Tcalc globalpos_scale_factor = 1.0);
135template <
typename Tcoord,
typename Tcalc>
136void rotateCoordinates(Tcoord* xcrd, Tcoord* ycrd, Tcoord* zcrd, Tcalc alpha, Tcalc beta,
137 Tcalc gamma,
int lower_limit,
int upper_limit,
139 Tcalc globalpos_scale_factor = 1.0);
142 double beta,
double gamma,
int lower_limit = 0,
int upper_limit = 0);
145 double gamma,
int lower_limit = 0,
int upper_limit = 0);
148 double beta,
double gamma,
int lower_limit = 0,
int upper_limit = 0);
151 double gamma,
int lower_limit = 0,
int upper_limit = 0);
153template <
typename Tcoord,
typename Tcalc>
156 int lower_limit = 0,
int upper_limit = 0);
158template <
typename Tcoord,
typename Tcalc>
160 Tcalc alpha, Tcalc beta, Tcalc gamma,
int lower_limit = 0,
161 int upper_limit = 0);
163template <
typename Tcalc>
164void rotateCoordinates(
PhaseSpaceSynthesis *poly_ps,
int system_index, Tcalc alpha, Tcalc beta,
165 Tcalc gamma,
int lower_limit = 0,
int upper_limit = 0);
167template <
typename Tcalc>
169 Tcalc alpha, Tcalc beta, Tcalc gamma,
int lower_limit = 0,
170 int upper_limit = 0);
172void rotateCoordinates(
Condensate *cdns,
int system_index,
double alpha,
double beta,
173 double gamma,
int lower_limit = 0,
int upper_limit = 0);
175void rotateCoordinates(
Condensate *cdns,
int system_index,
const AtomGraph &ag,
double alpha,
176 double beta,
double gamma,
int lower_limit = 0,
int upper_limit = 0);
202template <
typename Tcoord,
typename Tcalc>
203void translateCoordinates(Tcoord* xcrd, Tcoord* ycrd, Tcoord* zcrd, Tcalc xmove, Tcalc ymove,
204 Tcalc zmove,
int lower_limit,
int upper_limit,
206 Tcalc globalpos_scale_factor = 1.0);
209 double xmove,
double ymove,
double zmove,
int lower_limit = 0,
210 int upper_limit = 0);
213 double zmove,
int lower_limit = 0,
int upper_limit = 0);
216 double ymove,
double zmove,
int lower_limit = 0,
int upper_limit = 0);
219 double zmove,
int lower_limit = 0,
int upper_limit = 0);
221template <
typename Tcoord,
typename Tcalc>
223 Tcalc zmove,
int lower_limit = 0,
int upper_limit = 0,
226template <
typename Tcoord,
typename Tcalc>
228 Tcalc ymove, Tcalc zmove,
int lower_limit = 0,
int upper_limit = 0);
230template <
typename Tcalc>
233 Tcalc zmove,
int lower_limit = 0,
int upper_limit = 0);
235template <
typename Tcalc>
237 Tcalc xmove, Tcalc ymove, Tcalc zmove,
int lower_limit = 0,
238 int upper_limit = 0);
240template <
typename Tcalc>
243 Tcalc zmove,
int lower_limit = 0,
int upper_limit = 0);
245void translateCoordinates(
Condensate *cdns,
int system_index,
double xmove,
double ymove,
246 double zmove,
int lower_limit = 0,
int upper_limit = 0);
249 double xmove,
double ymove,
double zmove,
int lower_limit = 0,
250 int upper_limit = 0);
256#include "global_manipulation.tpp"
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
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
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
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
Information needed for the placement of virtual sites and transmission of forces on these sites to th...
Definition atomgraph_abstracts.h:430
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