Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_PlotFileDataImpl.H
Go to the documentation of this file.
1#ifndef AMREX_PLOT_FILE_DATA_IMPL_H_
2#define AMREX_PLOT_FILE_DATA_IMPL_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_MultiFab.H>
6#include <AMReX_VisMF.H>
7#include <string>
8
9namespace amrex {
10
12{
13public:
14 PlotFileDataImpl (std::string const& plotfile_name);
15
16 [[nodiscard]] int spaceDim () const noexcept { return m_spacedim; }
17
18 [[nodiscard]] Real time () const noexcept { return m_time; }
19
20 [[nodiscard]] int finestLevel () const noexcept { return m_finest_level; }
21
22 [[nodiscard]] int refRatio (int level) const { return m_ref_ratio[level]; }
23
24 [[nodiscard]] IntVect refRatioVect (int level) const {
25 if (level >= 0 && level < m_finest_level) {
26 auto flen = probDomain(level+1).length();
27 auto clen = probDomain(level ).length();
28 auto ratio = flen / clen;
29 AMREX_ASSERT(ratio*clen == flen);
30 return ratio;
31 } else {
32 return IntVect(0);
33 }
34 }
35
36 [[nodiscard]] int levelStep (int level) const { return m_level_steps[level]; }
37
38 [[nodiscard]] const BoxArray& boxArray (int level) const { return m_ba[level]; }
39
40 [[nodiscard]] const DistributionMapping& DistributionMap (int level) const { return m_dmap[level]; }
41
42 void syncDistributionMap (PlotFileDataImpl const& src);
43
44 void syncDistributionMap (int level, PlotFileDataImpl const& src);
45
46 [[nodiscard]] int coordSys () const noexcept { return m_coordsys; }
47
48 [[nodiscard]] Box probDomain (int level) const { return m_prob_domain[level]; }
49
50 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probSize () const noexcept { return m_prob_size; }
51 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probLo () const noexcept { return m_prob_lo; }
52 [[nodiscard]] Array<Real,AMREX_SPACEDIM> probHi () const noexcept { return m_prob_hi; }
53 [[nodiscard]] Array<Real,AMREX_SPACEDIM> cellSize (int level) const { return m_cell_size[level]; }
54
55 [[nodiscard]] const Vector<std::string>& varNames () const noexcept { return m_var_names; }
56
57 [[nodiscard]] int nComp () const noexcept { return m_ncomp; }
58 [[nodiscard]] IntVect nGrowVect (int level) const { return m_ngrow[level]; }
59
60 MultiFab get (int level);
61 MultiFab get (int level, std::string const& varname);
62
63private:
64 std::string m_plotfile_name;
65 std::string m_file_version;
66 int m_ncomp;
67 Vector<std::string> m_var_names;
68 int m_spacedim;
69 Real m_time;
70 int m_finest_level, m_nlevels;
71 Array<Real,AMREX_SPACEDIM> m_prob_lo {{AMREX_D_DECL(0.,0.,0.)}};
72 Array<Real,AMREX_SPACEDIM> m_prob_hi {{AMREX_D_DECL(1.,1.,1.)}};
73 Array<Real,AMREX_SPACEDIM> m_prob_size {{AMREX_D_DECL(1.,1.,1.)}};
74 Vector<int> m_ref_ratio;
75 Vector<Box> m_prob_domain;
76 Vector<int> m_level_steps;
77 Vector<Array<Real,AMREX_SPACEDIM> > m_cell_size;
78 int m_coordsys;
79 Vector<std::string> m_mf_name;
80 Vector<std::unique_ptr<VisMF> > m_vismf;
81 Vector<BoxArray> m_ba;
82 Vector<DistributionMapping> m_dmap;
83 Vector<IntVect> m_ngrow;
84};
85
86}
87
88#endif
#define AMREX_ASSERT(EX)
Definition AMReX_BLassert.H:38
#define AMREX_D_DECL(a, b, c)
Definition AMReX_SPACE.H:171
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:568
__host__ __device__ IntVectND< dim > length() const noexcept
Return the length of the BoxND.
Definition AMReX_Box.H:154
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Definition AMReX_PlotFileDataImpl.H:12
int coordSys() const noexcept
Definition AMReX_PlotFileDataImpl.H:46
const BoxArray & boxArray(int level) const
Definition AMReX_PlotFileDataImpl.H:38
Array< Real, 3 > probSize() const noexcept
Definition AMReX_PlotFileDataImpl.H:50
const DistributionMapping & DistributionMap(int level) const
Definition AMReX_PlotFileDataImpl.H:40
Real time() const noexcept
Definition AMReX_PlotFileDataImpl.H:18
MultiFab get(int level)
Definition AMReX_PlotFileDataImpl.cpp:124
void syncDistributionMap(PlotFileDataImpl const &src)
Definition AMReX_PlotFileDataImpl.cpp:107
int finestLevel() const noexcept
Definition AMReX_PlotFileDataImpl.H:20
IntVect refRatioVect(int level) const
Definition AMReX_PlotFileDataImpl.H:24
Array< Real, 3 > probHi() const noexcept
Definition AMReX_PlotFileDataImpl.H:52
int spaceDim() const noexcept
Definition AMReX_PlotFileDataImpl.H:16
Array< Real, 3 > probLo() const noexcept
Definition AMReX_PlotFileDataImpl.H:51
int refRatio(int level) const
Definition AMReX_PlotFileDataImpl.H:22
Array< Real, 3 > cellSize(int level) const
Definition AMReX_PlotFileDataImpl.H:53
const Vector< std::string > & varNames() const noexcept
Definition AMReX_PlotFileDataImpl.H:55
int nComp() const noexcept
Definition AMReX_PlotFileDataImpl.H:57
IntVect nGrowVect(int level) const
Definition AMReX_PlotFileDataImpl.H:58
int levelStep(int level) const
Definition AMReX_PlotFileDataImpl.H:36
Box probDomain(int level) const
Definition AMReX_PlotFileDataImpl.H:48
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
std::array< T, N > Array
Definition AMReX_Array.H:26
Definition AMReX_Amr.cpp:49
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:33