chombo-discharge
CD_MFHelmholtzEBBC.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_MFHelmholtzEBBC_H
13 #define CD_MFHelmholtzEBBC_H
14 
15 // Our includes
16 #include <CD_EBHelmholtzEBBC.H>
17 #include <CD_MFHelmholtzJumpBC.H>
18 #include <CD_VofUtils.H>
19 #include <CD_NamespaceHeader.H>
20 
27 {
28 public:
32  MFHelmholtzEBBC() = delete;
33 
37  MFHelmholtzEBBC(const MFHelmholtzEBBC& a_other) = delete;
38 
42  MFHelmholtzEBBC(const int a_phase, const RefCountedPtr<MFHelmholtzJumpBC>& a_jumpBC);
43 
47  virtual ~MFHelmholtzEBBC();
48 
60  virtual void
61  applyEBFlux(VoFIterator& a_vofit,
62  EBCellFAB& a_Lphi,
63  const EBCellFAB& a_phi,
64  const BaseIVFAB<Real>& a_Bcoef,
65  const DataIndex& a_dit,
66  const Real& a_beta,
67  const bool& a_homogeneousPhysBC) const override;
68 
69 protected:
73  RefCountedPtr<MFHelmholtzJumpBC> m_jumpBC;
74 
78  int m_phase;
79 
83  LayoutData<BaseIVFAB<Real>> m_boundaryWeights;
84 
88  void
89  define() override final;
90 
94  void
96 
100  virtual void
102 
113  virtual void
114  applyEBFluxSinglePhase(VoFIterator& a_singlePhaseVofs,
115  EBCellFAB& a_Lphi,
116  const EBCellFAB& a_phi,
117  const BaseIVFAB<Real>& a_Bcoef,
118  const DataIndex& a_dit,
119  const Real& a_beta,
120  const bool& a_homogeneousPhysBC) const = 0;
121 
132  void
133  applyEBFluxMultiPhase(VoFIterator& a_multiPhaseVofs,
134  EBCellFAB& a_Lphi,
135  const EBCellFAB& a_phi,
136  const BaseIVFAB<Real>& a_Bcoef,
137  const DataIndex& a_dit,
138  const Real& a_beta,
139  const bool& a_homogeneousPhysBC) const;
140 
152  virtual bool
153  getLeastSquaresBoundaryGradStencil(std::pair<Real, VoFStencil>& a_stencil,
154  const VolIndex& a_vof,
155  const VofUtils::Neighborhood a_neighborhood,
156  const DataIndex& a_dit,
157  const int a_order,
158  const int a_weight) const;
159 };
160 
161 #include <CD_NamespaceFooter.H>
162 
163 #endif
Declaration of class for computing "jump interface" boundary conditions for multifluid Helmholtz code...
Various functions for getting Vofs near cut-cells.
Base class for passing EB boundary conditions into EBHelmholtzOp.
Definition: CD_EBHelmholtzEBBC.H:29
Class for making boundary conditions on the EB in a multifluid context.
Definition: CD_MFHelmholtzEBBC.H:27
int m_phase
Phase.
Definition: CD_MFHelmholtzEBBC.H:78
void defineMultiPhase()
Define stuff for multi-phase.
Definition: CD_MFHelmholtzEBBC.cpp:46
RefCountedPtr< MFHelmholtzJumpBC > m_jumpBC
Jump bc object.
Definition: CD_MFHelmholtzEBBC.H:73
virtual ~MFHelmholtzEBBC()
Default constructor.
Definition: CD_MFHelmholtzEBBC.cpp:31
MFHelmholtzEBBC(const MFHelmholtzEBBC &a_other)=delete
Disallowed copy constructor. Factory must call the other version.
virtual bool getLeastSquaresBoundaryGradStencil(std::pair< Real, VoFStencil > &a_stencil, const VolIndex &a_vof, const VofUtils::Neighborhood a_neighborhood, const DataIndex &a_dit, const int a_order, const int a_weight) const
Get stencil with specified order.
Definition: CD_MFHelmholtzEBBC.cpp:156
virtual void defineSinglePhase()=0
Define stuff for multi-phase.
virtual void applyEBFluxSinglePhase(VoFIterator &a_singlePhaseVofs, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const =0
Apply flux single phase.
void define() override final
User define function.
Definition: CD_MFHelmholtzEBBC.cpp:37
virtual void applyEBFlux(VoFIterator &a_vofit, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const override
Apply the EB flux. This is the version that is called by EBHelmholtzOp.
Definition: CD_MFHelmholtzEBBC.cpp:110
MFHelmholtzEBBC()=delete
Disallowed weak constructor. Factory must call the other version.
LayoutData< BaseIVFAB< Real > > m_boundaryWeights
Weights for matching cells.
Definition: CD_MFHelmholtzEBBC.H:83
void applyEBFluxMultiPhase(VoFIterator &a_multiPhaseVofs, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const
Apply flux in multiphase cells.
Definition: CD_MFHelmholtzEBBC.cpp:130
Static class which contains some routines for fetching VoFs using various algorithms....
Definition: CD_VofUtils.H:33