File PM6PairwiseRepulsion.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Sparrow
namespace nddo

Functions

template<>
Utils::AutomaticDifferentiation::Value1DType<Utils::derivOrder::zero> integral<Utils::derivOrder::zero>(double R) const
template<>
Utils::AutomaticDifferentiation::Value1DType<Utils::derivOrder::one> integral<Utils::derivOrder::one>(double R) const
template<>
Utils::AutomaticDifferentiation::Value1DType<Utils::derivOrder::two> integral<Utils::derivOrder::two>(double R) const
template<>
Utils::AutomaticDifferentiation::DerivativeType<Utils::derivativeType::first> getDerivative<Utils::derivativeType::first>() const
template<>
Utils::AutomaticDifferentiation::DerivativeType<Utils::derivativeType::second_atomic> getDerivative<Utils::derivativeType::second_atomic>() const
template<>
Utils::AutomaticDifferentiation::DerivativeType<Utils::derivativeType::second_full> getDerivative<Utils::derivativeType::second_full>() const
class PM6PairwiseRepulsion
#include <PM6PairwiseRepulsion.h>

This class calculates the core-core repulsion between two atoms.

Public Functions

PM6PairwiseRepulsion(const AtomicParameters &A, const AtomicParameters &B, const PM6DiatomicParameters &AB)
void calculate(const Eigen::Vector3d &R, Utils::derivOrder order)
double getRepulsionEnergy() const
Eigen::RowVector3d getRepulsionGradient() const
Utils::AutomaticDifferentiation::Second3D getRepulsionHessian() const
template<Utils::derivativeType O>
Utils::AutomaticDifferentiation::DerivativeType<O> getDerivative() const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> calculateRepulsion(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> baseTerm(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> additionalTerm(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> gaussianRepulsionTerm(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> gaussianRepulsion(const AtomicParameters &P, double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> parenthesisValue(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> standardParenthesis(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> NHOHParenthesis(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> CCParenthesis(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> SiOParenthesis(double R) const

Private Functions

template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> radius(double R) const
template<Utils::derivOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> integral(double R) const

Private Members

const double cOfAdditiveTerm
const double exponentCoefficient
const double furtherExponentCC
const double distanceSiO
const double factorCC
const double factorSiO
const AtomicParameters &pA_
const AtomicParameters &pB_
const PM6DiatomicParameters &pAB_
double repulsionEnergy_
Eigen::RowVector3d repulsionGradient_
Utils::AutomaticDifferentiation::Second3D repulsionHessian_