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