Ring-polymer NVT step. More...
#include <PathIntegral.h>
Classes | |
| struct | ModeGle |
Public Member Functions | |
| RingPolymer (long nAtoms, std::vector< double > masses, std::vector< int > atomicNumbers, std::vector< char > free, Options opt) | |
| void | setAllBeads (const double *q) |
| void | setBeads (const std::vector< VectorXd > &beads) |
| One position vector of length 3 * nAtoms per bead. | |
| const std::vector< VectorXd > & | beads () const |
| const std::vector< VectorXd > & | momenta () const |
| void | setMomenta (const std::vector< VectorXd > &momenta) |
| One momentum vector of length 3 * nAtoms per bead; fixed coordinates are zeroed. | |
| void | thermalMomenta () |
| void | setHyperplane (const VectorXd &normal, const VectorXd &origin) |
| Hold n · (q_centroid - origin) = 0. | |
| void | step (Potential &pot, const double *box, bool record) |
| void | nveStep (Potential &pot, const double *box) |
| Thermostat-free RPMD step: velocity Verlet with the free ring propagated exactly in normal modes. | |
| double | kineticCv () const |
| double | meanForce () const |
| long | batches () const |
| VectorXd | centroid () const |
| VectorXd | centroidVelocity () const |
| void | resetAverages () |
| Sample | sample (Potential &pot, const double *box, long equilibration, long production) |
Private Member Functions | |
| void | forces (Potential &pot, const double *box) |
| void | thermostat (double h) |
| void | kick (double h, bool dropParallel) |
| void | propagate (double h) |
| void | projectPosition () |
| void | projectMomentum () |
| void | toNormal (const std::vector< VectorXd > &src, std::vector< VectorXd > &dst) const |
| void | fromNormal (const std::vector< VectorXd > &src, std::vector< VectorXd > &dst) const |
| double | gauss () |
| void | initGle () |
Private Attributes | |
| Options | opt_ |
| long | nAtoms_ {0} |
| long | nDof_ {0} |
| long | nBeads_ {0} |
| long | nFree_ {0} |
| std::vector< double > | mass_ |
| std::vector< int > | atomicNumbers_ |
| std::vector< char > | free_ |
| std::vector< long > | freeIndex_ |
| MatrixXd | modes_ |
| VectorXd | omegaK_ |
| std::vector< VectorXd > | q_ |
| std::vector< VectorXd > | p_ |
| std::vector< VectorXd > | f_ |
| std::vector< VectorXd > | qnm_ |
| std::vector< VectorXd > | pnm_ |
| VectorXd | planeNormal_ |
| VectorXd | planeOrigin_ |
| bool | constrain_ {false} |
| bool | haveForces_ {false} |
| std::vector< ModeGle > | gle_ |
| std::uint64_t | rng_ |
| long | batches_ {0} |
| long | recorded_ {0} |
| double | kineticSum_ {0.0} |
| double | forceSum_ {0.0} |
Ring-polymer NVT step.
Physical forces on every bead are one forceBatch call, so a calculator group carries the beads together. The classical velocity Verlet step is not used.
Definition at line 92 of file PathIntegral.h.
| eonc::pathintegral::RingPolymer::RingPolymer | ( | long | nAtoms, |
| std::vector< double > | masses, | ||
| std::vector< int > | atomicNumbers, | ||
| std::vector< char > | free, | ||
| Options | opt ) |
Definition at line 320 of file PathIntegral.cpp.
|
inlinenodiscard |
Definition at line 120 of file PathIntegral.h.
|
inlinenodiscard |
Definition at line 102 of file PathIntegral.h.
|
nodiscard |
|
nodiscard |
Definition at line 594 of file PathIntegral.cpp.
|
private |
Definition at line 558 of file PathIntegral.cpp.
|
private |
Definition at line 546 of file PathIntegral.cpp.
|
private |
Definition at line 487 of file PathIntegral.cpp.
|
private |
Definition at line 386 of file PathIntegral.cpp.
|
private |
Definition at line 681 of file PathIntegral.cpp.
|
nodiscard |
Definition at line 609 of file PathIntegral.cpp.
|
nodiscard |
Definition at line 626 of file PathIntegral.cpp.
|
inlinenodiscard |
Definition at line 103 of file PathIntegral.h.
| void eonc::pathintegral::RingPolymer::nveStep | ( | Potential & | pot, |
| const double * | box ) |
Thermostat-free RPMD step: velocity Verlet with the free ring propagated exactly in normal modes.
Refused while a hyperplane is set.
Definition at line 801 of file PathIntegral.cpp.
|
private |
Definition at line 741 of file PathIntegral.cpp.
|
private |
Definition at line 725 of file PathIntegral.cpp.
|
private |
Definition at line 703 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::resetAverages | ( | ) |
Definition at line 633 of file PathIntegral.cpp.
| Sample eonc::pathintegral::RingPolymer::sample | ( | Potential & | pot, |
| const double * | box, | ||
| long | equilibration, | ||
| long | production ) |
Definition at line 815 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::setAllBeads | ( | const double * | q | ) |
Definition at line 418 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::setBeads | ( | const std::vector< VectorXd > & | beads | ) |
One position vector of length 3 * nAtoms per bead.
The centroid is projected onto the hyperplane when one is set.
Definition at line 433 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::setHyperplane | ( | const VectorXd & | normal, |
| const VectorXd & | origin ) |
Hold n · (q_centroid - origin) = 0.
n is normalised on the free coordinates. origin has length 3 * nAtoms.
Definition at line 466 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::setMomenta | ( | const std::vector< VectorXd > & | momenta | ) |
One momentum vector of length 3 * nAtoms per bead; fixed coordinates are zeroed.
Definition at line 449 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::step | ( | Potential & | pot, |
| const double * | box, | ||
| bool | record ) |
Definition at line 768 of file PathIntegral.cpp.
| void eonc::pathintegral::RingPolymer::thermalMomenta | ( | ) |
Definition at line 496 of file PathIntegral.cpp.
|
private |
Definition at line 639 of file PathIntegral.cpp.
|
private |
Definition at line 534 of file PathIntegral.cpp.
|
private |
Definition at line 149 of file PathIntegral.h.
|
private |
Definition at line 174 of file PathIntegral.h.
|
private |
Definition at line 161 of file PathIntegral.h.
|
private |
Definition at line 156 of file PathIntegral.h.
|
private |
Definition at line 177 of file PathIntegral.h.
|
private |
Definition at line 150 of file PathIntegral.h.
|
private |
Definition at line 151 of file PathIntegral.h.
|
private |
Definition at line 171 of file PathIntegral.h.
|
private |
Definition at line 162 of file PathIntegral.h.
|
private |
Definition at line 176 of file PathIntegral.h.
|
private |
Definition at line 148 of file PathIntegral.h.
|
private |
Definition at line 152 of file PathIntegral.h.
|
private |
Definition at line 144 of file PathIntegral.h.
|
private |
Definition at line 146 of file PathIntegral.h.
|
private |
Definition at line 145 of file PathIntegral.h.
|
private |
Definition at line 147 of file PathIntegral.h.
|
private |
Definition at line 153 of file PathIntegral.h.
|
private |
Definition at line 143 of file PathIntegral.h.
|
private |
Definition at line 155 of file PathIntegral.h.
|
private |
Definition at line 159 of file PathIntegral.h.
|
private |
Definition at line 160 of file PathIntegral.h.
|
private |
Definition at line 158 of file PathIntegral.h.
|
private |
Definition at line 154 of file PathIntegral.h.
|
private |
Definition at line 157 of file PathIntegral.h.
|
private |
Definition at line 175 of file PathIntegral.h.
|
private |
Definition at line 173 of file PathIntegral.h.