chombo-discharge
Loading...
Searching...
No Matches
CD_EBHelmholtzDirichletDomainBC.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_EBHelmholtzDirichletDomainBC.H
9 @brief Declaration of a Dirichlet boundary condition class for EBHelmholtzOp
10 @author Robert Marskar
11*/
12
13#ifndef CD_EBHELMHOLTZDIRICHLETDOMAINBC_H
14#define CD_EBHELMHOLTZDIRICHLETDOMAINBC_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_EBHelmholtzDomainBC.H>
21#include <CD_NamespaceHeader.H>
22
27{
28public:
33
38 EBHelmholtzDirichletDomainBC(const Real a_value);
39
44 EBHelmholtzDirichletDomainBC(const std::function<Real(const RealVect& a_pos)>& a_value);
45
50
55 void
56 setValue(const Real a_value);
57
62 void
63 setValue(const std::function<Real(const RealVect& a_pos)>& a_value);
64
76 virtual void
77 getFaceFlux(BaseFab<Real>& a_faceFlux,
78 const BaseFab<Real>& a_phi,
79 const BaseFab<Real>& a_Bcoef,
80 const int& a_dir,
81 const Side::LoHiSide& a_side,
82 const DataIndex& a_dit,
83 const bool a_useHomogeneous) const override;
84
96 virtual Real
97 getFaceFlux(const VolIndex& a_vof,
98 const EBCellFAB& a_phi,
99 const EBFaceFAB& a_Bcoef,
100 const int& a_dir,
101 const Side::LoHiSide& a_side,
102 const DataIndex& a_dit,
103 const bool a_useHomogeneous) const override;
104
111 Real
112 getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override;
113
114protected:
119
124
129
133 std::function<Real(const RealVect& a_pos)> m_functionValue;
134};
135
136#include <CD_NamespaceFooter.H>
137
138#endif
Boundary condition class for passing Dirichlet domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzDirichletDomainBC.H:27
virtual ~EBHelmholtzDirichletDomainBC()
Destructor.
Definition CD_EBHelmholtzDirichletDomainBC.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, and it uses first order finite differences for filling the ...
Definition CD_EBHelmholtzDirichletDomainBC.cpp:69
Real getDiagWeight(const int a_dir, const Side::LoHiSide a_side) const override
Returns 2.0: the Dirichlet ghost-cell formula uses half-cell spacing, doubling the stencil coefficien...
Definition CD_EBHelmholtzDirichletDomainBC.cpp:201
Real m_constantValue
Constant value on domain sides.
Definition CD_EBHelmholtzDirichletDomainBC.H:128
std::function< Real(const RealVect &a_pos)> m_functionValue
Spatially dependent value on domain sides.
Definition CD_EBHelmholtzDirichletDomainBC.H:133
EBHelmholtzDirichletDomainBC()
Constructor. Must subsequently call setValue.
Definition CD_EBHelmholtzDirichletDomainBC.cpp:22
bool m_useFunction
Use function for BC value.
Definition CD_EBHelmholtzDirichletDomainBC.H:123
void setValue(const Real a_value)
Set the constant value on the domain side.
Definition CD_EBHelmholtzDirichletDomainBC.cpp:47
bool m_useConstant
Use constant for BC.
Definition CD_EBHelmholtzDirichletDomainBC.H:118
Base class for passing domain boundary conditions into EBHelmholtzOp.
Definition CD_EBHelmholtzDomainBC.H:30