Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_IArrayBox.H
Go to the documentation of this file.
1
2#ifndef BL_IFARRAYBOX_H
3#define BL_IFARRAYBOX_H
4#include <AMReX_Config.H>
5
6#include <AMReX_Box.H>
7#include <AMReX_BaseFab.H>
8#include <AMReX_SPACE.H>
9
10#include <iosfwd>
11
12namespace amrex {
13
14class IArrayBox;
15class IntDescriptor;
16
17class IFABio
18{
19public:
20 static void write_header (std::ostream& os, const IArrayBox& fab, int nvar) ;
21 static void read (std::istream& is, IArrayBox& fab, IntDescriptor const& data_descriptor) ;
22};
23
47 :
48 public BaseFab<int>
49{
50public:
51 friend class IFABio;
52
54 IArrayBox () noexcept = default;
55
56 explicit IArrayBox (Arena* ar) noexcept;
57
58 IArrayBox (const Box& b, int ncomp, Arena* ar);
59
65 explicit IArrayBox (const Box& b,
66 int ncomp=1,
67 bool alloc=true,
68 bool shared=false,
69 Arena* ar = nullptr);
70
71 IArrayBox (const IArrayBox& rhs, MakeType make_type, int scomp, int ncomp);
72
73 explicit IArrayBox (Array4<int> const& a) noexcept : BaseFab<int>(a) {}
74
75 explicit IArrayBox (Array4<int> const& a, IndexType t) noexcept : BaseFab<int>(a,t) {}
76
77 explicit IArrayBox (Array4<int const> const& a) noexcept : BaseFab<int>(a) {}
78
79 explicit IArrayBox (Array4<int const> const& a, IndexType t) noexcept : BaseFab<int>(a,t) {}
80
82 ~IArrayBox () noexcept override = default;
83
84 IArrayBox (IArrayBox&& rhs) noexcept = default;
85 IArrayBox& operator= (IArrayBox&&) = default;
86
87 IArrayBox (const IArrayBox&) = delete;
88 IArrayBox& operator= (const IArrayBox&) = delete;
89
91 template <RunOn run_on>
92 IArrayBox& operator= (int v) noexcept;
93
95 void resize (const Box& b, int N = 1, Arena* ar = nullptr);
96
97 void readFrom (std::istream& is);
98
99 static void Initialize ();
100 static void Finalize ();
101
102 static std::unique_ptr<IntDescriptor> getDataDescriptor ();
103
104 static IFABio const& getFABio ();
105
106 static std::string getClassName ();
107
108private:
109
110 static bool do_initval;
111 static std::unique_ptr<IFABio> ifabio;
112
113};
114
115template <RunOn run_on>
117IArrayBox::operator= (int v) noexcept
118{
119 BaseFab<int>::operator=<run_on>(v);
120 return *this;
121}
122
123}
124
125#endif /*BL_IFARRAYBOX_H*/
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:124
A FortranArrayBox(FAB)-like object.
Definition AMReX_BaseFab.H:189
A Fortran Array of ints.
Definition AMReX_IArrayBox.H:49
IArrayBox() noexcept=default
Construct an invalid FAB with no memory.
static std::unique_ptr< IntDescriptor > getDataDescriptor()
Definition AMReX_IArrayBox.cpp:98
void readFrom(std::istream &is)
Definition AMReX_IArrayBox.cpp:116
static std::string getClassName()
Definition AMReX_IArrayBox.cpp:104
IArrayBox(Array4< int const > const &a) noexcept
Definition AMReX_IArrayBox.H:77
~IArrayBox() noexcept override=default
The destructor.
static void Finalize()
Definition AMReX_IArrayBox.cpp:42
void resize(const Box &b, int N=1, Arena *ar=nullptr)
For debugging purposes we hide BaseFab version and do some extra work.
Definition AMReX_IArrayBox.cpp:80
IArrayBox(Array4< int const > const &a, IndexType t) noexcept
Definition AMReX_IArrayBox.H:79
IArrayBox(Array4< int > const &a, IndexType t) noexcept
Definition AMReX_IArrayBox.H:75
static IFABio const & getFABio()
Definition AMReX_IArrayBox.cpp:110
static void Initialize()
Definition AMReX_IArrayBox.cpp:31
Definition AMReX_IArrayBox.H:18
static void write_header(std::ostream &os, const IArrayBox &fab, int nvar)
Definition AMReX_IArrayBox.cpp:154
static void read(std::istream &is, IArrayBox &fab, IntDescriptor const &data_descriptor)
Definition AMReX_IArrayBox.cpp:162
A Descriptor of the Long Integer type.
Definition AMReX_FabConv.H:29
Definition AMReX_Amr.cpp:49
MakeType
Definition AMReX_MakeType.H:7
RunOn
Definition AMReX_GpuControl.H:69
A multidimensional array accessor.
Definition AMReX_Array4.H:224
void * alloc(std::size_t sz) const noexcept
Definition AMReX_DataAllocator.H:16