OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
P3MPoissonSolver Class Reference

#include <P3MPoissonSolver.h>

Inheritance diagram for P3MPoissonSolver:
Inheritance graph
[legend]
Collaboration diagram for P3MPoissonSolver:
Collaboration graph
[legend]

Public Types

typedef FFT< CCTransform, 3, double > FFTC_t
 

Public Member Functions

 P3MPoissonSolver (Mesh_t *mesh, FieldLayout_t *fl, double interaction_radius, double alpha, double eps)
 
 ~P3MPoissonSolver ()
 
void initFields ()
 
void calculateGridForces (PartBunchBase< double, 3 > *bunch, double interaction_radius, double alpha, double eps)
 
void calculatePairForces (PartBunchBase< double, 3 > *bunch, double interaction_radius, double alpha, double eps)
 
void computePotential (Field_t &rho, Vector_t hr, double zshift)
 
void computePotential (Field_t &rho, Vector_t hr)
 
void applyConstantFocusing (PartBunchBase< double, 3 > *bunch, double f, double r)
 
void test (PartBunchBase< double, 3 > *bunch)
 
double getXRangeMin (unsigned short)
 
double getXRangeMax (unsigned short)
 
double getYRangeMin (unsigned short)
 
double getYRangeMax (unsigned short)
 
double getZRangeMin (unsigned short)
 
double getZRangeMax (unsigned short)
 
void computeAvgSpaceChargeForces (PartBunchBase< double, 3 > *bunch)
 
void compute_temperature (PartBunchBase< double, 3 > *bunch)
 
Informprint (Inform &os) const
 
- Public Member Functions inherited from PoissonSolver
virtual void solve (AmrScalarFieldContainer_t &, AmrScalarFieldContainer_t &, AmrVectorFieldContainer_t &, unsigned short, unsigned short, bool=true)
 
virtual void hasToRegrid ()
 
virtual ~PoissonSolver ()
 
virtual void resizeMesh (Vector_t &, Vector_t &, const Vector_t &, const Vector_t &, double)
 

Public Attributes

Vektor< double, 3 > extend_l
 
Vektor< double, 3 > extend_r
 

Private Attributes

BConds< double, Dim, Mesh_t, Center_tbc_m
 
BConds< double, Dim, Mesh_t, Center_tbcp_m
 
BConds< Vector_t, Dim, Mesh_t, Center_tvbc_m
 
Field_t rho_m
 
Field_t phi_m
 
VField_t eg_m
 
Field_t greentr_m
 
CxField_t rhocmpl_m
 
CxField_t grncmpl_m
 
CxField_t grntr_m
 
std::unique_ptr< FFTC_tfft_m
 
IField_t grnIField_m [3]
 
Mesh_tmesh_m
 
FieldLayout_tlayout_m
 
Field_t tmpgreen
 
NDIndex< 3 > domain_m
 
NDIndex< 3 > domainP3MConstruct_m
 
double interaction_radius_m
 
double alpha_m
 
double eps_m
 
Vector_t hr_m
 
Vektor< int, 3 > nr_m
 
Vektor< double, DimavgEF_m
 
double globSumEf_m [Dim]
 

Additional Inherited Members

- Protected Types inherited from PoissonSolver
typedef Field< int, 3, Mesh_t, Center_tIField_t
 
typedef Field< std::complex< double >, 3, Mesh_t, Center_tCxField_t
 

Detailed Description

Definition at line 46 of file P3MPoissonSolver.h.

Member Typedef Documentation

◆ FFTC_t

Definition at line 49 of file P3MPoissonSolver.h.

Constructor & Destructor Documentation

◆ P3MPoissonSolver()

P3MPoissonSolver::P3MPoissonSolver ( Mesh_t mesh,
FieldLayout_t fl,
double  interaction_radius,
double  alpha,
double  eps 
)

◆ ~P3MPoissonSolver()

P3MPoissonSolver::~P3MPoissonSolver ( )

Definition at line 254 of file P3MPoissonSolver.cpp.

