OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
MLPoissonSolver.h
Go to the documentation of this file.
1 #ifndef ML_POISSON_SOLVER_H_
2 #define ML_POISSON_SOLVER_H_
3 
5 #include "Amr/AmrBoxLib.h"
6 
7 class MLPoissonSolver : public AmrPoissonSolver< AmrBoxLib > {
8 
9 private:
11  typedef amrex::Vector<AmrBoxLib::AmrField_t*> AmrFieldContainer_pt;
12  typedef amrex::Vector<const AmrBoxLib::AmrField_t*> const_AmrFieldContainer_pt;
20 
21 public:
22 
30  MLPoissonSolver(AmrBoxLib* itsAmrObject_p);
31 
46  unsigned short baseLevel,
47  unsigned short finestLevel,
48  bool prevAsGuess = true);
49 
50  double getXRangeMin(unsigned short level = 0);
51  double getXRangeMax(unsigned short level = 0);
52  double getYRangeMin(unsigned short level = 0);
53  double getYRangeMax(unsigned short level = 0);
54  double getZRangeMin(unsigned short level = 0);
55  double getZRangeMax(unsigned short level = 0);
56 
57 
62  Inform &print(Inform &os) const;
63 
64 
65 private:
66 
78  int baseLevel,
79  int finestLevel);
80 
81 private:
82  double reltol_m;
83  double abstol_m;
84 };
85 
86 
87 inline Inform &operator<<(Inform &os, const MLPoissonSolver &fs) {
88  return fs.print(os);
89 }
90 
91 #endif
amr::AmrGrid_t AmrGrid_t
Definition: AmrBoxLib.h:32
double getZRangeMax(unsigned short level=0)
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
Definition: Attribute.cpp:167
amr::AmrGeometry_t AmrGeometry_t
Definition: AmrBoxLib.h:34
amrex::Vector< const AmrBoxLib::AmrField_t * > const_AmrFieldContainer_pt
AmrBoxLib::AmrGeomContainer_t GeomContainer_t
amr::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
Definition: AmrBoxLib.h:25
FRONT * fs
Definition: hypervolume.cpp:59
double getXRangeMax(unsigned short level=0)
AmrBoxLib::AmrGrid_t AmrGrid_t
amr::AmrProcMap_t AmrProcMap_t
Definition: AmrBoxLib.h:33
double getYRangeMin(unsigned short level=0)
AmrBoxLib::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
amr::AmrGridContainer_t AmrGridContainer_t
Definition: AmrBoxLib.h:27
MLPoissonSolver(AmrBoxLib *itsAmrObject_p)
double getXRangeMin(unsigned short level=0)
amr::AmrProcMapContainer_t AmrProcMapContainer_t
Definition: AmrBoxLib.h:28
amrex::Vector< AmrBoxLib::AmrField_t * > AmrFieldContainer_pt
double reltol_m
Relative tolearance for solver.
Inform & print(Inform &os) const
AmrBoxLib::AmrGridContainer_t AmrGridContainer_t
AmrBoxLib::AmrProcMapContainer_t AmrProcMapContainer_t
AmrBoxLib::AmrVectorFieldContainer_t AmrVectorFieldContainer_t
double getZRangeMin(unsigned short level=0)
amr::AmrScalarFieldContainer_t AmrScalarFieldContainer_t
Definition: AmrBoxLib.h:24
double getYRangeMax(unsigned short level=0)
void solve(AmrScalarFieldContainer_t &rho, AmrScalarFieldContainer_t &phi, AmrVectorFieldContainer_t &efield, unsigned short baseLevel, unsigned short finestLevel, bool prevAsGuess=true)
double abstol_m
Absolute tolerance for solver.
AmrBoxLib::AmrGeometry_t AmrGeometry_t
Definition: Inform.h:41
AmrBoxLib::AmrProcMap_t AmrProcMap_t
void mlmg_m(AmrScalarFieldContainer_t &rho, AmrScalarFieldContainer_t &phi, AmrVectorFieldContainer_t &efield, int baseLevel, int finestLevel)
amr::AmrGeomContainer_t AmrGeomContainer_t
Definition: AmrBoxLib.h:26