ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
Common functions for dipolar and charge P3M. More...
#include "config/config.hpp"
#include <utils/Vector.hpp>
#include <algorithm>
#include <array>
#include <vector>
#include "LocalBox.hpp"
#include <cstddef>
#include <span>
#include <stdexcept>
Go to the source code of this file.
Classes | |
struct | P3MParameters |
Structure to hold P3M parameters and some dependent variables. More... | |
struct | P3MLocalMesh |
Properties of the local mesh. More... | |
struct | P3MFFTMesh< FloatType > |
Local mesh FFT buffers. More... | |
Enumerations | |
enum class | Arch { CPU , GPU } |
P3M kernel architecture. More... | |
Functions | |
std::array< std::vector< int >, 3 > | calc_p3m_mesh_shift (Utils::Vector3i const &mesh_size, bool zero_out_midpoint=false) |
Calculate indices that shift P3MParameters::mesh by mesh/2 . | |
Variables | |
auto constexpr | P3M_EPSILON_METALLIC = 0.0 |
This value indicates metallic boundary conditions. | |
Common functions for dipolar and charge P3M.
We use here a P3M (Particle-Particle Particle-Mesh) method based on the Ewald summation. Details of the used method can be found in [22] and [10] [11]. The file p3m contains only the Particle-Mesh part.
Further reading: [18], [22], [10], [11], [12], [13], [9]
Definition in file p3m/common.hpp.
|
strong |
|
inline |
Calculate indices that shift P3MParameters::mesh by mesh/2
.
For each mesh size \( n \) in mesh_size
, create a sequence of integer values \( \left( 0, \ldots, \lfloor n/2 \rfloor, -\lfloor n/2 \rfloor,
\ldots, -1\right) \) if zero_out_midpoint
is false, otherwise \( \left( 0, \ldots, \lfloor n/2 - 1 \rfloor, 0, -\lfloor n/2 \rfloor,
\ldots, -1\right) \).
Definition at line 248 of file p3m/common.hpp.
Referenced by p3m_data_struct< FloatType >::calc_differential_operator(), grid_influence_function(), grid_influence_function(), and grid_influence_function_self_energy().
|
constexpr |
This value indicates metallic boundary conditions.
Definition at line 46 of file p3m/common.hpp.
Referenced by CoulombP3MImpl< FloatType, Architecture >::adapt_epsilon_elc(), DipolarLayerCorrection::adapt_solver(), DipolarLayerCorrection::add_force_corrections(), DipolarLayerCorrection::energy_correction(), CoulombP3MImpl< FloatType, Architecture >::long_range_kernel(), DipolarP3MImpl< FloatType, Architecture >::long_range_kernel(), AdaptSolver::operator()(), and CoulombP3M::sanity_checks_boxl().