21 #ifndef P3M_POISSON_SOLVER_H_
22 #define P3M_POISSON_SOLVER_H_
23 const unsigned Dim = 3;
25 #ifdef dontOPTIMIZE_FIELD_ASSIGNMENT
26 #define FIELDASSIGNOPTIMIZATION __attribute__((optimize(0)))
28 #define FIELDASSIGNOPTIMIZATION
36 template <
class T,
unsigned Dim>
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
double interaction_radius_m
double getXRangeMax(unsigned short level)
void applyConstantFocusing(PartBunchBase< double, 3 > *bunch, double f, double r)
double getYRangeMax(unsigned short level)
P3MPoissonSolver(Mesh_t *mesh, FieldLayout_t *fl, double interaction_radius, double alpha, double eps)
double getZRangeMin(unsigned short level)
void test(PartBunchBase< double, 3 > *bunch)
BConds< Vector_t, Dim, Mesh_t, Center_t > vbc_m
double getXRangeMin(unsigned short level)
double getZRangeMax(unsigned short level)
constexpr double alpha
The fine structure constant, no dimension.
double getYRangeMin(unsigned short level)
void compute_temperature(PartBunchBase< double, 3 > *bunch)
void computeAvgSpaceChargeForces(PartBunchBase< double, 3 > *bunch)
std::unique_ptr< FFTC_t > fft_m
void computePotential(Field_t &rho, Vector_t hr, double zshift)
BConds< double, Dim, Mesh_t, Center_t > bcp_m
Vektor< double, 3 > extend_l
Inform & print(Inform &os) const
BConds< double, Dim, Mesh_t, Center_t > bc_m
void calculatePairForces(PartBunchBase< double, 3 > *bunch, double interaction_radius, double alpha, double eps)
void calculateGridForces(PartBunchBase< double, 3 > *bunch, double interaction_radius, double alpha, double eps)
NDIndex< 3 > domainP3MConstruct_m
Vektor< double, Dim > avgEF_m
Vektor< double, 3 > extend_r