Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_PlotFileUtil.H
Go to the documentation of this file.
1#ifndef AMREX_PLOTFILEUTIL_H_
2#define AMREX_PLOTFILEUTIL_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_Array.H>
6#include <AMReX_Geometry.H>
7#include <AMReX_MultiFab.H>
9#include <AMReX_Vector.H>
10
11#ifdef AMREX_USE_HDF5
13#endif
14
15#include <ostream>
16#include <string>
17#include <memory>
18
19namespace amrex
20{
22 std::string LevelPath (int level, const std::string &levelPrefix = "Level_");
23
25 std::string MultiFabHeaderPath (int level,
26 const std::string &levelPrefix = "Level_",
27 const std::string &mfPrefix = "Cell");
28
30 std::string LevelFullPath (int level,
31 const std::string &plotfilename,
32 const std::string &levelPrefix = "Level_");
33
35 std::string MultiFabFileFullPrefix (int level,
36 const std::string &plotfilename,
37 const std::string &levelPrefix = "Level_",
38 const std::string &mfPrefix = "Cell");
39
40
54 void PreBuildDirectorHierarchy (const std::string &dirName,
55 const std::string &subDirPrefix,
56 int nSubDirs,
57 bool callBarrier);
58
63 void WriteGenericPlotfileHeader (std::ostream &HeaderFile,
64 int nlevels,
65 const Vector<BoxArray> &bArray,
66 const Vector<std::string> &varnames,
67 const Vector<Geometry> &geom,
68 Real time,
69 const Vector<int> &level_steps,
70 const Vector<IntVect> &ref_ratio,
71 const std::string &versionName = "HyperCLaw-V1.1",
72 const std::string &levelPrefix = "Level_",
73 const std::string &mfPrefix = "Cell");
74
75 void WriteSingleLevelPlotfile (const std::string &plotfilename,
76 const MultiFab &mf,
77 const Vector<std::string> &varnames,
78 const Geometry &geom,
79 Real t,
80 int level_step,
81 const std::string &versionName = "HyperCLaw-V1.1",
82 const std::string &levelPrefix = "Level_",
83 const std::string &mfPrefix = "Cell",
84 const Vector<std::string>& extra_dirs = Vector<std::string>());
85
87 void WriteMultiLevelPlotfile (const std::string &plotfilename,
88 int nlevels,
89 const Vector<const MultiFab*> &mf,
90 const Vector<std::string> &varnames,
91 const Vector<Geometry> &geom,
92 Real time,
93 const Vector<int> &level_steps,
94 const Vector<IntVect> &ref_ratio,
95 const std::string &versionName = "HyperCLaw-V1.1",
96 const std::string &levelPrefix = "Level_",
97 const std::string &mfPrefix = "Cell",
98 const Vector<std::string>& extra_dirs = Vector<std::string>());
99
113 void WriteMLMF (const std::string &plotfilename,
114 const Vector<const MultiFab*>& mf,
115 const Vector<Geometry> &geom);
116
117 void WriteMultiLevelPlotfileHeaders (const std::string& plotfilename, int nlevels,
118 const Vector<const MultiFab*>& mf,
119 const Vector<std::string>& varnames,
120 const Vector<Geometry>& geom, Real time, const Vector<int>& level_steps,
121 const Vector<IntVect>& ref_ratio,
122 const std::string &versionName = "HyperCLaw-V1.1",
123 const std::string &levelPrefix = "Level_",
124 const std::string &mfPrefix = "Cell",
125 const Vector<std::string>& extra_dirs = Vector<std::string>());
126
127
128#ifdef AMREX_USE_EB
129 void EB_WriteSingleLevelPlotfile (const std::string &plotfilename,
130 const MultiFab &mf,
131 const Vector<std::string> &varnames,
132 const Geometry &geom,
133 Real t,
134 int level_step,
135 const std::string &versionName = "HyperCLaw-V1.1",
136 const std::string &levelPrefix = "Level_",
137 const std::string &mfPrefix = "Cell",
138 const Vector<std::string>& extra_dirs = Vector<std::string>());
139
140 void EB_WriteMultiLevelPlotfile (const std::string &plotfilename,
141 int nlevels,
142 const Vector<const MultiFab*> &mf,
143 const Vector<std::string> &varnames,
144 const Vector<Geometry> &geom,
145 Real time,
146 const Vector<int> &level_steps,
147 const Vector<IntVect> &ref_ratio,
148 const std::string &versionName = "HyperCLaw-V1.1",
149 const std::string &levelPrefix = "Level_",
150 const std::string &mfPrefix = "Cell",
151 const Vector<std::string>& extra_dirs = Vector<std::string>());
152
153#endif
154
158 {
159 public:
160 PlotFileData (std::string const& plotfile_name) : m_impl(new PlotFileDataImpl(plotfile_name)) {}
161
162 [[nodiscard]] int spaceDim () const noexcept { return m_impl->spaceDim(); }
163
164 [[nodiscard]] Real time () const noexcept { return m_impl->time(); }
165
166 [[nodiscard]] int finestLevel () const noexcept { return m_impl->finestLevel(); }
167
168 [[nodiscard]] int refRatio (int level) const noexcept { return m_impl->refRatio(level); }
169
170 [[nodiscard]] int levelStep (int level) const noexcept { return m_impl->levelStep(level); }
171
172 [[nodiscard]] const BoxArray& boxArray (int level) const noexcept { return m_impl->boxArray(level); }
173
174 [[nodiscard]] const DistributionMapping& DistributionMap (int level) const noexcept { return m_impl->DistributionMap(level); }
175
176 void syncDistributionMap (PlotFileData const& src) noexcept { m_impl->syncDistributionMap(*src.m_impl); }
177
178 void syncDistributionMap (int level, PlotFileData const& src) noexcept { m_impl->syncDistributionMap(level, *src.m_impl); }
179
180 [[nodiscard]] int coordSys () const noexcept { return m_impl->coordSys(); }
181
182 [[nodiscard]] Box probDomain (int level) const noexcept { return m_impl->probDomain(level); }
183
184 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probSize () const noexcept { return m_impl->probSize(); }
185 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probLo () const noexcept { return m_impl->probLo(); }
186 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probHi () const noexcept { return m_impl->probHi(); }
187 [[nodiscard]] Array<Real,AMREX_SPACEDIM> cellSize (int level) const noexcept { return m_impl->cellSize(level); }
188
189 [[nodiscard]] const Vector<std::string>& varNames () const noexcept { return m_impl->varNames(); }
190
191 [[nodiscard]] int nComp () const noexcept { return m_impl->nComp(); }
192 [[nodiscard]] IntVect nGrowVect (int level) const noexcept { return m_impl->nGrowVect(level); }
193
194 MultiFab get (int level) noexcept { return m_impl->get(level); }
195 MultiFab get (int level, std::string const& varname) noexcept { return m_impl->get(level, varname); }
196
197 private:
198 std::unique_ptr<PlotFileDataImpl> m_impl;
199 };
200}
201
202#endif
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:567
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
const FAB & get(const MFIter &mfi) const noexcept
Return a constant reference to the FAB associated with mfi.
Definition AMReX_FabArray.H:512
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Definition AMReX_PlotFileDataImpl.H:12
Definition AMReX_PlotFileUtil.H:158
const Vector< std::string > & varNames() const noexcept
Definition AMReX_PlotFileUtil.H:189
const DistributionMapping & DistributionMap(int level) const noexcept
Definition AMReX_PlotFileUtil.H:174
Array< Real, 3 > cellSize(int level) const noexcept
Definition AMReX_PlotFileUtil.H:187
void syncDistributionMap(int level, PlotFileData const &src) noexcept
Definition AMReX_PlotFileUtil.H:178
std::unique_ptr< PlotFileDataImpl > m_impl
Definition AMReX_PlotFileUtil.H:198
int coordSys() const noexcept
Definition AMReX_PlotFileUtil.H:180
MultiFab get(int level) noexcept
Definition AMReX_PlotFileUtil.H:194
const BoxArray & boxArray(int level) const noexcept
Definition AMReX_PlotFileUtil.H:172
Array< Real, 3 > probLo() const noexcept
Definition AMReX_PlotFileUtil.H:185
Box probDomain(int level) const noexcept
Definition AMReX_PlotFileUtil.H:182
PlotFileData(std::string const &plotfile_name)
Definition AMReX_PlotFileUtil.H:160
IntVect nGrowVect(int level) const noexcept
Definition AMReX_PlotFileUtil.H:192
void syncDistributionMap(PlotFileData const &src) noexcept
Definition AMReX_PlotFileUtil.H:176
Array< Real, 3 > probHi() const noexcept
Definition AMReX_PlotFileUtil.H:186
MultiFab get(int level, std::string const &varname) noexcept
Definition AMReX_PlotFileUtil.H:195
Array< Real, 3 > probSize() const noexcept
Definition AMReX_PlotFileUtil.H:184
int finestLevel() const noexcept
Definition AMReX_PlotFileUtil.H:166
int spaceDim() const noexcept
Definition AMReX_PlotFileUtil.H:162
int refRatio(int level) const noexcept
Definition AMReX_PlotFileUtil.H:168
Real time() const noexcept
Definition AMReX_PlotFileUtil.H:164
int nComp() const noexcept
Definition AMReX_PlotFileUtil.H:191
int levelStep(int level) const noexcept
Definition AMReX_PlotFileUtil.H:170
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
void WriteMultiLevelPlotfile(const std::string &plotfilename, int nlevels, const Vector< const MultiFab * > &mf, const Vector< std::string > &varnames, const Vector< Geometry > &geom, Real time, const Vector< int > &level_steps, const Vector< IntVect > &ref_ratio, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix, const Vector< std::string > &extra_dirs)
Definition AMReX_PlotFileUtil.cpp:160
std::array< T, N > Array
Definition AMReX_Array.H:25
Definition AMReX_Amr.cpp:49
std::string LevelFullPath(int level, const std::string &plotfilename, const std::string &levelPrefix)
return the full path of the level directory, e.g., plt00005/Level_5
Definition AMReX_PlotFileUtil.cpp:30
void EB_WriteSingleLevelPlotfile(const std::string &plotfilename, const MultiFab &mf, const Vector< std::string > &varnames, const Geometry &geom, Real time, int level_step, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix, const Vector< std::string > &extra_dirs)
Definition AMReX_PlotFileUtil.cpp:365
std::string LevelPath(int level, const std::string &levelPrefix)
return the name of the level directory, e.g., Level_5
Definition AMReX_PlotFileUtil.cpp:18
std::string MultiFabFileFullPrefix(int level, const std::string &plotfilename, const std::string &levelPrefix, const std::string &mfPrefix)
return the full path multifab prefix, e.g., plt00005/Level_5/Cell
Definition AMReX_PlotFileUtil.cpp:42
void WriteMLMF(const std::string &plotfilename, const Vector< const MultiFab * > &mf, const Vector< Geometry > &geom)
write a plotfile to disk given: -plotfile name -vector of MultiFabs -vector of Geometrys variable nam...
Definition AMReX_PlotFileUtil.cpp:253
void PreBuildDirectorHierarchy(const std::string &dirName, const std::string &, int nSubDirs, bool callBarrier)
prebuild a hierarchy of directories dirName is built first. if dirName exists, it is renamed....
Definition AMReX_PlotFileUtil.cpp:57
void WriteSingleLevelPlotfile(const std::string &plotfilename, const MultiFab &mf, const Vector< std::string > &varnames, const Geometry &geom, Real time, int level_step, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix, const Vector< std::string > &extra_dirs)
Definition AMReX_PlotFileUtil.cpp:345
std::string MultiFabHeaderPath(int level, const std::string &levelPrefix, const std::string &mfPrefix)
return the path of the multifab to write to the header, e.g., Level_5/Cell
Definition AMReX_PlotFileUtil.cpp:23
void WriteMultiLevelPlotfileHeaders(const std::string &plotfilename, int nlevels, const Vector< const MultiFab * > &mf, const Vector< std::string > &varnames, const Vector< Geometry > &geom, Real time, const Vector< int > &level_steps, const Vector< IntVect > &ref_ratio, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix, const Vector< std::string > &extra_dirs)
Definition AMReX_PlotFileUtil.cpp:289
void EB_WriteMultiLevelPlotfile(const std::string &plotfilename, int nlevels, const Vector< const MultiFab * > &mf, const Vector< std::string > &varnames, const Vector< Geometry > &geom, Real time, const Vector< int > &level_steps, const Vector< IntVect > &ref_ratio, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix, const Vector< std::string > &extra_dirs)
Definition AMReX_PlotFileUtil.cpp:383
void WriteGenericPlotfileHeader(std::ostream &HeaderFile, int nlevels, const Vector< BoxArray > &bArray, const Vector< std::string > &varnames, const Vector< Geometry > &geom, Real time, const Vector< int > &level_steps, const Vector< IntVect > &ref_ratio, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix)
Definition AMReX_PlotFileUtil.cpp:74