ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
Base class for the electrostatics and magnetostatics P3M algorithms. More...
#include <data_struct.hpp>
Public Types | |
using | value_type = FloatType |
Public Member Functions | |
p3m_data_struct (P3MParameters &¶meters) | |
void | calc_differential_operator () |
Calculate the Fourier transformed differential operator. | |
void | init () |
void | update_mesh_views () |
template<typename T , class... Args> | |
void | make_fft_instance (Args... args) |
template<typename T , class... Args> | |
void | make_mesh_instance (Args... args) |
Public Attributes | |
P3MParameters | params |
P3M base parameters. | |
P3MLocalMesh | local_mesh |
Local mesh properties. | |
P3MFFTMesh< FloatType > | mesh |
Local mesh FFT buffers. | |
std::array< std::vector< int >, 3 > | d_op |
Spatial differential operator in k-space. | |
std::vector< FloatType > | g_force |
Force optimised influence function (k-space) | |
std::vector< FloatType > | g_energy |
Energy optimised influence function (k-space) | |
std::unique_ptr< FFTBackend< FloatType > > | fft |
FFT algorithm. | |
std::unique_ptr< FFTBuffers< FloatType > > | fft_buffers |
FFT buffers. | |
Base class for the electrostatics and magnetostatics P3M algorithms.
Contains a handle to the FFT backend, information about the local mesh, the differential operator, and various buffers.
Definition at line 45 of file data_struct.hpp.
using p3m_data_struct< FloatType >::value_type = FloatType |
Definition at line 46 of file data_struct.hpp.
|
inlineexplicit |
Definition at line 48 of file data_struct.hpp.
|
inline |
Calculate the Fourier transformed differential operator.
Remark: This is done on the level of n-vectors and not k-vectors, i.e. the prefactor \( 2i\pi/L \) is missing!
Definition at line 68 of file data_struct.hpp.
References p3m_data_struct< FloatType >::d_op, P3MParameters::mesh, and p3m_data_struct< FloatType >::params.
void p3m_data_struct< FloatType >::init | ( | ) |
|
inline |
Definition at line 94 of file data_struct.hpp.
References p3m_data_struct< FloatType >::local_mesh.
|
inline |
Definition at line 99 of file data_struct.hpp.
References p3m_data_struct< FloatType >::fft_buffers, and p3m_data_struct< FloatType >::local_mesh.
|
inline |
Definition at line 83 of file data_struct.hpp.
References p3m_data_struct< FloatType >::fft_buffers, and p3m_data_struct< FloatType >::mesh.
std::array<std::vector<int>, 3> p3m_data_struct< FloatType >::d_op |
Spatial differential operator in k-space.
We use an i*k differentiation.
Definition at line 62 of file data_struct.hpp.
Referenced by p3m_data_struct< FloatType >::calc_differential_operator().
std::unique_ptr<FFTBackend<FloatType> > p3m_data_struct< FloatType >::fft |
FFT algorithm.
Definition at line 77 of file data_struct.hpp.
std::unique_ptr<FFTBuffers<FloatType> > p3m_data_struct< FloatType >::fft_buffers |
FFT buffers.
Definition at line 79 of file data_struct.hpp.
Referenced by p3m_data_struct< FloatType >::make_mesh_instance(), and p3m_data_struct< FloatType >::update_mesh_views().
std::vector<FloatType> p3m_data_struct< FloatType >::g_energy |
Energy optimised influence function (k-space)
Definition at line 75 of file data_struct.hpp.
std::vector<FloatType> p3m_data_struct< FloatType >::g_force |
Force optimised influence function (k-space)
Definition at line 73 of file data_struct.hpp.
P3MLocalMesh p3m_data_struct< FloatType >::local_mesh |
Local mesh properties.
Definition at line 54 of file data_struct.hpp.
Referenced by p3m_data_struct< FloatType >::make_fft_instance(), p3m_data_struct< FloatType >::make_mesh_instance(), and DipolarP3MImpl< FloatType, Architecture >::scaleby_box_l().
P3MFFTMesh<FloatType> p3m_data_struct< FloatType >::mesh |
Local mesh FFT buffers.
Definition at line 56 of file data_struct.hpp.
Referenced by p3m_data_struct< FloatType >::update_mesh_views().
P3MParameters p3m_data_struct< FloatType >::params |
P3M base parameters.
Definition at line 52 of file data_struct.hpp.
Referenced by p3m_data_struct< FloatType >::calc_differential_operator(), DipolarP3MImpl< FloatType, Architecture >::calc_energy_correction(), CoulombTuningAlgorithm< FloatType, Architecture >::calculate_accuracy(), DipolarTuningAlgorithm< FloatType, Architecture >::calculate_accuracy(), CoulombTuningAlgorithm< FloatType, Architecture >::determine_mesh_limits(), DipolarTuningAlgorithm< FloatType, Architecture >::determine_mesh_limits(), CoulombTuningAlgorithm< FloatType, Architecture >::get_params(), DipolarTuningAlgorithm< FloatType, Architecture >::get_params(), CoulombTuningAlgorithm< FloatType, Architecture >::get_time(), DipolarP3MImpl< FloatType, Architecture >::scaleby_box_l(), CoulombTuningAlgorithm< FloatType, Architecture >::setup_logger(), DipolarTuningAlgorithm< FloatType, Architecture >::setup_logger(), and DipolarP3MImpl< FloatType, Architecture >::tune().