diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-01-15 19:22:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-01-15 19:22:00 +0000 |
commit | 8d4e2e1413bfa77ce220f42b442eefbfc2f2776f (patch) | |
tree | 3b53606f7d99a79fe702409c3ef7bae12b9b86a2 /CarpetDev/CarpetIOF5/src/meta_data_region.cc | |
parent | 0efeb005c489d947a55d2318c172cb3066dc7c85 (diff) |
CarpetIOF5: Write a meta-file containing an inventory
In addition to one data file per processor, also write out one
meta-data file containing an inventory and external links to the other
files.
Compiles. Untested.
darcs-hash:20080115192202-dae7b-e709063fdbe7d545389cdcb40846a10451e9f4c1.gz
Diffstat (limited to 'CarpetDev/CarpetIOF5/src/meta_data_region.cc')
-rw-r--r-- | CarpetDev/CarpetIOF5/src/meta_data_region.cc | 90 |
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 |