From 60ce20a3b52a5366ec7f4b1bc1eb31d3b06a7afe Mon Sep 17 00:00:00 2001 From: Piotr Dziekan Date: Fri, 10 Feb 2023 18:04:24 +0100 Subject: [PATCH 1/2] hdf5 halo: store in kji order --- libmpdata++/output/hdf5.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libmpdata++/output/hdf5.hpp b/libmpdata++/output/hdf5.hpp index 2d6bf8eb..70877722 100644 --- a/libmpdata++/output/hdf5.hpp +++ b/libmpdata++/output/hdf5.hpp @@ -411,7 +411,11 @@ namespace libmpdataxx space.selectHyperslab(H5S_SELECT_SET, shape_h.data(), offst_h.data()); sspace_mem_h.selectHyperslab(H5S_SELECT_SET, shape_h.data(), offst_mem_h.data()); - aux.write(arr.data(), flttype_solver, sspace_mem_h, space, dxpl_id); + // convert from kij to kji storage order + typename solver_t::arr_t kji_arr(shape_h); + kji_arr = arr; + + aux.write(kji_arr.data(), flttype_solver, sspace_mem_h, space, dxpl_id); } void record_scalar_hlpr(const std::string &name, const std::string &group_name, typename solver_t::real_t data, H5::H5File hdf) From 7e8f38edaaa73c458fdbaeb8269eea868b6c4ca5 Mon Sep 17 00:00:00 2001 From: Piotr Dziekan Date: Fri, 10 Feb 2023 18:17:28 +0100 Subject: [PATCH 2/2] hdf5 halo: store in kji order only in 3d --- libmpdata++/output/hdf5.hpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libmpdata++/output/hdf5.hpp b/libmpdata++/output/hdf5.hpp index 70877722..663e6b4b 100644 --- a/libmpdata++/output/hdf5.hpp +++ b/libmpdata++/output/hdf5.hpp @@ -411,11 +411,15 @@ namespace libmpdataxx space.selectHyperslab(H5S_SELECT_SET, shape_h.data(), offst_h.data()); sspace_mem_h.selectHyperslab(H5S_SELECT_SET, shape_h.data(), offst_mem_h.data()); - // convert from kij to kji storage order - typename solver_t::arr_t kji_arr(shape_h); - kji_arr = arr; - - aux.write(kji_arr.data(), flttype_solver, sspace_mem_h, space, dxpl_id); + // in 3D convert from kij to kji storage order + if(parent_t::n_dims == 3) + { + typename solver_t::arr_t kji_arr(shape_h); + kji_arr = arr; + aux.write(kji_arr.data(), flttype_solver, sspace_mem_h, space, dxpl_id); + } + else + aux.write(arr.data(), flttype_solver, sspace_mem_h, space, dxpl_id); } void record_scalar_hlpr(const std::string &name, const std::string &group_name, typename solver_t::real_t data, H5::H5File hdf)