chombo-discharge
Loading...
Searching...
No Matches
CD_EBHelmholtzRobinEBBCFactory.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_EBHelmholtzRobinEBBCFactory.H
9 @brief Declaration of a factory class for making Robin EB boundary conditions with EBHelmholtzOp
10 @author Robert Marskar
11*/
12
13#ifndef CD_EBHELMHOLTZROBINEBBCFACTORY_H
14#define CD_EBHELMHOLTZROBINEBBCFACTORY_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_EBHelmholtzEBBCFactory.H>
21#include <CD_NamespaceHeader.H>
22
31{
32public:
37
46 EBHelmholtzRobinEBBCFactory(const int a_order, const int a_weight, const Real a_A, const Real a_B, const Real a_C);
47
56 EBHelmholtzRobinEBBCFactory(const int a_order,
57 const int a_weight,
58 const std::function<Real(const RealVect& a_pos)>& a_A,
59 const std::function<Real(const RealVect& a_pos)>& a_B,
60 const std::function<Real(const RealVect& a_pos)>& a_C);
61
66
71 void
72 setOrder(const int a_order);
73
78 void
79 setWeight(const int a_weight);
80
87 void
88 setCoefficients(const Real a_A, const Real a_B, const Real a_C);
89
96 void
97 setCoefficients(const std::function<Real(const RealVect& a_pos)>& a_A,
98 const std::function<Real(const RealVect& a_pos)>& a_B,
99 const std::function<Real(const RealVect& a_pos)>& a_C);
100
105 virtual void
106 setDomainDropOrder(const int a_domainSize);
107
112 RefCountedPtr<EBHelmholtzEBBC>
113 create() override;
114
115protected:
116 /*
117 @brief Use constant for BC
118 */
121
126
131
136
141
146
151
156
160 std::function<Real(const RealVect& a_pos)> m_functionA;
161
165 std::function<Real(const RealVect& a_pos)> m_functionB;
166
170 std::function<Real(const RealVect& a_pos)> m_functionC;
171};
172
173#include <CD_NamespaceFooter.H>
174
175#endif
Factory class for making EBHelmholtzEBBCs.
Definition CD_EBHelmholtzEBBCFactory.H:27
Base class for making Robin boundary conditions with EBHelmholtzOp.
Definition CD_EBHelmholtzRobinEBBCFactory.H:31
void setWeight(const int a_weight)
Set equation weights for least squares reconstruction.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:72
virtual void setDomainDropOrder(const int a_domainSize)
Drop BC order if domain size is equal or below this.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:82
Real m_constantA
Constant A-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:145
bool m_useConstant
Use constant.
Definition CD_EBHelmholtzRobinEBBCFactory.H:120
std::function< Real(const RealVect &a_pos)> m_functionA
Function-based A-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:160
int m_domainDropOrder
Special flag for dropping stencil order when domains become coarser than this.
Definition CD_EBHelmholtzRobinEBBCFactory.H:140
Real m_constantC
Constant C-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:155
EBHelmholtzRobinEBBCFactory()
Constructor.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:18
std::function< Real(const RealVect &a_pos)> m_functionB
Function-based B-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:165
virtual ~EBHelmholtzRobinEBBCFactory()
Destructor (does nothing).
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:56
void setCoefficients(const Real a_A, const Real a_B, const Real a_C)
Set constant coefficients.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:90
int m_order
(Attempted) stencil order
Definition CD_EBHelmholtzRobinEBBCFactory.H:130
Real m_constantB
Constant B-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:150
std::function< Real(const RealVect &a_pos)> m_functionC
Function-based C-coefficient.
Definition CD_EBHelmholtzRobinEBBCFactory.H:170
bool m_useFunction
Use function for BC value.
Definition CD_EBHelmholtzRobinEBBCFactory.H:125
RefCountedPtr< EBHelmholtzEBBC > create() override
Factory method.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:118
void setOrder(const int a_order)
Set BC order.
Definition CD_EBHelmholtzRobinEBBCFactory.cpp:62
int m_weight
Weight for least squares gradient reconstruction.
Definition CD_EBHelmholtzRobinEBBCFactory.H:135