MADNESS 0.10.1
Functions
vibanal.cc File Reference
#include <madness/chem/vibanal.h>
#include <madness/tensor/tensor_lapack.h>
Include dependency graph for vibanal.cc:

Functions

Tensor< double > compute_frequencies (const Molecule &molecule, const Tensor< double > &hessian, Tensor< double > &normalmodes, const bool project_tr, const bool print_hessian)
 returns the vibrational frequencies
 
Tensor< double > compute_reduced_mass (const Molecule &molecule, const Tensor< double > &normalmodes)
 
Tensor< double > projector_external_dof (const Molecule &mol)
 compute the projector to remove transl. and rot. degrees of freedom
 
void remove_external_dof (Tensor< double > &hessian, const Molecule &mol)
 remove translational degrees of freedom from the hessian
 

Function Documentation

◆ compute_frequencies()

Tensor< double > compute_frequencies ( const Molecule molecule,
const Tensor< double > &  hessian,
Tensor< double > &  normalmodes,
const bool  project_tr,
const bool  print_hessian 
)

returns the vibrational frequencies

Parameters
[in]hessianthe hessian matrix (not mass-weighted)
[out]normalmodesthe normal modes
[in]project_trwhether to project out translation and rotation
[in]print_hessianwhether to print the hessian matrix
Returns
the frequencies in atomic units

References madness::inner(), madness::Molecule::massweights(), molecule, madness::Molecule::natom(), madness::print(), remove_external_dof(), madness::BaseTensor::size(), and madness::syev().

Referenced by madness::Nemo::hessian().

◆ compute_reduced_mass()

Tensor< double > compute_reduced_mass ( const Molecule molecule,
const Tensor< double > &  normalmodes 
)

◆ projector_external_dof()

Tensor< double > projector_external_dof ( const Molecule mol)

compute the projector to remove transl. and rot. degrees of freedom

taken from http://www.gaussian.com/g_whitepap/vib.htm I don't really understand the concept behind the projectors, but it seems to work, and it is not written down explicitly anywhere. NOTE THE ERROR IN THE FORMULAS ON THE WEBPAGE !

References madness::_(), madness::constants::atomic_mass_in_au, madness::Molecule::center_of_mass(), e(), madness::Molecule::get_atom(), madness::Atom::get_mass_in_au(), I, madness::inner(), madness::Molecule::moment_of_inertia(), madness::Molecule::natom(), norm(), madness::Tensor< T >::normf(), p(), madness::Tensor< T >::scale(), madness::syev(), madness::Molecule::translate(), madness::transpose(), v, madness::Atom::x, madness::Atom::y, and madness::Atom::z.

Referenced by compute_reduced_mass(), and remove_external_dof().

◆ remove_external_dof()

void remove_external_dof ( Tensor< double > &  hessian,
const Molecule mol 
)

remove translational degrees of freedom from the hessian

References madness::inner(), and projector_external_dof().

Referenced by compute_frequencies().