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

#include <MLPoissonSolver.h>

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

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)
 
Informprint (Inform &os) const
 
- Public Member Functions inherited from AmrPoissonSolver< AmrBoxLib >
 AmrPoissonSolver (AmrBoxLib *itsAmrObject_p)
 
virtual ~AmrPoissonSolver ()
 
void computePotential (Field_t &, Vector_t)
 
void computePotential (Field_t &, Vector_t, double)
 
void test (PartBunchBase< double, 3 > *)
 
void hasToRegrid ()
 
- Public Member Functions inherited from PoissonSolver
virtual void computePotential (Field_t &rho, Vector_t hr)=0
 
virtual void solve (AmrScalarFieldContainer_t &, AmrScalarFieldContainer_t &, AmrVectorFieldContainer_t &, unsigned short, unsigned short, bool=true)
 
virtual void hasToRegrid ()
 
virtual void computePotential (Field_t &rho, Vector_t hr, double zshift)=0
 
virtual double getXRangeMin (unsigned short level=0)=0
 
virtual double getXRangeMax (unsigned short level=0)=0
 
virtual double getYRangeMin (unsigned short level=0)=0
 
virtual double getYRangeMax (unsigned short level=0)=0
 
virtual double getZRangeMin (unsigned short level=0)=0
 
virtual double getZRangeMax (unsigned short level=0)=0
 
virtual void test (PartBunchBase< double, 3 > *bunch)=0
 
virtual ~PoissonSolver ()
 
virtual void resizeMesh (Vector_t &, Vector_t &, const Vector_t &, const Vector_t &, double)
 
virtual double getinteractionRadius () const
 
virtual void calculatePairForces (PartBunchBase< double, 3 > *, double)
 

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

- 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
 
- Protected Attributes inherited from AmrPoissonSolver< AmrBoxLib >
AmrBoxLibitsAmrObject_mp
 
bool regrid_m
 is set to true by itsAmrObject_mp and reset to false by solver More...
 

Detailed Description

Definition at line 27 of file MLPoissonSolver.h.

Member Typedef Documentation

◆ AmrFieldContainer_pt

Definition at line 31 of file MLPoissonSolver.h.

◆ AmrGeometry_t

Definition at line 33 of file MLPoissonSolver.h.

◆ AmrGrid_t

Definition at line 34 of file MLPoissonSolver.h.

◆ AmrGridContainer_t

Definition at line 38 of file MLPoissonSolver.h.

◆ AmrProcMap_t

Definition at line 35 of file MLPoissonSolver.h.

◆ AmrProcMapContainer_t

Definition at line 39 of file MLPoissonSolver.h.

◆ AmrScalarFieldContainer_t

Definition at line 36 of file MLPoissonSolver.h.

◆ AmrVectorFieldContainer_t

Definition at line 37 of file MLPoissonSolver.h.

◆ const_AmrFieldContainer_pt

Definition at line 32 of file MLPoissonSolver.h.

◆ GeomContainer_t

Definition at line 30 of file MLPoissonSolver.h.

Constructor & Destructor Documentation

◆ MLPoissonSolver()

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).

Parameters
itsAmrObject_phas information about refinemen ratios, etc.

Definition at line 31 of file MLPoissonSolver.cpp.

Member Function Documentation

◆ getXRangeMax()

double MLPoissonSolver::getXRangeMax ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 60 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ getXRangeMin()

double MLPoissonSolver::getXRangeMin ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 55 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ getYRangeMax()

double MLPoissonSolver::getYRangeMax ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 70 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ getYRangeMin()

double MLPoissonSolver::getYRangeMin ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 65 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ getZRangeMax()

double MLPoissonSolver::getZRangeMax ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 80 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ getZRangeMin()

double MLPoissonSolver::getZRangeMin ( unsigned short  level = 0)
virtual

Implements PoissonSolver.

Definition at line 75 of file MLPoissonSolver.cpp.

References AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

◆ mlmg_m()

void MLPoissonSolver::mlmg_m ( AmrScalarFieldContainer_t rho,
AmrScalarFieldContainer_t phi,
AmrVectorFieldContainer_t efield,
int  baseLevel,
int  finestLevel 
)
private

Does the actual solve.

Parameters
rhocharge density on grids [C / m]
phielectrostatic potential on grid [V]
baseLevelfor solve
finestLevelfor solve

Definition at line 94 of file MLPoissonSolver.cpp.

References Options::info, and AmrPoissonSolver< AmrBoxLib >::itsAmrObject_mp.

Referenced by solve().

◆ print()

Inform & MLPoissonSolver::print ( Inform os) const

Print information abour tolerances.

Parameters
osoutput stream where to write to

Definition at line 85 of file MLPoissonSolver.cpp.

References abstol_m, endl(), and reltol_m.

Here is the call graph for this function:

◆ solve()

void MLPoissonSolver::solve ( AmrScalarFieldContainer_t rho,
AmrScalarFieldContainer_t phi,
AmrVectorFieldContainer_t efield,
unsigned short  baseLevel,
unsigned short  finestLevel,
bool  prevAsGuess = true 
)
virtual

Multigrid solve based on AMReX FMultiGrid solver. The relative tolerance is set to 1.0e-9 and the absolute tolerance to 0.0.

Parameters
rhoright-hand side charge density on grid [C / m]
phielectrostatic potential (unknown) [V]
efieldelectric field [V / m]
baseLevelfor solve
finestLevelfor solve
prevAsGuessuse of previous solution as initial guess

Reimplemented from PoissonSolver.

Definition at line 37 of file MLPoissonSolver.cpp.

References mlmg_m().

Here is the call graph for this function:

Member Data Documentation

◆ abstol_m

double MLPoissonSolver::abstol_m
private

Absolute tolerance for solver.

Definition at line 103 of file MLPoissonSolver.h.

Referenced by print().

◆ reltol_m

double MLPoissonSolver::reltol_m
private

Relative tolearance for solver.

Definition at line 102 of file MLPoissonSolver.h.

Referenced by print().


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