MADNESS 0.10.1
Functions
vibanal.h File Reference
#include <madness/tensor/tensor.h>
#include <madness/chem/molecule.h>
Include dependency graph for vibanal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

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

Function Documentation

◆ compute_frequencies()

madness::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()

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

◆ projector_external_dof()

madness::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 ( madness::Tensor< double > &  hessian,
const madness::Molecule mol 
)

remove translational degrees of freedom from the hessian

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

Referenced by compute_frequencies().