ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
DipolarP3MState< FloatType, FFTConfig > Struct Template Reference

Base class for the magnetostatics P3M algorithm. More...

#include <dp3m_heffte.hpp>

+ Inheritance diagram for DipolarP3MState< FloatType, FFTConfig >:
+ Collaboration diagram for DipolarP3MState< FloatType, FFTConfig >:

Public Types

using value_type = FloatType
 
using ComplexType = std::complex< FloatType >
 
- Public Types inherited from P3MStateCommon< FloatType >
using value_type = FloatType
 

Public Member Functions

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)
 
void resize_heffte_buffers ()
 
void init_labels ()
 
- Public Member Functions inherited from P3MStateCommon< FloatType >
 P3MStateCommon (P3MParameters &&parameters)
 
void calc_differential_operator ()
 Calculate the Fourier transformed differential operator.
 

Public Attributes

std::size_t sum_dip_part = 0
 number of dipolar particles.
 
double sum_mu2 = 0.
 Sum of square of magnetic dipoles.
 
double pos_shift = 0.
 position shift for calculation of first assignment mesh point.
 
double energy_correction = 0.
 cached k-space self-energy correction
 
std::vector< ComplexTypeks_scalar
 k-space scalar mesh for k-space calculations.
 
p3m_interpolation_cache inter_weights
 
P3MFFTMesh< FloatType > mesh
 
std::unique_ptr< FFTBackend< FloatType > > fft
 FFT algorithm.
 
std::unique_ptr< FFTBuffers< FloatType > > fft_buffers
 FFT buffers.
 
struct { 
 
   std::array< std::vector< FloatType >, 3u >   rs_dipole_density 
 dipole density in real-space with halo More...
 
   std::array< std::vector< ComplexType >, 3u >   ks_dipole_density 
 dipole density in k-space without halo More...
 
   std::array< std::vector< FloatType >, 3 >   rs_B_fields 
 magnetic fields in real-space with halo More...
 
   std::vector< ComplexType >   ks_B_field_storage 
 magnetic fields in k-space without halo More...
 
   std::array< std::vector< FloatType >, 3u >   rs_B_fields_no_halo 
 magnetic fields in real-space without halo More...
 
   std::vector< ComplexType >   ks_scalar 
 k-space workspace without halo More...
 
   std::vector< FloatType >   g_force 
 Force optimised influence function (k-space) More...
 
   std::vector< FloatType >   g_energy 
 Energy optimised influence function (k-space) More...
 
   p3m_send_mesh< FloatType >   halo_comm 
 
   std::shared_ptr< P3MFFT< FloatType, FFTConfig > >   fft 
 
   int   world_size 
 
heffte 
 
Kokkos::View< FloatType ***, Kokkos::LayoutRight, Kokkos::HostSpace > rs_fields_kokkos
 
- Public Attributes inherited from P3MStateCommon< FloatType >
P3MParameters params
 P3M base parameters.
 
P3MLocalMesh local_mesh
 Local mesh geometry information for this MPI rank.
 
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)
 

Detailed Description

template<typename FloatType, class FFTConfig>
struct DipolarP3MState< FloatType, FFTConfig >

Base class for the magnetostatics P3M algorithm.

Contains a handle to the FFT backend, information about the local mesh, the differential operator, and various buffers.

Definition at line 66 of file dp3m_heffte.hpp.

Member Typedef Documentation

◆ ComplexType

template<typename FloatType , class FFTConfig >
using DipolarP3MState< FloatType, FFTConfig >::ComplexType = std::complex<FloatType>

Definition at line 68 of file dp3m_heffte.hpp.

◆ value_type

template<typename FloatType , class FFTConfig >
using DipolarP3MState< FloatType, FFTConfig >::value_type = FloatType

Definition at line 67 of file dp3m_heffte.hpp.

Member Function Documentation

◆ init_labels()

◆ make_fft_instance()

template<typename FloatType , class FFTConfig >
template<typename T , class... Args>
void DipolarP3MState< FloatType, FFTConfig >::make_fft_instance ( Args...  args)
inline

Definition at line 105 of file dp3m_heffte.hpp.

References P3MStateCommon< FloatType >::local_mesh, and stream.

◆ make_mesh_instance()

template<typename FloatType , class FFTConfig >
template<typename T , class... Args>
void DipolarP3MState< FloatType, FFTConfig >::make_mesh_instance ( Args...  args)
inline

◆ resize_heffte_buffers()

template<typename FloatType , class FFTConfig >
void DipolarP3MState< FloatType, FFTConfig >::resize_heffte_buffers ( )

◆ update_mesh_views()

template<typename FloatType , class FFTConfig >
void DipolarP3MState< FloatType, FFTConfig >::update_mesh_views ( )
inline

Member Data Documentation

◆ energy_correction

template<typename FloatType , class FFTConfig >
double DipolarP3MState< FloatType, FFTConfig >::energy_correction = 0.

◆ fft [1/2]

template<typename FloatType , class FFTConfig >
std::unique_ptr<FFTBackend<FloatType> > DipolarP3MState< FloatType, FFTConfig >::fft

FFT algorithm.

Definition at line 90 of file dp3m_heffte.hpp.

◆ fft [2/2]

template<typename FloatType , class FFTConfig >
std::shared_ptr<P3MFFT<FloatType, FFTConfig> > DipolarP3MState< FloatType, FFTConfig >::fft

Definition at line 134 of file dp3m_heffte.hpp.

◆ fft_buffers

template<typename FloatType , class FFTConfig >
std::unique_ptr<FFTBuffers<FloatType> > DipolarP3MState< FloatType, FFTConfig >::fft_buffers

◆ g_energy

template<typename FloatType , class FFTConfig >
std::vector<FloatType> DipolarP3MState< FloatType, FFTConfig >::g_energy

Energy optimised influence function (k-space)

Definition at line 132 of file dp3m_heffte.hpp.

◆ g_force

template<typename FloatType , class FFTConfig >
std::vector<FloatType> DipolarP3MState< FloatType, FFTConfig >::g_force

Force optimised influence function (k-space)

Definition at line 130 of file dp3m_heffte.hpp.

◆ halo_comm

template<typename FloatType , class FFTConfig >
p3m_send_mesh<FloatType> DipolarP3MState< FloatType, FFTConfig >::halo_comm

◆ [struct]

◆ inter_weights

◆ ks_B_field_storage

template<typename FloatType , class FFTConfig >
std::vector<ComplexType> DipolarP3MState< FloatType, FFTConfig >::ks_B_field_storage

magnetic fields in k-space without halo

Definition at line 124 of file dp3m_heffte.hpp.

◆ ks_dipole_density

template<typename FloatType , class FFTConfig >
std::array<std::vector<ComplexType>, 3u> DipolarP3MState< FloatType, FFTConfig >::ks_dipole_density

dipole density in k-space without halo

Definition at line 120 of file dp3m_heffte.hpp.

◆ ks_scalar

template<typename FloatType , class FFTConfig >
std::vector<ComplexType> DipolarP3MState< FloatType, FFTConfig >::ks_scalar

k-space scalar mesh for k-space calculations.

k-space workspace without halo

Definition at line 83 of file dp3m_heffte.hpp.

Referenced by DipolarP3MState< FloatType, FFTConfig >::init_labels().

◆ mesh

template<typename FloatType , class FFTConfig >
P3MFFTMesh<FloatType> DipolarP3MState< FloatType, FFTConfig >::mesh

◆ pos_shift

template<typename FloatType , class FFTConfig >
double DipolarP3MState< FloatType, FFTConfig >::pos_shift = 0.

position shift for calculation of first assignment mesh point.

Definition at line 78 of file dp3m_heffte.hpp.

◆ rs_B_fields

template<typename FloatType , class FFTConfig >
std::array<std::vector<FloatType>, 3> DipolarP3MState< FloatType, FFTConfig >::rs_B_fields

magnetic fields in real-space with halo

Definition at line 122 of file dp3m_heffte.hpp.

◆ rs_B_fields_no_halo

template<typename FloatType , class FFTConfig >
std::array<std::vector<FloatType>, 3u> DipolarP3MState< FloatType, FFTConfig >::rs_B_fields_no_halo

magnetic fields in real-space without halo

Definition at line 126 of file dp3m_heffte.hpp.

◆ rs_dipole_density

template<typename FloatType , class FFTConfig >
std::array<std::vector<FloatType>, 3u> DipolarP3MState< FloatType, FFTConfig >::rs_dipole_density

dipole density in real-space with halo

Definition at line 118 of file dp3m_heffte.hpp.

◆ rs_fields_kokkos

template<typename FloatType , class FFTConfig >
Kokkos::View<FloatType ***, Kokkos::LayoutRight, Kokkos::HostSpace> DipolarP3MState< FloatType, FFTConfig >::rs_fields_kokkos

◆ sum_dip_part

◆ sum_mu2

◆ world_size

template<typename FloatType , class FFTConfig >
int DipolarP3MState< FloatType, FFTConfig >::world_size

The documentation for this struct was generated from the following file: