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

#include <dp3m.impl.hpp>

+ Inheritance diagram for DipolarP3MImpl< FloatType, Architecture >:
+ Collaboration diagram for DipolarP3MImpl< FloatType, Architecture >:

Public Member Functions

 ~DipolarP3MImpl () override=default
 
 DipolarP3MImpl (std::unique_ptr< p3m_data_struct_dipoles< FloatType > > &&dp3m_handle, double prefactor, int tune_timings, bool tune_verbose)
 
void init () override
 
void tune () override
 
void count_magnetic_particles () override
 
bool is_tuned () const noexcept override
 
bool is_gpu () const noexcept override
 
bool is_double_precision () const noexcept override
 
void on_activation () override
 
double long_range_energy (ParticleRange const &particles) override
 
void add_long_range_forces (ParticleRange const &particles) override
 
void dipole_assign (ParticleRange const &particles) override
 
- Public Member Functions inherited from DipolarP3M
 DipolarP3M (P3MParameters const &dp3m_params)
 
virtual ~DipolarP3M ()=default
 
void on_boxl_change ()
 Recalculate all box-length-dependent parameters.
 
void on_node_grid_change () const
 
void on_periodicity_change () const
 
void on_cell_structure_change ()
 
void sanity_checks () const
 
ParticleForce pair_force (Particle const &p1, Particle const &p2, Utils::Vector3d const &d, double dist2, double dist) const
 Calculate real-space contribution of p3m dipolar pair forces and torques.
 
double pair_energy (Particle const &p1, Particle const &p2, Utils::Vector3d const &d, double dist2, double dist) const
 Calculate real-space contribution of dipolar pair energy.
 
- Public Member Functions inherited from Dipoles::Actor< DipolarP3M >
void set_prefactor (double new_prefactor)
 
- Public Member Functions inherited from System::Leaf< Class >
void bind_system (std::shared_ptr< System > const &system)
 
void detach_system (std::shared_ptr< System > const &system)
 

Public Attributes

p3m_data_struct_dipoles< FloatType > & dp3m
 Dipolar P3M parameters.
 
- Public Attributes inherited from DipolarP3M
P3MParameters const & dp3m_params
 
- Public Attributes inherited from Dipoles::Actor< DipolarP3M >
double prefactor
 Magnetostatics prefactor.
 

Protected Member Functions

double long_range_kernel (bool force_flag, bool energy_flag, ParticleRange const &particles)
 Compute the k-space part of forces and energies.
 
double calc_average_self_energy_k_space () const override
 
void calc_energy_correction () override
 
void calc_influence_function_force () override
 
void calc_influence_function_energy () override
 
double calc_surface_term (bool force_flag, bool energy_flag, ParticleRange const &particles) override
 
void init_cpu_kernels ()
 
void scaleby_box_l () override
 
- Protected Member Functions inherited from DipolarP3M
void sanity_checks_boxl () const
 Checks for correctness of the k-space cutoff.
 
void sanity_checks_node_grid () const
 
void sanity_checks_periodicity () const
 
void sanity_checks_cell_structure () const
 
- Protected Member Functions inherited from System::Leaf< Class >
auto & get_system ()
 
auto & get_system () const
 

Additional Inherited Members

- Protected Attributes inherited from System::Leaf< Class >
std::weak_ptr< Systemm_system
 

Detailed Description

template<typename FloatType, Arch Architecture>
struct DipolarP3MImpl< FloatType, Architecture >

Definition at line 65 of file dp3m.impl.hpp.

Constructor & Destructor Documentation

◆ ~DipolarP3MImpl()

template<typename FloatType , Arch Architecture>
DipolarP3MImpl< FloatType, Architecture >::~DipolarP3MImpl ( )
overridedefault

◆ DipolarP3MImpl()

template<typename FloatType , Arch Architecture>
DipolarP3MImpl< FloatType, Architecture >::DipolarP3MImpl ( std::unique_ptr< p3m_data_struct_dipoles< FloatType > > &&  dp3m_handle,
double  prefactor,
int  tune_timings,
bool  tune_verbose 
)
inline

Member Function Documentation

◆ add_long_range_forces()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::add_long_range_forces ( ParticleRange const &  particles)
inlineoverridevirtual

