Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_FabConv.H
Go to the documentation of this file.
1
2#ifndef BL_FABCONV_H
3#define BL_FABCONV_H
4#include <AMReX_Config.H>
5
11#include <AMReX_Array.H>
12#include <AMReX_Vector.H>
13#include <AMReX_BLassert.H>
14#include <AMReX_REAL.H>
15#include <AMReX_INT.H>
16
17#include <iosfwd>
18
19namespace amrex {
20
34{
35
36public:
50 IntDescriptor () = default;
59 Ordering ordering = NormalOrder);
61 [[nodiscard]] Ordering order () const;
63 [[nodiscard]] int numBytes () const;
65 bool operator== (const IntDescriptor& id) const;
67 bool operator!= (const IntDescriptor& id) const;
68
69private:
70 friend std::istream& operator>> (std::istream& is, IntDescriptor& id);
71 Long numbytes;
72 Ordering ord;
73};
74
78std::ostream& operator<< (std::ostream& os, const IntDescriptor& id);
82std::istream& operator>> (std::istream& is, IntDescriptor& id);
83
116{
117public:
124 RealDescriptor () = default;
130 RealDescriptor (const Long* fr_, const int* ord_, int ordl_);
132 [[nodiscard]] const Long* format () const&;
133 const Long* format () && = delete;
134
136 [[nodiscard]] const Vector<Long>& formatarray () const&;
137 const Vector<Long>& formatarray () && = delete;
138
140 [[nodiscard]] const int* order () const&;
141 const int* order () && = delete;
142
144 [[nodiscard]] const Vector<int>& orderarray () const&;
145 const Vector<int>& orderarray () && = delete;
146
148 [[nodiscard]] int numBytes () const;
149
151 bool operator== (const RealDescriptor& rd) const;
152
154 bool operator != (const RealDescriptor& rd) const;
155
157 static void SetFixDenormals ();
158
160 static void SetReadBufferSize (int rbs);
161 static void SetWriteBufferSize (int wbs);
162
167 [[nodiscard]] RealDescriptor* clone () const;
168
175 static RealDescriptor* newRealDescriptor (int fmt, int prec, const char* systype,
176 int ordering);
185 static void convertToNativeFormat (Real* out,
186 Long nitems,
187 void* in,
188 const RealDescriptor& id);
189
198 static void convertToNativeFormat (Real* out,
199 Long nitems,
200 std::istream& is,
201 const RealDescriptor& id);
202
211 static void convertFromNativeFormat (std::ostream& os,
212 Long nitems,
213 const Real* in,
214 const RealDescriptor& od);
223 static void convertFromNativeFormat (void* out,
224 Long nitems,
225 const void* in,
226 const RealDescriptor& od);
227
236 static void convertFromNativeFloatFormat (std::ostream& os,
237 Long nitems,
238 const float* in,
239 const RealDescriptor& od);
240
249 static void convertFromNativeDoubleFormat (std::ostream& os,
250 Long nitems,
251 const double* in,
252 const RealDescriptor& od);
253
262 static void convertToNativeFloatFormat (float* out,
263 Long nitems,
264 std::istream& is,
265 const RealDescriptor& id);
266
275 static void convertToNativeDoubleFormat (double* out,
276 Long nitems,
277 std::istream& is,
278 const RealDescriptor& id);
279
280private:
281
282 Vector<Long> fr;
283 Vector<int> ord;
284 static bool bAlwaysFixDenormals;
285 static int writeBufferSize;
286 static int readBufferSize;
287};
288
292std::ostream& operator<< (std::ostream& os, const amrex::RealDescriptor& rd);
296std::istream& operator>> (std::istream& is, amrex::RealDescriptor& rd);
297
298}
299
300#endif /*BL_FABCONV_H*/
Fixed-size array types for use on GPU and CPU.
Assertion macros used across AMReX for runtime consistency checks.
A Descriptor of the Long Integer type.
Definition AMReX_FabConv.H:34
Ordering
An enumeration describing the two orderings that we currently support: NormalOrder and ReverseOrder....
Definition AMReX_FabConv.H:43
@ ReverseOrder
Definition AMReX_FabConv.H:43
@ NormalOrder
Definition AMReX_FabConv.H:43
bool operator==(const IntDescriptor &id) const
The equality operator.
Definition AMReX_FabConv.cpp:38
bool operator!=(const IntDescriptor &id) const
The inequality operator.
Definition AMReX_FabConv.cpp:44
IntDescriptor()=default
The default constructor. Does not build a proper IntDescriptor. This should only be used when you nee...
friend std::istream & operator>>(std::istream &is, IntDescriptor &id)
Definition AMReX_FabConv.cpp:66
int numBytes() const
Returns the number of bytes per integer.
Definition AMReX_FabConv.cpp:32
Ordering order() const
Returns the stored byte ordering policy.
Definition AMReX_FabConv.cpp:26
A Descriptor of the Real Type.
Definition AMReX_FabConv.H:116
static void SetReadBufferSize(int rbs)
Set read and write buffer sizes.
Definition AMReX_FabConv.cpp:150
static void convertToNativeFormat(Real *out, Long nitems, void *in, const RealDescriptor &id)
Convert serialized bytes in descriptor format to native Real values.
Definition AMReX_FabConv.cpp:972
const Vector< int > & orderarray() const &
Returns const Vector<int> reference to the order array.
Definition AMReX_FabConv.cpp:118
static void convertFromNativeDoubleFormat(std::ostream &os, Long nitems, const double *in, const RealDescriptor &od)
Serialize double-precision values to descriptor format and write them to os.
Definition AMReX_FabConv.cpp:1145
static void convertFromNativeFormat(std::ostream &os, Long nitems, const Real *in, const RealDescriptor &od)
Serialize native Reals to descriptor format and write them to an ostream.
Definition AMReX_FabConv.cpp:1061
RealDescriptor()=default
The default constructor. Does not build a proper RealDescriptor. This should only be used when you ne...
static void convertFromNativeFloatFormat(std::ostream &os, Long nitems, const float *in, const RealDescriptor &od)
Serialize single-precision values to descriptor format and write them to os.
Definition AMReX_FabConv.cpp:1103
static void convertToNativeDoubleFormat(double *out, Long nitems, std::istream &is, const RealDescriptor &id)
Read descriptor-formatted bytes and convert them to native doubles.
Definition AMReX_FabConv.cpp:1228
static void SetWriteBufferSize(int wbs)
Definition AMReX_FabConv.cpp:157
static RealDescriptor * newRealDescriptor(int fmt, int prec, const char *systype, int ordering)
Returns a RealDescriptor on the heap detailing requested floating-point type. Here format,...
Definition AMReX_FabConv.cpp:218
const Vector< Long > & formatarray() const &
Returns const Vector<Long> reference to the format array.
Definition AMReX_FabConv.cpp:104
const int * order() const &
Returns the order array as a const int*.
Definition AMReX_FabConv.cpp:111
static void SetFixDenormals()
Set to always fix denormals when converting to native format.
Definition AMReX_FabConv.cpp:144
const Long * format() const &
Returns the format array as a const Long*.
Definition AMReX_FabConv.cpp:97
RealDescriptor * clone() const
Returns a copy of this RealDescriptor on the heap. The user is responsible for deletion.
Definition AMReX_FabConv.cpp:164
static void convertToNativeFloatFormat(float *out, Long nitems, std::istream &is, const RealDescriptor &id)
Read descriptor-formatted bytes and convert them to native floats.
Definition AMReX_FabConv.cpp:1186
int numBytes() const
Returns the number of bytes in the Real.
Definition AMReX_FabConv.cpp:125
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:29
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
amrex_long Long
Definition AMReX_INT.H:30
Definition AMReX_Amr.cpp:50
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Stream helper; forwards to the friend declared inside AmrMesh.
Definition AMReX_AmrMesh.cpp:1306
std::istream & operator>>(std::istream &is, BoxND< dim > &bx)
Read a BoxND from is.
Definition AMReX_Box.H:1965