STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::mm::LinMinWriter Struct Reference

Abstract for the line minimization object incorporating write access. More...

#include <line_minimization.h>

Public Member Functions

 LinMinWriter (const int nsys_in, double *l_move_in, double *s_move_in, double *mfac_a_in, double *mfac_b_in, double *mfac_c_in, double *nrg_a_in, double *nrg_b_in, double *nrg_c_in, double *nrg_d_in)
 The constructor works like any other abstract, taking arguments in the order that fills the member variables.
 
 LinMinWriter (const LinMinWriter &original)=default
 Take the standard copy and move constructors for a struct with const elements.
 
 LinMinWriter (LinMinWriter &&original)=default
 

Public Attributes

const int nsys
 The number of systems subject to their own independent line minimizations.
 
double * l_move
 
double * s_move
 
double * mfac_a
 Move multiplying factors of the 1st move along each system's line.
 
double * mfac_b
 Move multiplying factors of the 2nd move along each system's line.
 
double * mfac_c
 Move multiplying factors of the 3rd move along each system's line.
 
double * nrg_a
 Energies obtained for each system at the outset of the cycle.
 
double * nrg_b
 Energies obtained for each system after the 1st move in the cycle.
 
double * nrg_c
 Energies obtained for each system after the 2nd move in the cycle.
 
double * nrg_d
 Energies obtained for each system after the 3rd move in the cycle.
 

Detailed Description

Abstract for the line minimization object incorporating write access.

Member Data Documentation

◆ l_move

double* stormm::mm::LinMinWriter::l_move

Lengths of the moves for each system after the initial force and energy computation. The product of this with mfac_a determines the total displacement of all atoms in the system.

◆ s_move

double* stormm::mm::LinMinWriter::s_move

During the first of three moves along the chosen line, the contents of l_move are copied into this vector for each system. This vector is then used as the reference for the baseline move length for the second and third moves along the chosen line. During the third move, the contents of s_move will be multiplied by the final move scaling factor and used to update l_move in preparation for the next cycle of line minimization. This protects against race conditions without forcing work on the CPU, such as explicitly swapping pointers to alternating l_move arrays between steps.


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