chombo-discharge
Loading...
Searching...
No Matches
CD_EBAMRDataImplem.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_EBAMRDATAIMPLEM_H
14#define CD_EBAMRDATAIMPLEM_H
15
16// Chombo includes
17#include <CH_Timer.H>
18
19// Our includes
20#include <CD_EBAMRData.H>
21#include <CD_NamespaceHeader.H>
22
23template <typename T>
25{
26 CH_TIME("EBAMRData<T>::EBAMRData()");
27 m_reserved = false;
28}
29
30template <typename T>
32{
33 CH_TIME("EBAMRData<T>::EBAMRData(int)");
34
35 m_data.resize(a_size);
36}
37
38template <typename T>
40{
41 CH_TIME("EBAMRData<T>::~EBAMRData()");
42}
43
44template <typename T>
47{
48 return m_data[a_level];
49}
50
51template <typename T>
54{
55 return m_data[a_level];
56}
57
58template <typename T>
59void
60EBAMRData<T>::resize(const int a_size) noexcept
61{
62 m_data.resize(a_size);
63}
64
65template <typename T>
66int
68{
69 return m_data.size();
70}
71
72template <typename T>
73void
75{
76 for (int lvl = 0; lvl < m_data.size(); lvl++) {
77 m_data[lvl] = RefCountedPtr<LevelData<T>>(0);
78 }
79
80 m_data.resize(0);
81}
82
83template <typename T>
84void
86{
87 m_reserved = true;
88}
89
90template <typename T>
91void
93{
94 m_reserved = false;
95}
96
97template <typename T>
98bool
100{
101 return m_reserved;
102}
103
104template <typename T>
105void
107{
108 for (int lvl = 0; lvl < m_data.size(); lvl++) {
109 m_data[lvl]->exchange();
110 }
111}
112
113template <typename T>
116{
117 return m_data;
118}
119
120template <typename T>
123{
124 return m_data;
125}
126
127template <typename T>
128void
130{
131 m_data.push_back(a_levelData);
132}
133
134template <typename T>
135const std::string
140
141template <typename T>
142void
144{
145 m_realm = a_realm;
146}
147
148// Explicit templates
149template class EBAMRData<MFCellFAB>;
150template class EBAMRData<MFFluxFAB>;
151template class EBAMRData<MFBaseIVFAB>;
152template class EBAMRData<EBCellFAB>; // Cell-centered single-phase data
153template class EBAMRData<EBFluxFAB>; // Face-centered single-phase data
154template class EBAMRData<EBFaceFAB>;
155template class EBAMRData<BaseIVFAB<Real>>;
156template class EBAMRData<DomainFluxIFFAB>;
157template class EBAMRData<BaseFab<bool>>;
158template class EBAMRData<FArrayBox>;
159
161typedef EBAMRData<MFCellFAB> MFAMRCellData; // Cell-centered multifluid data
162typedef EBAMRData<MFFluxFAB> MFAMRFluxData; // Face-centered multifluid data
163typedef EBAMRData<MFBaseIVFAB> MFAMRIVData; // Irregular face multifluid data
164typedef EBAMRData<EBCellFAB> EBAMRCellData; // Cell-centered single-phase data
165typedef EBAMRData<EBFluxFAB> EBAMRFluxData; // Face-centered data in all coordinate direction
166typedef EBAMRData<EBFaceFAB> EBAMRFaceData; // Face-centered in a single coordinate direction
167typedef EBAMRData<BaseIVFAB<Real>> EBAMRIVData; // Data on irregular data centroids
168typedef EBAMRData<DomainFluxIFFAB> EBAMRIFData; // Data on domain phases
169typedef EBAMRData<BaseFab<bool>> EBAMRBool; // For holding bool at every cell
170typedef EBAMRData<FArrayBox> EBAMRFAB; // Just regular grid data.
172
173#include <CD_NamespaceFooter.H>
174
175#endif
Class for holding data across EBAMR hierarchies.
EBAMRData() noexcept
Default constructor. Does nothing.
Definition CD_EBAMRDataImplem.H:24
void reserve() noexcept
Reserve data.
Definition CD_EBAMRDataImplem.H:85
Vector< RefCountedPtr< LevelData< T > > > & getData() noexcept
Get underlying data. Returns m_data.
Definition CD_EBAMRDataImplem.H:115
void exchange() noexcept
Exchange on all AMR levels.
Definition CD_EBAMRDataImplem.H:106
virtual ~EBAMRData() noexcept
Destructor. Does nothing.
Definition CD_EBAMRDataImplem.H:39
int size() const noexcept
Get size of m_data.
Definition CD_EBAMRDataImplem.H:67
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:129
bool isReserved() const noexcept
Check if data is reserved.
Definition CD_EBAMRDataImplem.H:99
void clear() noexcept
Delete all data.
Definition CD_EBAMRDataImplem.H:74
void resize(int a_size) noexcept
Resize m_data to having size a_size.
Definition CD_EBAMRDataImplem.H:60
void setRealm(const std::string &a_realm) noexcept
Sets the realm for this object.
Definition CD_EBAMRDataImplem.H:143
void release() noexcept
Release data.
Definition CD_EBAMRDataImplem.H:92
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:136
RefCountedPtr< LevelData< T > > & operator[](int a_level) noexcept
Indexing operators. Returns m_data[a_level].
Definition CD_EBAMRDataImplem.H:46
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
std::string m_realm
Realm where this solver lives.
Definition CD_TracerParticleSolver.H:352