19struct OHTSTPlaneWrapTest;
26inline double pmfScanS(
long plane,
long nScan,
double guideLen) {
27 const long n = nScan < 2L ? 2L : nScan;
28 return static_cast<double>(plane) * guideLen /
static_cast<double>(n - 1);
55 :
Job(std::move(parameters), rt) {}
57 std::vector<std::string>
run(
void);
73 const VectorXd &normal);
75 friend struct ::tests::OHTSTPlaneWrapTest;
80 const VectorXd &normal);
92 const VectorXd &xOld,
const VectorXd *normal);
113 Eigen::RowVector3d *totalDrift);
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
The job class is used to serve as an abstract class for all jobs, as well as to call a job at runtime...
Job(std::unique_ptr< Parameters > parameters, Runtime &rt)
Borrow: caller keeps Runtime alive (CLI stack / Python Session).
double reactantQRatio(Matter &matter, const VectorXd &gammaR, const VectorXd &normal)
double m_andersenProb
per-step Andersen collision probability
void drawThermalVelocities(VectorXd &vel, const VectorXd *normal)
VectorXd m_masses3N
per-DOF masses of the free atoms (amu)
OHTSTJob(std::unique_ptr< Parameters > parameters, Runtime &rt)
PlaneAverages samplePlane(Matter &matter, VectorXd &x, const VectorXd &gamma, const VectorXd &normal)
long m_seedState
LCG state for the thermostat draws.
double uniformDraw()
uniform (0,1)
double gaussDraw()
standard normal (Box-Muller)
std::vector< std::string > run(void)
Virtual run; used solely for dynamic dispatch.
std::vector< VectorXd > m_symDirs
p-hat_i, index 0 = primary
double m_dt
integration step, internal units
friend struct OHTSTSymmetryTest
VectorXd m_symXR
reactant anchor R of the half-lines
bool symmetryReflect(const VectorXd &xR, VectorXd &x, VectorXd &v, const VectorXd &xOld, const VectorXd *normal)
Move-only composition root for process resources (dlopen loaders and the potential registry).
RAII resource manager for the ARTn C library with global synchronization.
AtomMatrix minImageRemoveRigidDrift(const Matter &reference, AtomMatrix diff, Eigen::RowVector3d *totalDrift)
Minimum-image a free-atom difference and remove rigid translation.
double pmfScanS(long plane, long nScan, double guideLen)
Uniform PMF-scan coordinate.
VectorXd pos
<r>, anchors Eq 18 and the Eq 12 restart
VectorXd rotNorm
<(n.F) R / (alpha |R|^2)>, drives rotation
VectorXd rotRaw
<(n.F) R>, integrand of Eq 19