2#ifndef STORMM_LINE_MINIMIZATION_H
3#define STORMM_LINE_MINIMIZATION_H
6#include "Accelerator/hybrid.h"
12using card::HybridTargetLevel;
19 LinMinWriter(
const int nsys_in,
double* l_move_in,
double* s_move_in,
double* mfac_a_in,
20 double* mfac_b_in,
double* mfac_c_in,
double* nrg_a_in,
double* nrg_b_in,
21 double* nrg_c_in,
double* nrg_d_in);
57 LinMinReader(
const int nsys_in,
const double* l_move_in,
const double* s_move_in,
58 const double* mfac_a_in,
const double* mfac_b_in,
const double* mfac_c_in,
59 const double* nrg_a_in,
const double* nrg_b_in,
const double* nrg_c_in,
60 const double* nrg_d_in);
119 std::vector<double>
getMoveLength(HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
121 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
139 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
141 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
156 std::vector<double>
getEnergy(
int move_index,
157 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
158 double getEnergy(
int move_index,
int system_index,
159 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
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,...
Definition line_minimization.cpp:148
void primeMoveLengths(double dx0)
Prime the initial movement lengths for a series of line minimization cycles using a default or user-s...
Definition line_minimization.cpp:340
std::vector< double > getEnergy(int move_index, HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get the energies for one or more systems after a particular move.
Definition line_minimization.cpp:232
std::vector< double > getMoveLength(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get the current move lengths for one or more systems.
Definition line_minimization.cpp:121
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 com...
Definition line_minimization.cpp:32
int getSystemCount() const
Get the number of systems.
Definition line_minimization.cpp:116
LinMinReader data(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a read-only or writeable abstract, as appropriate.
Definition line_minimization.cpp:324
Abstract for the line minimization object incorporating write access.
Definition line_minimization.h:53
const double * nrg_c
Energies obtained for each system after the 2nd move in the cycle.
Definition line_minimization.h:77
const double * nrg_b
Energies obtained for each system after the 1st move in the cycle.
Definition line_minimization.h:76
LinMinReader(const LinMinReader &original)=default
Take the standard copy and move constructors for a struct with const elements.
const double * l_move
Lengths of the moves for each system in the 1st step.
Definition line_minimization.h:70
const double * mfac_a
Move multiplying factors of the 1st move along each system's line.
Definition line_minimization.h:72
const double * mfac_c
Move multiplying factors of the 3rd move along each system's line.
Definition line_minimization.h:74
LinMinReader(const int nsys_in, const double *l_move_in, const double *s_move_in, const double *mfac_a_in, const double *mfac_b_in, const double *mfac_c_in, const double *nrg_a_in, const double *nrg_b_in, const double *nrg_c_in, const double *nrg_d_in)
The constructor works like any other abstract, taking arguments in the order that fills the member va...
Definition line_minimization.cpp:23
const int nsys
The number of systems subject to their own independent line minimizations.
Definition line_minimization.h:69
const double * nrg_d
Energies obtained for each system after the 3rd move in the cycle.
Definition line_minimization.h:78
const double * nrg_a
Energies obtained for each system at the outset of the cycle.
Definition line_minimization.h:75
const double * s_move
Lengths of the moves for each system in the 2nd and 3rd steps.
Definition line_minimization.h:71
const double * mfac_b
Move multiplying factors of the 2nd move along each system's line.
Definition line_minimization.h:73
Abstract for the line minimization object incorporating write access.
Definition line_minimization.h:15
double * nrg_a
Energies obtained for each system at the outset of the cycle.
Definition line_minimization.h:46
double * mfac_a
Move multiplying factors of the 1st move along each system's line.
Definition line_minimization.h:43
const int nsys
The number of systems subject to their own independent line minimizations.
Definition line_minimization.h:30
LinMinWriter(const LinMinWriter &original)=default
Take the standard copy and move constructors for a struct with const elements.
double * mfac_b
Move multiplying factors of the 2nd move along each system's line.
Definition line_minimization.h:44
double * nrg_b
Energies obtained for each system after the 1st move in the cycle.
Definition line_minimization.h:47
double * mfac_c
Move multiplying factors of the 3rd move along each system's line.
Definition line_minimization.h:45
double * nrg_c
Energies obtained for each system after the 2nd move in the cycle.
Definition line_minimization.h:48
double * l_move
Definition line_minimization.h:31
double * nrg_d
Energies obtained for each system after the 3rd move in the cycle.
Definition line_minimization.h:49
double * s_move
Definition line_minimization.h:34
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 va...
Definition line_minimization.cpp:14