STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::trajectory::MotionSweeper Class Reference

Object to manage and stage recentering and momentum removal for a coordinate synthesis. The object does not support asynchronous work unit scheduling but does contain two alternating sets of accumulators so that one set can be initialized when the other is in use. More...

#include <motion_sweeper.h>

Public Member Functions

int getSystemCount () const
 Get the number of systems that the object is set up to serve.
 
int getWorkUnitCount () const
 Get the total number of work units spanning all systems.
 
CoordinateCycle getCyclePosition () const
 Get the object's current place in the time cycle.
 
int getMomentumBitCount () const
 Get the number of bits used for fixed-precision accumulation of the momentum.
 
int getCenterOfMassBitCount () const
 Get the number of bits used for fixed-precision accumulation in the center of mass computation.
 
int getInertialTensorBitCount () const
 Get the number of bits used for fixed-precision accumulation of the rotational moment of inertia tensor.
 
double3 getNetVelocity (int idx, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the net velocity of a specific system, relative to the coordinate origin.
 
double3 getCenterOfMass (int idx, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the center of mass as found for a specific system. Like the other accessors, above, this function can be used to inspect the accumulations and determine the results before all such quantities are purged. Descriptions of input parameters follow from getNetMomentum(), above.
 
std::vector< double > getInertialTensor (int idx, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the inertial tensor accumulated for a specific system. Descriptions of input parameters follow from getNetVelocity(), above.
 
double3 getAngularVelocity (int idx, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the angular velocity of the system about its center of mass. Descriptions of input parameters follow from getNetVelocity(), above.
 
 MotionSweeper (const PhaseSpaceSynthesis *poly_ps, int momentum_bit_count_in=default_momentum_scale_bits, int center_of_mass_bit_count_in=default_com_scale_bits, int inertia_bit_count_in=default_inertia_scale_bits)
 Class constructors take as their argument the PhaseSpaceSynthesis which the object will serve. A fixed-precision model can also be specified.
 
 MotionSweeper (const PhaseSpaceSynthesis &poly_ps, int momentum_bit_count_in=default_momentum_scale_bits, int center_of_mass_bit_count_in=default_com_scale_bits, int inertia_bit_count_in=default_inertia_scale_bits)
 
 MotionSweeper (const MotionSweeper &original)
 The copy and move constructors as wel as assignment operators require pointer repair and must therefore be coded manually.
 
 MotionSweeper (MotionSweeper &&original)
 
MotionSweeperoperator= (const MotionSweeper &other)
 
MotionSweeperoperator= (MotionSweeper &&other)
 
void updateCyclePosition ()
 Modify the object's stage in the coordinate cycle.
 
void updateCyclePosition (CoordinateCycle time_point)
 
MotionSweepWriter data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST)
 Get the abstract.
 
MotionSweepWriter data (HybridTargetLevel tier=HybridTargetLevel::HOST)
 
const MotionSweepReader data (CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 
const MotionSweepReader data (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 

Detailed Description

Object to manage and stage recentering and momentum removal for a coordinate synthesis. The object does not support asynchronous work unit scheduling but does contain two alternating sets of accumulators so that one set can be initialized when the other is in use.

Constructor & Destructor Documentation

◆ MotionSweeper()

stormm::trajectory::MotionSweeper::MotionSweeper ( const MotionSweeper & original)

The copy and move constructors as wel as assignment operators require pointer repair and must therefore be coded manually.

Parameters
originalThe original object to copy or move
otherThe object on the right hand side of the assignment operator

Member Function Documentation

◆ data()

MotionSweepWriter stormm::trajectory::MotionSweeper::data ( CoordinateCycle orientation,
HybridTargetLevel tier = HybridTargetLevel::HOST )

Get the abstract.

Overloaded:

  • Produce a writeable abstract for a non-const object.
  • Produce a read-only abstract for a const object.
  • Take the abstract at a particular point in the time cycle, or accept the object's current state
Parameters
orientationSpecify a point in the time cycle at which to take the abstract
tierIndicate whether to set pointers to memory on the CPU host or GPU device

◆ getNetVelocity()

double3 stormm::trajectory::MotionSweeper::getNetVelocity ( int idx,
HybridTargetLevel tier = HybridTargetLevel::HOST ) const

Get the net velocity of a specific system, relative to the coordinate origin.

Parameters
idxThe index of the system of interest
tierThe memory level from which to take the tensor components

◆ updateCyclePosition()

void stormm::trajectory::MotionSweeper::updateCyclePosition ( )

Modify the object's stage in the coordinate cycle.

Overloaded:

  • Increment the cycle position, as would be done from one momentum purge to the next over the course of molecular dynamics calculations
  • Set the time cycle to a specific point
Parameters
time_pointThe point in the time cycle which the object is to take as "current"

The documentation for this class was generated from the following files: