Loading...
Searching...
No Matches
NEBSplineExtrema.h
Go to the documentation of this file.
1/*
2** This file is part of eOn.
3**
4** SPDX-License-Identifier: BSD-3-Clause
5**
6** Copyright (c) 2010--present, eOn Development Team
7** All rights reserved.
8**
9** Repo:
10** https://github.com/TheochemUI/eOn
11*/
12#pragma once
13
14#include "ConFileIO.h"
15#include "Eigen.h"
16#include "EigenmodeStrategy.h"
17#include "EonLogger.h"
18#include "Matter.h"
19#include <filesystem>
20#include <memory>
21#include <optional>
22#include <readcon-core.hpp>
23#include <string>
24#include <vector>
25
26namespace eonc::neb {
27
29 long numExtrema{0};
30 std::vector<double> positions;
31 std::vector<double> energies;
32 std::vector<double> curvatures;
33};
34
37findSplineExtrema(const std::vector<std::shared_ptr<Matter>> &path,
38 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
39 long numImages);
40
43 const std::vector<std::shared_ptr<Matter>> &path,
44 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
45 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
46 long numImages, bool estimateEigenvalues, bool writeToFile, size_t idx,
48
51[[nodiscard]] std::vector<readcon::ConFrame> pathToConFrames(
52 const std::vector<std::shared_ptr<Matter>> &path,
53 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
54 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
55 long numImages, bool estimateEigenvalues,
56 std::optional<size_t> bandIndex = std::nullopt);
57
60 const std::vector<std::shared_ptr<Matter>> &path,
61 const std::vector<std::shared_ptr<AtomMatrix>> &tangent,
62 const std::vector<std::shared_ptr<EigenmodeStrategy>> &eigenmode_solvers,
63 long numImages, bool estimateEigenvalues, std::string filename,
64 std::optional<size_t> bandIndex = std::nullopt);
65
66} // namespace eonc::neb
IoStatus
Structured I/O result for the client surface (nanobind-friendly).
Definition ConFileIO.h:29
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)
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)
Write a NEB band as a multi-frame .con via readcon ConFrameBuilder::clone().
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)
Print NEB image data to log and optionally to file.
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.
Definition EonLogger.h:171
std::vector< double > energies
std::vector< double > curvatures
std::vector< double > positions