ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
The corresponding header file is p3m.hpp. More...
#include "config/config.hpp"
#include "electrostatics/p3m.hpp"
#include "electrostatics/p3m.impl.hpp"
#include "electrostatics/coulomb.hpp"
#include "electrostatics/elc.hpp"
#include "electrostatics/p3m_gpu_cuda.cuh"
#include "electrostatics/p3m_gpu_error.hpp"
#include "fft/fft.hpp"
#include "p3m/TuningAlgorithm.hpp"
#include "p3m/TuningLogger.hpp"
#include "p3m/for_each_3d.hpp"
#include "p3m/influence_function.hpp"
#include "p3m/math.hpp"
#include "BoxGeometry.hpp"
#include "LocalBox.hpp"
#include "Particle.hpp"
#include "ParticlePropertyIterator.hpp"
#include "ParticleRange.hpp"
#include "PropagationMode.hpp"
#include "actor/visitors.hpp"
#include "cell_system/CellStructure.hpp"
#include "cell_system/CellStructureType.hpp"
#include "communication.hpp"
#include "errorhandling.hpp"
#include "integrators/Propagation.hpp"
#include "npt.hpp"
#include "system/GpuParticleData.hpp"
#include "system/System.hpp"
#include "tuning.hpp"
#include <utils/Vector.hpp>
#include <utils/integral_parameter.hpp>
#include <utils/math/int_pow.hpp>
#include <utils/math/sqr.hpp>
#include <boost/mpi/collectives/all_reduce.hpp>
#include <boost/mpi/collectives/broadcast.hpp>
#include <boost/mpi/collectives/reduce.hpp>
#include <boost/mpi/communicator.hpp>
#include <boost/range/combine.hpp>
#include <boost/range/numeric.hpp>
#include <algorithm>
#include <array>
#include <cassert>
#include <complex>
#include <cstddef>
#include <functional>
#include <initializer_list>
#include <numbers>
#include <optional>
#include <span>
#include <sstream>
#include <stdexcept>
#include <string>
#include <tuple>
#include <utility>
Go to the source code of this file.
Classes | |
struct | anonymous_namespace{p3m.cpp}::AssignCharge< cao > |
struct | AssignForces< cao > |
class | CoulombTuningAlgorithm< FloatType, Architecture > |
Namespaces | |
namespace | anonymous_namespace{p3m.cpp} |
Functions | |
static auto | p3m_tune_aliasing_sums (Utils::Vector3i const &shift, Utils::Vector3i const &mesh, Utils::Vector3d const &mesh_i, int cao, double alpha_L_i) |
Aliasing sum used by p3m_k_space_error. | |
static double | p3m_real_space_error (double pref, double r_cut_iL, int n_c_part, double sum_q2, double alpha_L, Utils::Vector3d const &box_l) |
Calculate the real space contribution to the rms error in the force (as described by Kolafa and Perram). | |
static double | p3m_k_space_error (double pref, Utils::Vector3i const &mesh, int cao, int n_c_part, double sum_q2, double alpha_L, Utils::Vector3d const &box_l) |
Calculate the analytic expression of the error estimate for the P3M method in [22] (eq. | |
template<typename combined_ranges > | |
static auto | calc_dipole_moment (boost::mpi::communicator const &comm, combined_ranges const &p_q_unfolded_pos_range) |
|
static |
Definition at line 376 of file p3m.cpp.
Referenced by CoulombP3MImpl< FloatType, Architecture >::long_range_kernel().
|
static |
Calculate the analytic expression of the error estimate for the P3M method in [22] (eq.
8-23 p. 275) in order to obtain the rms error in the force for a system of N randomly distributed particles in a cubic box (k-space part).
pref | Prefactor of Coulomb interaction. |
mesh | number of mesh points in one direction. |
cao | charge assignment order. |
n_c_part | number of charged particles in the system. |
sum_q2 | sum of square of charges in the system |
alpha_L | rescaled Ewald splitting parameter. |
box_l | box dimensions. |
Definition at line 208 of file p3m.cpp.
References for_each_3d(), math::get_analytic_cotangent_sum_kernel(), p3m_tune_aliasing_sums(), Utils::product(), ROUND_ERROR_PREC, and Utils::sqr().
Referenced by CoulombTuningAlgorithm< FloatType, Architecture >::calculate_accuracy().
|
static |
Calculate the real space contribution to the rms error in the force (as described by Kolafa and Perram).
pref | Prefactor of Coulomb interaction. |
r_cut_iL | rescaled real space cutoff for p3m method. |
n_c_part | number of charged particles in the system. |
sum_q2 | sum of square of charges in the system |
alpha_L | rescaled Ewald splitting parameter. |
box_l | box dimensions. |
Definition at line 187 of file p3m.cpp.
References Utils::product(), and Utils::sqr().
Referenced by CoulombTuningAlgorithm< FloatType, Architecture >::calculate_accuracy().
|
static |
Aliasing sum used by p3m_k_space_error.
Definition at line 146 of file p3m.cpp.
References Utils::Vector< T, N >::broadcast(), for_each_3d(), P3M_BRILLOUIN, Utils::product(), math::sinc(), and Utils::sqr().
Referenced by p3m_k_space_error().