Namespaces | |
| namespace | zoom |
Classes | |
| struct | CartesianStep |
| One steepest step in Cartesian coordinates and the cell matrix. More... | |
| struct | DNEB_Projection |
| Trygubenko & Wales, JCP 120:2082, 2004. More... | |
| struct | ExtremaResult |
| struct | ImageForceData |
| Data for a single image needed by projection strategies. More... | |
| struct | ImprovedTangent |
| Henkelman & Jonsson, JCP 113:9978, 2000. More... | |
| struct | JointBlock |
| struct | NEB_Projection |
| Jonsson, Mills, Jacobsen 1998 (World Scientific). More... | |
| class | OCINEBController |
| Goswami (in prep). More... | |
| struct | OnsagerMachlupSpring |
| Onsager-Machlup action-based springs (Mandelli & Parrinello 2021). More... | |
| struct | PlainEB |
| Mills, Jonsson, Schenter, Surf. More... | |
| struct | SimpleTangent |
| Mills, Jonsson, Schenter, Surf. More... | |
| struct | SpringResult |
| Result of spring force computation for a single image. More... | |
| struct | UniformSpring |
| Uniform spring constant for all images. More... | |
| struct | WeightedSpring |
| Energy-weighted spring constants (variable per segment). More... | |
Typedefs | |
| using | ProjectionStrategy |
| using | SpringStrategy |
| using | TangentStrategy = std::variant<SimpleTangent, ImprovedTangent> |
Functions | |
| AtomMatrix | computeTangent (const AtomMatrix &posDiffNext, const AtomMatrix &posDiffPrev, double energy, double energyPrev, double energyNext, bool use_old_tangent) |
| Compute the tangent vector at image i using the improved tangent scheme. | |
| AtomMatrix | forcePerp (const AtomMatrix &force, const AtomMatrix &tangent) |
| Compute the perpendicular component of force relative to the tangent. | |
| AtomMatrix | climbingImageForce (const AtomMatrix &force, const AtomMatrix &tangent, const AtomMatrix &forceDNEB) |
| Compute the climbing image projected force. | |
| AtomMatrix | computeDNEB (const AtomMatrix &forceSpring, const AtomMatrix &tangent, const AtomMatrix &forcePerp, bool useSwitching=true) |
| Compute the doubly-nudged elastic band perpendicular spring force. | |
| void | zeroTranslation (AtomMatrix &projectedForce, int nFreeAtoms, int nAtoms) |
| Zero net translational force for fully free systems. | |
| ProjectionStrategy | buildProjectionStrategy (const Parameters ¶ms) |
| Build the projection strategy from parameters. | |
| AtomMatrix | computeDNEBComponent (const AtomMatrix &forceSpring, const AtomMatrix &tangent, const AtomMatrix &forcePerp, bool useSwitching) |
| Compute the DNEB force component for a given image. | |
| ExtremaResult | findSplineExtrema (const std::vector< std::shared_ptr< Matter > > &path, const std::vector< std::shared_ptr< AtomMatrix > > &tangent, long numImages) |
| Find extrema along the MEP using cubic spline interpolation. | |
| AtomMatrix | interpolatedPeakMode (const std::vector< std::shared_ptr< Matter > > &path, const std::vector< std::shared_ptr< AtomMatrix > > &tangent, long numImages, double posFraction) |
| Unit tangent at a fractional image index. | |
| void | printImageData (const std::vector< std::shared_ptr< Matter > > &path, const std::vector< std::shared_ptr< AtomMatrix > > &tangent, const std::vector< std::shared_ptr< EigenmodeStrategy > > &eigenmode_solvers, long numImages, bool estimateEigenvalues, bool writeToFile, size_t idx, eonc::log::Scoped log, double referenceEnergy=std::numeric_limits< double >::quiet_NaN()) |
| Print NEB image data to log and optionally to file. | |
| std::vector< readcon::ConFrame > | pathToConFrames (const std::vector< std::shared_ptr< Matter > > &path, const std::vector< std::shared_ptr< AtomMatrix > > &tangent, const std::vector< std::shared_ptr< EigenmodeStrategy > > &eigenmode_solvers, long numImages, bool estimateEigenvalues, std::optional< size_t > bandIndex=std::nullopt, double referenceEnergy=std::numeric_limits< double >::quiet_NaN()) |
| Build stamped ConFrames for a NEB band (same metadata as writePathCon). | |
| eonc::io::IoStatus | writePathCon (const std::vector< std::shared_ptr< Matter > > &path, const std::vector< std::shared_ptr< AtomMatrix > > &tangent, const std::vector< std::shared_ptr< EigenmodeStrategy > > &eigenmode_solvers, long numImages, bool estimateEigenvalues, std::string filename, std::optional< size_t > bandIndex=std::nullopt, double referenceEnergy=std::numeric_limits< double >::quiet_NaN()) |
| Write a NEB band as a multi-frame .con via readcon ConFrameBuilder::clone(). | |
| SpringStrategy | buildSpringStrategy (const Parameters ¶ms, const std::vector< std::shared_ptr< Matter > > &path, long numImages, int atoms, double maxEnergy, double E_ref) |
| Build the appropriate spring strategy from parameters and current path state. | |
| TangentStrategy | buildTangentStrategy (const Parameters ¶ms) |
| Build the tangent strategy from parameters. | |
| double | solidStateJacobian (double meanVolume, int nAtoms, double weight) |
| J = (V/N)^{1/3} * N^{1/2} * weight, with V the mean endpoint volume. | |
| bool | orientCellLowerTriangular (Matrix3d &cell, AtomMatrix &positions) |
| Rotate the lab frame so the cell is lower triangular: the first lattice vector lies on x and the second lies in the xy plane. | |
| void | orientSolidStateMatter (Matter &image) |
| void | interpolateSolidStateLinear (std::vector< Matter > &images) |
| Replace interior images by a fractional linear interpolation of the oriented endpoints. | |
| JointBlock | jointDisplacement (const Matter &from, const Matter &to, double jacobian) |
| Displacement of to relative to from in the joint metric. | |
| double | jointNorm (const JointBlock &block) |
| Matrix3d | cellNebForce (const Matrix3d &cauchy, double volume, double jacobian, const Matrix3d &externalStress) |
| NEB force on the Jacobian-scaled strain. | |
| Matrix3d | finiteDifferenceCauchyStress (const Matter &image, double strainStep) |
| Central difference of the potential energy on the six lower strain components. | |
| double | solidStateEnthalpy (const Matter &image, const Matter &reference, double pressure) |
| Potential energy plus P : (h0^{-1} (h-h0)) * V0. | |
| CartesianStep | solidStateCartesianStep (const Matter &image, const AtomMatrix &atomicForce, const Matrix3d &cellForce, double jacobian) |
Definition at line 50 of file NEBProjection.h.
Definition at line 58 of file NEBSpringForce.h.
| using eonc::neb::TangentStrategy = std::variant<SimpleTangent, ImprovedTangent> |
Definition at line 38 of file NEBTangent.h.
| ProjectionStrategy eonc::neb::buildProjectionStrategy | ( | const Parameters & | params | ) |
Build the projection strategy from parameters.
DNEB is incompatible with OM and weighted springs; falls back to NEB_Projection.
Definition at line 33 of file NEBProjection.cpp.
| SpringStrategy eonc::neb::buildSpringStrategy | ( | const Parameters & | params, |
| const std::vector< std::shared_ptr< Matter > > & | path, | ||
| long | numImages, | ||
| int | atoms, | ||
| double | maxEnergy, | ||
| double | E_ref ) |
Build the appropriate spring strategy from parameters and current path state.
Definition at line 71 of file NEBSpringForce.cpp.
| TangentStrategy eonc::neb::buildTangentStrategy | ( | const Parameters & | params | ) |
Build the tangent strategy from parameters.
Definition at line 72 of file NEBTangent.cpp.
| Matrix3d eonc::neb::cellNebForce | ( | const Matrix3d & | cauchy, |
| double | volume, | ||
| double | jacobian, | ||
| const Matrix3d & | externalStress ) |
NEB force on the Jacobian-scaled strain.
Cauchy stress uses sigma = (1/V) dE/dε for h <- h (I+ε) at fixed fractional coordinates. External stress is added before the -V factor (positive hydrostatic pressure pushes the cell inward).
Definition at line 146 of file SolidStateNEB.cpp.
| AtomMatrix eonc::neb::climbingImageForce | ( | const AtomMatrix & | force, |
| const AtomMatrix & | tangent, | ||
| const AtomMatrix & | forceDNEB ) |
Compute the climbing image projected force.
F_CI = F - 2*(F.t)*t + forceDNEB
Definition at line 73 of file NEBForceProjection.cpp.
| AtomMatrix eonc::neb::computeDNEB | ( | const AtomMatrix & | forceSpring, |
| const AtomMatrix & | tangent, | ||
| const AtomMatrix & | forcePerp, | ||
| bool | useSwitching = true ) |
Compute the doubly-nudged elastic band perpendicular spring force.
useSwitching multiplies the remainder by (2/pi)*atan(|F_perp|^2 / |F_spring_perp|^2).
Definition at line 79 of file NEBForceProjection.cpp.
| AtomMatrix eonc::neb::computeDNEBComponent | ( | const AtomMatrix & | forceSpring, |
| const AtomMatrix & | tangent, | ||
| const AtomMatrix & | forcePerp, | ||
| bool | useSwitching ) |
Compute the DNEB force component for a given image.
Returned separately so it can be added to the CI force when DNEB is active. useSwitching applies the (2/pi)*atan scale. Otherwise the perpendicular spring remainder is unscaled.
Definition at line 48 of file NEBProjection.cpp.
| AtomMatrix eonc::neb::computeTangent | ( | const AtomMatrix & | posDiffNext, |
| const AtomMatrix & | posDiffPrev, | ||
| double | energy, | ||
| double | energyPrev, | ||
| double | energyNext, | ||
| bool | use_old_tangent ) |
Compute the tangent vector at image i using the improved tangent scheme.
Returns a normalized tangent vector.
Definition at line 22 of file NEBForceProjection.cpp.
| ExtremaResult eonc::neb::findSplineExtrema | ( | const std::vector< std::shared_ptr< Matter > > & | path, |
| const std::vector< std::shared_ptr< AtomMatrix > > & | tangent, | ||
| long | numImages ) |
Find extrema along the MEP using cubic spline interpolation.
Definition at line 111 of file NEBSplineExtrema.cpp.
Central difference of the potential energy on the six lower strain components.
Upper-triangle components stay zero.
Definition at line 157 of file SolidStateNEB.cpp.
| AtomMatrix eonc::neb::forcePerp | ( | const AtomMatrix & | force, |
| const AtomMatrix & | tangent ) |
Compute the perpendicular component of force relative to the tangent.
Definition at line 69 of file NEBForceProjection.cpp.
|
nodiscard |
Unit tangent at a fractional image index.
End intervals use the geometric endpoint displacement because stored endpoint tangents stay zero.
Definition at line 208 of file NEBSplineExtrema.cpp.
| void eonc::neb::interpolateSolidStateLinear | ( | std::vector< Matter > & | images | ) |
Replace interior images by a fractional linear interpolation of the oriented endpoints.
images includes the endpoints.
Definition at line 93 of file SolidStateNEB.cpp.
| JointBlock eonc::neb::jointDisplacement | ( | const Matter & | from, |
| const Matter & | to, | ||
| double | jacobian ) |
Displacement of to relative to from in the joint metric.
Atomic rows are fractional minimum-image displacements mapped through the average cell. The cell block is the averaged right strain of the Jacobian-scaled cell difference.
Definition at line 119 of file SolidStateNEB.cpp.
| double eonc::neb::jointNorm | ( | const JointBlock & | block | ) |
Definition at line 142 of file SolidStateNEB.cpp.
| bool eonc::neb::orientCellLowerTriangular | ( | Matrix3d & | cell, |
| AtomMatrix & | positions ) |
Rotate the lab frame so the cell is lower triangular: the first lattice vector lies on x and the second lies in the xy plane.
Fractional coordinates and the sign of the volume are unchanged. Returns false when the cell is singular or two lattice vectors are parallel.
Definition at line 49 of file SolidStateNEB.cpp.
| void eonc::neb::orientSolidStateMatter | ( | Matter & | image | ) |
Definition at line 80 of file SolidStateNEB.cpp.
|
nodiscard |
Build stamped ConFrames for a NEB band (same metadata as writePathCon).
Empty on invalid path size. Does not write to disk. referenceEnergy is the energy relative energies are measured from; NaN means path[0]. A zoomed band passes its original reactant energy, since zoom moves path[0] to the start of its window.
Definition at line 310 of file NEBSplineExtrema.cpp.
| void eonc::neb::printImageData | ( | const std::vector< std::shared_ptr< Matter > > & | path, |
| const std::vector< std::shared_ptr< AtomMatrix > > & | tangent, | ||
| const std::vector< std::shared_ptr< EigenmodeStrategy > > & | eigenmode_solvers, | ||
| long | numImages, | ||
| bool | estimateEigenvalues, | ||
| bool | writeToFile, | ||
| size_t | idx, | ||
| eonc::log::Scoped | log, | ||
| double | referenceEnergy ) |
Print NEB image data to log and optionally to file.
Definition at line 225 of file NEBSplineExtrema.cpp.
| CartesianStep eonc::neb::solidStateCartesianStep | ( | const Matter & | image, |
| const AtomMatrix & | atomicForce, | ||
| const Matrix3d & | cellForce, | ||
| double | jacobian ) |
Definition at line 203 of file SolidStateNEB.cpp.
| double eonc::neb::solidStateEnthalpy | ( | const Matter & | image, |
| const Matter & | reference, | ||
| double | pressure ) |
Potential energy plus P : (h0^{-1} (h-h0)) * V0.
Pressure is hydrostatic, in eV/Angstrom^3. A zero pressure returns the potential energy.
Definition at line 191 of file SolidStateNEB.cpp.
| double eonc::neb::solidStateJacobian | ( | double | meanVolume, |
| int | nAtoms, | ||
| double | weight ) |
J = (V/N)^{1/3} * N^{1/2} * weight, with V the mean endpoint volume.
doi:10.1063/1.3684549
Definition at line 40 of file SolidStateNEB.cpp.
|
nodiscard |
Write a NEB band as a multi-frame .con via readcon ConFrameBuilder::clone().
Definition at line 374 of file NEBSplineExtrema.cpp.
| void eonc::neb::zeroTranslation | ( | AtomMatrix & | projectedForce, |
| int | nFreeAtoms, | ||
| int | nAtoms ) |
Zero net translational force for fully free systems.
Definition at line 105 of file NEBForceProjection.cpp.