chombo-discharge
Loading...
Searching...
No Matches
CD_MFHelmholtzJumpBC.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_MFHelmholtzJumpBC_H
13#define CD_MFHelmholtzJumpBC_H
14
15// Chombo includes
16#include <MFCellFAB.H>
17#include <EBISBox.H>
18#include <LayoutData.H>
19#include <Stencils.H>
20#include <AggStencil.H>
21#include <EBCellFAB.H>
22#include <BaseIVFAB.H>
23
24// Our includes
25#include <CD_Location.H>
26#include <CD_MFLevelGrid.H>
27#include <CD_VofUtils.H>
28#include <CD_MFInterfaceFAB.H>
29#include <CD_MFBaseIVFAB.H>
30#include <CD_NamespaceHeader.H>
31
42{
43public:
48
53
58
73 const MFLevelGrid& a_mflg,
74 const BcoefPtr& a_Bcoef,
75 const AmrMask& a_validCells,
76 const Real a_dx,
77 const int a_order,
78 const int a_weight,
79 const int a_radius,
80 const int a_ghostCF,
81 const IntVect a_ghostPhi);
82
87
91 virtual ~MFHelmholtzJumpBC();
92
98
103 void
105
110 bool
112
116 int
117 getOrder() const;
118
122 int
124
128 int
130
135 void
137
144 virtual void
146
154 virtual void
159
168
174
180
186
192
196 virtual void
197 resetBC() const;
198
204
209
214
219
224
229
234
239
244
249
254
259
264
269
274
279
284
289
294
299
304
309
314
319
324
329
333 void
335
339 void
341
345 void
347
358 virtual bool
362 const VofUtils::Neighborhood a_neighborhood,
363 const int a_order) const;
364
371 inline bool
373
382};
383
384#include <CD_NamespaceFooter.H>
385
386#include <CD_MFHelmholtzJumpBCImplem.H>
387
388#endif
Declaration of cell positions.
Declaration of a multiphase BaseIVFAB<Real>
Declaration of a class that allocates irregular data holders over the interface between two phases.
Declaration of a wrapper for wrapping multifluid EBLevelGrids.
Various functions for getting Vofs near cut-cells.
Multiphase BaseIVFAB<Real>.
Definition CD_MFBaseIVFAB.H:29
Class for computing "jump interface" boundary conditions for multifluid code.
Definition CD_MFHelmholtzJumpBC.H:42
virtual VoFIterator & getSinglePhaseVofs(const int a_phase, const DataIndex &a_dit) const
Return vof iterator which iterates over single-phase cells on a specific phase and box.
Definition CD_MFHelmholtzJumpBC.cpp:97
static constexpr int m_comp
Component where stencils are stored.
Definition CD_MFHelmholtzJumpBC.H:203
Real m_dx
Grid resolution.
Definition CD_MFHelmholtzJumpBC.H:233
LayoutData< MFInterfaceFAB< VoFStencil > > m_avgStencils
Average stencil.
Definition CD_MFHelmholtzJumpBC.H:308
LayoutData< MFInterfaceFAB< Real > > m_boundaryPhi
Value of phi on the boundary.
Definition CD_MFHelmholtzJumpBC.H:278
LayoutData< MFInterfaceFAB< Real > > m_denom
Denominator 1/(bp*wp + bq*wq) for all interface cells.
Definition CD_MFHelmholtzJumpBC.H:318
int m_ghostCF
Number of grid cells that were filled over the CF.
Definition CD_MFHelmholtzJumpBC.H:253
virtual const LayoutData< MFInterfaceFAB< Real > > & getGradPhiWeights() const noexcept
Get constant weights involved when computing dphi/dn at the boundary.
Definition CD_MFHelmholtzJumpBC.cpp:115
LayoutData< MFInterfaceFAB< Real > > m_gradPhiWeights
Raw weights for dphi/dn.
Definition CD_MFHelmholtzJumpBC.H:303
Real applyStencil(const VoFStencil &a_stencil, const EBCellFAB &a_phi) const
Apply a stencil and return the result.
Definition CD_MFHelmholtzJumpBCImplem.H:69
RefCountedPtr< LevelData< MFBaseIVFAB > > m_Bcoef
B-coefficient.
Definition CD_MFHelmholtzJumpBC.H:223
virtual bool getLeastSquaresBoundaryGradStencil(std::pair< Real, VoFStencil > &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisbox, const VofUtils::Neighborhood a_neighborhood, const int a_order) const
Get stencil with specified order.
Definition CD_MFHelmholtzJumpBC.cpp:501
bool isMultiPhase() const noexcept
Is multiphase or not.
Definition CD_MFHelmholtzJumpBC.cpp:132
int m_numPhases
Number of phases.
Definition CD_MFHelmholtzJumpBC.H:258
void setBco(const RefCountedPtr< LevelData< MFBaseIVFAB > > &a_Bcoef)
Set B-coefficient. This updates the stencils.
Definition CD_MFHelmholtzJumpBC.cpp:121
int m_order
Stencil order.
Definition CD_MFHelmholtzJumpBC.H:238
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, BaseIVFAB< Real > > > > m_aggStencils[2]
Agg stencils for making matching go faster.
Definition CD_MFHelmholtzJumpBC.H:328
virtual const LayoutData< MFInterfaceFAB< VoFStencil > > & getGradPhiStencils() const noexcept
Get stencils for computing dphi/dn at the boundary.
Definition CD_MFHelmholtzJumpBC.cpp:109
MFHelmholtzJumpBC & operator=(const MFHelmholtzJumpBC &a_other)=delete
Disallowed assignment constructor.
int m_radius
Stencil order.
Definition CD_MFHelmholtzJumpBC.H:248
int getWeight() const
Return stencil weight (for least squares)
Definition CD_MFHelmholtzJumpBC.cpp:73
RefCountedPtr< LevelData< MFBaseIVFAB > > BcoefPtr
Alias to cut down on typing.
Definition CD_MFHelmholtzJumpBC.H:47
MFHelmholtzJumpBC(const MFHelmholtzJumpBC &a_other)=delete
Disallowed copy constructor.
LayoutData< MFInterfaceFAB< Real > > m_avgWeights
Average weights.
Definition CD_MFHelmholtzJumpBC.H:323
Location::Cell m_dataLocation
Data centering.
Definition CD_MFHelmholtzJumpBC.H:213
MFHelmholtzJumpBC()=delete
Disallowed weak construction.
IntVect m_ghostPhi
Number of ghost cells in phi (must be exact match in order to use AggStencil)
Definition CD_MFHelmholtzJumpBC.H:263
void defineIterators()
Define function. Builds stencils.
Definition CD_MFHelmholtzJumpBC.cpp:446
bool isStencilValidCF(const VoFStencil &a_stencil, const DataIndex &a_dit) const
Check if stencil is valid.
Definition CD_MFHelmholtzJumpBCImplem.H:23
void defineStencils()
Define function. Builds stencils.
Definition CD_MFHelmholtzJumpBC.cpp:140
void buildAverageStencils()
Brief the average stencils.
Definition CD_MFHelmholtzJumpBC.cpp:304
virtual void resetBC() const
Set everything to zero. This is a debugging function.
Definition CD_MFHelmholtzJumpBC.cpp:551
static constexpr int m_nComp
Number of components in stencil.
Definition CD_MFHelmholtzJumpBC.H:208
int getRadius() const
Return stencil radius (for least squares)
Definition CD_MFHelmholtzJumpBC.cpp:79
virtual void matchBC(LevelData< BaseIVFAB< Real > > &a_jump, const LevelData< MFCellFAB > &a_phi, const bool a_homogeneousPhysBC) const
Match the BC.
Definition CD_MFHelmholtzJumpBC.cpp:570
RefCountedPtr< LevelData< BaseFab< bool > > > m_validCells
Valid grid cells.
Definition CD_MFHelmholtzJumpBC.H:228
LayoutData< IntVectSet > m_ivs
IntVectSet over which we run the "averaging".
Definition CD_MFHelmholtzJumpBC.H:293
MFLevelGrid m_mflg
Grids.
Definition CD_MFHelmholtzJumpBC.H:218
LayoutData< MFInterfaceFAB< VoFStencil > > m_gradPhiStencils
Raw stencils for dphi/dn.
Definition CD_MFHelmholtzJumpBC.H:298
virtual ~MFHelmholtzJumpBC()
Destructor. Does nothing.
Definition CD_MFHelmholtzJumpBC.cpp:61
bool m_dropOrder
Drop order or not.
Definition CD_MFHelmholtzJumpBC.H:273
RefCountedPtr< LevelData< BaseFab< bool > > > AmrMask
Alias to cut down on typing.
Definition CD_MFHelmholtzJumpBC.H:52
std::map< int, std::shared_ptr< LayoutData< VoFIterator > > > m_multiPhaseVofs
Iterators for multi-phase cells. The integer index is the phase.
Definition CD_MFHelmholtzJumpBC.H:288
int getOrder() const
Return stencil order.
Definition CD_MFHelmholtzJumpBC.cpp:67
LayoutData< MFInterfaceFAB< Vector< VolIndex > > > m_avgVoFs
Target vofs for average stencils.
Definition CD_MFHelmholtzJumpBC.H:313
virtual VoFIterator & getMultiPhaseVofs(const int a_phase, const DataIndex &a_dit) const
Return vof iterator which iterates over multi-phase cells on a specified phase and box.
Definition CD_MFHelmholtzJumpBC.cpp:103
virtual const BaseIVFAB< Real > & getBndryPhi(const int a_phase, const DataIndex &a_dit) const
Get phi on the boundary.
Definition CD_MFHelmholtzJumpBC.cpp:91
bool m_multiPhase
Multiphase or not.
Definition CD_MFHelmholtzJumpBC.H:268
int m_weight
Stencil order.
Definition CD_MFHelmholtzJumpBC.H:243
std::map< int, std::shared_ptr< LayoutData< VoFIterator > > > m_singlePhaseVofs
Iterators for single-phase cells. The integer index is the phase.
Definition CD_MFHelmholtzJumpBC.H:283
void setCoarseGridDropOrder(const bool a_dropOrder)
Signal MFHelmholtzJumpBC that it should drop the stencil order if the cell is a coarsened cell.
Definition CD_MFHelmholtzJumpBC.cpp:85
Class for holding BaseIVFAB<T> on the interface between two phases.
Definition CD_MFInterfaceFAB.H:30
Wrapper class for holding multifluid EBLevelGrids.
Definition CD_MFLevelGrid.H:29
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
Static class which contains some routines for fetching VoFs using various algorithms....
Definition CD_VofUtils.H:33
Namespace for encapsulating various data centerings.
Definition CD_Location.H:24
Cell
Enum for distinguishing between cell locations.
Definition CD_Location.H:30