File BSplineInterpolationTask.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Readuct
class BSplineInterpolationTask : public Scine::Readuct::Task

Public Functions

BSplineInterpolationTask(std::vector<std::string> input, std::vector<std::string> output)
std::string name() const
virtual bool run(std::map<std::string, std::shared_ptr<Core::Calculator>> &systems, const YAML::Node &taskSettings) const

Private Functions

ElementaryStepOptimization::ReactionProfile interpolateElementaryStep(const Utils::AtomCollection &start, Utils::AtomCollection end, Utils::MolecularTrajectory trajectoryGuess = Utils::MolecularTrajectory()) const
ElementaryStepOptimization::ReactionProfile optimizeElementaryStep(ElementaryStepOptimization::ReactionProfile interpolatedProfile, std::shared_ptr<Core::Calculator> calculator, YAML::Node &settingsCopy) const
std::vector<Utils::AtomCollection> extractTransitionStateGuessStructure(ElementaryStepOptimization::ReactionProfile profile, std::shared_ptr<Core::Calculator> calculator, boost::filesystem::path dir) const
void writeTangentToFile(const Eigen::VectorXd &tangent, const boost::filesystem::path &generalOutputDir) const
Utils::MolecularTrajectory convertProfileToTrajectory(ElementaryStepOptimization::ReactionProfile profile) const
Utils::MolecularTrajectory discretizeSpline(const Utils::ElementTypeCollection &elements, const Utils::BSplines::BSpline &spline, int numberPoints) const
void writeTrajectory(Utils::MolecularTrajectory trajectory, std::string filepath) const
Utils::MolecularTrajectory readTrajectory(std::string filepath) const
void getInitialValues(int &maxEnergyIndex, std::vector<double> &coordinates, std::vector<double> &energies, std::shared_ptr<Core::Calculator> calculator, const ElementaryStepOptimization::ReactionProfile &profile) const
double pointDistance(const std::vector<double> &coordinates, int maxEnergyIndex) const
std::vector<double> getNewCoordinates(const std::vector<double> &oldCoordinates, int maxEnergyIndex) const
std::vector<double> getNewEnergies(const std::vector<double> &oldEnergies, const std::vector<double> &coordinates, int maxEnergyIndex, std::shared_ptr<Core::Calculator> calculator, const Utils::BSplines::MolecularSpline &spline) const
int getIndexForMaxEnergyAndCheckValidity(const std::vector<double> &energies) const

Private Members

bool alignStructuresBeforeInterpolation_ = true
int numberControlPointsForInterpolation_ = 5
int numberStructuresForMolecularTrajectory_ = 10
bool optimize_ = true
std::string optimizer_ = "lbfgs"
bool extractTsGuess_ = false
bool extractTsGuessNeighbours_ = false
bool extractTangent_ = false
std::string tangentFileName_ = ""
double coordinateThresholdForMaximumExtraction_ = 1e-3