23#include <readcon-core.hpp>
39 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
46 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
47 long numImages,
double posFraction);
51 const std::vector<std::shared_ptr<Matter>> &path,
52 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
53 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
54 long numImages,
bool estimateEigenvalues,
bool writeToFile,
size_t idx,
63 const std::vector<std::shared_ptr<Matter>> &path,
64 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
65 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
66 long numImages,
bool estimateEigenvalues,
67 std::optional<size_t> bandIndex = std::nullopt,
68 double referenceEnergy = std::numeric_limits<double>::quiet_NaN());
72 const std::vector<std::shared_ptr<Matter>> &path,
73 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
74 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
75 long numImages,
bool estimateEigenvalues, std::string filename,
76 std::optional<size_t> bandIndex = std::nullopt,
77 double referenceEnergy = std::numeric_limits<double>::quiet_NaN());
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
IoStatus
Structured I/O result for the client surface (nanobind-friendly).
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, double referenceEnergy)
Build stamped ConFrames for a NEB band (same metadata as writePathCon).
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)
Print NEB image data to log and optionally to file.
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, double referenceEnergy)
Write a NEB band as a multi-frame .con via readcon ConFrameBuilder::clone().
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.
RAII helper for class-scoped logging.
std::vector< double > energies
std::vector< double > curvatures
std::vector< double > positions