chombo-discharge
Loading...
Searching...
No Matches
CD_DomainFluxIFFAB.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_DOMAINFLUXIFFAB_H
14#define CD_DOMAINFLUXIFFAB_H
15
16// Chombo includes
17#include <BaseIFFAB.H>
18#include <ProblemDomain.H>
19#include <EBISLayout.H>
20
21// Our includes
22#include <CD_NamespaceHeader.H>
23
32{
33public:
38 static int
40 {
41 return 1; // Symmetric messaging
42 }
43
48
56 DomainFluxIFFAB(const ProblemDomain& a_domain, const EBISBox& a_ebisbox, const Box& a_box, const int a_nComp);
57
62
67 const Box&
68 box() const;
69
74 int
75 nComp() const;
76
81 const ProblemDomain&
82 getDomain() const;
83
88 const EBISBox&
89 getEBISBox() const;
90
95 void
96 define(const DomainFluxIFFAB& a_copy);
97
105 void
106 define(const ProblemDomain& a_domain, const EBISBox& a_ebisbox, const Box& a_box, const int a_nComp);
107
114 BaseIFFAB<Real>&
115 operator()(const int a_dir, const Side::LoHiSide a_side);
116
123 const BaseIFFAB<Real>&
124 operator()(const int a_dir, const Side::LoHiSide a_side) const;
125
132 int
133 size(const Box& R, const Interval& comps) const;
134
142 void
143 linearOut(void* buf, const Box& R, const Interval& comps) const;
144
152 void
153 linearIn(void* buf, const Box& R, const Interval& comps);
154
167 void
168 copy(const Box& Rfrom, const Interval& Cdest, const Box& Rto, const DomainFluxIFFAB& src, const Interval& Csrc);
169
170protected:
174 ProblemDomain m_domain;
175
179 Box m_box;
180
184 EBISBox m_ebisbox;
185
190
195
199 Tuple<BaseIFFAB<Real>*, CH_SPACEDIM> m_fluxLo;
200
204 Tuple<BaseIFFAB<Real>*, CH_SPACEDIM> m_fluxHi;
205
209 void
211
215 void
216 clear();
217};
218
219#include <CD_NamespaceFooter.H>
220
221#endif
Class for holding fluxes on domain boundaries.
Definition CD_DomainFluxIFFAB.H:32
~DomainFluxIFFAB()
Destructor (does nothing)
Definition CD_DomainFluxIFFAB.cpp:38
Tuple< BaseIFFAB< Real > *, CH_SPACEDIM > m_fluxLo
BaseIFFABs on Side::Lo sides.
Definition CD_DomainFluxIFFAB.H:199
void setDefaultValues()
Set default values.
Definition CD_DomainFluxIFFAB.cpp:212
static int preAllocatable()
Pre allocatable.
Definition CD_DomainFluxIFFAB.H:39
EBISBox m_ebisbox
EBISBox.
Definition CD_DomainFluxIFFAB.H:184
Tuple< BaseIFFAB< Real > *, CH_SPACEDIM > m_fluxHi
BaseIFFABs on Side::Hi sides.
Definition CD_DomainFluxIFFAB.H:204
int nComp() const
Get number of components.
Definition CD_DomainFluxIFFAB.cpp:59
Box m_box
Defining box.
Definition CD_DomainFluxIFFAB.H:179
void linearOut(void *buf, const Box &R, const Interval &comps) const
Linearization function.
Definition CD_DomainFluxIFFAB.cpp:99
ProblemDomain m_domain
Defining domain.
Definition CD_DomainFluxIFFAB.H:174
const ProblemDomain & getDomain() const
Get the defining problem domain.
Definition CD_DomainFluxIFFAB.cpp:65
int size(const Box &R, const Interval &comps) const
Linearization function.
Definition CD_DomainFluxIFFAB.cpp:85
BaseIFFAB< Real > & operator()(const int a_dir, const Side::LoHiSide a_side)
Get the BaseIFFAB on a particular domain side.
Definition CD_DomainFluxIFFAB.cpp:265
int m_nComp
Number of components.
Definition CD_DomainFluxIFFAB.H:189
void linearIn(void *buf, const Box &R, const Interval &comps)
Linearization function.
Definition CD_DomainFluxIFFAB.cpp:119
DomainFluxIFFAB()
Default constructor. Must subsequently call define.
Definition CD_DomainFluxIFFAB.cpp:20
const EBISBox & getEBISBox() const
Get the defining ebis box.
Definition CD_DomainFluxIFFAB.cpp:71
const Box & box() const
Get the defining box.
Definition CD_DomainFluxIFFAB.cpp:53
void define(const DomainFluxIFFAB &a_copy)
Make a clone of an input data holder.
Definition CD_DomainFluxIFFAB.cpp:77
bool m_isDefined
Is defined or not.
Definition CD_DomainFluxIFFAB.H:194
void copy(const Box &Rfrom, const Interval &Cdest, const Box &Rto, const DomainFluxIFFAB &src, const Interval &Csrc)
Copy functiopn.
Definition CD_DomainFluxIFFAB.cpp:247
void clear()
Clear object.
Definition CD_DomainFluxIFFAB.cpp:228