MADNESS 0.10.1
|
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 | |
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
[in] | hessian | the hessian matrix (not mass-weighted) |
[out] | normalmodes | the normal modes |
[in] | project_tr | whether to project out translation and rotation |
[in] | print_hessian | whether to print the hessian matrix |
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().
madness::Tensor< double > compute_reduced_mass | ( | const madness::Molecule & | molecule, |
const madness::Tensor< double > & | normalmodes | ||
) |
References madness::constants::atomic_mass_in_au, madness::copy(), madness::inner(), L, madness::Molecule::massweights(), molecule, mu, madness::Molecule::natom(), and projector_external_dof().
Referenced by madness::Nemo::hessian().
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().
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().