chombo-discharge
Loading...
Searching...
No Matches
CD_EBHelmholtzRobinDomainBC.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_EBHelmholtzRobinDomainBC.H
9 @brief Declaration of a Robin boundary condition class for EBHelmholtzOp
10 @author Robert Marskar
11*/
12
13#ifndef CD_EBHELMHOLTZROBINDOMAINBC_H
14#define CD_EBHELMHOLTZROBINDOMAINBC_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_EBHelmholtzDomainBC.H>
21#include <CD_NamespaceHeader.H>
22
31{
32public:
37
42
49 void
50 setCoefficients(const Real a_A, const Real a_B, const Real a_C);
51
58 void
59 setCoefficients(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
74 virtual void
75 getFaceFlux(BaseFab<Real>& a_faceFlux,
76 const BaseFab<Real>& a_phi,
77 const BaseFab<Real>& a_Bcoef,
78 const int& a_dir,
79 const Side::LoHiSide& a_side,
80 const DataIndex& a_dit,
81 const bool a_useHomogeneous) const override;
82
94 virtual Real
95 getFaceFlux(const VolIndex& a_vof,
96 const EBCellFAB& a_phi,
97 const EBFaceFAB& a_Bcoef,
98 const int& a_dir,
99 const Side::LoHiSide& a_side,
100 const DataIndex& a_dit,
101 const bool a_useHomogeneous) const override;
102
112 Real
113 getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override;
114
115protected:
120
125
130
135
140
144 std::function<Real(const RealVect& a_pos)> m_functionA;
145
149 std::function<Real(const RealVect& a_pos)> m_functionB;
150
154 std::function<Real(const RealVect& a_pos)> m_functionC;
155};
156
157#include <CD_NamespaceFooter.H>
158
159#endif
Base class for passing domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzDomainBC.H:30
Base class for passing Robin domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzRobinDomainBC.H:31
std::function< Real(const RealVect &a_pos)> m_functionB
Function-based B-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:149
bool m_useFunction
Use function for BC value.
Definition CD_EBHelmholtzRobinDomainBC.H:124
std::function< Real(const RealVect &a_pos)> m_functionA
Function-based A-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:144
void setCoefficients(const Real a_A, const Real a_B, const Real a_C)
Set constant coefficients.
Definition CD_EBHelmholtzRobinDomainBC.cpp:33
Real m_constantC
Constant C-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:139
Real m_constantA
Constant A-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:129
Real m_constantB
Constant B-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:134
virtual ~EBHelmholtzRobinDomainBC()
Destructor.
Definition CD_EBHelmholtzRobinDomainBC.cpp:27
virtual void getFaceFlux(BaseFab< Real > &a_faceFlux, const BaseFab< Real > &a_phi, const BaseFab< Real > &a_Bcoef, const int &a_dir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const bool a_useHomogeneous) const override
Get face flux. This is for regular cells.
Definition CD_EBHelmholtzRobinDomainBC.cpp:61
Real getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override
Diagonal-weight multiplier for the domain-face contribution to the relaxation diagonal.
Definition CD_EBHelmholtzRobinDomainBC.cpp:231
bool m_useConstant
Use constant for BC.
Definition CD_EBHelmholtzRobinDomainBC.H:119
std::function< Real(const RealVect &a_pos)> m_functionC
Function-based C-coefficient.
Definition CD_EBHelmholtzRobinDomainBC.H:154
EBHelmholtzRobinDomainBC()
Default constructor. Must subsequently set coefficients.
Definition CD_EBHelmholtzRobinDomainBC.cpp:22