43 #ifndef EPOT_MGSUBSOLVER_HPP
44 #define EPOT_MGSUBSOLVER_HPP 1
65 virtual void reset_problem(
void ) {}
68 double solve_nsimp_potential(
double epf,
double cof,
double rhs,
double p )
const;
69 double solve_pexp_potential(
double epf,
double cof,
double rhs,
double p )
const;
72 double rbgs_loop_1d(
void )
const;
73 double sor_loop_1d(
double w )
const;
74 double gs_process_near_solid_1d(
const uint8_t *nearsolid_ptr,
75 uint32_t i, uint8_t bindex )
const;
76 double gs_process_pure_vacuum_1d( uint32_t i )
const;
77 double gs_process_neumann_1d( uint32_t i, uint8_t bindex )
const;
79 void defect_1d(
void )
const;
80 double defect_near_solid_1d(
const uint8_t *nearsolid_ptr, uint32_t i, uint8_t bindex )
const;
81 double defect_pure_vacuum_1d( uint32_t i )
const;
82 double defect_neumann_1d( uint32_t i, uint8_t bindex )
const;
85 double rbgs_loop_2d(
void )
const;
86 double sor_loop_2d(
double w )
const;
87 double gs_process_near_solid_2d(
const uint8_t *nearsolid_ptr,
88 uint32_t a, uint32_t dj, uint8_t bindex )
const;
89 double gs_process_pure_vacuum_2d( uint32_t a, uint32_t dj )
const;
90 double gs_process_neumann_2d( uint32_t a, uint32_t dj, uint8_t bindex )
const;
92 void defect_2d(
void )
const;
93 double defect_near_solid_2d(
const uint8_t *nearsolid_ptr,
94 uint32_t a, uint32_t dj, uint8_t bindex )
const;
95 double defect_pure_vacuum_2d( uint32_t a, uint32_t dj )
const;
96 double defect_neumann_2d( uint32_t a, uint32_t dj, uint8_t bindex )
const;
99 double rbgs_loop_cyl(
void )
const;
100 double sor_loop_cyl(
double w )
const;
101 double gs_process_near_solid_cyl(
const uint8_t *nearsolid_ptr,
102 uint32_t i, uint32_t j, uint8_t bindex )
const;
103 double gs_process_pure_vacuum_cyl( uint32_t i, uint32_t j )
const;
104 double gs_process_neumann_cyl( uint32_t i, uint32_t j, uint8_t bindex )
const;
106 void defect_cyl(
void )
const;
107 double defect_near_solid_cyl(
const uint8_t *nearsolid_ptr,
108 uint32_t i, uint32_t j, uint8_t bindex )
const;
109 double defect_pure_vacuum_cyl( uint32_t i, uint32_t j )
const;
110 double defect_neumann_cyl( uint32_t i, uint32_t j, uint8_t bindex )
const;
113 double rbgs_loop_3d(
void )
const;
114 double sor_loop_3d(
double w )
const;
115 double gs_process_near_solid_3d(
const uint8_t *nearsolid_ptr,
116 uint32_t a, uint32_t dj, uint32_t dk, uint8_t bindex )
const;
117 double gs_process_pure_vacuum_3d( uint32_t a, uint32_t dj, uint32_t dk )
const;
118 double gs_process_neumann_3d( uint32_t a, uint32_t dj, uint32_t dk, uint8_t bindex )
const;
120 void defect_3d(
bool after_smooth )
const;
121 double defect_near_solid_3d(
const uint8_t *nearsolid_ptr,
122 uint32_t a, uint32_t dj, uint32_t dk, uint8_t bindex )
const;
123 double defect_pure_vacuum_3d( uint32_t a, uint32_t dj, uint32_t dk )
const;
124 double defect_neumann_3d( uint32_t a, uint32_t dj, uint32_t dk, uint8_t bindex )
const;
134 double Ulim, uint32_t imax,
double eps );
178 virtual void save( std::ostream &s )
const {}
Subroutine class for EpotMGSolver.
Definition: epot_mgsubsolver.hpp:55
virtual ~EpotMGSubSolver()
Destructor.
Definition: epot_mgsubsolver.hpp:138
void preprocess(MeshScalarField &epot)
Preprocess.
Definition: epot_mgsubsolver.cpp:186
Scalar field class.
Definition: meshscalarfield.hpp:70
double mg_solve(MeshScalarField *epot, const MeshScalarField *rhs, double w)
Do a solve round with SOR using over-relaxation factor w.
Definition: epot_mgsubsolver.cpp:134
EpotMGSubSolver(const EpotSolver &epsolver, Geometry &geom, double Ulim, uint32_t imax, double eps)
Constructor.
Definition: epot_mgsubsolver.cpp:58
Geometry defining class.
Definition: geometry.hpp:179
Class for constructing the linear/nonlinear problem for the solver.
Definition: epot_solver.hpp:207
void postprocess(void)
Postprocess.
Definition: epot_mgsubsolver.cpp:192
double error_scale_mg(void) const
Return error scaling factor for MG smoother.
Definition: epot_mgsubsolver.cpp:66
Poisson equation problem for solving electric potential.
void defect(MeshScalarField *defect, MeshScalarField *epot, const MeshScalarField *rhs, bool after_smooth)
Calculate defect.
Definition: epot_mgsubsolver.cpp:160
double error_scale(double w) const
Return error scaling factor for SOR solver with over-relaxation factor w.
Definition: epot_mgsubsolver.cpp:85
virtual void save(std::ostream &s) const
Saves problem data to stream.
Definition: epot_mgsubsolver.hpp:178
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: epot_mgsubsolver.hpp:174
double mg_smooth(MeshScalarField *epot, const MeshScalarField *rhs)
Do a smoothing round with Red-Black Gauss-Seidel.
Definition: epot_mgsubsolver.cpp:108