37 const Eigen::Ref<const VectorXd> &mode);
44 const VectorXd &eigenvalues,
const MatrixXd &modes,
45 const std::string &path);
90 const VectorXi &atoms,
double cutoff);
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, eOnStorageOrder > MatrixXd
void writeHessianFile(bool on) noexcept
Whether a finished Hessian goes to hessian.dat (on by default).
Hessian(const Parameters ¶ms, Matter *matter)
MatrixXd getHessian(Matter *matterIn, const VectorXi &atomsIn)
bool calculateSerial(double dr, FdScheme scheme)
VectorXd removeZeroFreqs(const VectorXd &freqs)
bool calculateBatched(double dr, FdScheme scheme)
const Parameters & parameters
bool finalizeHessian(int size)
const MatrixXd & getModes() const noexcept
Eigenvectors of the mass-weighted Hessian, one column per eigenvalue of getFreqs(),...
bool calculateColored(double cutoff, double dr, FdScheme scheme)
VectorXd getFreqs(Matter *matterIn, const VectorXi &atomsIn)
RAII resource manager for the ARTn C library with global synchronization.
FdScheme
Real finite-difference scheme for the assembled Hessian and for Lanczos/Davidson Hessian-vector produ...
constexpr double kEvToWavenumber
1 eV in cm^-1, e / (h c) from the exact SI values.
bool writeNormalModes(Matter &matter, const VectorXi &atoms, const VectorXd &eigenvalues, const MatrixXd &modes, const std::string &path)
Writes one frame of matter per mode to path, the mode as the displacements section and mode_eigenvalu...
bool trivialModeCountIsPhysical(long removed, long fixedAtoms)
Whether removed zero-frequency modes are what the structure's symmetries give: 6 for a free cluster (...
std::vector< int > greedyColorCutoffGraph(const std::vector< std::vector< int > > &adj)
Greedy coloring of an undirected graph.
std::vector< int > colorMobileCutoffGraph(const Matter &matter, const VectorXi &atoms, double cutoff)
Conflict graph on atoms: two mobile atoms share an edge when their closed cutoff neighborhoods inters...
std::vector< double > cartesianMode(const Matter &matter, const VectorXi &atoms, const Eigen::Ref< const VectorXd > &mode)
Cartesian displacement of every atom along one mass-weighted mode over the mobile degrees of freedom ...
RAII helper for class-scoped logging.