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,
UniformCartesian< 3, double > Mesh_t
Field< double, 3, Mesh_t, Center_t > Field_t
CenteredFieldLayout< 3, Mesh_t, Center_t > FieldLayout_t
Inform & operator<<(Inform &os, const P3MPoissonSolver &fs)
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)
Field< std::complex< double >, 3, Mesh_t, Center_t > CxField_t
Field< int, 3, Mesh_t, Center_t > IField_t
Timing::TimerRef TimerRef
Vektor< double, 3 > Vector_t