template <bool IsView> static void read(h5::group gr, gf_impl<block_index, Target, Opt, IsView, false> &g) { // does not work : need to read the block name and remake the mesh... g._mesh = gf_mesh<block_index, Opt>(gr.get_all_subgroup_names()); g._data.resize(g._mesh.size()); // if (g._data.size() != g._mesh.size()) TRIQS_RUNTIME_ERROR << "h5 read block gf : number of block mismatch"; for (size_t i = 0; i < g.mesh().size(); ++i) h5_read(gr, g.mesh().domain().names()[i], g._data[i]); // h5_read(gr,"symmetry",g._symmetry); }
template <bool IsView> static void read(h5::group gr, gf_impl<block_index, Target, nothing, void, IsView, false> &g) { auto block_names = h5::h5_read<std::vector<std::string>> (gr, "block_names"); g._mesh = gf_mesh<block_index>(block_names); //auto check_names = gr.get_all_subgroup_names(); // sort both and check ? g._data.resize(g._mesh.size()); for (size_t i = 0; i < g.mesh().size(); ++i) h5_read(gr, g.mesh().domain().names()[i], g._data[i]); }
gf_view<Variable, Target, tail, Evaluator, C> make_gf_view_from_g_and_tail(gf_impl<Variable, Target, no_tail, Evaluator, V, C> const &g, tail_view t) { details::_equal_or_throw(t.shape(), get_target_shape(g)); return {g.mesh(), g.data(), t, g.symmetry(), g.indices(), g.name}; }
gf_view<Variable, Target, no_tail, Evaluator, C> make_gf_view_without_tail(gf_impl<Variable, Target, S, Evaluator, V, C> const &g) { return {g.mesh(), g.data(), {}, g.symmetry(), g.indices(), g.name}; }
gf<imtime, Target, Opt> make_gf_from_inverse_fourier(gf_impl<imfreq, Target, Opt, V, C> const& gw, mesh_kind mk = full_bins) { auto gt = gf<imtime, Target, Opt>{make_mesh_fourier_compatible(gw.mesh(), mk), get_target_shape(gw)}; gt() = inverse_fourier(gw); return gt; }
gf<imfreq, Target, Opt> make_gf_from_fourier(gf_impl<imtime, Target, Opt, V, C> const& gt) { auto gw = gf<imfreq, Target, Opt>{make_mesh_fourier_compatible(gt.mesh()), get_target_shape(gt)}; gw() = fourier(gt); return gw; }
gf_view<retime, Target> make_gf_from_inverse_fourier(gf_impl<refreq, Target, Singularity, Evaluator, V, C> const& gw) { auto gt = gf<retime, Target>{make_mesh_fourier_compatible(gw.mesh()), get_target_shape(gw)}; gt() = inverse_fourier(gw); return gt; }
gf_view<refreq, Target> make_gf_from_fourier(gf_impl<retime, Target, Singularity, Evaluator, V, C> const& gt) { auto gw = gf<refreq, Target>{make_mesh_fourier_compatible(gt.mesh()), get_target_shape(gt)}; gw() = fourier(gt); return gw; }