chombo-discharge
Loading...
Searching...
No Matches
CD_FieldSolverGMG.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_FieldSolverGMG_H
13#define CD_FieldSolverGMG_H
14
15// Chombo includes
16#include <AMRMultiGrid.H>
17#include <BiCGStabSolver.H>
18#include <MFSimpleSolver.H>
19#include <GMRESSolver.H>
20
21// Our includes
22#include <CD_FieldSolver.H>
24#include <CD_NamespaceHeader.H>
25
33{
34public:
40
46
52
59
65 operator=(const FieldSolverGMG&& a_other) = delete;
66
70 virtual ~FieldSolverGMG();
71
81 virtual bool
83 const MFAMRCellData& a_rho,
84 const EBAMRIVData& a_sigma,
85 const bool a_zeroPhi = false) override;
86
90 virtual void
91 parseOptions() override;
92
96 virtual void
97 parseRuntimeOptions() override;
98
104 virtual void
106
112 virtual void
114
121 virtual void
123 const phase::which_phase a_phase,
124 const MFAMRCellData& a_potential) const override;
125
132 virtual void
134 const phase::which_phase a_phase,
135 const MFAMRCellData& a_potential) const override;
136
142 virtual void
143 preRegrid(const int a_lbase, const int a_oldFinestLevel) override;
144
153 virtual void
154 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override;
155
159 virtual void
160 registerOperators() override;
161
165 virtual void
166 setupSolver() override;
167
174 virtual void
177 const MFAMRIVData& a_permittivityEB) override;
178
185 virtual Vector<long long>
186 computeLoads(const DisjointBoxLayout& a_dbl, const int a_level) override;
187
188protected:
192 static constexpr Real m_alpha = 0.0;
193
197 static constexpr Real m_beta = -1.0;
198
203 {
204 Simple,
205 BiCGStab,
206 GMRES
207 };
208
212 enum class MultigridType
213 {
214 VCycle,
215 WCycle,
216 };
217
221 enum class JumpBCType
222 {
223 Natural,
224 SaturationCharge,
225 };
226
231
236
241
246
251
256
261
266
271
276
281
286
291
296
301
306
311
316
321
326
331
336
341
347
353
358
363
368
373
378
383
387 virtual void
389
393 virtual void
395
399 virtual void
400 parseJumpBC();
401
407 virtual void
408 setPermittivities() override;
409
413 virtual void
415
419 virtual void
421};
422
423#include <CD_NamespaceFooter.H>
424
425#endif
Contains declaration of a base electrostatics solver class.
Declaration of a factory class for making multifluid Helmholtz operators for multigrid.
Implementation of FieldSolver which uses multigrid.
Definition CD_FieldSolverGMG.H:33
MFHelmholtzOp::Smoother m_multigridRelaxMethod
Relaxation type for gmg.
Definition CD_FieldSolverGMG.H:230
bool m_isSolverSetup
Needs setup.
Definition CD_FieldSolverGMG.H:255
BottomSolverType
Enum class for supported bottom solvers in multigrid.
Definition CD_FieldSolverGMG.H:203
int m_multigridBcWeight
Set bc weight (used for weighted least squares)
Definition CD_FieldSolverGMG.H:325
virtual void setPermittivities() override
Set the permittivities.
Definition CD_FieldSolverGMG.cpp:495
virtual ~FieldSolverGMG()
Constructor (does nothing)
Definition CD_FieldSolverGMG.cpp:40
MultigridType m_multigridType
GMG multigrid type.
Definition CD_FieldSolverGMG.H:235
FieldSolverGMG()
Weak constructor.
Definition CD_FieldSolverGMG.cpp:31
MultigridType
Enum for multigrid cycle types.
Definition CD_FieldSolverGMG.H:213
bool m_multigridUseDefaultSettings
Use default multigrid settings.
Definition CD_FieldSolverGMG.H:265
int m_multigridPreSmooth
Number of smoothings before averaging.
Definition CD_FieldSolverGMG.H:280
virtual void parseMultigridSettings()
Parse multigrid settings.
Definition CD_FieldSolverGMG.cpp:91
JumpBCType m_jumpBcType
JumpBC type.
Definition CD_FieldSolverGMG.H:245
virtual void registerOperators() override
Registers required operators for AMR for this class.
Definition CD_FieldSolverGMG.cpp:408
int m_domainDropOrder
Domain drop order.
Definition CD_FieldSolverGMG.H:315
FieldSolverGMG(const FieldSolverGMG &a_other)=delete
Disallowed copy constructor.
virtual void parseRuntimeOptions() override
Parse runtime options from command line or input script.
Definition CD_FieldSolverGMG.cpp:63
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel) override
Cache state before regridding.
Definition CD_FieldSolverGMG.cpp:381
int m_multigridMaxIterations
Maximum number of iterations.
Definition CD_FieldSolverGMG.H:295
int m_multigridSmooth
Number of smoothing for multigrid.
Definition CD_FieldSolverGMG.H:275
FieldSolverGMG(const FieldSolverGMG &&a_other)=delete
Disallowed move constructor.
int m_multigridJumpOrder
Set bc jump order.
Definition CD_FieldSolverGMG.H:330
virtual bool solve(MFAMRCellData &a_potential, const MFAMRCellData &a_rho, const EBAMRIVData &a_sigma, const bool a_zeroPhi=false) override
Solves Poisson equation onto a_phi using a_rho and a_sigma as right-hand sides.
Definition CD_FieldSolverGMG.cpp:241
virtual void setupSolver() override
Set up multigrid solver.
Definition CD_FieldSolverGMG.cpp:434
virtual void setupHelmholtzFactory()
Set up the multigrid operator factory.
Definition CD_FieldSolverGMG.cpp:564
virtual void parseOptions() override
Parse all class options from command-line or input script.
Definition CD_FieldSolverGMG.cpp:46
virtual void setupMultigrid()
Set up AMRMultiGrid.
Definition CD_FieldSolverGMG.cpp:725
int m_multigridBottomSmooth
Number of smoothing before bottom solver.
Definition CD_FieldSolverGMG.H:290
GMRESSolver< LevelData< MFCellFAB > > m_gmres
GMRES solver.
Definition CD_FieldSolverGMG.H:377
MFSimpleSolver m_mfsolver
multi-fluid simple solver
Definition CD_FieldSolverGMG.H:382
int m_multigridBcOrder
Set bc order.
Definition CD_FieldSolverGMG.H:320
static constexpr Real m_beta
Beta-coefficient (for Helmholtz operator)
Definition CD_FieldSolverGMG.H:197
virtual Vector< long long > computeLoads(const DisjointBoxLayout &a_dbl, const int a_level) override
Compute grid loads.
Definition CD_FieldSolverGMG.cpp:825
virtual void parseJumpBC()
Parse JumpBC type.
Definition CD_FieldSolverGMG.cpp:215
Real m_multigridRelaxFactor
Multigrid relaxation factor.
Definition CD_FieldSolverGMG.H:357
RefCountedPtr< AMRMultiGrid< LevelData< MFCellFAB > > > m_multigridSolver
Geometric multigrid solver.
Definition CD_FieldSolverGMG.H:367
int m_multigridVerbosity
Verbosity for geometric multigrid.
Definition CD_FieldSolverGMG.H:270
FieldSolverGMG & operator=(const FieldSolverGMG &a_other)=delete
Disallowed copy assignment operator.
int m_minCellsBottom
Set bottom drop depth.
Definition CD_FieldSolverGMG.H:310
RefCountedPtr< MFHelmholtzOpFactory > m_helmholtzOpFactory
Multigrid operator factory.
Definition CD_FieldSolverGMG.H:362
static constexpr Real m_alpha
alpha-coefficient (for Helmholtz operator)
Definition CD_FieldSolverGMG.H:192
int m_multigridPreCondSmooth
Multigrid smoothing steps for preconditioner.
Definition CD_FieldSolverGMG.H:340
FieldSolverGMG & operator=(const FieldSolverGMG &&a_other)=delete
Disallowed move assignment operator.
bool m_kappaSource
Scale by kappa or not.
Definition CD_FieldSolverGMG.H:250
int m_numSmoothingsForSimpleSolver
Number of smoothing for bottom solver.
Definition CD_FieldSolverGMG.H:305
BottomSolverType m_bottomSolverType
Bottom solver type.
Definition CD_FieldSolverGMG.H:240
virtual void setSolverPermittivities(const MFAMRCellData &a_permittivityCell, const MFAMRFluxData &a_permittivityFace, const MFAMRIVData &a_permittivityEB) override
Set new permittivities for the multigrid solver.
Definition CD_FieldSolverGMG.cpp:448
Real m_multigridExitHang
Exit hang for multigrid.
Definition CD_FieldSolverGMG.H:352
int m_multigridJumpWeight
Set bc jump weight (used for weighted least squares)
Definition CD_FieldSolverGMG.H:335
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid method.
Definition CD_FieldSolverGMG.cpp:395
Real m_multigridExitTolerance
Exit tolerance for multigrid.
Definition CD_FieldSolverGMG.H:346
BiCGStabSolver< LevelData< MFCellFAB > > m_bicgstab
Conjugate gradient solver bottom MG level.
Definition CD_FieldSolverGMG.H:372
virtual void parseKappaSource()
Parse m_kappaSource.
Definition CD_FieldSolverGMG.cpp:78
JumpBCType
Jump BC type.
Definition CD_FieldSolverGMG.H:222
bool m_multigridDropOrder
Drop order in coarsened grid cells.
Definition CD_FieldSolverGMG.H:260
int m_multigridMinIterations
Minimum number of iterations.
Definition CD_FieldSolverGMG.H:300
int m_multigridPostSmooth
Number of smoothings before averaging.
Definition CD_FieldSolverGMG.H:285
Base class for electrostatic solvers.
Definition CD_FieldSolver.H:32
virtual void computeElectricField()
Compute the cell-centered electric field.
Definition CD_FieldSolver.cpp:128
Smoother
Relaxation methods for this operator.
Definition CD_MFHelmholtzOp.H:49
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37