STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::mm::LineMinimization Class Reference

This object serves a synthesis of systems. Hold the move multipliers for all of them and energies obtained by moving various distances along the conjugate gradient vector. This provides a basis for solving a cubic polynomial to identify the best move along the computed gradient. More...

#include <line_minimization.h>

Public Member Functions

 LineMinimization (int system_count_in=0, double dx0=0.0)
 The constructor takes only the number of systems as input and allocates for three moves along the computed gradient.
 
int getSystemCount () const
 Get the number of systems.
 
std::vector< double > getMoveLength (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the current move lengths for one or more systems.
 
double getMoveLength (int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 
void primeMoveLengths (double dx0)
 Prime the initial movement lengths for a series of line minimization cycles using a default or user-specified value. In the HPC compilation, this function will automatically upload the present move lengths to the device.
 
 LineMinimization (const LineMinimization &original)
 The copy constructor and copy assignment operator must perform pointer repair. The default move and move assignment operators are the best choice.
 
LineMinimizationoperator= (const LineMinimization &other)
 
 LineMinimization (LineMinimization &&original)=default
 
LineMinimizationoperator= (LineMinimization &&other)=default
 
std::vector< double > getMoveFactor (int move_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the movement multipliers for one or more systems defining a particular move. Collectively, the system's particles move such that the magnitude of the displacment vector is the instantaneous move length times the current move scaling factor. A move length of 0.0001A might be multiplied by factors of 1.0, 1.05, 1.025, and 1.020 as the line minimization proceeds along one computed gradient.
 
double getMoveFactor (int move_index, int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 
std::vector< double > getEnergy (int move_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the energies for one or more systems after a particular move.
 
double getEnergy (int move_index, int system_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
 
LinMinReader data (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get a read-only or writeable abstract, as appropriate.
 
LinMinWriter data (HybridTargetLevel tier=HybridTargetLevel::HOST)
 

Detailed Description

This object serves a synthesis of systems. Hold the move multipliers for all of them and energies obtained by moving various distances along the conjugate gradient vector. This provides a basis for solving a cubic polynomial to identify the best move along the computed gradient.

Constructor & Destructor Documentation

◆ LineMinimization() [1/2]

stormm::mm::LineMinimization::LineMinimization ( int system_count_in = 0,
double dx0 = 0.0 )

The constructor takes only the number of systems as input and allocates for three moves along the computed gradient.

Parameters
system_count_inThe number of systems to prepare for line minimizations upon
dx0Initial step size for total movement of all atoms along the line

◆ LineMinimization() [2/2]

stormm::mm::LineMinimization::LineMinimization ( const LineMinimization & original)

The copy constructor and copy assignment operator must perform pointer repair. The default move and move assignment operators are the best choice.

Parameters
originalThe original object, to be replicated or moved
otherAnother object, to be replicated or moved

Member Function Documentation

◆ data()

LinMinReader stormm::mm::LineMinimization::data ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get a read-only or writeable abstract, as appropriate.

Overloaded:

Parameters
tierLeve at which to obtain pointers: on the host, or on the HPC device

◆ getEnergy()

std::vector< double > stormm::mm::LineMinimization::getEnergy ( int move_index,
HybridTargetLevel tier = HybridTargetLevel::HOST ) const

Get the energies for one or more systems after a particular move.

Overloaded:

  • Get all energies after a particular move.
  • Get the energy for a particular system after a particular move.
Parameters
move_indexIndex of the move (0 to 3)
system_indexIndex of the system of interest (if unspecified, the energies of all systems will be returned)
tierObtain results from the host or the device

◆ getMoveFactor()

std::vector< double > stormm::mm::LineMinimization::getMoveFactor ( int move_index,
HybridTargetLevel tier = HybridTargetLevel::HOST ) const

Get the movement multipliers for one or more systems defining a particular move. Collectively, the system's particles move such that the magnitude of the displacment vector is the instantaneous move length times the current move scaling factor. A move length of 0.0001A might be multiplied by factors of 1.0, 1.05, 1.025, and 1.020 as the line minimization proceeds along one computed gradient.

Overloaded:

  • Get the factors of all systems for a particular move.
  • Get the factors of a particular system and a specified move.
Parameters
move_indexIndex of the move (0 to 3)
system_indexIndex of the system of interest (if unspecified, the move lengths for all systems will be returned)
tierObtain results from the host or the device

◆ getMoveLength()

std::vector< double > stormm::mm::LineMinimization::getMoveLength ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get the current move lengths for one or more systems.

Overloaded:

  • Get the move lengths for all systems for a particular move.
  • Get the move lengths of a particular system and a specified move.
Parameters
system_indexIndex of the system of interest (if unspecified, the move lengths for all systems will be returned)
tierObtain results from the host or the device

◆ primeMoveLengths()

void stormm::mm::LineMinimization::primeMoveLengths ( double dx0)

Prime the initial movement lengths for a series of line minimization cycles using a default or user-specified value. In the HPC compilation, this function will automatically upload the present move lengths to the device.

Parameters
dx0The initial movelength length to take

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