24#ifndef P3M_POISSON_SOLVER_H_
25#define P3M_POISSON_SOLVER_H_
26const unsigned Dim = 3;
28#ifdef dontOPTIMIZE_FIELD_ASSIGNMENT
29#define FIELDASSIGNOPTIMIZATION __attribute__((optimize(0)))
31#define FIELDASSIGNOPTIMIZATION
43template <
class T,
unsigned Dim>
55 double interaction_radius,
Inform & operator<<(Inform &os, const P3MPoissonSolver &fs)
constexpr double alpha
The fine structure constant, no dimension.
double getXRangeMin(unsigned short) override
void calculatePairForces(PartBunchBase< double, 3 > *bunch, double gammaz) override
IpplTimings::TimerRef CalculatePairForces_m
double getXRangeMax(unsigned short) override
double getinteractionRadius() const override
IpplTimings::TimerRef ComputePotential_m
void test(PartBunchBase< double, 3 > *) override
double getYRangeMin(unsigned short) override
std::unique_ptr< FieldLayout_t > layout4_mp
double getZRangeMin(unsigned short) override
double interaction_radius_m
void integratedGreensFunction()
FieldLayout_t * layout_mp
std::unique_ptr< Mesh_t > mesh4_mp
std::unique_ptr< Mesh_t > mesh3_mp
std::unique_ptr< FFT_t > fft_mp
double getYRangeMax(unsigned short) override
void computePotential(Field_t &rho, Vector_t hr) override
IpplTimings::TimerRef GreensFunctionTimer_m
std::unique_ptr< FieldLayout_t > layout2_mp
FFT< RCTransform, 3, double > FFT_t
Inform & print(Inform &os) const
NDIndex< 3 > domainFFTConstruct_m
std::unique_ptr< FieldLayout_t > layout3_mp
double getZRangeMax(unsigned short) override
std::unique_ptr< Mesh_t > mesh2_mp
P3MPoissonSolver(Mesh_t *mesh, FieldLayout_t *fl, double interaction_radius, double alpha, std::string greensFunction)
Timing::TimerRef TimerRef