21#ifndef VOTCA_XTP_EWALDREALSPACESUM_H
22#define VOTCA_XTP_EWALDREALSPACESUM_H
28#include <unordered_map>
158 const Eigen::Matrix3d& box,
const EwaldRegistry& registry,
double alpha,
159 double thole_a,
double r_min,
double field_tol,
160 double shell_width = 0.945,
Index n_max = 15,
161 double screening_factor = 6.0,
162 const std::vector<std::pair<Index, Eigen::Vector3d>>& foreground = {});
187 template <enum Estatic CE>
190 bool include_static =
true)
const;
256 const std::vector<Eigen::Vector3d>& points,
272 const std::vector<std::pair<Index, PolarSite*>>& targets,
289 return seen > 0 ? double(
culled) / double(seen) : 0.0;
312 const std::pair<const PolarSite*, EwaldChargeState>& key)
const {
313 return std::hash<const PolarSite*>()(key.first) ^
314 (std::hash<EwaldChargeState>()(key.second) << 1);
394 mutable std::unordered_map<
395 std::pair<const PolarSite*, EwaldChargeState>,
396 std::vector<std::tuple<const PolarSegment*, Index, Eigen::Vector3d>>,
NeighborStats GetNeighborStats() const
static constexpr double kForegroundMatchTol
Eigen::VectorXd PotentialAtMany(Index target_segment_id, const std::vector< Eigen::Vector3d > &points, EwaldChargeState source_state) const
double CalcInducedSourceEnergyAt(const PolarSite &target, EwaldChargeState source_state) const
std::map< Index, std::vector< Eigen::Vector3d > > foreground_
double CalcStaticEnergyAt(const PolarSite &target, EwaldChargeState source_state) const
std::vector< Translation > GenerateSortedTranslations() const
const EwaldRegistry & registry_
void AddFieldAt(Index target_segment_id, PolarSite &target, EwaldChargeState source_state, bool include_static=true) const
std::unordered_map< std::pair< const PolarSite *, EwaldChargeState >, std::vector< std::tuple< const PolarSegment *, Index, Eigen::Vector3d > >, PairHash > neighbor_cache_
double RealSpaceCutoff() const
std::vector< Translation > translations_
void PrepareNeighborCache(const std::vector< std::pair< Index, PolarSite * > > &targets, EwaldChargeState source_state) const
EwaldRealSpaceInteractor interactor_
double real_space_cutoff_
Index foreground_entries_
static constexpr double kSelfTranslationTol
EwaldRealSpaceSum(const Eigen::Matrix3d &box, const EwaldRegistry ®istry, double alpha, double thole_a, double r_min, double field_tol, double shell_width=0.945, Index n_max=15, double screening_factor=6.0, const std::vector< std::pair< Index, Eigen::Vector3d > > &foreground={})
Class to represent Atom/Site in electrostatic+polarization.
Provides a means for comparing floating point numbers.
double culled_fraction() const
double entries_per_target() const
std::size_t operator()(const std::pair< const PolarSite *, EwaldChargeState > &key) const