chombo-discharge
Loading...
Searching...
No Matches
CD_EBHelmholtzRobinEBBC.H
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7/*
8 @file CD_EBHelmholtzRobinEBBC.H
9 @brief Declaration of a boundary condition class for EBHelmholtzOp
10 @author Robert Marskar
11*/
12
13#ifndef CD_EBHELMHOLTZROBINEBBC_H
14#define CD_EBHELMHOLTZROBINEBBC_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_VofUtils.H>
21#include <CD_EBHelmholtzEBBC.H>
22#include <CD_NamespaceHeader.H>
23
32{
33public:
38
47 EBHelmholtzRobinEBBC(const int a_order, const int a_weight, const Real a_A, const Real a_B, const Real a_C);
48
57 EBHelmholtzRobinEBBC(const int a_order,
58 const int a_weight,
59 const std::function<Real(const RealVect& a_pos)>& a_A,
60 const std::function<Real(const RealVect& a_pos)>& a_B,
61 const std::function<Real(const RealVect& a_pos)>& a_C);
62
66 virtual ~EBHelmholtzRobinEBBC();
67
72 void
73 setOrder(const int a_order);
74
79 void
80 setWeight(const int a_weight);
81
86 virtual void
87 setDomainDropOrder(const int a_domainSize);
88
95 void
96 setCoefficients(const Real a_A, const Real a_B, const Real a_C);
97
104 void
105 setCoefficients(const std::function<Real(const RealVect& a_pos)>& a_A,
106 const std::function<Real(const RealVect& a_pos)>& a_B,
107 const std::function<Real(const RealVect& a_pos)>& a_C);
108
119 virtual void
120 applyEBFlux(VoFIterator& a_vofit,
121 EBCellFAB& a_Lphi,
122 const EBCellFAB& a_phi,
123 const BaseIVFAB<Real>& a_Bcoef,
124 const DataIndex& a_dit,
125 const Real& a_beta,
126 const bool& a_homogeneousPhysBC) const override;
127
128protected:
133
138
143
148
153
158
163
168
172 std::function<Real(const RealVect& a_pos)> m_functionA;
173
177 std::function<Real(const RealVect& a_pos)> m_functionB;
178
182 std::function<Real(const RealVect& a_pos)> m_functionC;
183
187 virtual void
188 define() override;
189
199 VoFStencil
200 getInterpolationStencil(const VolIndex& a_vof,
201 const DataIndex& a_dit,
202 const VofUtils::Neighborhood a_neighborhood,
203 const int a_order) const;
204};
205
206#include <CD_NamespaceFooter.H>
207
208#endif
Various functions for getting Vofs near cut-cells.
Base class for passing EB boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzEBBC.H:30
Base class for passing Robin EB boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzRobinEBBC.H:32
int m_domainDropOrder
Special flag for dropping stencil order when domains become coarser than this.
Definition CD_EBHelmholtzRobinEBBC.H:152
Real m_constantA
Constant A-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:157
VoFStencil getInterpolationStencil(const VolIndex &a_vof, const DataIndex &a_dit, const VofUtils::Neighborhood a_neighborhood, const int a_order) const
Get a least-squares based interpolation stencil.
Definition CD_EBHelmholtzRobinEBBC.cpp:301
bool m_useFunction
Use function for BC value.
Definition CD_EBHelmholtzRobinEBBC.H:137
EBHelmholtzRobinEBBC()
Default constructor. Must subsequently set coefficients.
Definition CD_EBHelmholtzRobinEBBC.cpp:23
virtual ~EBHelmholtzRobinEBBC()
Destructor.
Definition CD_EBHelmholtzRobinEBBC.cpp:63
Real m_constantB
Constant B-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:162
std::function< Real(const RealVect &a_pos)> m_functionB
Function-based B-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:177
std::function< Real(const RealVect &a_pos)> m_functionC
Function-based C-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:182
virtual void define() override
User define function.
Definition CD_EBHelmholtzRobinEBBC.cpp:125
int m_weight
Stencil weight (for weighting equations in least squares reconstruction)
Definition CD_EBHelmholtzRobinEBBC.H:147
void setOrder(const int a_order)
Set BC order.
Definition CD_EBHelmholtzRobinEBBC.cpp:69
int m_order
Stencil order.
Definition CD_EBHelmholtzRobinEBBC.H:142
Real m_constantC
Constant C-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:167
bool m_useConstant
Use constant for BC.
Definition CD_EBHelmholtzRobinEBBC.H:132
void setWeight(const int a_weight)
Set equation weights for least squares reconstruction.
Definition CD_EBHelmholtzRobinEBBC.cpp:79
std::function< Real(const RealVect &a_pos)> m_functionA
Function-based A-coefficient.
Definition CD_EBHelmholtzRobinEBBC.H:172
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_EBHelmholtzRobinEBBC.cpp:251
virtual void setDomainDropOrder(const int a_domainSize)
Drop BC order if domain size is equal or below this.
Definition CD_EBHelmholtzRobinEBBC.cpp:89
void setCoefficients(const Real a_A, const Real a_B, const Real a_C)
Set constant coefficients.
Definition CD_EBHelmholtzRobinEBBC.cpp:97
Neighborhood
Neighborhood type.
Definition CD_VofUtils.H:57