From 9fb8b76ac280ad3e4bc88915ff70ab41a4482175 Mon Sep 17 00:00:00 2001 From: Junya Otsuki Date: Tue, 8 May 2018 02:33:42 +0900 Subject: [PATCH] Change the name convention for G2 --- c++/g2_parameters.hpp | 18 +++-- c++/pomerol_ed.cpp | 30 ++++++-- c++/pomerol_ed.hpp | 13 ++-- example/2band.atom.py | 2 +- example/slater.py | 2 +- python/pomerol2triqs_converters.hxx | 105 ++++++++++++--------------- python/pomerol2triqs_desc.py | 4 +- test/python/anderson_g2_matsubara.py | 12 +-- test/python/wick.py | 12 +-- 9 files changed, 105 insertions(+), 93 deletions(-) diff --git a/c++/g2_parameters.hpp b/c++/g2_parameters.hpp index d911df2..a8a9984 100644 --- a/c++/g2_parameters.hpp +++ b/c++/g2_parameters.hpp @@ -3,6 +3,7 @@ #include using triqs::hilbert_space::gf_struct_t; using indices_t = triqs::hilbert_space::fundamental_operator_set::indices_t; +using four_indices_t = std::tuple; using three_freqs_t = std::vector< std::tuple >; namespace pomerol2triqs { @@ -12,7 +13,7 @@ namespace pomerol2triqs { // using g2_blocks_t = std::set>; - struct g2_iw_inu_inup_params_t { + struct g2_iw_freq_box_params_t { /// Block structure of GF gf_struct_t gf_struct; @@ -29,11 +30,11 @@ namespace pomerol2triqs { /// indices of operators in TRIQS convention: (block_name, inner_index) indices_t index1, index2, index3, index4; - // g2_iw_inu_inup_params_t() {} - // g2_iw_inu_inup_params_t(gf_struct_t const &gf_struct, double beta) : gf_struct(gf_struct), beta(beta) {} + // g2_iw_freq_box_params_t() {} + // g2_iw_freq_box_params_t(gf_struct_t const &gf_struct, double beta) : gf_struct(gf_struct), beta(beta) {} }; - struct g2_three_freqs_params_t { + struct g2_iw_freq_vec_params_t { /// Block structure of GF gf_struct_t gf_struct; @@ -47,11 +48,12 @@ namespace pomerol2triqs { /// three frequencies (wb, wf1, wf2). three_freqs_t three_freqs; - /// indices of operators in TRIQS convention: (block_name, inner_index) - indices_t index1, index2, index3, index4; + /// set of indices of four operators in TRIQS convention: (block_name, inner_index)*4 + // indices_t index1, index2, index3, index4; + std::vector vec_four_indices; - // g2_three_freqs_params_t() {} - // g2_three_freqs_params_t(gf_struct_t const &gf_struct, double beta) : gf_struct(gf_struct), beta(beta) {} + // g2_iw_freq_vec_params_t() {} + // g2_iw_freq_vec_params_t(gf_struct_t const &gf_struct, double beta) : gf_struct(gf_struct), beta(beta) {} }; /* diff --git a/c++/pomerol_ed.cpp b/c++/pomerol_ed.cpp index 48561c6..45fa862 100644 --- a/c++/pomerol_ed.cpp +++ b/c++/pomerol_ed.cpp @@ -492,7 +492,7 @@ namespace pomerol2triqs { pom_g2.compute(false, {}, comm); // compute g2 value using MPI - g2_three_freqs_t g2( three_freqs.size() ); + g2_iw_freq_vec_t g2( three_freqs.size() ); for(int i=comm.rank(); i(three_freqs[i]); int wf1 = std::get<1>(three_freqs[i]); @@ -510,8 +510,22 @@ namespace pomerol2triqs { return g2; } + std::vector< std::vector > > pomerol_ed::compute_g2_indices_loop(gf_struct_t const &gf_struct, double beta, channel_t channel, std::vector const &vec_four_indices, three_freqs_t const &three_freqs){ + + std::vector vec_g2; + // TODO: MPI + for( auto four_indices : vec_four_indices ){ + indices_t index1 = std::get<0>(four_indices); + indices_t index2 = std::get<1>(four_indices); + indices_t index3 = std::get<2>(four_indices); + indices_t index4 = std::get<3>(four_indices); + vec_g2.push_back( compute_g2(gf_struct, beta, channel, index1, index2, index3, index4, three_freqs) ); + } + return vec_g2; + } - auto pomerol_ed::G2_iw(g2_iw_inu_inup_params_t const &p) -> g2_t { + + auto pomerol_ed::G2_iw_freq_box(g2_iw_freq_box_params_t const &p) -> g2_iw_freq_box_t { // create a list of three frequencies, (wb, wf1, wf2) three_freqs_t three_freqs; @@ -538,11 +552,10 @@ namespace pomerol2triqs { } // compute g2 values - // g2_three_freqs_t g2_three_freqs = G2_iw_three_freqs(p_core); - g2_three_freqs_t g2_three_freqs = compute_g2(p.gf_struct, p.beta, p.channel, p.index1, p.index2, p.index3, p.index4, three_freqs); + g2_iw_freq_vec_t g2_three_freqs = compute_g2(p.gf_struct, p.beta, p.channel, p.index1, p.index2, p.index3, p.index4, three_freqs); // reshape G2 - g2_t g2(p.n_b, 2*p.n_f, 2*p.n_f); + g2_iw_freq_box_t g2(p.n_b, 2*p.n_f, 2*p.n_f); for(int i=0; i(three_indices[i]); int if1 = std::get<1>(three_indices[i]); @@ -554,8 +567,11 @@ namespace pomerol2triqs { } - auto pomerol_ed::G2_iw_three_freqs(g2_three_freqs_params_t const &p) -> g2_three_freqs_t { - return compute_g2(p.gf_struct, p.beta, p.channel, p.index1, p.index2, p.index3, p.index4, p.three_freqs); + // auto pomerol_ed::G2_iw_three_freqs(g2_three_freqs_params_t const &p) -> g2_iw_freq_vec_t { + // return compute_g2(p.gf_struct, p.beta, p.channel, p.index1, p.index2, p.index3, p.index4, p.three_freqs); + // } + auto pomerol_ed::G2_iw_freqs_vec(g2_iw_freq_vec_params_t const &p) -> std::vector { + return compute_g2_indices_loop(p.gf_struct, p.beta, p.channel, p.vec_four_indices, p.three_freqs); } /* auto pomerol_ed::G2_iw_three_freqs(g2_three_freqs_params_t const &p) -> g2_three_freqs_t { diff --git a/c++/pomerol_ed.hpp b/c++/pomerol_ed.hpp index 4213915..c5946f1 100644 --- a/c++/pomerol_ed.hpp +++ b/c++/pomerol_ed.hpp @@ -82,12 +82,15 @@ namespace pomerol2triqs { // using w_nu_nup_t = cartesian_product; // using w_l_lp_t = cartesian_product; - using g2_t = triqs::arrays::array, 3>; - using g2_three_freqs_t = std::vector >; + using g2_iw_freq_box_t = triqs::arrays::array, 3>; + using g2_iw_freq_vec_t = std::vector >; // template // block2_gf> compute_g2(gf_struct_t const &gf_struct, gf_mesh const &mesh, block_order_t block_order, // g2_blocks_t const &g2_blocks, Filler filler) const; - std::vector > compute_g2(gf_struct_t const &gf_struct, double beta, channel_t channel, indices_t index1, indices_t index2, indices_t index3, indices_t index4, three_freqs_t const &three_freqs); + g2_iw_freq_vec_t compute_g2(gf_struct_t const &gf_struct, double beta, channel_t channel, indices_t index1, indices_t index2, indices_t index3, indices_t index4, three_freqs_t const &three_freqs); + + // std::vector compute_g2_indices_loop(gf_struct_t const &gf_struct, double beta, channel_t channel, std::vector const &vec_four_indices, three_freqs_t const &three_freqs); + std::vector< g2_iw_freq_vec_t > compute_g2_indices_loop(gf_struct_t const &gf_struct, double beta, channel_t channel, std::vector const &vec_four_indices, three_freqs_t const &three_freqs); double density_matrix_cutoff = 1e-15; @@ -121,11 +124,11 @@ namespace pomerol2triqs { /// Two-particle Green's function. Specify frequency cutoff, n_b and n_f. TRIQS_WRAP_ARG_AS_DICT - g2_t G2_iw(g2_iw_inu_inup_params_t const &p); + g2_iw_freq_box_t G2_iw_freq_box(g2_iw_freq_box_params_t const &p); /// Two-particle Green's function. Specify three frequencies (wb, wf1, wf2). TRIQS_WRAP_ARG_AS_DICT - g2_three_freqs_t G2_iw_three_freqs(g2_three_freqs_params_t const &p); + std::vector G2_iw_freqs_vec(g2_iw_freq_vec_params_t const &p); /// Two-particle Green's function, Matsubara frequencies // TRIQS_WRAP_ARG_AS_DICT diff --git a/example/2band.atom.py b/example/2band.atom.py index 415d90e..3b2b7c4 100644 --- a/example/2band.atom.py +++ b/example/2band.atom.py @@ -95,7 +95,7 @@ # G^{(2)}(i\omega;i\nu,i\nu') # ############################### -G2_iw = ed.G2_iw( index1=('up',0), index2=('dn',0), index3=('dn',1), index4=('up',1), **common_g2_params ) +G2_iw = ed.G2_iw_freq_box( index1=('up',0), index2=('dn',0), index3=('dn',1), index4=('up',1), **common_g2_params ) print type(G2_iw) print G2_iw.shape diff --git a/example/slater.py b/example/slater.py index b11781e..1a34571 100644 --- a/example/slater.py +++ b/example/slater.py @@ -145,7 +145,7 @@ # G^{(2)}(i\omega;i\nu,i\nu') # ############################### -G2_iw = ed.G2_iw( index1=('up',0), index2=('dn',0), index3=('dn',1), index4=('up',1), **common_g2_params ) +G2_iw = ed.G2_iw_freq_box( index1=('up',0), index2=('dn',0), index3=('dn',1), index4=('up',1), **common_g2_params ) if mpi.is_master_node(): print type(G2_iw) diff --git a/python/pomerol2triqs_converters.hxx b/python/pomerol2triqs_converters.hxx index b20165f..c0e460e 100644 --- a/python/pomerol2triqs_converters.hxx +++ b/python/pomerol2triqs_converters.hxx @@ -3,25 +3,21 @@ // c++2py.py ../c++/pomerol_ed.hpp -I../../../local/pomerol/include -I/usr/include/eigen3 -I../c++ -p -mpytriqs.applications.impurity_solvers.pomerol2triqs -o pomerol2triqs --moduledoc "TRIQS wrapper around Pomerol ED library" -// --- C++ Python converter for g2_iw_inu_inup_params_t +// --- C++ Python converter for g2_iw_freq_vec_params_t #include #include #include namespace triqs { namespace py_tools { -template <> struct py_converter { - static PyObject *c2py(g2_iw_inu_inup_params_t const & x) { +template <> struct py_converter { + static PyObject *c2py(g2_iw_freq_vec_params_t const & x) { PyObject * d = PyDict_New(); - PyDict_SetItemString( d, "gf_struct", convert_to_python(x.gf_struct)); - PyDict_SetItemString( d, "beta" , convert_to_python(x.beta)); - PyDict_SetItemString( d, "channel" , convert_to_python(x.channel)); - PyDict_SetItemString( d, "n_b" , convert_to_python(x.n_b)); - PyDict_SetItemString( d, "n_f" , convert_to_python(x.n_f)); - PyDict_SetItemString( d, "index1" , convert_to_python(x.index1)); - PyDict_SetItemString( d, "index2" , convert_to_python(x.index2)); - PyDict_SetItemString( d, "index3" , convert_to_python(x.index3)); - PyDict_SetItemString( d, "index4" , convert_to_python(x.index4)); + PyDict_SetItemString( d, "gf_struct" , convert_to_python(x.gf_struct)); + PyDict_SetItemString( d, "beta" , convert_to_python(x.beta)); + PyDict_SetItemString( d, "channel" , convert_to_python(x.channel)); + PyDict_SetItemString( d, "three_freqs" , convert_to_python(x.three_freqs)); + PyDict_SetItemString( d, "vec_four_indices", convert_to_python(x.vec_four_indices)); return d; } @@ -39,17 +35,13 @@ template <> struct py_converter { r = T{}; } - static g2_iw_inu_inup_params_t py2c(PyObject *dic) { - g2_iw_inu_inup_params_t res; + static g2_iw_freq_vec_params_t py2c(PyObject *dic) { + g2_iw_freq_vec_params_t res; res.gf_struct = convert_from_python(PyDict_GetItemString(dic, "gf_struct")); res.beta = convert_from_python(PyDict_GetItemString(dic, "beta")); - _get_optional(dic, "channel" , res.channel ,PH); - res.n_b = convert_from_python(PyDict_GetItemString(dic, "n_b")); - res.n_f = convert_from_python(PyDict_GetItemString(dic, "n_f")); - res.index1 = convert_from_python(PyDict_GetItemString(dic, "index1")); - res.index2 = convert_from_python(PyDict_GetItemString(dic, "index2")); - res.index3 = convert_from_python(PyDict_GetItemString(dic, "index3")); - res.index4 = convert_from_python(PyDict_GetItemString(dic, "index4")); + _get_optional(dic, "channel" , res.channel ,PH); + res.three_freqs = convert_from_python(PyDict_GetItemString(dic, "three_freqs")); + res.vec_four_indices = convert_from_python>(PyDict_GetItemString(dic, "vec_four_indices")); return res; } @@ -80,7 +72,7 @@ template <> struct py_converter { std::stringstream fs, fs2; int err=0; #ifndef TRIQS_ALLOW_UNUSED_PARAMETERS - std::vector ks, all_keys = {"gf_struct","beta","channel","n_b","n_f","index1","index2","index3","index4"}; + std::vector ks, all_keys = {"gf_struct","beta","channel","three_freqs","vec_four_indices"}; pyref keys = PyDict_Keys(dic); if (!convertible_from_python>(keys, true)) { fs << "\nThe dict keys are not strings"; @@ -92,20 +84,16 @@ template <> struct py_converter { fs << "\n"<< ++err << " The parameter '" << k << "' is not recognized."; #endif - _check_mandatory(dic, fs, err, "gf_struct", "gf_struct_t"); - _check_mandatory(dic, fs, err, "beta" , "double"); - _check_optional (dic, fs, err, "channel" , "pomerol2triqs::channel_t"); - _check_mandatory(dic, fs, err, "n_b" , "int"); - _check_mandatory(dic, fs, err, "n_f" , "int"); - _check_mandatory(dic, fs, err, "index1" , "indices_t"); - _check_mandatory(dic, fs, err, "index2" , "indices_t"); - _check_mandatory(dic, fs, err, "index3" , "indices_t"); - _check_mandatory(dic, fs, err, "index4" , "indices_t"); + _check_mandatory(dic, fs, err, "gf_struct" , "gf_struct_t"); + _check_mandatory(dic, fs, err, "beta" , "double"); + _check_optional (dic, fs, err, "channel" , "pomerol2triqs::channel_t"); + _check_mandatory(dic, fs, err, "three_freqs" , "three_freqs_t"); + _check_mandatory>(dic, fs, err, "vec_four_indices", "std::vector"); if (err) goto _error; return true; _error: - fs2 << "\n---- There " << (err > 1 ? "are " : "is ") << err<< " error"<<(err >1 ?"s" : "")<< " in Python -> C++ transcription for the class g2_iw_inu_inup_params_t\n" < 1 ? "are " : "is ") << err<< " error"<<(err >1 ?"s" : "")<< " in Python -> C++ transcription for the class g2_iw_freq_vec_params_t\n" < struct py_converter { }} -// --- C++ Python converter for g2_three_freqs_params_t +// --- C++ Python converter for g2_iw_freq_box_params_t #include #include #include namespace triqs { namespace py_tools { -template <> struct py_converter { - static PyObject *c2py(g2_three_freqs_params_t const & x) { +template <> struct py_converter { + static PyObject *c2py(g2_iw_freq_box_params_t const & x) { PyObject * d = PyDict_New(); - PyDict_SetItemString( d, "gf_struct" , convert_to_python(x.gf_struct)); - PyDict_SetItemString( d, "beta" , convert_to_python(x.beta)); - PyDict_SetItemString( d, "channel" , convert_to_python(x.channel)); - PyDict_SetItemString( d, "three_freqs", convert_to_python(x.three_freqs)); - PyDict_SetItemString( d, "index1" , convert_to_python(x.index1)); - PyDict_SetItemString( d, "index2" , convert_to_python(x.index2)); - PyDict_SetItemString( d, "index3" , convert_to_python(x.index3)); - PyDict_SetItemString( d, "index4" , convert_to_python(x.index4)); + PyDict_SetItemString( d, "gf_struct", convert_to_python(x.gf_struct)); + PyDict_SetItemString( d, "beta" , convert_to_python(x.beta)); + PyDict_SetItemString( d, "channel" , convert_to_python(x.channel)); + PyDict_SetItemString( d, "n_b" , convert_to_python(x.n_b)); + PyDict_SetItemString( d, "n_f" , convert_to_python(x.n_f)); + PyDict_SetItemString( d, "index1" , convert_to_python(x.index1)); + PyDict_SetItemString( d, "index2" , convert_to_python(x.index2)); + PyDict_SetItemString( d, "index3" , convert_to_python(x.index3)); + PyDict_SetItemString( d, "index4" , convert_to_python(x.index4)); return d; } @@ -149,12 +138,13 @@ template <> struct py_converter { r = T{}; } - static g2_three_freqs_params_t py2c(PyObject *dic) { - g2_three_freqs_params_t res; + static g2_iw_freq_box_params_t py2c(PyObject *dic) { + g2_iw_freq_box_params_t res; res.gf_struct = convert_from_python(PyDict_GetItemString(dic, "gf_struct")); res.beta = convert_from_python(PyDict_GetItemString(dic, "beta")); - _get_optional(dic, "channel" , res.channel ,PH); - res.three_freqs = convert_from_python(PyDict_GetItemString(dic, "three_freqs")); + _get_optional(dic, "channel" , res.channel ,PH); + res.n_b = convert_from_python(PyDict_GetItemString(dic, "n_b")); + res.n_f = convert_from_python(PyDict_GetItemString(dic, "n_f")); res.index1 = convert_from_python(PyDict_GetItemString(dic, "index1")); res.index2 = convert_from_python(PyDict_GetItemString(dic, "index2")); res.index3 = convert_from_python(PyDict_GetItemString(dic, "index3")); @@ -189,7 +179,7 @@ template <> struct py_converter { std::stringstream fs, fs2; int err=0; #ifndef TRIQS_ALLOW_UNUSED_PARAMETERS - std::vector ks, all_keys = {"gf_struct","beta","channel","three_freqs","index1","index2","index3","index4"}; + std::vector ks, all_keys = {"gf_struct","beta","channel","n_b","n_f","index1","index2","index3","index4"}; pyref keys = PyDict_Keys(dic); if (!convertible_from_python>(keys, true)) { fs << "\nThe dict keys are not strings"; @@ -201,19 +191,20 @@ template <> struct py_converter { fs << "\n"<< ++err << " The parameter '" << k << "' is not recognized."; #endif - _check_mandatory(dic, fs, err, "gf_struct" , "gf_struct_t"); - _check_mandatory(dic, fs, err, "beta" , "double"); - _check_optional (dic, fs, err, "channel" , "pomerol2triqs::channel_t"); - _check_mandatory(dic, fs, err, "three_freqs", "three_freqs_t"); - _check_mandatory(dic, fs, err, "index1" , "indices_t"); - _check_mandatory(dic, fs, err, "index2" , "indices_t"); - _check_mandatory(dic, fs, err, "index3" , "indices_t"); - _check_mandatory(dic, fs, err, "index4" , "indices_t"); + _check_mandatory(dic, fs, err, "gf_struct", "gf_struct_t"); + _check_mandatory(dic, fs, err, "beta" , "double"); + _check_optional (dic, fs, err, "channel" , "pomerol2triqs::channel_t"); + _check_mandatory(dic, fs, err, "n_b" , "int"); + _check_mandatory(dic, fs, err, "n_f" , "int"); + _check_mandatory(dic, fs, err, "index1" , "indices_t"); + _check_mandatory(dic, fs, err, "index2" , "indices_t"); + _check_mandatory(dic, fs, err, "index3" , "indices_t"); + _check_mandatory(dic, fs, err, "index4" , "indices_t"); if (err) goto _error; return true; _error: - fs2 << "\n---- There " << (err > 1 ? "are " : "is ") << err<< " error"<<(err >1 ?"s" : "")<< " in Python -> C++ transcription for the class g2_three_freqs_params_t\n" < 1 ? "are " : "is ") << err<< " error"<<(err >1 ?"s" : "")<< " in Python -> C++ transcription for the class g2_iw_freq_box_params_t\n" < G_w (gf_struct_t gf_struct, double beta, std::pair energy_window, int n_w, double im_shift = 0)""", doc = r"""Retarded Green's function on real energy axis""") -c.add_method("""triqs::arrays::array, 3> G2_iw (**pomerol2triqs::g2_iw_inu_inup_params_t)""", +c.add_method("""triqs::arrays::array, 3> G2_iw_freq_box (**pomerol2triqs::g2_iw_freq_box_params_t)""", doc = r"""Two-particle Green's function. Specify frequency cutoff, n_b and n_f.""") -c.add_method("""std::vector > G2_iw_three_freqs (**pomerol2triqs::g2_three_freqs_params_t)""", +c.add_method("""std::vector > > G2_iw_freqs_vec (**pomerol2triqs::g2_iw_freq_vec_params_t)""", doc = r"""Two-particle Green's function. Specify three frequencies (wb, wf1, wf2).""") module.add_class(c) diff --git a/test/python/anderson_g2_matsubara.py b/test/python/anderson_g2_matsubara.py index 0c6baf4..b716700 100644 --- a/test/python/anderson_g2_matsubara.py +++ b/test/python/anderson_g2_matsubara.py @@ -73,14 +73,14 @@ # Compute G^{(2),ph}(i\omega;i\nu,i\nu'), AABB block order -G2_iw_ph_uuuu = ed.G2_iw( index1=('up',0), index2=('up',0), index3=('up',0), index4=('up',0), **common_g2_params ) -G2_iw_ph_dddd = ed.G2_iw( index1=('dn',0), index2=('dn',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) -G2_iw_ph_uudd = ed.G2_iw( index1=('up',0), index2=('up',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) -G2_iw_ph_dduu = ed.G2_iw( index1=('dn',0), index2=('dn',0), index3=('up',0), index4=('up',0), **common_g2_params ) +G2_iw_ph_uuuu = ed.G2_iw_freq_box( index1=('up',0), index2=('up',0), index3=('up',0), index4=('up',0), **common_g2_params ) +G2_iw_ph_dddd = ed.G2_iw_freq_box( index1=('dn',0), index2=('dn',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) +G2_iw_ph_uudd = ed.G2_iw_freq_box( index1=('up',0), index2=('up',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) +G2_iw_ph_dduu = ed.G2_iw_freq_box( index1=('dn',0), index2=('dn',0), index3=('up',0), index4=('up',0), **common_g2_params ) # Compute G^{(2),ph}(i\omega;i\nu,i\nu'), ABBA block order -G2_iw_ph_uddu = ed.G2_iw( index1=('up',0), index2=('dn',0), index3=('dn',0), index4=('up',0), **common_g2_params ) -G2_iw_ph_duud = ed.G2_iw( index1=('dn',0), index2=('up',0), index3=('up',0), index4=('dn',0), **common_g2_params ) +G2_iw_ph_uddu = ed.G2_iw_freq_box( index1=('up',0), index2=('dn',0), index3=('dn',0), index4=('up',0), **common_g2_params ) +G2_iw_ph_duud = ed.G2_iw_freq_box( index1=('dn',0), index2=('up',0), index3=('up',0), index4=('dn',0), **common_g2_params ) # Compute G^{(2),pp}(i\omega;i\nu,i\nu'), AABB block order # G2_iw_inu_inup_pp_AABB = ed.G2_iw_inu_inup(channel = "PP", diff --git a/test/python/wick.py b/test/python/wick.py index 55b517c..3837ec2 100644 --- a/test/python/wick.py +++ b/test/python/wick.py @@ -81,12 +81,12 @@ 'n_f' : g2_n_wf, 'n_b' : g2_n_wb, } -G2_ph_uuuu = ed.G2_iw( index1=('up',0), index2=('up',0), index3=('up',0), index4=('up',0), **common_g2_params ) -G2_ph_dddd = ed.G2_iw( index1=('dn',0), index2=('dn',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) -G2_ph_uudd = ed.G2_iw( index1=('up',0), index2=('up',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) -G2_ph_dduu = ed.G2_iw( index1=('dn',0), index2=('dn',0), index3=('up',0), index4=('up',0), **common_g2_params ) -G2_ph_uddu = ed.G2_iw( index1=('up',0), index2=('dn',0), index3=('dn',0), index4=('up',0), **common_g2_params ) -G2_ph_duud = ed.G2_iw( index1=('dn',0), index2=('up',0), index3=('up',0), index4=('dn',0), **common_g2_params ) +G2_ph_uuuu = ed.G2_iw_freq_box( index1=('up',0), index2=('up',0), index3=('up',0), index4=('up',0), **common_g2_params ) +G2_ph_dddd = ed.G2_iw_freq_box( index1=('dn',0), index2=('dn',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) +G2_ph_uudd = ed.G2_iw_freq_box( index1=('up',0), index2=('up',0), index3=('dn',0), index4=('dn',0), **common_g2_params ) +G2_ph_dduu = ed.G2_iw_freq_box( index1=('dn',0), index2=('dn',0), index3=('up',0), index4=('up',0), **common_g2_params ) +G2_ph_uddu = ed.G2_iw_freq_box( index1=('up',0), index2=('dn',0), index3=('dn',0), index4=('up',0), **common_g2_params ) +G2_ph_duud = ed.G2_iw_freq_box( index1=('dn',0), index2=('up',0), index3=('up',0), index4=('dn',0), **common_g2_params ) G2_ph_uuuu_wick = G2_ph_uuuu.copy() G2_ph_dddd_wick = G2_ph_dddd.copy()