An object to complement a topology and hold positions, velocities, and forces of all particles in a system. This is not designed to be the most performant representation of the system's structure. Rather, it serves to hold a high-precision representation of a single system and transport it between CPUs and high-performance accelerators.
More...
|
PhaseSpace & | operator= (const PhaseSpace &other) |
| Copy assignment operator likewise handles assignment of internal POINTER-kind Hybrid objects.
|
|
| PhaseSpace (PhaseSpace &&original) |
| The move constructor prepares the original PhaseSpace object for destruction.
|
|
PhaseSpace & | operator= (PhaseSpace &&other) |
| The move assignment operator looks much like the copy assignment operator.
|
|
void | buildFromFile (const std::string &file_name_in, const CoordinateFileKind file_kind=CoordinateFileKind::UNKNOWN, int frame_number=0) |
| Fill the object from information in some coordinate, restart, or trajectory file.
|
|
HybridFormat | getFormat () const |
| Get the Hybrid format taken by the object, indicating on which resources its memory is present.
|
|
std::string | getFileName () const |
| Get the name of the file associated with this object.
|
|
int | getAtomCount () const |
| Get the number of atoms (particles, including virtual sites) in the object.
|
|
UnitCellType | getUnitCellType () const |
| Get the unit cell type of the coordinate system.
|
|
CoordinateCycle | getCyclePosition () const |
| Get the time cycle stage indicating the arrays holding current coordinates.
|
|
void | exportToFile (const std::string &file_name, double current_time=0.0, TrajectoryKind traj_kind=TrajectoryKind::POSITIONS, CoordinateFileKind output_kind=CoordinateFileKind::AMBER_INPCRD, PrintSituation expectation=PrintSituation::UNKNOWN) const |
| Put the phase space data into a trajectory or checkpoint file.
|
|
const PhaseSpace * | getSelfPointer () const |
| Get a pointer to the object itself (useful when the object has been passed as a const reference and a pointer is needed).
|
|
|
| PhaseSpace (int atom_count_in=0, UnitCellType unit_cell_in=UnitCellType::NONE, HybridFormat format_in=default_hpc_format) |
| Construction of a phase space object, like a topology, is typically done from a file.
|
|
| PhaseSpace (const std::string &file_name_in, CoordinateFileKind file_kind=CoordinateFileKind::UNKNOWN, int frame_number=0, HybridFormat format_in=default_hpc_format) |
|
| PhaseSpace (const std::string &file_name_in, const AtomGraph &ag, CoordinateFileKind file_kind=CoordinateFileKind::UNKNOWN, int frame_number=0, HybridFormat format_in=default_hpc_format) |
|
| PhaseSpace (const std::vector< PhaseSpace * > &input_crd, const std::vector< AtomGraph * > &input_top, const std::vector< int > &counts) |
|
| PhaseSpace (const PhaseSpace *ps_a, const AtomGraph *ag_a, const PhaseSpace *ps_b, const AtomGraph *ag_b) |
|
| PhaseSpace (const PhaseSpace &ps_a, const AtomGraph &ag_a, const PhaseSpace &ps_b, const AtomGraph &ag_b) |
|
| PhaseSpace (const PhaseSpace &original, const std::vector< int > &atom_list, HybridFormat format_in=default_hpc_format) |
|
| PhaseSpace (const PhaseSpace &original, const std::vector< uint > &mask, HybridFormat format_in=default_hpc_format) |
|
|
| PhaseSpace (const PhaseSpace &original) |
| The copy constructor handles assignment of internal POINTER-kind Hybrid objects.
|
|
| PhaseSpace (const PhaseSpace &original, HybridFormat format_in) |
|
|
template<typename T> |
void | fill (const T *xcrd, const T *ycrd, const T *zcrd, TrajectoryKind kind=TrajectoryKind::POSITIONS, CoordinateCycle cycle_in=CoordinateCycle::WHITE, int scale_bits=0, const double *box_dims=nullptr) |
| Fill the object from information in three arrays.
|
|
template<typename T> |
void | fill (const std::vector< T > &xcrd, const std::vector< T > &ycrd, const std::vector< T > &zcrd, TrajectoryKind kind=TrajectoryKind::POSITIONS, CoordinateCycle cycle_in=CoordinateCycle::WHITE, int scale_bits=0, const std::vector< double > &box_dims={}) |
|
|
const double * | getCoordinatePointer (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get a pointer to the particle X, Y, or Z coordinates, velocities, or forces, on either the host or device. Use this when the entire abstract is unnecessary or would be inefficient to retrieve.
|
|
double * | getCoordinatePointer (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
const double * | getCoordinatePointer (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
double * | getCoordinatePointer (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
const double * | getCoordinatePointer (CartesianDimension dim, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
double * | getCoordinatePointer (CartesianDimension dim, CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
|
std::vector< double > | getInterlacedCoordinates (TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the coordinates returned in an X/Y/Z interlaced manner.
|
|
std::vector< double > | getInterlacedCoordinates (CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
std::vector< double > | getInterlacedCoordinates (int low_index, int high_index, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
std::vector< double > | getInterlacedCoordinates (int low_index, int high_index, CoordinateCycle orientation, TrajectoryKind kind=TrajectoryKind::POSITIONS, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
const double * | getBoxSpaceTransformPointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get a pointer to the box space transformation matrix that can track its evolution in the PhaseSpace object's Hybrid data arrays, on either the host or device.
|
|
double * | getBoxSpaceTransformPointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
const double * | getBoxSpaceTransformPointer (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
double * | getBoxSpaceTransformPointer (HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
|
const double * | getInverseTransformPointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get a pointer to the inverse (back to real space) transformation matrix that can track its evolution in the PhaseSpace object's Hybrid data arrays, on either the host or device.
|
|
double * | getInverseTransformPointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
const double * | getInverseTransformPointer (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
double * | getInverseTransformPointer (HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
|
const double * | getBoxSizePointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get a pointer to the box dimensions that can track its evolution in the PhaseSpace object's Hybrid data arrays, on either the host or device.
|
|
double * | getBoxSizePointer (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
const double * | getBoxSizePointer (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
double * | getBoxSizePointer (HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
|
std::vector< double > | getBoxSpaceTransform (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the transformation matrix to take coordinates into box (fractional) space. The result should be interpreted as a 3x3 matrix in column-major format.
|
|
std::vector< double > | getBoxSpaceTransform (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
std::vector< double > | getInverseTransform (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the transformation matrix to take coordinates from fractional space back into real space. The result should be interpreted as a 3x3 matrix in column-major format.
|
|
std::vector< double > | getInverseTransform (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
|
const Hybrid< double > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) const |
| Get a pointer to one of the coordinate arrays, a pointer to a POINTER-kind Hybrid object.
|
|
const Hybrid< double > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) const |
|
Hybrid< double > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind, CoordinateCycle orientation) |
|
Hybrid< double > * | getCoordinateHandle (CartesianDimension dim, TrajectoryKind kind=TrajectoryKind::POSITIONS) |
|
|
const Hybrid< double > * | getBoxTransformHandle (CoordinateCycle orientation) const |
| Get a pointer to the box space transform. Overloading follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getBoxTransformHandle () const |
|
Hybrid< double > * | getBoxTransformHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getBoxTransformHandle () |
|
|
const Hybrid< double > * | getInverseTransformHandle (CoordinateCycle orientation) const |
| Get a pointer to the inverse transform that takes coordinates back into real space. Overloading follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getInverseTransformHandle () const |
|
Hybrid< double > * | getInverseTransformHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getInverseTransformHandle () |
|
|
const Hybrid< double > * | getBoxDimensionsHandle (CoordinateCycle orientation) const |
| Get a pointer to the transform that takes coordinates back into real space. Overloading follows from getCoordinateHandle(), above.
|
|
const Hybrid< double > * | getBoxDimensionsHandle () const |
|
Hybrid< double > * | getBoxDimensionsHandle (CoordinateCycle orientation) |
|
Hybrid< double > * | getBoxDimensionsHandle () |
|
|
const Hybrid< double > * | getStorageHandle () const |
| Get a pointer to the ARRAY-kind Hybrid object that holds the actual data. Needed by CoordinateFrame objects which want to be pointers into a PhaseSpace object.
|
|
Hybrid< double > * | getStorageHandle () |
|
|
void | initializeForces (CoordinateCycle orientation) |
| Initialize the forces (set them to zero)
|
|
void | initializeForces () |
|
|
void | updateCyclePosition () |
| Update the cycle position.
|
|
void | updateCyclePosition (CoordinateCycle time_point) |
|
|
const PhaseSpaceReader | data (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the abstract for this object, containing C-style pointers for the most rapid access to any of its member variables.
|
|
const PhaseSpaceReader | data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const |
|
PhaseSpaceWriter | data (HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
PhaseSpaceWriter | data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) |
|
An object to complement a topology and hold positions, velocities, and forces of all particles in a system. This is not designed to be the most performant representation of the system's structure. Rather, it serves to hold a high-precision representation of a single system and transport it between CPUs and high-performance accelerators.