ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
#include <dp3m.impl.hpp>
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< System > | m_system |
Definition at line 65 of file dp3m.impl.hpp.
|
overridedefault |
|
inline |
Definition at line 79 of file dp3m.impl.hpp.
References Utils::Vector< T, N >::broadcast(), DipolarP3MImpl< FloatType, Architecture >::dp3m, Dipoles::Actor< DipolarP3M >::prefactor, and Dipoles::Actor< DipolarP3M >::set_prefactor().
|
inlineoverridevirtual |
Implements DipolarP3M.
Definition at line 122 of file dp3m.impl.hpp.
References CPU, and DipolarP3MImpl< FloatType, Architecture >::long_range_kernel().
|
overrideprotectedvirtual |
Implements DipolarP3M.
Definition at line 115 of file dp3m.cpp.
References System::System::box_geo, comm_cart, and grid_influence_function_self_energy().
|
overrideprotectedvirtual |
Implements DipolarP3M.
Definition at line 893 of file dp3m.cpp.
References P3MParameters::alpha_L, System::System::box_geo, p3m_data_struct_dipoles< FloatType >::energy_correction, p3m_data_struct< FloatType >::params, and p3m_data_struct_dipoles< FloatType >::sum_mu2.
|
overrideprotectedvirtual |
Implements DipolarP3M.
|
overrideprotectedvirtual |
Implements DipolarP3M.
|
overrideprotectedvirtual |
Implements DipolarP3M.
Definition at line 452 of file dp3m.cpp.
References System::System::box_geo, comm_cart, and ParticleRange::size().
|
overridevirtual |
Implements DipolarP3M.
Definition at line 84 of file dp3m.cpp.
References System::System::cell_structure, and comm_cart.
|
overridevirtual |
Implements DipolarP3M.
|
inlineoverridevirtual |
Implements DipolarP3M.
Definition at line 97 of file dp3m.impl.hpp.
References CPU, and DipolarP3MImpl< FloatType, Architecture >::init_cpu_kernels().
|
protected |
Definition at line 128 of file dp3m.cpp.
References Utils::Vector< T, N >::broadcast(), and count_magnetic_particles().
Referenced by DipolarP3MImpl< FloatType, Architecture >::init().
|
inlineoverridevirtualnoexcept |
Implements DipolarP3M.
Definition at line 109 of file dp3m.impl.hpp.
|
inlineoverridevirtualnoexcept |
|
inlineoverridevirtualnoexcept |
Implements DipolarP3M.
Definition at line 105 of file dp3m.impl.hpp.
|
inlineoverridevirtual |
Implements DipolarP3M.
Definition at line 118 of file dp3m.impl.hpp.
References DipolarP3MImpl< FloatType, Architecture >::long_range_kernel().
|
protected |
Compute the k-space part of forces and energies.
Definition at line 247 of file dp3m.cpp.
References Utils::Vector< T, N >::broadcast(), comm_cart, for_each_3d(), INTEG_METHOD_NPT_ISO, npt_add_virial_contribution(), P3M_EPSILON_METALLIC, Utils::sqr(), and this_node.
Referenced by DipolarP3MImpl< FloatType, Architecture >::add_long_range_forces(), and DipolarP3MImpl< FloatType, Architecture >::long_range_energy().
|
inlineoverridevirtual |
Implements DipolarP3M.
Definition at line 113 of file dp3m.impl.hpp.
References DipolarP3M::sanity_checks(), and DipolarP3MImpl< FloatType, Architecture >::tune().
|
overrideprotectedvirtual |
Implements DipolarP3M.
Definition at line 880 of file dp3m.cpp.
References P3MParameters::alpha, P3MParameters::alpha_L, System::System::box_geo, p3m_data_struct_dipoles< FloatType >::energy_correction, p3m_data_struct< FloatType >::local_mesh, p3m_data_struct< FloatType >::params, P3MParameters::r_cut, P3MParameters::r_cut_iL, P3MParameters::recalc_a_ai_cao_cut(), and P3MLocalMesh::recalc_ld_pos().
|
overridevirtual |
Implements DipolarP3M.
Definition at line 648 of file dp3m.cpp.
References P3MParameters::alpha, P3MParameters::alpha_L, count_magnetic_particles(), TuningAlgorithm::determine_cao_limits(), DipolarTuningAlgorithm< FloatType, Architecture >::determine_mesh_limits(), TuningAlgorithm::determine_r_cut_limits(), p3m_data_struct< FloatType >::params, P3MParameters::r_cut, P3MParameters::r_cut_iL, DipolarTuningAlgorithm< FloatType, Architecture >::setup_logger(), p3m_data_struct_dipoles< FloatType >::sum_dip_part, TuningAlgorithm::tune(), and P3MParameters::tuning.
Referenced by DipolarP3MImpl< FloatType, Architecture >::on_activation().
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().