Implements DipolarP3M.

Definition at line 122 of file dp3m.impl.hpp.

References CPU, and DipolarP3MImpl< FloatType, Architecture >::long_range_kernel().

◆ calc_average_self_energy_k_space()

template<typename FloatType , Arch Architecture>
double DipolarP3MImpl< FloatType, Architecture >::calc_average_self_energy_k_space ( ) const
overrideprotectedvirtual

Implements DipolarP3M.

Definition at line 115 of file dp3m.cpp.

References System::System::box_geo, comm_cart, and grid_influence_function_self_energy().

◆ calc_energy_correction()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::calc_energy_correction ( )
overrideprotectedvirtual

◆ calc_influence_function_energy()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::calc_influence_function_energy ( )
overrideprotectedvirtual

Implements DipolarP3M.

Definition at line 527 of file dp3m.cpp.

◆ calc_influence_function_force()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::calc_influence_function_force ( )
overrideprotectedvirtual

Implements DipolarP3M.

Definition at line 520 of file dp3m.cpp.

◆ calc_surface_term()

template<typename FloatType , Arch Architecture>
double DipolarP3MImpl< FloatType, Architecture >::calc_surface_term ( bool  force_flag,
bool  energy_flag,
ParticleRange const &  particles 
)
overrideprotectedvirtual

Implements DipolarP3M.

Definition at line 452 of file dp3m.cpp.

References System::System::box_geo, comm_cart, and ParticleRange::size().

◆ count_magnetic_particles()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::count_magnetic_particles ( )
overridevirtual

Implements DipolarP3M.

Definition at line 84 of file dp3m.cpp.

References System::System::cell_structure, and comm_cart.

◆ dipole_assign()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::dipole_assign ( ParticleRange const &  particles)
overridevirtual

Implements DipolarP3M.

Definition at line 177 of file dp3m.cpp.

◆ init()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::init ( )
inlineoverridevirtual

Implements DipolarP3M.

Definition at line 97 of file dp3m.impl.hpp.

References CPU, and DipolarP3MImpl< FloatType, Architecture >::init_cpu_kernels().

◆ init_cpu_kernels()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::init_cpu_kernels ( )
protected

◆ is_double_precision()

template<typename FloatType , Arch Architecture>
bool DipolarP3MImpl< FloatType, Architecture >::is_double_precision ( ) const
inlineoverridevirtualnoexcept

Implements DipolarP3M.

Definition at line 109 of file dp3m.impl.hpp.

◆ is_gpu()

template<typename FloatType , Arch Architecture>
bool DipolarP3MImpl< FloatType, Architecture >::is_gpu ( ) const
inlineoverridevirtualnoexcept

Implements DipolarP3M.

Definition at line 106 of file dp3m.impl.hpp.

References GPU.

◆ is_tuned()

template<typename FloatType , Arch Architecture>
bool DipolarP3MImpl< FloatType, Architecture >::is_tuned ( ) const
inlineoverridevirtualnoexcept

Implements DipolarP3M.

Definition at line 105 of file dp3m.impl.hpp.

◆ long_range_energy()

template<typename FloatType , Arch Architecture>
double DipolarP3MImpl< FloatType, Architecture >::long_range_energy ( ParticleRange const &  particles)
inlineoverridevirtual

◆ long_range_kernel()

template<typename FloatType , Arch Architecture>
double DipolarP3MImpl< FloatType, Architecture >::long_range_kernel ( bool  force_flag,
bool  energy_flag,
ParticleRange const &  particles 
)
protected

◆ on_activation()

template<typename FloatType , Arch Architecture>
void DipolarP3MImpl< FloatType, Architecture >::on_activation ( )
inlineoverridevirtual

◆ scaleby_box_l()

◆ tune()

Member Data Documentation

◆ dp3m

template<typename FloatType , Arch Architecture>
p3m_data_struct_dipoles<FloatType>& DipolarP3MImpl< FloatType, Architecture >::dp3m

Dipolar P3M parameters.

Definition at line 69 of file dp3m.impl.hpp.

Referenced by DipolarP3MImpl< FloatType, Architecture >::DipolarP3MImpl().


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