13#ifndef CD_FIELDSOLVERGMG_H
14#define CD_FIELDSOLVERGMG_H
17#include <AMRMultiGrid.H>
18#include <BiCGStabSolver.H>
19#include <MFSimpleSolver.H>
20#include <GMRESSolver.H>
25#include <CD_NamespaceHeader.H>
429#include <CD_NamespaceFooter.H>
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