// Legendre coefficients som_core::som_core(gf_const_view<legendre> g_l, gf_const_view<legendre> S_l, observable_kind kind, vector<double> const& norms) : mesh(g_l.mesh()), kind(kind), norms(make_default_norms(norms,get_target_shape(g_l)[0])), rhs(input_data_r_t()), error_bars(input_data_r_t()) { if(is_stat_relevant(kind)) check_gf_stat(g_l, observable_statistics(kind)); check_input_gf(g_l,S_l); if(!is_gf_real(g_l) || !is_gf_real(S_l)) fatal_error("Legendre " + observable_name(kind) + " must be real"); gf<legendre, matrix_real_valued> g_l_real = real(g_l), S_l_real = real(S_l); set_input_data(make_const_view(g_l_real), make_const_view(S_l_real)); }
template <typename G> static void invoke(h5::group gr, G const &g) { if (!is_gf_real(g)) h5_write(gr, "data", g.data()); else h5_write(gr, "data", array<double, 3>(real(g.data()))); }