chombo-discharge
Loading...
Searching...
No Matches
CD_EddingtonSP1DomainBc.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_EDDINGTONSP1DOMAINBC_H
14#define CD_EDDINGTONSP1DOMAINBC_H
15
16// Std include
17#include <functional>
18#include <map>
19
20// Chombo includes
21#include <RealVect.H>
22#include <LoHiSide.H>
23
24// Our includes
25#include <CD_NamespaceHeader.H>
26
33{
34public:
38 enum class BcType
39 {
40 Dirichlet,
41 Neumann,
42 Larsen,
43 };
44
48 using BcFunction = std::function<Real(const RealVect a_position, const Real a_time)>;
49
53 using DomainSide = std::pair<int, Side::LoHiSide>;
54
58 using Bc = std::pair<BcType, BcFunction>;
59
64
69 EddingtonSP1DomainBc(const EddingtonSP1DomainBc& a_domainBc) = default;
70
75 EddingtonSP1DomainBc(const EddingtonSP1DomainBc&& a_domainBc) = delete;
76
83 operator=(const EddingtonSP1DomainBc& a_domainBc) = default;
84
90 operator=(const EddingtonSP1DomainBc&& a_domainBc) = delete;
91
95 virtual ~EddingtonSP1DomainBc();
96
103 void
104 setBc(const DomainSide a_domainSide, const Bc& a_bc);
105
113 Bc&
114 getBc(const DomainSide a_domainSide);
115
123 const Bc&
124 getBc(const DomainSide a_domainSide) const;
125
126protected:
132 std::map<DomainSide, Bc> m_bcFunctions;
133};
134
135#include <CD_NamespaceFooter.H>
136
137#endif
Class which maps boundary condition types to a side and direction.
Definition CD_EddingtonSP1DomainBc.H:33
std::pair< BcType, BcFunction > Bc
Alias for mapping a bctype and function.
Definition CD_EddingtonSP1DomainBc.H:58
std::map< DomainSide, Bc > m_bcFunctions
This holds the map to the boundary condition type and side. The first entry in the map is the directi...
Definition CD_EddingtonSP1DomainBc.H:132
Bc & getBc(const DomainSide a_domainSide)
Returns the boundary condition for a side and direction.
Definition CD_EddingtonSP1DomainBc.cpp:46
EddingtonSP1DomainBc(const EddingtonSP1DomainBc &a_domainBc)=default
Copy constructor.
EddingtonSP1DomainBc(const EddingtonSP1DomainBc &&a_domainBc)=delete
Disallowedd move constructor.
void setBc(const DomainSide a_domainSide, const Bc &a_bc)
Set the boundary condition on a domain side. You must set both the type, and the associated function.
Definition CD_EddingtonSP1DomainBc.cpp:40
std::function< Real(const RealVect a_position, const Real a_time)> BcFunction
Function which maps f(R^3,t) : R. Used for setting the associated value and boundary condition type.
Definition CD_EddingtonSP1DomainBc.H:48
EddingtonSP1DomainBc()
Initializing constructor. This populates the bc.
Definition CD_EddingtonSP1DomainBc.cpp:17
std::pair< int, Side::LoHiSide > DomainSide
Alias for mapping a direction and side.
Definition CD_EddingtonSP1DomainBc.H:53
BcType
Boundary condition type.
Definition CD_EddingtonSP1DomainBc.H:39
EddingtonSP1DomainBc & operator=(const EddingtonSP1DomainBc &&a_domainBc)=delete
Disallowed move assignment.
virtual ~EddingtonSP1DomainBc()
Destructor. This.
Definition CD_EddingtonSP1DomainBc.cpp:34
EddingtonSP1DomainBc & operator=(const EddingtonSP1DomainBc &a_domainBc)=default
Copy assignment.