chombo-discharge
Loading...
Searching...
No Matches
CD_CoarseInterpQuadCF.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2023 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_CoarseInterpQuadCF_H
13#define CD_CoarseInterpQuadCF_H
14
15// Chombo includes
16#include <IntVect.H>
17#include <FArrayBox.H>
18#include <LoHiSide.H>
19#include <DerivStencil.H>
20#include <DisjointBoxLayout.H>
21
22// Our includes
23#include <CD_NamespaceHeader.H>
24
34{
35public:
39 CoarseInterpQuadCF() noexcept;
40
44 virtual ~CoarseInterpQuadCF() noexcept;
45
56 virtual void
59 const DataIndex& a_dit,
60 const Box& a_fineGhostCells,
61 const int a_refRat,
62 const int a_ignoreDir) noexcept;
63
71 virtual Real
73 const IntVect& a_ivCoar,
74 const int a_dir,
75 const int a_coarVar) const noexcept;
76
84 virtual Real
86 const IntVect& a_ivCoar,
87 const int a_dir,
88 const int a_coarVar) const noexcept;
89
96 virtual Real
97 computeMixedDeriv(const FArrayBox& a_coarPhi, const IntVect& a_ivCoar, const int a_coarVar) const noexcept;
98
106 virtual DerivStencil
107 getFirstDerivStencil(const IntVect& a_ivCoar, const int a_dir) const noexcept;
108
116 virtual DerivStencil
117 getSecondDerivStencil(const IntVect& a_ivCoar, const int a_dir) const noexcept;
118
125 virtual DerivStencil
126 getMixedDerivStencil(const IntVect& a_ivCoar) const noexcept;
127
128protected:
132 enum class FirstDerivStencil : unsigned short
133 {
134 Centered2,
135 Backward2,
136 Forward2,
137 Backward1,
138 Forward1,
139 };
140
144 enum class SecondDerivStencil : unsigned short
145 {
146 Centered2,
147 Backward1,
148 Forward1
149 };
150
154 enum class MixedDerivStencil : unsigned short
155 {
156 Standard,
157 Explicit
158 };
159
164
169
174
179
184
189
194
199
205
210
215
220
225
230 virtual void
232
237 virtual void
239};
240
241#include <CD_NamespaceFooter.H>
242
243#endif
Class for computing the required Taylor terms for doing the orthogonal extrapolation to the ghost cel...
Definition CD_CoarseInterpQuadCF.H:34
virtual Real computeFirstDeriv(const FArrayBox &a_coarPhi, const IntVect &a_ivCoar, const int a_dir, const int a_coarVar) const noexcept
Compute first-derivative Taylor term in direction a_dir.
Definition CD_CoarseInterpQuadCF.cpp:208
virtual Real computeMixedDeriv(const FArrayBox &a_coarPhi, const IntVect &a_ivCoar, const int a_coarVar) const noexcept
Compute mixed-derivative Taylor term in directions orthogonal m_ignoreDir.
Definition CD_CoarseInterpQuadCF.cpp:313
int m_tanDir1
One tangential direction.
Definition CD_CoarseInterpQuadCF.H:188
CoarseInterpQuadCF() noexcept
Default constructor. Must subsequently call the define function.
Definition CD_CoarseInterpQuadCF.cpp:21
bool m_isDefined
Is defined or not.
Definition CD_CoarseInterpQuadCF.H:163
virtual DerivStencil getMixedDerivStencil(const IntVect &a_ivCoar) const noexcept
Get the second derivative stencil for the input coarse vof.
Definition CD_CoarseInterpQuadCF.cpp:457
BaseFab< DerivStencil > m_explicitMixedDerivStencils
Mixed-derivative stencil. Only defined in 3D.
Definition CD_CoarseInterpQuadCF.H:224
int m_tanDir2
One tangential direction.
Definition CD_CoarseInterpQuadCF.H:193
int m_ignoreDir
Interpolation direction to ignore.
Definition CD_CoarseInterpQuadCF.H:183
virtual DerivStencil getSecondDerivStencil(const IntVect &a_ivCoar, const int a_dir) const noexcept
Get the second derivative stencil for the input coarse vof.
Definition CD_CoarseInterpQuadCF.cpp:413
BaseFab< MixedDerivStencil > m_mixedDerivStencils
Identifier for whether or not we should use a standard or explicit mixed derivative stencil.
Definition CD_CoarseInterpQuadCF.H:219
ProblemDomain m_domainCoar
Coarse domain.
Definition CD_CoarseInterpQuadCF.H:173
FirstDerivStencil
Simple enum for holding stencil types for the first derivative.
Definition CD_CoarseInterpQuadCF.H:133
MixedDerivStencil
Simple enum for holding stencil types for the mixed derivative.
Definition CD_CoarseInterpQuadCF.H:155
DataIndex m_dit
Data index in the fine grid.
Definition CD_CoarseInterpQuadCF.H:178
DisjointBoxLayout m_dblFine
Fine grids.
Definition CD_CoarseInterpQuadCF.H:168
SecondDerivStencil
Simple enum for holding stencil types for the second derivative.
Definition CD_CoarseInterpQuadCF.H:145
virtual DerivStencil getFirstDerivStencil(const IntVect &a_ivCoar, const int a_dir) const noexcept
Get the first derivative stencil for the input coarse vof.
Definition CD_CoarseInterpQuadCF.cpp:358
virtual Real computeSecondDeriv(const FArrayBox &a_coarPhi, const IntVect &a_ivCoar, const int a_dir, const int a_coarVar) const noexcept
Compute second-derivative Taylor term in direction a_dir.
Definition CD_CoarseInterpQuadCF.cpp:266
int m_refRat
Refinement factor to coarse.
Definition CD_CoarseInterpQuadCF.H:198
virtual void define(const DisjointBoxLayout &a_dblFine, const ProblemDomain &a_domainCoar, const DataIndex &a_dit, const Box &a_fineGhostCells, const int a_refRat, const int a_ignoreDir) noexcept
Define function. Puts object in usable state.
Definition CD_CoarseInterpQuadCF.cpp:34
BaseFab< FirstDerivStencil > m_firstDerivStencils[SpaceDim]
Stencil types for first derivative.
Definition CD_CoarseInterpQuadCF.H:209
Box m_stencilBox
Coarse-grid cells corresponding to the fine-grid ghost cells.
Definition CD_CoarseInterpQuadCF.H:204
virtual ~CoarseInterpQuadCF() noexcept
Destructor.
Definition CD_CoarseInterpQuadCF.cpp:28
virtual void defineStencils() noexcept
Compute all first-derivative stencils in the coarse grid cells.
Definition CD_CoarseInterpQuadCF.cpp:84
virtual void defineMixedDerivStencils() noexcept
Compute all second-derivative stencils in the coarse grid cells.
Definition CD_CoarseInterpQuadCF.cpp:139
BaseFab< SecondDerivStencil > m_secondDerivStencils[SpaceDim]
Second-derivative stencils (in all directions except m_dir)
Definition CD_CoarseInterpQuadCF.H:214
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37