chombo-discharge
Loading...
Searching...
No Matches
CD_CdrCTU.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_CDRCTU_H
14#define CD_CDRCTU_H
15
16// Our includes
17#include <CD_CdrMultigrid.H>
18#include <CD_CdrGodunov.H>
19#include <CD_NamespaceHeader.H>
20
24class CdrCTU : public CdrMultigrid
25{
26public:
30 CdrCTU();
31
35 virtual ~CdrCTU();
36
40 virtual void
41 parseOptions() override;
42
46 virtual void
47 parseRuntimeOptions() override;
48
55 virtual void
57
63 virtual Real
64 computeAdvectionDt() override;
65
69 virtual void
70 allocate() override;
71
78 virtual void
79 regrid(const int a_lbase, const int a_oldFinestLevel, const int a_newFinestLevel) override;
80
86 virtual void
87 preRegrid(const int a_lbase, const int a_oldFinestLevel) override;
88
89protected:
94
98 void
100
104 enum class Limiter
105 {
106 None,
107 MinMod,
108 Superbee,
109 MonotonizedCentral,
110 };
111
116
121
131 virtual void
133 const EBCellFAB& a_cellPhi,
134 const Box& a_cellBox,
135 const ProblemDomain& a_domain,
136 const int a_level,
137 const DataIndex& a_dit);
138
155 virtual void
158 const EBCellFAB& a_cellPhi,
159 const EBCellFAB& a_cellVel,
160 const EBFluxFAB& a_faceVel,
161 const ProblemDomain& a_domain,
162 const Box& a_cellBox,
163 const int& a_level,
164 const DataIndex& a_dit,
165 const Real& a_dt);
166
170 virtual void
172
179 static Real
180 minmod(const Real& dwl, const Real& dwr) noexcept;
181
188 static Real
189 superbee(const Real& dwl, const Real& dwr) noexcept;
190
197 static Real
198 monotonizedCentral(const Real& dwl, const Real& dwr) noexcept;
199};
200
201#include <CD_NamespaceFooter.H>
202
203#endif
Declaration of a class which implements CdrMultigrid using Godunov-type advection.
Extensions of CdrSolver which use EBHelmholtzOp for diffusion solves.
Class that uses a slope limited method for advection, in combination with corner transport upwind (CT...
Definition CD_CdrCTU.H:25
virtual void upwind(EBFluxFAB &a_facePhi, const EBCellFAB &a_normalSlopes, const EBCellFAB &a_cellPhi, const EBCellFAB &a_cellVel, const EBFluxFAB &a_faceVel, const ProblemDomain &a_domain, const Box &a_cellBox, const int &a_level, const DataIndex &a_dit, const Real &a_dt)
Upwind/Riemann solve. This extrapolates the cell-centered data to the inside face centers and selects...
Definition CD_CdrCTU.cpp:524
CdrCTU()
Default constructor.
Definition CD_CdrCTU.cpp:23
virtual void parseOptions() override
Parse class options to put object in usable state.
Definition CD_CdrCTU.cpp:38
void defineIterators()
Build m_grownVofIter for all AMR levels.
Definition CD_CdrCTU.cpp:108
Limiter
Supported limiters.
Definition CD_CdrCTU.H:105
virtual void parseSlopeLimiter()
Parse slope limiting on/off.
Definition CD_CdrCTU.cpp:218
virtual void allocate() override
Allocate internal storage and build pre-built VoF iterators.
Definition CD_CdrCTU.cpp:72
static Real superbee(const Real &dwl, const Real &dwr) noexcept
Superbee slope limiter.
Definition CD_CdrCTU.cpp:838
virtual Real computeAdvectionDt() override
Compute the largest possible advective time step (for explicit methods).
Definition CD_CdrCTU.cpp:135
virtual void computeNormalSlopes(EBCellFAB &a_normalSlopes, const EBCellFAB &a_cellPhi, const Box &a_cellBox, const ProblemDomain &a_domain, const int a_level, const DataIndex &a_dit)
Compute slopes.
Definition CD_CdrCTU.cpp:312
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel) override
Pre-regrid hook — releases the grown VoF iterators.
Definition CD_CdrCTU.cpp:84
Vector< RefCountedPtr< LayoutData< VoFIterator > > > m_grownVofIter
Pre-built VoFIterators over grow(validBox,1) for the irregular kernel in computeNormalSlopes.
Definition CD_CdrCTU.H:93
virtual void parseRuntimeOptions() override
Parse runtime options.
Definition CD_CdrCTU.cpp:55
virtual void advectToFaces(EBAMRFluxData &a_facePhi, const EBAMRCellData &a_cellPhi, const Real a_dt) override
MUSCL advection to faces.
Definition CD_CdrCTU.cpp:249
static Real monotonizedCentral(const Real &dwl, const Real &dwr) noexcept
Monotonized central difference slope limiter.
Definition CD_CdrCTU.cpp:855
bool m_useCTU
If true, the discretization uses CTU. Otherwise it's DCU (donor cell upwind)
Definition CD_CdrCTU.H:120
static Real minmod(const Real &dwl, const Real &dwr) noexcept
minmod slope function.
Definition CD_CdrCTU.cpp:826
Limiter m_limiter
If true, slopes are limited in the normal direction.
Definition CD_CdrCTU.H:115
virtual void regrid(const int a_lbase, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid method — also rebuilds the grown VoF iterators.
Definition CD_CdrCTU.cpp:96
virtual ~CdrCTU()
Destructor (does nothing)
Definition CD_CdrCTU.cpp:32
Extension class of CdrSolver that uses multigrid for diffusion part. Can also solve for stochastic di...
Definition CD_CdrMultigrid.H:36
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38