14#include "../global/global.h"
15#include "../grid/grid3D.h"
16#include "../io/AttrRecorderInterface.h"
17#include "../io/FieldWriter.h"
18#include "../io/FnameTemplate.h"
19#include "../io/WriterManager.h"
20#include "../utils/error_handling.h"
28void Print_Stats(
Grid3D& G);
40int chprintf(
const char* __restrict sdata, ...);
53 std::stringstream output;
54 output << std::setprecision(std::numeric_limits<T>::max_digits10);
61void Write_Message_To_Log_File(
const char* message);
63void Write_Debug(Real* Value,
const char* fname,
int nValues,
int iProc);
69void Ensure_Dir_Exists(std::string dir_path);
82 std::unique_ptr<hsize_t> dim_;
86 H5Space1D() : dim_(nullptr), id_{H5I_INVALID_HID} {}
87 H5Space1D(hsize_t dim) : H5Space1D() { this->ensure_dim(dim); }
88 H5Space1D(H5Space1D&& other) noexcept : H5Space1D() { *
this = std::move(other); }
91 H5Space1D& operator=(H5Space1D&& other)
noexcept;
95 if (this->id_ != H5I_INVALID_HID) H5Sclose(this->id_);
99 hid_t id()
const {
return this->id_; }
102 H5Space1D& ensure_dim(hsize_t dim);
112 H5Space1D cached_dataspace_;
114 hid_t make_attr_1d_(
const char* name, hid_t type_id, hsize_t n_elem);
117 H5AttrRecorder() =
delete;
119 explicit H5AttrRecorder(hid_t file_id)
121 this->file_id_ = file_id;
122 this->stringType_ = H5Tcopy(H5T_C_S1);
123 CHOLLA_ASSERT(H5Tset_size(this->stringType_, H5T_VARIABLE) >= 0,
"error creating the string type");
126 ~H5AttrRecorder()
override { H5Tclose(this->stringType_); }
128 void record_arr(
const char* name,
const double* arr,
int length)
override;
129 void record_arr(
const char* name,
const int* arr,
int length)
override;
130 void record_arr(
const char* name,
const long* arr,
int length)
override;
131 void record(
const char* name,
const char* val)
override;
134 void record(
const char* name,
double val)
override { this->
record_arr(name, &val, 1); }
135 void record(
const char* name,
int val)
override { this->
record_arr(name, &val, 1); }
136 void record(
const char* name,
long val)
override { this->
record_arr(name, &val, 1); }
139herr_t Read_HDF5_Dataset(hid_t file_id,
double* dataset_buffer,
const char* name);
140herr_t Read_HDF5_Dataset(hid_t file_id,
float* dataset_buffer,
const char* name);
142herr_t Write_HDF5_Dataset(hid_t file_id, hid_t dataspace_id,
double* dataset_buffer,
const char* name);
143herr_t Write_HDF5_Dataset(hid_t file_id, hid_t dataspace_id,
float* dataset_buffer,
const char* name);
146void Fill_Grid_From_HDF5_Buffer(
int nx,
int ny,
int nz,
int nx_real,
int ny_real,
int nz_real,
int n_ghost,
147 Real* hdf5_buffer, Real* grid_buffer);
150void Write_Grid_HDF5_Field_CPU(
Header H, hid_t file_id, Real* dataset_buffer, Real* grid_buffer,
const char* name);
153void Write_Grid_HDF5_Field_GPU(
Header H, hid_t file_id, Real* dataset_buffer, Real* device_hdf5_buffer,
154 Real* device_grid_buffer,
const char* name);
159void Write_HDF5_Field_3D(
int nx,
int ny,
int nx_real,
int ny_real,
int nz_real,
int n_ghost, hid_t file_id,
160 float* buffer,
float* device_buffer, Real* source,
const char* name,
int mhd_direction = -1);
161void Write_HDF5_Field_3D(
int nx,
int ny,
int nx_real,
int ny_real,
int nz_real,
int n_ghost, hid_t file_id,
162 double* buffer,
double* device_buffer, Real* source,
const char* name,
int mhd_direction = -1);
Definition AttrRecorderInterface.h:36
virtual void record(const char *name, const char *val)=0
virtual void record_arr(const char *name, const double *arr, int length)=0
Class to create a the gravity object.
Definition grid3D.h:229
Manages each configured file-writer.
Definition WriterManager.h:45
void Write_Data(Grid3D &G, struct Parameters P, int nfile, const io::WriterManager &write_manager)
Definition io.cpp:82
std::string to_string_exact(T const &input)
Convert a floating point number to a string such that it can be exactly deserialized back from a stri...
Definition io.h:51
bool Is_Root_Proc()
Definition io.h:25