A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulations. The time steps are stored in units of femtoseconds. Coordinates are stored as long long integers to utilize the 32-bit int pipeline for difference computations, bypassing fp64 computations wherever possible to get the best throughput on many visualization, AI-oriented, and gaming cards.
More...
|
HybridFormat | getFormat () const |
| Get the memory format of the object.
|
|
int | getSystemCount () const |
| Get the number of systems in the object.
|
|
int | getUniqueTopologyCount () const |
| Get the number of unique topologies in the object.
|
|
UnitCellType | getUnitCellType () const |
| Get the unit cell type.
|
|
CoordinateCycle | getCyclePosition () const |
| Get the current position in the coordinate cycle.
|
|
int | getGlobalPositionBits () const |
| Get the global position scaling bit count.
|
|
int | getLocalPositionBits () const |
| Get the local position scaling bit count.
|
|
int | getVelocityBits () const |
| Get the velocity scaling bit count.
|
|
int | getForceAccumulationBits () const |
| Get the force accumulation bit count.
|
|
float | getForceScalingFactor () const |
| Get the force scaling factor used in fixed-precision accumulation.
|
|
float | getInverseForceScalingFactor () const |
| Get the inverse of the force scaling factor used in fixed-precision accumulation.
|
|
const std::vector< AtomGraph * > & | getUniqueTopologies () const |
| Get a list of unique topology pointers from this coordinate synthesis, const-casted for accessibility to other functions.
|
|
int | getAtomOffset (int system_index) const |
| Get the starting index of atoms for one of the systems, using its index.
|
|
int | getAtomCount (int system_index) const |
| Get the number of atoms in one of the systems, using its index.
|
|
int | getPaddedAtomCount () const |
| Get the total number of atoms across all systems in the synthesis, including padding between systems and after the end of the final system.
|
|
int | getUniqueTopologyIndex (int system_index) const |
| Get the index of the unique topology used by a particular system in the synthesis.
|
|
std::vector< int > | getUniqueTopologyIndices () const |
| Get the unique topology index of all systems in the synthesis.
|
|
std::vector< int > | getUniqueTopologyExampleIndices () const |
| Get a list of system indices from within this coordinate synthesis, providing examples of each unique topology as presented in the order the topology pointers appear in the output of getUniqueTopologies() above.
|
|
int | getTopologyInstanceCount (int topology_index) const |
| Get the number of systems that make use of a particular topology.
|
|
std::vector< int > | getSystemIndicesByTopology (int topology_index) const |
| Get a list of system indices which all reference the same unique topology (the unique topology index is determined by the order in which each unique topology appears in the overall list of systems in the object).
|
|
const PhaseSpaceSynthesis * | getSelfPointer () const |
| Get a const pointer to the object itself.
|
|
PhaseSpace | exportSystem (int index, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Export a system's coordinates, velocities, and forces to a PhaseSpace object.
|
|
void | primeConjugateGradientCalculation () |
| Set the alternate positions to the current forces, and initialize velocities to zero, as part of the first step of conjugate gradient optimization. This primes the system so that the alternate coordinates and velocities arrays can hold the prior forces and temporary conjugate gradient memory.
|
|
void | printTrajectory (const std::vector< int > &system_indices, const std::string &file_name, double current_time, CoordinateFileKind output_kind, PrintSituation expectation) const |
| Print a list of structures to a trajectory file. Download will be performed when calling this function, over the subset of relevant frames and data.
|
|
|
| PhaseSpaceSynthesis (const std::vector< PhaseSpace > &ps_list, const std::vector< AtomGraph * > &ag_list, int globalpos_scale_bits_in=default_globalpos_scale_bits, int localpos_scale_bits_in=default_localpos_scale_bits, int velocity_scale_bits_in=default_velocity_scale_bits, int force_scale_bits_in=default_force_scale_bits, HybridFormat format_in=default_hpc_format, const GpuDetails &gpu=null_gpu) |
| The constructor works from a series PhaseSpace object, importing The LabFrame is not a POINTER-kind object of any sort.
|
|
| PhaseSpaceSynthesis (const std::vector< PhaseSpace > &ps_list, const std::vector< AtomGraph * > &ag_list, const std::vector< int > &index_key, int globalpos_scale_bits_in=default_globalpos_scale_bits, int localpos_scale_bits_in=default_localpos_scale_bits, int velocity_scale_bits_in=default_velocity_scale_bits, int force_scale_bits_in=default_force_scale_bits, HybridFormat format_in=default_hpc_format, const GpuDetails &gpu=null_gpu) |
|
| PhaseSpaceSynthesis (const std::vector< PhaseSpace > &ps_list, const std::vector< int > &ps_index_key, const std::vector< AtomGraph * > &ag_list, const std::vector< int > &ag_index_key, int globalpos_scale_bits_in=default_globalpos_scale_bits, int localpos_scale_bits_in=default_localpos_scale_bits, int velocity_scale_bits_in=default_velocity_scale_bits, int force_scale_bits_in=default_force_scale_bits, HybridFormat format_in=default_hpc_format, const GpuDetails &gpu=null_gpu) |
|
|
| PhaseSpaceSynthesis (const PhaseSpaceSynthesis &original) |
| Copy and move constructors work much like their counterparts in the smaller PhaseSpace object.
|
|
| PhaseSpaceSynthesis (const PhaseSpaceSynthesis &original, HybridFormat format_in) |
|
| PhaseSpaceSynthesis (PhaseSpaceSynthesis &&original) |
|
|
PhaseSpaceSynthesis & | operator= (const PhaseSpaceSynthesis &other) |
| Copy and move assignment operators must also be explicitly written out.
|
|
PhaseSpaceSynthesis & | operator= (PhaseSpaceSynthesis &&other) |
|
|
const AtomGraph * | getSystemTopologyPointer (int system_index) const |
| Get the topology pointer for a particular system within the synthesis.
|
|
const std::vector< AtomGraph * > & | getSystemTopologyPointer () const |
|
|
const Hybrid< llint > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) const |
| Get a pointer to one of the Hybrid objects holding system coordinates. If the synthesis uses extended precision data, the result of this function must be supplemented with the equivalent call to getCoordinateOverflowHandle().
|
|
const Hybrid< llint > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) const |
|
Hybrid< llint > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) |
|
Hybrid< llint > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) |
|
|
const Hybrid< int > * | getCoordinateOverflowHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) const |
| Get a pointer to one of the Hybrid objects holding system coordinates. Overloading and descriptions of input parameters follow from getCoordinateHandle(), above.
|
|
const Hybrid< int > * | getCoordinateOverflowHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) const |
|
Hybrid< int > * | getCoordinateOverflowHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) |
|
Hybrid< int > * | getCoordinateOverflowHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) |
|
|
const Hybrid< double > * | getBoxTransformsHandle (CoordinateCycle orientation) const |
| Get a pointer to the box space transforms. Overloading and description of the optional input parameter follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getBoxTransformsHandle () const |
|
Hybrid< double > * | getBoxTransformsHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getBoxTransformsHandle () |
|
|
const Hybrid< double > * | getInverseTransformsHandle (CoordinateCycle orientation) const |
| Get a pointer to the inverse transform that takes coordinates back into real space. Overloading and description of the optional input parameter follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getInverseTransformsHandle () const |
|
Hybrid< double > * | getInverseTransformsHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getInverseTransformsHandle () |
|
|
const Hybrid< double > * | getBoxDimensionsHandle (CoordinateCycle orientation) const |
| Get a pointer to the transform that takes coordinates back into real space. Overloading and description of the optional input parameter follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getBoxDimensionsHandle () const |
|
Hybrid< double > * | getBoxDimensionsHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getBoxDimensionsHandle () |
|
|
const Hybrid< llint > * | getBoxVectorsHandle (CoordinateCycle orientation) const |
| Get a pointer to the box space transforms. Overloading and description of the optional input parameter follows from getCoordinateHandle(), above.
|
|
const Hybrid< llint > * | getBoxVectorsHandle () const |
|
Hybrid< llint > * | getBoxVectorsHandle (CoordinateCycle orientation) |
|
Hybrid< llint > * | getBoxVectorsHandle () |
|
|
const Hybrid< int > * | getBoxVectorsOverflowHandle (CoordinateCycle orientation) const |
| Get a pointer to the box space transforms. Overloading and description of the optional input parameter follows from getCoordinateHandle(), above.
|
|
const Hybrid< int > * | getBoxVectorsOverflowHandle () const |
|
Hybrid< int > * | getBoxVectorsOverflowHandle (CoordinateCycle orientation) |
|
Hybrid< int > * | getBoxVectorsOverflowHandle () |
|
|
const PsSynthesisReader | data (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the reader or writer, as appropriate based on the const-ness of this object.
|
|
const PsSynthesisReader | data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
PsSynthesisWriter | data (HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
PsSynthesisWriter | data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
|
const PsSynthesisBorders | borders (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the read-only summary of the system sizes. The data is never needed in as a collection of device viewable pointers to host-side data, as this information is constant as of the creation of the object and therefore consistent on both the CPU host and GPU device.
|
|
const PsSynthesisBorders | borders (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
void | extractSystem (PhaseSpace *ps, int index, HybridTargetLevel origin=HybridTargetLevel::HOST, HybridTargetLevel destination=HybridTargetLevel::HOST, const GpuDetails &gpu=null_gpu) const |
| Extract the phase space (plus forces) of a specific system within the synthesis.
|
|
|
CoordinateFrame | exportCoordinates (int index, CoordinateCycle orientation, HybridFormat format_out, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Export a system's coordinates, velocities, or forces to a compact CoordinateFrame object.
|
|
CoordinateFrame | exportCoordinates (int index, CoordinateCycle orientation, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
CoordinateFrame | exportCoordinates (int index, HybridFormat format_out, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
CoordinateFrame | exportCoordinates (int index, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
std::vector< double > | getInterlacedCoordinates (int index, CoordinateCycle orientation, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the interlaced X, Y, and Z coordinates of one system in particular. The result is comparable to the getInterlacedCoordinates() functions held by CoordinateFrame and PhaseSpace objects. The result will be provided in internal units of Angstroms (for positions), Angstroms per femtosecond (for velocities), or kcal/mol-A (for forces).
|
|
std::vector< double > | getInterlacedCoordinates (int index, TrajectoryKind trajkind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
void | updateCyclePosition () |
| Modify the object's cycle position, as in the course of propagating dynamics.
|
|
void | updateCyclePosition (CoordinateCycle time_point) |
|
|
void | initializeForces (CoordinateCycle orientation, int index=-1) |
| Initialize the forces within a PhaseSpaceSynthesis object. This is the analog of the eponymous function in the PhaseSpace object.
|
|
void | initializeForces (int index=-1) |
|
|
void | importSystem (const PhaseSpaceReader &psr, int system_index, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
| Import a system from one of the other coordinate objects, or from a series of C-style arrays with trusted lengths. The imported system's size must correspond to that expected by the atom count of the system it will replace.
|
|
void | importSystem (const PhaseSpaceReader &psr, int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const PhaseSpaceWriter &psw, int system_index, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const PhaseSpaceWriter &psw, int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const PhaseSpace &ps, int system_index, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const PhaseSpace &ps, int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrameReader &cfr, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrameReader &cfr, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrameWriter &cfw, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrameWriter &cfw, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrame &cf, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
void | importSystem (const CoordinateFrame &cf, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const T *x_import, const T *y_import, const T *z_import, const double *box_xform_in, const double *inverse_xform_in, const double *box_dimensions_in, int system_index, CoordinateCycle orientation, double inverse_scaling_factor=1.0, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeriesReader< T > &csr, int frame_index, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeriesReader< T > &csr, int frame_index, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeriesWriter< T > &csw, int frame_index, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeriesWriter< T > &csw, int frame_index, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeries< T > &cs, int frame_index, int system_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
template<typename T> |
void | importSystem (const CoordinateSeries< T > &cs, int frame_index, int system_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|