Member Function Documentation

◆ applyConstantFocusing()

void P3MPoissonSolver::applyConstantFocusing ( PartBunchBase< double, 3 > *  bunch,
double  f,
double  r 
)

Definition at line 359 of file P3MPoissonSolver.cpp.

References avgEF_m, dot(), PartBunchBase< T, Dim >::Ef, PartBunchBase< T, Dim >::getLocalNum(), PartBunchBase< T, Dim >::R, and sqrt().

Referenced by test().

Here is the call graph for this function:

◆ calculateGridForces()

void P3MPoissonSolver::calculateGridForces ( PartBunchBase< double, 3 > *  bunch,
double  interaction_radius,
double  alpha,
double  eps 
)

◆ calculatePairForces()

void P3MPoissonSolver::calculatePairForces ( PartBunchBase< double, 3 > *  bunch,
double  interaction_radius,
double  alpha,
double  eps 
)

◆ compute_temperature()

void P3MPoissonSolver::compute_temperature ( PartBunchBase< double, 3 > *  bunch)

Definition at line 377 of file P3MPoissonSolver.cpp.

References Dim, endl(), PartBunchBase< T, Dim >::getLocalNum(), PartBunchBase< T, Dim >::getTotalNum(), PartBunchBase< T, Dim >::P, and reduce().

Here is the call graph for this function:

◆ computeAvgSpaceChargeForces()

void P3MPoissonSolver::computeAvgSpaceChargeForces ( PartBunchBase< double, 3 > *  bunch)

Definition at line 335 of file P3MPoissonSolver.cpp.

References abs(), avgEF_m, Dim, PartBunchBase< T, Dim >::Ef, PartBunchBase< T, Dim >::getLocalNum(), PartBunchBase< T, Dim >::getTotalNum(), globSumEf_m, and reduce().

Referenced by test().

Here is the call graph for this function:

◆ computePotential() [1/2]

void P3MPoissonSolver::computePotential ( Field_t rho,
Vector_t  hr 
)
virtual

Implements PoissonSolver.

Definition at line 372 of file P3MPoissonSolver.cpp.

◆ computePotential() [2/2]

void P3MPoissonSolver::computePotential ( Field_t rho,
Vector_t  hr,
double  zshift 
)
virtual

Implements PoissonSolver.

Definition at line 330 of file P3MPoissonSolver.cpp.

◆ getXRangeMax()

double P3MPoissonSolver::getXRangeMax ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 74 of file P3MPoissonSolver.h.

◆ getXRangeMin()

double P3MPoissonSolver::getXRangeMin ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 73 of file P3MPoissonSolver.h.

◆ getYRangeMax()

double P3MPoissonSolver::getYRangeMax ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 76 of file P3MPoissonSolver.h.

◆ getYRangeMin()

double P3MPoissonSolver::getYRangeMin ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 75 of file P3MPoissonSolver.h.

◆ getZRangeMax()

double P3MPoissonSolver::getZRangeMax ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 78 of file P3MPoissonSolver.h.

◆ getZRangeMin()

double P3MPoissonSolver::getZRangeMin ( unsigned short  )
inlinevirtual

Implements PoissonSolver.

Definition at line 77 of file P3MPoissonSolver.h.

◆ initFields()

void P3MPoissonSolver::initFields ( )

◆ print()

Inform & P3MPoissonSolver::print ( Inform os) const

Definition at line 476 of file P3MPoissonSolver.cpp.

References alpha_m, endl(), eps_m, extend_l, extend_r, hr_m, interaction_radius_m, and nr_m.

Here is the call graph for this function:

◆ test()

void P3MPoissonSolver::test ( PartBunchBase< double, 3 > *  bunch)
virtual

Member Data Documentation

◆ alpha_m

double P3MPoissonSolver::alpha_m
private

Definition at line 131 of file P3MPoissonSolver.h.

Referenced by print(), and test().

◆ avgEF_m

Vektor<double,Dim> P3MPoissonSolver::avgEF_m
private

