chombo-discharge
All Classes Namespaces Files Functions Variables Typedefs Enumerations Pages
CD_EBAMRDataImplem.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_EBAMRDataImplem_H
13#define CD_EBAMRDataImplem_H
14
15// Chombo includes
16#include <CH_Timer.H>
17
18// Our includes
19#include <CD_EBAMRData.H>
20#include <CD_NamespaceHeader.H>
21
22template <typename T>
24{
25 CH_TIME("EBAMRData<T>::EBAMRData()");
26 m_reserved = false;
27}
28
29template <typename T>
31{
32 CH_TIME("EBAMRData<T>::EBAMRData(int)");
33
34 m_data.resize(a_size);
35}
36
37template <typename T>
39{
40 CH_TIME("EBAMRData<T>::~EBAMRData()");
41}
42
43template <typename T>
46{
47 return m_data[a_level];
48}
49
50template <typename T>
53{
54 return m_data[a_level];
56
57template <typename T>
58void
59EBAMRData<T>::resize(const int a_size) noexcept
60{
61 m_data.resize(a_size);
63
64template <typename T>
65int
67{
68 return m_data.size();
70
71template <typename T>
72void
74{
75 for (int lvl = 0; lvl < m_data.size(); lvl++) {
77 }
78
79 m_data.resize(0);
80}
81
82template <typename T>
83void
85{
86 m_reserved = true;
87}
88
89template <typename T>
90void
92{
93 m_reserved = false;
94}
96template <typename T>
97bool
99{
100 return m_reserved;
102
103template <typename T>
104void
106{
107 for (int lvl = 0; lvl < m_data.size(); lvl++) {
108 m_data[lvl]->exchange();
109 }
110}
111
112template <typename T>
115{
116 return m_data;
117}
118
119template <typename T>
122{
123 return m_data;
124}
126template <typename T>
127void
132
133template <typename T>
134const std::string
139
140template <typename T>
141void
143{
144 m_realm = a_realm;
145}
146
147// Explicit templates
148template class EBAMRData<MFCellFAB>;
149template class EBAMRData<MFFluxFAB>;
150template class EBAMRData<MFBaseIVFAB>;
151template class EBAMRData<EBCellFAB>; // Cell-centered single-phase data
152template class EBAMRData<EBFluxFAB>; // Face-centered single-phase data
153template class EBAMRData<EBFaceFAB>;
154template class EBAMRData<BaseIVFAB<Real>>;
155template class EBAMRData<DomainFluxIFFAB>;
156template class EBAMRData<BaseFab<bool>>;
157template class EBAMRData<FArrayBox>;
158
159// Typedefs for simple typing.
160typedef EBAMRData<MFCellFAB> MFAMRCellData; // Cell-centered multifluid data
161typedef EBAMRData<MFFluxFAB> MFAMRFluxData; // Face-centered multifluid data
162typedef EBAMRData<MFBaseIVFAB> MFAMRIVData; // Irregular face multifluid data
163typedef EBAMRData<EBCellFAB> EBAMRCellData; // Cell-centered single-phase data
164typedef EBAMRData<EBFluxFAB> EBAMRFluxData; // Face-centered data in all coordinate direction
165typedef EBAMRData<EBFaceFAB> EBAMRFaceData; // Face-centered in a single coordinate direction
166typedef EBAMRData<BaseIVFAB<Real>> EBAMRIVData; // Data on irregular data centroids
167typedef EBAMRData<DomainFluxIFFAB> EBAMRIFData; // Data on domain phases
168typedef EBAMRData<BaseFab<bool>> EBAMRBool; // For holding bool at every cell
169typedef EBAMRData<FArrayBox> EBAMRFAB; // Just regular grid data.
170
171#include <CD_NamespaceFooter.H>
172
173#endif
Class for holding data across EBAMR hierarchies.
EBAMRData() noexcept
Default constructor. Does nothing.
Definition CD_EBAMRDataImplem.H:23
void reserve() noexcept
Reserve data.
Definition CD_EBAMRDataImplem.H:84
void setRealm(const std::string a_realm) noexcept
Sets the realm for this object.
Definition CD_EBAMRDataImplem.H:142
Vector< RefCountedPtr< LevelData< T > > > & getData() noexcept
Get underlying data. Returns m_data.
Definition CD_EBAMRDataImplem.H:114
void exchange() noexcept
Exchange on all AMR levels.
Definition CD_EBAMRDataImplem.H:105
void resize(const int a_size) noexcept
Resize m_data to having size a_size.
Definition CD_EBAMRDataImplem.H:59
virtual ~EBAMRData() noexcept
Destructor. Does nothing.
Definition CD_EBAMRDataImplem.H:38
int size() const noexcept
Get size of m_data.
Definition CD_EBAMRDataImplem.H:66
void push_back(RefCountedPtr< LevelData< T > > &a_levelData) noexcept
Push a LevelData<T> object to the back of the data vector.
Definition CD_EBAMRDataImplem.H:128
bool isReserved() const noexcept
Check if data is reserved.
Definition CD_EBAMRDataImplem.H:98
void clear() noexcept
Delete all data.
Definition CD_EBAMRDataImplem.H:73
void release() noexcept
Release data.
Definition CD_EBAMRDataImplem.H:91
const std::string getRealm() const noexcept
Returns the string identifier for whatever realm this data is supposed to be allocated over.
Definition CD_EBAMRDataImplem.H:135
RefCountedPtr< LevelData< T > > & operator[](int a_level) noexcept
Indexing operators. Returns m_data[a_level].
Definition CD_EBAMRDataImplem.H:45
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25
std::string m_realm
Realm where this solver lives.
Definition CD_TracerParticleSolver.H:345