chombo-discharge
Loading...
Searching...
No Matches
CD_EBHelmholtzNeumannDomainBC.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_EBHELMHOLTZNEUMANNDOMAINBC_H
14#define CD_EBHELMHOLTZNEUMANNDOMAINBC_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_EBHelmholtzDomainBC.H>
21#include <CD_NamespaceHeader.H>
22
28{
29public:
34
40 EBHelmholtzNeumannDomainBC(const Real a_DphiDn);
41
47 EBHelmholtzNeumannDomainBC(const std::function<Real(const RealVect& a_pos)>& a_DphiDn);
48
53
59 void
60 setDphiDn(const Real a_DphiDn);
61
67 void
68 setDphiDn(const std::function<Real(const RealVect& a_pos)>& a_DphiDn);
69
75 void
76 setBxDphiDn(const Real a_BxDphiDn);
77
83 void
84 setBxDphiDn(const std::function<Real(const RealVect& a_pos)>& a_BxDphiDn);
85
97 virtual void
98 getFaceFlux(BaseFab<Real>& a_faceFlux,
99 const BaseFab<Real>& a_phi,
100 const BaseFab<Real>& a_Bcoef,
101 const int& a_dir,
102 const Side::LoHiSide& a_side,
103 const DataIndex& a_dit,
104 const bool a_useHomogeneous) const override;
105
117 virtual Real
118 getFaceFlux(const VolIndex& a_vof,
119 const EBCellFAB& a_phi,
120 const EBFaceFAB& a_Bcoef,
121 const int& a_dir,
122 const Side::LoHiSide& a_side,
123 const DataIndex& a_dit,
124 const bool a_useHomogeneous) const override;
125
132 Real
133 getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override;
134
135protected:
140
145
150
155
159 std::function<Real(const RealVect& a_pos)> m_functionDphiDn;
160};
161
162#include <CD_NamespaceFooter.H>
163
164#endif
Base class for passing domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzDomainBC.H:30
Boundary condition class for passing Neumann domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzNeumannDomainBC.H:28
void setDphiDn(const Real a_DphiDn)
Set value of dphi/dn on the EB.
Definition CD_EBHelmholtzNeumannDomainBC.cpp:47
bool m_useFunction
Use function for BC value.
Definition CD_EBHelmholtzNeumannDomainBC.H:149
std::function< Real(const RealVect &a_pos)> m_functionDphiDn
Value on the domain side.
Definition CD_EBHelmholtzNeumannDomainBC.H:159
bool m_useConstant
Use constant for BC.
Definition CD_EBHelmholtzNeumannDomainBC.H:144
void setBxDphiDn(const Real a_BxDphiDn)
Set the value of B*dphi/dn on the EB.
Definition CD_EBHelmholtzNeumannDomainBC.cpp:73
virtual ~EBHelmholtzNeumannDomainBC()
Destructor.
Definition CD_EBHelmholtzNeumannDomainBC.cpp:41
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_EBHelmholtzNeumannDomainBC.cpp:93
Real getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override
Returns 0.0: a Neumann BC prescribes the flux independently of phi, contributing nothing to the diago...
Definition CD_EBHelmholtzNeumannDomainBC.cpp:207
bool m_multByBco
Hook for multiplying by b-coefficient or not.
Definition CD_EBHelmholtzNeumannDomainBC.H:139
Real m_constantDphiDn
Value on the domain side.
Definition CD_EBHelmholtzNeumannDomainBC.H:154
EBHelmholtzNeumannDomainBC()
Constructor. Must subsequently call setDphiDn or setBxDphiDn.
Definition CD_EBHelmholtzNeumannDomainBC.cpp:22