aboutsummaryrefslogtreecommitdiff
path: root/CarpetDev/CarpetIOF5/src/meta_data_region.cc
diff options
context:
space:
mode:
Diffstat (limited to 'CarpetDev/CarpetIOF5/src/meta_data_region.cc')
-rw-r--r--CarpetDev/CarpetIOF5/src/meta_data_region.cc90
1 files changed, 90 insertions, 0 deletions
diff --git a/CarpetDev/CarpetIOF5/src/meta_data_region.cc b/CarpetDev/CarpetIOF5/src/meta_data_region.cc
new file mode 100644
index 000000000..4f32e33a2
--- /dev/null
+++ b/CarpetDev/CarpetIOF5/src/meta_data_region.cc
@@ -0,0 +1,90 @@
+#include <cassert>
+#include <cstdlib>
+#include <sstream>
+#include <string>
+
+#include "cctk.h"
+
+#include "carpet.hh"
+
+#include "data_region.hh"
+#include "meta_data_region.hh"
+#include "utils.hh"
+
+
+
+namespace CarpetIOF5 {
+
+ namespace F5 {
+
+ using std::ostringstream;
+
+
+
+ meta_data_region_t::
+ meta_data_region_t (tensor_component_t & tensor_component,
+ bbox<int, dim> const & region)
+ : m_tensor_component (tensor_component),
+ m_region (region)
+ {
+ assert (not region.empty());
+
+ string const namestr = data_region_t::name_from_region (region);
+ char const * const name = namestr.c_str();
+ assert (name != 0);
+
+ assert (invariant());
+ }
+
+
+
+ meta_data_region_t::
+ ~ meta_data_region_t ()
+ {
+ }
+
+
+
+ tensor_component_t & meta_data_region_t::
+ get_tensor_component ()
+ const
+ {
+ return m_tensor_component;
+ }
+
+
+
+ void meta_data_region_t::
+ write (int const proc)
+ const
+ {
+ string filename;
+ string objectname;
+ get_tensor_component().get_link_destination (filename, objectname);
+
+ string const name = data_region_t::name_from_region (m_region);
+
+ hid_t const hdf5_tensor_component
+ = m_tensor_component.get_hdf5_tensor_component();
+
+ herr_t const herr
+ = H5Lcreate_external(filename.c_str(),
+ objectname.c_str(),
+ hdf5_tensor_component,
+ name.c_str(),
+ H5P_DEFAULT, H5P_DEFAULT);
+ assert (not herr);
+ }
+
+
+
+ bool meta_data_region_t::
+ invariant ()
+ const
+ {
+ return not m_region.empty();
+ }
+
+ } // namespace F5
+
+} // namespace CarpetIOF5