13#ifndef CD_EDDINGTONSP1_H
14#define CD_EDDINGTONSP1_H
20#include <AMRMultiGrid.H>
22#include <EBBackwardEuler.H>
23#include <EBSimpleSolver.H>
24#include <BiCGStabSolver.H>
25#include <GMRESSolver.H>
31#include <CD_NamespaceHeader.H>
543#include <CD_NamespaceFooter.H>
Declaration of a factory class for making Poisson operators for multigrid.
Simple data holder for holding domain boundary condition types for EddingtonSP1.
Abstract parent class for various radiative transfer solvers.
Smoother
Relaxation method for the operators.
Definition CD_EBHelmholtzOp.H:48
Class which maps boundary condition types to a side and direction.
Definition CD_EddingtonSP1DomainBc.H:32
std::function< Real(const RealVect a_position, const Real a_time)> BcFunction
Function which maps f(R^3,t) : R. Used for setting the associated value and boundary condition type.
Definition CD_EddingtonSP1DomainBc.H:47
BcType
Boundary condition type.
Definition CD_EddingtonSP1DomainBc.H:38
Radiative transfer equation solver in the SP1 (diffusion) approximation.
Definition CD_EddingtonSP1.H:37
virtual void setupSolver()
Set up geometric multigrid.
Definition CD_EddingtonSP1.cpp:739
virtual EddingtonSP1DomainBc::BcType parseBcString(const std::string &a_str) const
Returns BC type based on string.
Definition CD_EddingtonSP1.cpp:159
virtual void computeBoundaryFlux(EBAMRIVData &a_ebFlux, const EBAMRCellData &a_phi) override
Compute the boundary flux. For Eddington, the boundary flux is = c*phi/2.
Definition CD_EddingtonSP1.cpp:1054
EBAMRCellData m_resid
Multigrid residue.
Definition CD_EddingtonSP1.H:398
RefCountedPtr< EBHelmholtzOpFactory > m_helmholtzOpFactory
Operator factory.
Definition CD_EddingtonSP1.H:383
GMRESSolver< LevelData< EBCellFAB > > m_gmres
GMRES solver.
Definition CD_EddingtonSP1.H:378
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid function for this class.
Definition CD_EddingtonSP1.cpp:527
MultigridType m_multigridType
GMG multigrid type.
Definition CD_EddingtonSP1.H:271
int m_multigridBcWeight
Multigrid EBBC weight (only relevant for Dirichlet)
Definition CD_EddingtonSP1.H:326
virtual void advanceEuler(EBAMRCellData &a_phi, const EBAMRCellData &a_source, const Real a_dt, const bool a_zeroPhi) noexcept
Advance using the Euler rule.
Definition CD_EddingtonSP1.cpp:673
virtual void parseReflection()
Parse reflection coefficients for Robin bcs.
Definition CD_EddingtonSP1.cpp:442
EBHelmholtzOp::Smoother m_multigridRelaxMethod
Relaxation type for gmg.
Definition CD_EddingtonSP1.H:266
BottomSolverType m_bottomSolverType
Bottom solver type.
Definition CD_EddingtonSP1.H:331
EBAMRFluxData m_helmBco
b-coefficient
Definition CD_EddingtonSP1.H:408
virtual void computeFlux(EBAMRCellData &a_flux, const EBAMRCellData &a_phi) override
Compute the flux. For Eddington, the flux is F = -c/(3*kappa)*grad(phi)
Definition CD_EddingtonSP1.cpp:1138
virtual void setupMultigrid()
Set the GMG solver.
Definition CD_EddingtonSP1.cpp:980
EddingtonSP1 & operator=(const EddingtonSP1 &a_other)=delete
Disallowed copy assignment.
virtual void writePlotFile() override
Write plot file.
Definition CD_EddingtonSP1.cpp:1180
int m_multigridPreSmooth
Number of smoothings before averaging.
Definition CD_EddingtonSP1.H:296
virtual void setupHelmholtzFactory()
Set the operator factory.
Definition CD_EddingtonSP1.cpp:898
virtual void setHelmholtzCoefficients()
Set multigrid coefficients.
Definition CD_EddingtonSP1.cpp:754
Real m_reflectCoefTwo
Reflection coefficient.
Definition CD_EddingtonSP1.H:363
Real m_multigridExitHang
Multigrid exit hang.
Definition CD_EddingtonSP1.H:353
virtual void setDefaultDomainBcFunctions()
Set default domain BC functions.
Definition CD_EddingtonSP1.cpp:94
virtual void deallocate() override
Deallocate internal storage.
Definition CD_EddingtonSP1.cpp:511
virtual ~EddingtonSP1()
Destructor.
int m_minCellsBottom
Set bottom drop depth.
Definition CD_EddingtonSP1.H:341
virtual bool advance(const Real a_dt, EBAMRCellData &a_phi, const EBAMRCellData &a_source, const bool a_zeroPhi=false) override
Advance RTE onto state a_phi.
Definition CD_EddingtonSP1.cpp:580
virtual void parsePlotVariables()
Parse plot variables.
Definition CD_EddingtonSP1.cpp:325
static Real s_defaultDomainBcFunction(const RealVect &a_position, const Real a_time)
Default function for space-time dependence of domain boundary conditions.
Definition CD_EddingtonSP1.cpp:37
EddingtonSP1 & operator=(const EddingtonSP1 &&a_other)=delete
Disallowed move assignment.
int m_multigridMaxIterations
Maximum number of iterations.
Definition CD_EddingtonSP1.H:311
virtual void preRegrid(const int a_base, const int a_oldFinestLevel) override
Cache state.
Definition CD_EddingtonSP1.cpp:472
virtual std::string makeBcString(const int a_dir, const Side::LoHiSide a_side) const
Make domain bc string.
Definition CD_EddingtonSP1.cpp:125
Real m_multigridExitTolerance
Multigrid exit tolerance.
Definition CD_EddingtonSP1.H:347
EddingtonSP1(const EddingtonSP1 &&a_other)=delete
Disallowed move construction.
virtual void parseEBBC()
Parse domain BC settings.
Definition CD_EddingtonSP1.cpp:269
std::pair< EBBCType, Real > m_ebbc
Associated boundary condition on the embedded boundary.
Definition CD_EddingtonSP1.H:428
int m_numSmoothingsForSimpleSolver
Number of smoothing for bottom solver.
Definition CD_EddingtonSP1.H:336
EBSimpleSolver m_simpleSolver
multi-fluid simple solver
Definition CD_EddingtonSP1.H:388
virtual void parseDomainBC()
Parse domain BC settings.
Definition CD_EddingtonSP1.cpp:185
bool m_kappaScale
Use kappa scaling for source or not.
Definition CD_EddingtonSP1.H:281
static constexpr Real m_beta
Beta-coefficient for Helmholtz operator.
Definition CD_EddingtonSP1.H:232
EBAMRIVData m_helmBcoIrreg
b-coefficient
Definition CD_EddingtonSP1.H:413
virtual void computeDomainFlux(EBAMRIFData &a_domainflux, const EBAMRCellData &a_data) override
Compute the domain flux. For Eddington, the domain flux is = c*phi/2.
Definition CD_EddingtonSP1.cpp:1071
bool m_isSolverSetup
Needs setup.
Definition CD_EddingtonSP1.H:276
virtual void setDomainSideBcFunction(const int a_dir, const Side::LoHiSide a_side, const EddingtonSP1DomainBc::BcFunction &a_function)
Set the boundary condition function on a domain side.
Definition CD_EddingtonSP1.cpp:110
EBAMRCellData m_cacheSrc
For regridding the source term. This is needed when doing a stationary solve.
Definition CD_EddingtonSP1.H:393
Real m_reflectCoefOne
Reflection coefficient.
Definition CD_EddingtonSP1.H:358
RefCountedPtr< AMRMultiGrid< LevelData< EBCellFAB > > > m_multigridSolver
Geometric multigrid solver.
Definition CD_EddingtonSP1.H:368
virtual void computeDensity(EBAMRCellData &a_isotropic, const EBAMRCellData &a_phi) override
Get isotropic part.
Definition CD_EddingtonSP1.cpp:1167
EddingtonSP1DomainBc m_domainBc
Wrapper class.
Definition CD_EddingtonSP1.H:418
BiCGStabSolver< LevelData< EBCellFAB > > m_bicgstab
Conjugate gradient solver bottom MG level.
Definition CD_EddingtonSP1.H:373
int m_multigridBcOrder
Multigrid EBBC order (only relevant for Dirichlet)
Definition CD_EddingtonSP1.H:321
int m_multigridVerbosity
Verbosity for geometric multigrid.
Definition CD_EddingtonSP1.H:291
EddingtonSP1()
Weak constructor.
Definition CD_EddingtonSP1.cpp:42
EddingtonSP1(const EddingtonSP1 &a_other)=delete
Disallowed copy construction.
EBAMRCellData m_helmAco
a-coefficient
Definition CD_EddingtonSP1.H:403
virtual void setHelmholtzCoefficientsBox(EBCellFAB &a_helmAco, EBFluxFAB &a_helmBco, BaseIVFAB< Real > &a_helmBcoIrreg, const int a_lvl, const DataIndex &a_dit)
Set EBHelmholtzOp A- and B-coefficients.
Definition CD_EddingtonSP1.cpp:783
int m_multigridMinIterations
Minimum number of iterations.
Definition CD_EddingtonSP1.H:316
virtual void parseKappaScale()
Parse kappa-scaling or not.
Definition CD_EddingtonSP1.cpp:351
static constexpr Real m_alpha
Write checkpoint data into HDF5 file.
Definition CD_EddingtonSP1.H:227
BottomSolverType
Enum class for supported bottom solvers in multigrid.
Definition CD_EddingtonSP1.H:238
virtual void parseRuntimeOptions() override
Parse class options.
Definition CD_EddingtonSP1.cpp:79
virtual void parseOptions() override
Parse class options.
Definition CD_EddingtonSP1.cpp:60
virtual void allocate() override
Allocate internal storage.
Definition CD_EddingtonSP1.cpp:489
EBBCType
Enum for boundary condition types on EBs.
Definition CD_EddingtonSP1.H:257
virtual void registerOperators() override
Register operators.
Definition CD_EddingtonSP1.cpp:558
bool m_regridSlopes
Use slopes when regridding (or not)
Definition CD_EddingtonSP1.H:286
std::map< EddingtonSP1DomainBc::DomainSide, EddingtonSP1DomainBc::BcFunction > m_domainBcFunctions
Actual functions on domain edges (faces).
Definition CD_EddingtonSP1.H:423
virtual void parseStationary()
Parse whether or not this is a stationary solver.
Definition CD_EddingtonSP1.cpp:312
int m_multigridBottomSmooth
Number of smoothing before bottom solver.
Definition CD_EddingtonSP1.H:306
MultigridType
Enum for multigrid cycle types.
Definition CD_EddingtonSP1.H:248
int m_multigridPostSmooth
Number of smoothings before averaging.
Definition CD_EddingtonSP1.H:301
virtual void parseMultigridSettings()
Parse multigrid settings.
Definition CD_EddingtonSP1.cpp:359
virtual void parseRegridSlopes()
Parse whether or not to use slopes when regridding.
Definition CD_EddingtonSP1.cpp:459
Abstract RTE solver class for doing various kinds of radiative transfer equations....
Definition CD_RtSolver.H:31
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26