Definition at line 138 of file P3MPoissonSolver.h.

Referenced by applyConstantFocusing(), and computeAvgSpaceChargeForces().

◆ bc_m

BConds<double, Dim, Mesh_t, Center_t> P3MPoissonSolver::bc_m
private

Definition at line 85 of file P3MPoissonSolver.h.

Referenced by initFields(), and P3MPoissonSolver().

◆ bcp_m

BConds<double, Dim, Mesh_t, Center_t> P3MPoissonSolver::bcp_m
private

Definition at line 86 of file P3MPoissonSolver.h.

Referenced by initFields(), and P3MPoissonSolver().

◆ domain_m

NDIndex<3> P3MPoissonSolver::domain_m
private

Definition at line 123 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ domainP3MConstruct_m

NDIndex<3> P3MPoissonSolver::domainP3MConstruct_m
private

Definition at line 127 of file P3MPoissonSolver.h.

◆ eg_m

VField_t P3MPoissonSolver::eg_m
private

Definition at line 93 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ eps_m

double P3MPoissonSolver::eps_m
private

Definition at line 132 of file P3MPoissonSolver.h.

Referenced by print(), and test().

◆ extend_l

Vektor<double,3> P3MPoissonSolver::extend_l

Definition at line 143 of file P3MPoissonSolver.h.

Referenced by calculatePairForces(), print(), and test().

◆ extend_r

Vektor<double,3> P3MPoissonSolver::extend_r

Definition at line 144 of file P3MPoissonSolver.h.

Referenced by calculatePairForces(), print(), and test().

◆ fft_m

std::unique_ptr<FFTC_t> P3MPoissonSolver::fft_m
private

Definition at line 106 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ globSumEf_m

double P3MPoissonSolver::globSumEf_m[Dim]
private

Definition at line 139 of file P3MPoissonSolver.h.

Referenced by computeAvgSpaceChargeForces().

◆ greentr_m

Field_t P3MPoissonSolver::greentr_m
private

Definition at line 96 of file P3MPoissonSolver.h.

◆ grncmpl_m

CxField_t P3MPoissonSolver::grncmpl_m
private

Definition at line 99 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ grnIField_m

IField_t P3MPoissonSolver::grnIField_m[3]
private

Definition at line 111 of file P3MPoissonSolver.h.

◆ grntr_m

CxField_t P3MPoissonSolver::grntr_m
private

Definition at line 103 of file P3MPoissonSolver.h.

◆ hr_m

Vector_t P3MPoissonSolver::hr_m
private

Definition at line 134 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), P3MPoissonSolver(), print(), and test().

◆ interaction_radius_m

double P3MPoissonSolver::interaction_radius_m
private

Definition at line 130 of file P3MPoissonSolver.h.

Referenced by print(), and test().

◆ layout_m

FieldLayout_t* P3MPoissonSolver::layout_m
private

Definition at line 116 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ mesh_m

Mesh_t* P3MPoissonSolver::mesh_m
private

Definition at line 115 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ nr_m

Vektor<int, 3> P3MPoissonSolver::nr_m
private

Definition at line 135 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), P3MPoissonSolver(), print(), and test().

◆ phi_m

Field_t P3MPoissonSolver::phi_m
private

Definition at line 91 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ rho_m

Field_t P3MPoissonSolver::rho_m
private

Definition at line 90 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ rhocmpl_m

CxField_t P3MPoissonSolver::rhocmpl_m
private

Definition at line 98 of file P3MPoissonSolver.h.

Referenced by calculateGridForces(), initFields(), and P3MPoissonSolver().

◆ tmpgreen

Field_t P3MPoissonSolver::tmpgreen
private

Definition at line 120 of file P3MPoissonSolver.h.

◆ vbc_m

BConds<Vector_t, Dim, Mesh_t, Center_t> P3MPoissonSolver::vbc_m
private

Definition at line 87 of file P3MPoissonSolver.h.

Referenced by initFields(), and P3MPoissonSolver().


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