|
OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
|
#include <MLPoissonSolver.h>
Public Member Functions | |
| MLPoissonSolver (AmrBoxLib *itsAmrObject_p) | |
| void | solve (AmrScalarFieldContainer_t &rho, AmrScalarFieldContainer_t &phi, AmrVectorFieldContainer_t &efield, unsigned short baseLevel, unsigned short finestLevel, bool prevAsGuess=true) |
| double | getXRangeMin (unsigned short level=0) |
| double | getXRangeMax (unsigned short level=0) |
| double | getYRangeMin (unsigned short level=0) |
| double | getYRangeMax (unsigned short level=0) |
| double | getZRangeMin (unsigned short level=0) |
| double | getZRangeMax (unsigned short level=0) |
| Inform & | print (Inform &os) const |
| void | computePotential (Field_t &, Vector_t) |
| virtual void | computePotential (Field_t &rho, Vector_t hr, double zshift)=0 |
| void | test (PartBunchBase< double, 3 > *) |
| void | hasToRegrid () |
| virtual void | solve (AmrScalarFieldContainer_t &, AmrScalarFieldContainer_t &, AmrVectorFieldContainer_t &, unsigned short, unsigned short, bool=true) |
| virtual void | solve (AmrScalarFieldContainer_t &, AmrScalarFieldContainer_t &, AmrVectorFieldContainer_t &, unsigned short, unsigned short, bool=true) |
| virtual void | resizeMesh (Vector_t &, Vector_t &, const Vector_t &, const Vector_t &, double) |
| virtual void | resizeMesh (Vector_t &, Vector_t &, const Vector_t &, const Vector_t &, double) |
| virtual double | getinteractionRadius () const |
| virtual double | getinteractionRadius () const |
| virtual void | calculatePairForces (PartBunchBase< double, 3 > *, double) |
| virtual void | calculatePairForces (PartBunchBase< double, 3 > *, double) |
Protected Types | |
| typedef Field< int, 3, Mesh_t, Center_t > | IField_t |
| typedef Field< int, 3, Mesh_t, Center_t > | IField_t |
| typedef Field< std::complex< double >, 3, Mesh_t, Center_t > | CxField_t |
| typedef Field< std::complex< double >, 3, Mesh_t, Center_t > | CxField_t |
Protected Attributes | |
| AmrBoxLib * | itsAmrObject_mp |
| bool | regrid_m |
| is set to true by itsAmrObject_mp and reset to false by solver | |
Private Types | |
| typedef AmrBoxLib::AmrGeomContainer_t | GeomContainer_t |
| typedef amrex::Vector< AmrBoxLib::AmrField_t * > | AmrFieldContainer_pt |
| typedef amrex::Vector< const AmrBoxLib::AmrField_t * > | const_AmrFieldContainer_pt |
| typedef AmrBoxLib::AmrGeometry_t | AmrGeometry_t |
| typedef AmrBoxLib::AmrGrid_t | AmrGrid_t |
| typedef AmrBoxLib::AmrProcMap_t | AmrProcMap_t |
| typedef AmrBoxLib::AmrScalarFieldContainer_t | AmrScalarFieldContainer_t |
| typedef AmrBoxLib::AmrVectorFieldContainer_t | AmrVectorFieldContainer_t |
| typedef AmrBoxLib::AmrGridContainer_t | AmrGridContainer_t |
| typedef AmrBoxLib::AmrProcMapContainer_t | AmrProcMapContainer_t |
Private Member Functions | |
| void | mlmg_m (AmrScalarFieldContainer_t &rho, AmrScalarFieldContainer_t &phi, AmrVectorFieldContainer_t &efield, int baseLevel, int finestLevel) |
Private Attributes | |
| double | reltol_m |
| Relative tolearance for solver. | |
| double | abstol_m |
| Absolute tolerance for solver. | |
Definition at line 27 of file MLPoissonSolver.h.
|
private |
Definition at line 31 of file MLPoissonSolver.h.
|
private |
Definition at line 33 of file MLPoissonSolver.h.
|
private |
Definition at line 34 of file MLPoissonSolver.h.
|
private |
Definition at line 38 of file MLPoissonSolver.h.
|
private |
Definition at line 35 of file MLPoissonSolver.h.
Definition at line 39 of file MLPoissonSolver.h.
Definition at line 36 of file MLPoissonSolver.h.
Definition at line 37 of file MLPoissonSolver.h.
|
private |
Definition at line 32 of file MLPoissonSolver.h.
|
protectedinherited |
Definition at line 20 of file PoissonSolver.h.
|
protectedinherited |
Definition at line 20 of file PoissonSolver.h.
|
private |
Definition at line 30 of file MLPoissonSolver.h.
|
protectedinherited |
Definition at line 19 of file PoissonSolver.h.
|
protectedinherited |
Definition at line 19 of file PoissonSolver.h.
| MLPoissonSolver::MLPoissonSolver | ( | AmrBoxLib * | itsAmrObject_p | ) |
This solver only works with AmrBoxLib. In order the solver to work the cells need to be of cubic shape. Otherwise the solver stops with the error message that it did not converge (AMReX internal).
| itsAmrObject_p | has information about refinemen ratios, etc. |
Definition at line 31 of file MLPoissonSolver.cpp.
References abstol_m, AmrPoissonSolver< AmrBoxLib >::AmrPoissonSolver(), and reltol_m.
|
inlinevirtualinherited |
Definition at line 74 of file PoissonSolver.h.
|
inlinevirtualinherited |
Reimplemented in P3MPoissonSolver.
Definition at line 74 of file PoissonSolver.h.
|
inlinevirtualinherited |
Implements PoissonSolver.
Definition at line 42 of file AmrPoissonSolver.h.
|
pure virtualinherited |
Implemented in AmrPoissonSolver< AmrObject >, FFTBoxPoissonSolver, FFTPoissonSolver, and P3MPoissonSolver.
|
inlinevirtualinherited |
Definition at line 72 of file PoissonSolver.h.
|
inlinevirtualinherited |
Reimplemented in P3MPoissonSolver.
Definition at line 72 of file PoissonSolver.h.
|
virtual |
Implements PoissonSolver.
Definition at line 60 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 55 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 70 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 65 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 80 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 75 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
inlinevirtualinherited |
Tell solver to regrid
Reimplemented from PoissonSolver.
Definition at line 56 of file AmrPoissonSolver.h.
|
private |
Does the actual solve.
| rho | charge density on grids [C / m] |
| phi | electrostatic potential on grid [V] |
| baseLevel | for solve |
| finestLevel | for solve |
Definition at line 94 of file MLPoissonSolver.cpp.
References abstol_m, AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp, and reltol_m.
Referenced by solve().
Print information abour tolerances.
| os | output stream where to write to |
Definition at line 85 of file MLPoissonSolver.cpp.
References abstol_m, endl(), and reltol_m.
|
inlinevirtualinherited |
Definition at line 68 of file PoissonSolver.h.
|
inlinevirtualinherited |
Definition at line 68 of file PoissonSolver.h.
|
inlinevirtualinherited |
AMR solver calls
| rho | right-hand side charge density on grid [C / m] |
| phi | electrostatic potential (unknown) [V] |
| efield | electric field [V / m] |
| baseLevel | for solve |
| finestLevel | for solve |
| prevAsGuess | use of previous solution as initial guess |
Definition at line 39 of file PoissonSolver.h.
| void MLPoissonSolver::solve | ( | AmrScalarFieldContainer_t & | rho, |
| AmrScalarFieldContainer_t & | phi, | ||
| AmrVectorFieldContainer_t & | efield, | ||
| unsigned short | baseLevel, | ||
| unsigned short | finestLevel, | ||
| bool | prevAsGuess = true ) |
Multigrid solve based on AMReX FMultiGrid solver. The relative tolerance is set to 1.0e-9 and the absolute tolerance to 0.0.
| rho | right-hand side charge density on grid [C / m] |
| phi | electrostatic potential (unknown) [V] |
| efield | electric field [V / m] |
| baseLevel | for solve |
| finestLevel | for solve |
| prevAsGuess | use of previous solution as initial guess |
Definition at line 37 of file MLPoissonSolver.cpp.
References mlmg_m().
|
inlinevirtualinherited |
AMR solver calls
| rho | right-hand side charge density on grid [C / m] |
| phi | electrostatic potential (unknown) [V] |
| efield | electric field [V / m] |
| baseLevel | for solve |
| finestLevel | for solve |
| prevAsGuess | use of previous solution as initial guess |
Reimplemented in AmrMultiGrid.
Definition at line 39 of file PoissonSolver.h.
Referenced by AmrBoxLib::computeSelfFields_cycl(), and AmrBoxLib::solvePoisson_m().
|
inlinevirtualinherited |
Implements PoissonSolver.
Definition at line 52 of file AmrPoissonSolver.h.
|
private |
Absolute tolerance for solver.
Definition at line 103 of file MLPoissonSolver.h.
Referenced by mlmg_m(), MLPoissonSolver(), and print().
|
protectedinherited |
Definition at line 61 of file AmrPoissonSolver.h.
Referenced by AmrMultiGrid::getXRangeMax(), FMGPoissonSolver::getXRangeMax(), MLPoissonSolver::getXRangeMax(), AmrMultiGrid::getXRangeMin(), FMGPoissonSolver::getXRangeMin(), MLPoissonSolver::getXRangeMin(), AmrMultiGrid::getYRangeMax(), FMGPoissonSolver::getYRangeMax(), MLPoissonSolver::getYRangeMax(), AmrMultiGrid::getYRangeMin(), FMGPoissonSolver::getYRangeMin(), MLPoissonSolver::getYRangeMin(), AmrMultiGrid::getZRangeMax(), FMGPoissonSolver::getZRangeMax(), MLPoissonSolver::getZRangeMax(), AmrMultiGrid::getZRangeMin(), FMGPoissonSolver::getZRangeMin(), MLPoissonSolver::getZRangeMin(), AmrMultiGrid::initLevels_m(), MLPoissonSolver::mlmg_m(), AmrMultiGrid::solve(), FMGPoissonSolver::solve(), FMGPoissonSolver::solveWithF90_m(), and AmrMultiGrid::writeSDDSData_m().
|
protectedinherited |
is set to true by itsAmrObject_mp and reset to false by solver
Definition at line 64 of file AmrPoissonSolver.h.
Referenced by AmrMultiGrid::solve(), and AmrMultiGrid::writeSDDSData_m().
|
private |
Relative tolearance for solver.
Definition at line 102 of file MLPoissonSolver.h.
Referenced by mlmg_m(), MLPoissonSolver(), and print().