Loading...
Searching...
No Matches
eonc::detail Namespace Reference

Functions

template<typename Solver>
DimerRotationResult runRotationSolver (const std::shared_ptr< Matter > &matter, const Parameters &params, const std::shared_ptr< Potential > &pot, const AtomMatrix &initialDirection)

Function Documentation

◆ runRotationSolver()

template<typename Solver>
DimerRotationResult eonc::detail::runRotationSolver ( const std::shared_ptr< Matter > & matter,
const Parameters & params,
const std::shared_ptr< Potential > & pot,
const AtomMatrix & initialDirection )
nodiscard

Definition at line 48 of file DimerRotationDispatch.h.

50 {
51 Solver solver(matter, params, pot);
52 solver.compute(matter, initialDirection);
54 out.eigenvector = solver.getEigenvector();
55 out.eigenvalue = solver.getEigenvalue();
56 out.forceCalls = solver.totalForceCalls;
57 out.rotations = solver.statsRotations;
58 if constexpr (std::is_same_v<Solver, LORRotation>) {
59 out.converged = solver.convergedOnResidual;
60 } else {
61 out.converged = true;
62 }
63 return out;
64}
Result of a non-classical dimer rotation backend (mode estimate only).
bool converged
LOR: true only when residual stop fired; Lanczos/Davidson: true (internal convergence criteria,...