21#ifndef VOTCA_XTP_EWALDREALSPACEINTERACTOR_H
22#define VOTCA_XTP_EWALDREALSPACEINTERACTOR_H
101 template <
class T, enum Estatic CE>
104 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
121 template <
class T, enum Estatic CE>
124 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
142 template <enum Estatic CE>
145 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
150 template <enum Estatic CE>
153 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
161 template <
class S1,
class S2>
163 const S1& site1,
const S2& site2,
164 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
177 template <
class S1,
class S2>
179 const S1& site1,
const S2& site2,
180 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
243 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero(),
244 bool damp =
true)
const;
255 const Eigen::Vector3d& source_shift = Eigen::Vector3d::Zero())
const;
276 const Eigen::Vector3d& r_vec)
const;
277 double ErfPotential(
double q,
const Eigen::Vector3d& mu,
278 const Eigen::Vector3d& r_vec)
const;
BFunctions ComputeB(double r) const
EwaldRealSpaceInteractor(double alpha, double thole_a=0.39)
double CalcInducedSourceEnergy(const PolarSite &site1, const PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero(), bool damp=true) const
double CalcStaticEnergy(const S1 &site1, const S2 &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
BFunctions ComputeErfB(double r) const
double ErfPotential(double q, const Eigen::Vector3d &mu, const Eigen::Vector3d &r_vec) const
TholeFactors ComputeThole(double r, const PolarSite &site1, const PolarSite &site2) const
static constexpr double kCoincidenceTol
void ApplyErfInducedFieldCorrection(const PolarSite &site1, PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
double ScreenedPotential(double q, const Eigen::Vector3d &mu, const Eigen::Vector3d &r_vec) const
double CalcInducedEnergy(const PolarSite &site1, const PolarSite &site2) const
double ApplyInducedField(const PolarSite &site1, PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
double CalcErfInducedSourceEnergy(const PolarSite &site1, const PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
double CalcErfStaticEnergy(const S1 &site1, const S2 &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
double ApplyStaticField(const T &site1, PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
void ApplyErfStaticFieldCorrection(const T &site1, PolarSite &site2, const Eigen::Vector3d &source_shift=Eigen::Vector3d::Zero()) const
Class to represent Atom/Site in electrostatic+polarization.
Provides a means for comparing floating point numbers.