Loading...
Searching...
No Matches
Hessian.cpp File Reference
#include "eon/Hessian.h"
#include "eon/EonLogger.h"
#include "eon/HelperFunctions.h"
#include "eon/SafeMath.h"
#include "eon/Tunneling.h"
#include "eon/VesinNeighbors.h"
#include <algorithm>
#include <cmath>
#include <fstream>
#include <sstream>
#include <stdexcept>
#include <string>
#include <vector>

Go to the source code of this file.

Namespaces

namespace  eonc
 RAII resource manager for the ARTn C library with global synchronization.

Functions

std::vector< int > eonc::greedyColorCutoffGraph (const std::vector< std::vector< int > > &adj)
 Greedy coloring of an undirected graph.
std::vector< int > eonc::colorMobileCutoffGraph (const Matter &matter, const VectorXi &atoms, double cutoff)
 Conflict graph on atoms: two mobile atoms share an edge when their closed cutoff neighborhoods intersect, then greedy-colored.
std::vector< double > eonc::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 atoms: x = q / sqrt(m), unit norm, zero on atoms outside atoms.
bool eonc::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_eigenvalue (eV / (Angstrom^2 amu)), hbar_omega (eV, negative for an imaginary mode) and wavenumber (cm^-1, same sign) as frame metadata.
bool eonc::trivialModeCountIsPhysical (long removed, long fixedAtoms)
 Whether removed zero-frequency modes are what the structure's symmetries give: 6 for a free cluster (3 translations and 3 rotations), 5 for a linear one, 3 for a periodic cell, where rotations are no symmetry of the lattice, and none once any atom is fixed.