chombo-discharge
Loading...
Searching...
No Matches
CD_FieldSolverGMG.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_FIELDSOLVERGMG_H
14#define CD_FIELDSOLVERGMG_H
15
16// Chombo includes
17#include <AMRMultiGrid.H>
18#include <BiCGStabSolver.H>
19#include <MFSimpleSolver.H>
20#include <GMRESSolver.H>
21
22// Our includes
23#include <CD_FieldSolver.H>
25#include <CD_NamespaceHeader.H>
26
34{
35public:
41
47
53
60
66 operator=(const FieldSolverGMG&& a_other) = delete;
67
71 virtual ~FieldSolverGMG();
72
82 virtual bool
84 const MFAMRCellData& a_rho,
85 const EBAMRIVData& a_sigma,
86 const bool a_zeroPhi = false) override;
87
91 virtual void
92 parseOptions() override;
93
97 virtual void
98 parseRuntimeOptions() override;
99
105 virtual void
107
113 virtual void
115
122 virtual void
125 const MFAMRCellData& a_potential) const override;
126
133 virtual void
136 const MFAMRCellData& a_potential) const override;
137
143 virtual void
144 preRegrid(const int a_lbase, const int a_oldFinestLevel) override;
145
154 virtual void
155 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override;
156
160 virtual void
161 registerOperators() override;
162
166 virtual void
167 setupSolver() override;
168
175 virtual void
178 const MFAMRIVData& a_permittivityEB) override;
179
186 virtual Vector<long long>
187 computeLoads(const DisjointBoxLayout& a_dbl, const int a_level) override;
188
189protected:
193 static constexpr Real m_alpha = 0.0;
194
198 static constexpr Real m_beta = -1.0;
199
204 {
205 Simple,
206 BiCGStab,
207 GMRES
208 };
209
213 enum class MultigridType
214 {
215 VCycle,
216 WCycle,
217 };
218
222 enum class JumpBCType
223 {
224 Natural,
225 SaturationCharge,
226 };
227
232
237
242
247
252
257
262
267
272
277
282
287
292
297
302
307
312
317
322
327
332
337
342
347
353
359
364
369
374
379
384
389
393 virtual void
395
399 virtual void
401
405 virtual void
406 parseJumpBC();
407
413 virtual void
414 setPermittivities() override;
415
419 virtual void
421
425 virtual void
427};
428
429#include <CD_NamespaceFooter.H>
430
431#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:34
MFHelmholtzOp::Smoother m_multigridRelaxMethod
Relaxation type for gmg.
Definition CD_FieldSolverGMG.H:231
bool m_isSolverSetup
Needs setup.
Definition CD_FieldSolverGMG.H:256
BottomSolverType
Enum class for supported bottom solvers in multigrid.
Definition CD_FieldSolverGMG.H:204
int m_multigridBcWeight
Set bc weight (used for weighted least squares)
Definition CD_FieldSolverGMG.H:331
virtual void setPermittivities() override
Set the permittivities.
Definition CD_FieldSolverGMG.cpp:498
virtual ~FieldSolverGMG()
Constructor (does nothing)
Definition CD_FieldSolverGMG.cpp:41
MultigridType m_multigridType
GMG multigrid type.
Definition CD_FieldSolverGMG.H:236
FieldSolverGMG()
Weak constructor.
Definition CD_FieldSolverGMG.cpp:32
MultigridType
Enum for multigrid cycle types.
Definition CD_FieldSolverGMG.H:214
bool m_multigridUseDefaultSettings
Use default multigrid settings.
Definition CD_FieldSolverGMG.H:266
int m_multigridPreSmooth
Number of smoothings before averaging.
Definition CD_FieldSolverGMG.H:286
virtual void parseMultigridSettings()
Parse multigrid settings.
Definition CD_FieldSolverGMG.cpp:92
JumpBCType m_jumpBcType
JumpBC type.
Definition CD_FieldSolverGMG.H:246
virtual void registerOperators() override
Registers required operators for AMR for this class.
Definition CD_FieldSolverGMG.cpp:411
int m_domainDropOrder
Domain drop order.
Definition CD_FieldSolverGMG.H:321
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:64
virtual bool solve(MFAMRCellData &a_phi, 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:242
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel) override
Cache state before regridding.
Definition CD_FieldSolverGMG.cpp:384
int m_multigridMaxIterations
Maximum number of iterations.
Definition CD_FieldSolverGMG.H:301
int m_multigridSmooth
Number of smoothing for multigrid.
Definition CD_FieldSolverGMG.H:281
FieldSolverGMG(const FieldSolverGMG &&a_other)=delete
Disallowed move constructor.
int m_multigridJumpOrder
Set bc jump order.
Definition CD_FieldSolverGMG.H:336
virtual void setupSolver() override
Set up multigrid solver.
Definition CD_FieldSolverGMG.cpp:437
virtual void setupHelmholtzFactory()
Set up the multigrid operator factory.
Definition CD_FieldSolverGMG.cpp:581
virtual void parseOptions() override
Parse all class options from command-line or input script.
Definition CD_FieldSolverGMG.cpp:47
virtual void setupMultigrid()
Set up AMRMultiGrid.
Definition CD_FieldSolverGMG.cpp:742
int m_multigridBottomSmooth
Number of smoothing before bottom solver.
Definition CD_FieldSolverGMG.H:296
GMRESSolver< LevelData< MFCellFAB > > m_gmres
GMRES solver.
Definition CD_FieldSolverGMG.H:383
MFSimpleSolver m_mfsolver
multi-fluid simple solver
Definition CD_FieldSolverGMG.H:388
int m_multigridBcOrder
Set bc order.
Definition CD_FieldSolverGMG.H:326
static constexpr Real m_beta
Beta-coefficient (for Helmholtz operator)
Definition CD_FieldSolverGMG.H:198
virtual Vector< long long > computeLoads(const DisjointBoxLayout &a_dbl, const int a_level) override
Compute grid loads.
Definition CD_FieldSolverGMG.cpp:846
virtual void parseJumpBC()
Parse JumpBC type.
Definition CD_FieldSolverGMG.cpp:216
Real m_multigridRelaxFactor
Multigrid relaxation factor.
Definition CD_FieldSolverGMG.H:363
RefCountedPtr< AMRMultiGrid< LevelData< MFCellFAB > > > m_multigridSolver
Geometric multigrid solver.
Definition CD_FieldSolverGMG.H:373
int m_multigridVerbosity
Verbosity for geometric multigrid.
Definition CD_FieldSolverGMG.H:271
FieldSolverGMG & operator=(const FieldSolverGMG &a_other)=delete
Disallowed copy assignment operator.
int m_minCellsBottom
Set bottom drop depth.
Definition CD_FieldSolverGMG.H:316
int m_multigridBottomSolverVerbosity
Verbosity for bottom solver in GMG cycle.
Definition CD_FieldSolverGMG.H:276
RefCountedPtr< MFHelmholtzOpFactory > m_helmholtzOpFactory
Multigrid operator factory.
Definition CD_FieldSolverGMG.H:368
static constexpr Real m_alpha
alpha-coefficient (for Helmholtz operator)
Definition CD_FieldSolverGMG.H:193
int m_multigridPreCondSmooth
Multigrid smoothing steps for preconditioner.
Definition CD_FieldSolverGMG.H:346
FieldSolverGMG & operator=(const FieldSolverGMG &&a_other)=delete
Disallowed move assignment operator.
bool m_kappaSource
Scale by kappa or not.
Definition CD_FieldSolverGMG.H:251
int m_numSmoothingsForSimpleSolver
Number of smoothing for bottom solver.
Definition CD_FieldSolverGMG.H:311
BottomSolverType m_bottomSolverType
Bottom solver type.
Definition CD_FieldSolverGMG.H:241
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:451
Real m_multigridExitHang
Exit hang for multigrid.
Definition CD_FieldSolverGMG.H:358
int m_multigridJumpWeight
Set bc jump weight (used for weighted least squares)
Definition CD_FieldSolverGMG.H:341
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid method.
Definition CD_FieldSolverGMG.cpp:398
Real m_multigridExitTolerance
Exit tolerance for multigrid.
Definition CD_FieldSolverGMG.H:352
BiCGStabSolver< LevelData< MFCellFAB > > m_bicgstab
Conjugate gradient solver bottom MG level.
Definition CD_FieldSolverGMG.H:378
virtual void parseKappaSource()
Parse m_kappaSource.
Definition CD_FieldSolverGMG.cpp:79
JumpBCType
Jump BC type.
Definition CD_FieldSolverGMG.H:223
bool m_multigridDropOrder
Drop order in coarsened grid cells.
Definition CD_FieldSolverGMG.H:261
int m_multigridMinIterations
Minimum number of iterations.
Definition CD_FieldSolverGMG.H:306
int m_multigridPostSmooth
Number of smoothings before averaging.
Definition CD_FieldSolverGMG.H:291
Base class for electrostatic solvers.
Definition CD_FieldSolver.H:37
virtual void computeElectricField()
Compute the cell-centered electric field.
Definition CD_FieldSolver.cpp:124
Smoother
Relaxation methods for this operator.
Definition CD_MFHelmholtzOp.H:50
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38