OPAL (Object Oriented Parallel Accelerator Library)
2.2.0
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 |
![]() | |
AmrPoissonSolver (AmrBoxLib *itsAmrObject_p) | |
virtual | ~AmrPoissonSolver () |
void | computePotential (Field_t &rho, Vector_t hr) |
void | computePotential (Field_t &rho, Vector_t hr, double zshift) |
void | test (PartBunchBase< double, 3 > *bunch) |
void | hasToRegrid () |
![]() | |
virtual | ~PoissonSolver () |
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. More... | |
double | abstol_m |
Absolute tolerance for solver. More... | |
Additional Inherited Members | |
![]() | |
AmrBoxLib * | itsAmrObject_mp |
bool | regrid_m |
is set to true by itsAmrObject_mp and reset to false by solver More... | |
Definition at line 7 of file MLPoissonSolver.h.
|
private |
Definition at line 11 of file MLPoissonSolver.h.
|
private |
Definition at line 13 of file MLPoissonSolver.h.
|
private |
Definition at line 14 of file MLPoissonSolver.h.
|
private |
Definition at line 18 of file MLPoissonSolver.h.
|
private |
Definition at line 15 of file MLPoissonSolver.h.
Definition at line 19 of file MLPoissonSolver.h.
Definition at line 16 of file MLPoissonSolver.h.
Definition at line 17 of file MLPoissonSolver.h.
|
private |
Definition at line 12 of file MLPoissonSolver.h.
|
private |
Definition at line 10 of file MLPoissonSolver.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 11 of file MLPoissonSolver.cpp.
|
virtual |
Implements PoissonSolver.
Definition at line 40 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 35 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 50 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
virtual |
Implements PoissonSolver.
Definition at line 45 of file MLPoissonSolver.cpp.
References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.
|
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.
|
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 74 of file MLPoissonSolver.cpp.
References abstol_m, Options::info, AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp, and reltol_m.
Referenced by solve().
Print information abour tolerances.
os | output stream where to write to |
Definition at line 65 of file MLPoissonSolver.cpp.
References abstol_m, endl(), and reltol_m.
Referenced by operator<<().
|
virtual |
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 |
Reimplemented from PoissonSolver.
Definition at line 17 of file MLPoissonSolver.cpp.
References mlmg_m().
|
private |
Absolute tolerance for solver.
Definition at line 83 of file MLPoissonSolver.h.
|
private |
Relative tolearance for solver.
Definition at line 82 of file MLPoissonSolver.h.