STORMM Source Documentation
|
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. | |
Abstract for the line minimization object incorporating write access.
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.
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.