Loading include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/compute_bubble.hpp +13 −13 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public: using Threading = typename parameters_type::ThreadingType; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; Loading @@ -56,7 +56,7 @@ public: using G_function_type = func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, w_dmn_t>>; using function_type = func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexDmn_BOSONIC>>; func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexBosonicDmn>>; public: compute_bubble(parameters_type& parameters_ref); Loading Loading @@ -87,7 +87,7 @@ private: concurrency_type& concurrency; protected: func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexDmn_BOSONIC>> chi; func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexBosonicDmn>> chi; private: struct bubble_data { Loading Loading @@ -179,14 +179,14 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::execute_o chi = 0.; assert(std::fabs(WVertexDmn_BOSONIC::get_elements()[WVertexDmn_BOSONIC::dmn_size() / 2]) < 1.e-6); assert(std::fabs(WVertexBosonicDmn::get_elements()[WVertexBosonicDmn::dmn_size() / 2]) < 1.e-6); for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int k_plus_q = k_dmn_t::parameter_type::add(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_plus_nu = w_ind + nu_c; Loading Loading @@ -225,8 +225,8 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::threaded_ for (int k_ind = k_bounds.first; k_ind < k_bounds.second; ++k_ind) { int k_plus_q = k_dmn_t::parameter_type::add(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_plus_nu = w_ind + nu_c; Loading Loading @@ -254,14 +254,14 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::execute_o chi = 0.; assert(std::fabs(WVertexDmn_BOSONIC::get_elements()[WVertexDmn_BOSONIC::dmn_size() / 2]) < 1.e-6); assert(std::fabs(WVertexBosonicDmn::get_elements()[WVertexBosonicDmn::dmn_size() / 2]) < 1.e-6); for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int q_minus_k = k_dmn_t::parameter_type::subtract(k_ind, q_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int nu_minus_w = nu_c + (w::dmn_size() - 1 - w_ind); Loading Loading @@ -300,8 +300,8 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::threaded_ for (int k_ind = k_bounds.first; k_ind < k_bounds.second; ++k_ind) { int q_minus_k = k_dmn_t::parameter_type::subtract(k_ind, q_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int nu_minus_w = nu_c + (w::dmn_size() - 1 - w_ind); Loading include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_2nd_order.inc +9 −9 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ public: using ThisType = sigma_perturbation<2, parameters_type, k_dmn_t>; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -73,7 +73,7 @@ protected: chi_function_type& chi; phi_function_type& phi; func::function<std::complex<double>, func::dmn_variadic<b, b, k_dmn_t, WVertexDmn_BOSONIC>> U_chi_U; func::function<std::complex<double>, func::dmn_variadic<b, b, k_dmn_t, WVertexBosonicDmn>> U_chi_U; sp_function_type Sigma; Loading Loading @@ -167,9 +167,9 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::execute_2A( Sigma_2A = 0.; for (int nu1_ind = 0; nu1_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu1_ind) { for (int nu1_ind = 0; nu1_ind < WVertexBosonicDmn::dmn_size(); ++nu1_ind) { for (int q1_ind = 0; q1_ind < k_dmn_t::dmn_size(); ++q1_ind) { for (int nu2_ind = 0; nu2_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu2_ind) { for (int nu2_ind = 0; nu2_ind < WVertexBosonicDmn::dmn_size(); ++nu2_ind) { for (int q2_ind = 0; q2_ind < k_dmn_t::dmn_size(); ++q2_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu1_ind, w_ind); Loading Loading @@ -220,8 +220,8 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::execute_2B( for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int k_minus_q = k_dmn_t::parameters_type::subtract(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_minus_nu = w_ind - nu_c; Loading Loading @@ -309,8 +309,8 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::threaded_execute_2B( for (int q_ind = q_bounds.first; q_ind < q_bounds.second; q_ind++) { int k_minus_q = k_dmn_t::parameter_type::subtract(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_minus_nu = w_ind - nu_c; Loading @@ -335,7 +335,7 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::threaded_execute_2B( template <class parameters_type, class k_dmn_t> int sigma_perturbation<2, parameters_type, k_dmn_t>::subtract_freq_bf(int w1, int w2) { int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_f - w_b) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_3rd_order.inc +5 −5 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ template <class parameters_type, class k_dmn_t> class sigma_perturbation<3, parameters_type, k_dmn_t> { public: using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -107,9 +107,9 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_RPA( Sigma_RPA = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -139,7 +139,7 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_VC( Sigma_VC = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -168,7 +168,7 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_VC( template <class parameters_type, class k_dmn_t> int sigma_perturbation<3, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, int w2) { int w_f = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w2 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w2 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_b - w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_4th_order.inc +35 −35 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ public: using concurrency_t = typename parameters_type::concurrency_type; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -209,9 +209,9 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4A( Sigma_4A = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -245,7 +245,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4C( Sigma_4C = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -287,7 +287,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4D( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_ff(nu_ind, w_ind); if (w_minus_nu < 0 || w_minus_nu >= WVertexDmn_BOSONIC::dmn_size()) if (w_minus_nu < 0 || w_minus_nu >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -324,7 +324,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4E( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_ff(w_ind, nu_ind); if (nu_minus_w < 0 || nu_minus_w >= WVertexDmn_BOSONIC::dmn_size()) if (nu_minus_w < 0 || nu_minus_w >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -361,7 +361,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4F( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_plus_nu = add_freq_ff(w_ind, nu_ind); if (w_plus_nu < 0 || w_plus_nu >= WVertexDmn_BOSONIC::dmn_size()) if (w_plus_nu < 0 || w_plus_nu >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -393,7 +393,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4G( Sigma_4G = 0.; func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -407,10 +407,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4G( int nu_ind1 = coordinates[0]; int q_ind1 = coordinates[1]; // for(int nu_ind1=0; nu_ind1<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind1){ // for(int nu_ind1=0; nu_ind1<WVertexBosonicDmn::dmn_size(); ++nu_ind1){ // for(int q_ind1=0; q_ind1<k_dmn_t::dmn_size(); ++q_ind1){ for (int nu_ind2 = 0; nu_ind2 < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind2) { for (int nu_ind2 = 0; nu_ind2 < WVertexBosonicDmn::dmn_size(); ++nu_ind2) { for (int q_ind2 = 0; q_ind2 < k_dmn_t::dmn_size(); ++q_ind2) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu_ind1, w_ind); Loading Loading @@ -459,7 +459,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( Sigma_4H = 0.; func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -473,10 +473,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( int nu_ind1 = coordinates[0]; int q_ind1 = coordinates[1]; // for(int nu_ind1=0; nu_ind1<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind1){ // for(int nu_ind1=0; nu_ind1<WVertexBosonicDmn::dmn_size(); ++nu_ind1){ // for(int q_ind1=0; q_ind1<k_dmn_t::dmn_size(); ++q_ind1){ for (int nu_ind2 = 0; nu_ind2 < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind2) { for (int nu_ind2 = 0; nu_ind2 < WVertexBosonicDmn::dmn_size(); ++nu_ind2) { for (int q_ind2 = 0; q_ind2 < k_dmn_t::dmn_size(); ++q_ind2) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu_ind1, w_ind); Loading Loading @@ -527,7 +527,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( Sigma_4J = 0.; for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for(int w1_ind=0; w1_ind<w::dmn_size(); ++w1_ind){ Loading @@ -539,7 +539,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( int nu_minus_w2 = subtract_freq_fb(w2_ind, nu_ind); if(nu_minus_w2 < 0 || nu_minus_w2 >= w::dmn_size()) continue; int nu_minus_w1_minus_w2 = subtract_freq_ff(w2_ind, nu_minus_w1); if(nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) continue; if(nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for(int p2_ind=0; p2_ind<k_dmn_t::dmn_size(); ++p2_ind){ for(int w_ind=0; w_ind<w::dmn_size(); ++w_ind){ Loading Loading @@ -587,10 +587,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( Sigma_4J = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -604,7 +604,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -617,7 +617,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( if (nu_minus_w2 < 0 || nu_minus_w2 >= w::dmn_size()) continue; int nu_minus_w1_minus_w2 = subtract_freq_ff(w2_ind, nu_minus_w1); if (nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_minus_p1 = k_dmn_t::parameters_type::subtract(p1_ind, q_ind); Loading @@ -637,7 +637,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -674,10 +674,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( Sigma_4K = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -691,7 +691,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -704,7 +704,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( if (nu_plus_w2 < 0 || nu_plus_w2 >= w::dmn_size()) continue; int nu_plus_w1_plus_w2 = add_freq_ff(nu_plus_w1, w2_ind); if (nu_plus_w1_plus_w2 < 0 || nu_plus_w1_plus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (nu_plus_w1_plus_w2 < 0 || nu_plus_w1_plus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_plus_p1 = k_dmn_t::parameters_type::add(q_ind, p1_ind); Loading @@ -724,7 +724,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_bf(nu_ind, w_ind); Loading Loading @@ -761,10 +761,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( Sigma_4L = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -778,7 +778,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -791,7 +791,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( if (nu_plus_w2 < 0 || nu_plus_w2 >= w::dmn_size()) continue; int w1_minus_w2 = subtract_freq_ff(w2_ind, w1_ind); if (w1_minus_w2 < 0 || w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (w1_minus_w2 < 0 || w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_plus_p1 = k_dmn_t::parameters_type::add(q_ind, p1_ind); Loading @@ -811,7 +811,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_bf(nu_ind, w_ind); Loading Loading @@ -842,7 +842,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, int w2) { int w_f = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w2 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w2 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_b - w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } Loading @@ -850,7 +850,7 @@ int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, in template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_bf(int w1, int w2) { int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_f - w_b) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } Loading @@ -859,7 +859,7 @@ template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_ff(int w1, int w2) { int w_f1 = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_f2 = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_f2 - w_f1) + WVertexDmn_BOSONIC::dmn_size()) / 2; // result is bosonic int res = ((w_f2 - w_f1) + WVertexBosonicDmn::dmn_size()) / 2; // result is bosonic return res; } Loading @@ -867,13 +867,13 @@ template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::add_freq_ff(int w1, int w2) { int w_f1 = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_f2 = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_f1 + w_f2) + WVertexDmn_BOSONIC::dmn_size()) / 2; // result is bosonic int res = ((w_f1 + w_f2) + WVertexBosonicDmn::dmn_size()) / 2; // result is bosonic return res; } template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::add_freq_bf(int w1, int w2) { int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_b + w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; Loading Loading
include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/compute_bubble.hpp +13 −13 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public: using Threading = typename parameters_type::ThreadingType; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; Loading @@ -56,7 +56,7 @@ public: using G_function_type = func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, w_dmn_t>>; using function_type = func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexDmn_BOSONIC>>; func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexBosonicDmn>>; public: compute_bubble(parameters_type& parameters_ref); Loading Loading @@ -87,7 +87,7 @@ private: concurrency_type& concurrency; protected: func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexDmn_BOSONIC>> chi; func::function<std::complex<double>, func::dmn_variadic<b_b, b_b, k_dmn_t, WVertexBosonicDmn>> chi; private: struct bubble_data { Loading Loading @@ -179,14 +179,14 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::execute_o chi = 0.; assert(std::fabs(WVertexDmn_BOSONIC::get_elements()[WVertexDmn_BOSONIC::dmn_size() / 2]) < 1.e-6); assert(std::fabs(WVertexBosonicDmn::get_elements()[WVertexBosonicDmn::dmn_size() / 2]) < 1.e-6); for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int k_plus_q = k_dmn_t::parameter_type::add(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_plus_nu = w_ind + nu_c; Loading Loading @@ -225,8 +225,8 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::threaded_ for (int k_ind = k_bounds.first; k_ind < k_bounds.second; ++k_ind) { int k_plus_q = k_dmn_t::parameter_type::add(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_plus_nu = w_ind + nu_c; Loading Loading @@ -254,14 +254,14 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::execute_o chi = 0.; assert(std::fabs(WVertexDmn_BOSONIC::get_elements()[WVertexDmn_BOSONIC::dmn_size() / 2]) < 1.e-6); assert(std::fabs(WVertexBosonicDmn::get_elements()[WVertexBosonicDmn::dmn_size() / 2]) < 1.e-6); for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int q_minus_k = k_dmn_t::parameter_type::subtract(k_ind, q_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int nu_minus_w = nu_c + (w::dmn_size() - 1 - w_ind); Loading Loading @@ -300,8 +300,8 @@ void compute_bubble<channel_value, parameters_type, k_dmn_t, w_dmn_t>::threaded_ for (int k_ind = k_bounds.first; k_ind < k_bounds.second; ++k_ind) { int q_minus_k = k_dmn_t::parameter_type::subtract(k_ind, q_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w_dmn_t::dmn_size() - std::fabs(nu_c); ++w_ind) { int nu_minus_w = nu_c + (w::dmn_size() - 1 - w_ind); Loading
include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_2nd_order.inc +9 −9 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ public: using ThisType = sigma_perturbation<2, parameters_type, k_dmn_t>; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -73,7 +73,7 @@ protected: chi_function_type& chi; phi_function_type& phi; func::function<std::complex<double>, func::dmn_variadic<b, b, k_dmn_t, WVertexDmn_BOSONIC>> U_chi_U; func::function<std::complex<double>, func::dmn_variadic<b, b, k_dmn_t, WVertexBosonicDmn>> U_chi_U; sp_function_type Sigma; Loading Loading @@ -167,9 +167,9 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::execute_2A( Sigma_2A = 0.; for (int nu1_ind = 0; nu1_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu1_ind) { for (int nu1_ind = 0; nu1_ind < WVertexBosonicDmn::dmn_size(); ++nu1_ind) { for (int q1_ind = 0; q1_ind < k_dmn_t::dmn_size(); ++q1_ind) { for (int nu2_ind = 0; nu2_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu2_ind) { for (int nu2_ind = 0; nu2_ind < WVertexBosonicDmn::dmn_size(); ++nu2_ind) { for (int q2_ind = 0; q2_ind < k_dmn_t::dmn_size(); ++q2_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu1_ind, w_ind); Loading Loading @@ -220,8 +220,8 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::execute_2B( for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { int k_minus_q = k_dmn_t::parameters_type::subtract(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_minus_nu = w_ind - nu_c; Loading Loading @@ -309,8 +309,8 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::threaded_execute_2B( for (int q_ind = q_bounds.first; q_ind < q_bounds.second; q_ind++) { int k_minus_q = k_dmn_t::parameter_type::subtract(q_ind, k_ind); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { int w_minus_nu = w_ind - nu_c; Loading @@ -335,7 +335,7 @@ void sigma_perturbation<2, parameters_type, k_dmn_t>::threaded_execute_2B( template <class parameters_type, class k_dmn_t> int sigma_perturbation<2, parameters_type, k_dmn_t>::subtract_freq_bf(int w1, int w2) { int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_f - w_b) - 1 + w::dmn_size()) / 2; // result is fermionic return res; }
include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_3rd_order.inc +5 −5 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ template <class parameters_type, class k_dmn_t> class sigma_perturbation<3, parameters_type, k_dmn_t> { public: using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -107,9 +107,9 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_RPA( Sigma_RPA = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -139,7 +139,7 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_VC( Sigma_VC = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -168,7 +168,7 @@ void sigma_perturbation<3, parameters_type, k_dmn_t>::execute_VC( template <class parameters_type, class k_dmn_t> int sigma_perturbation<3, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, int w2) { int w_f = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w2 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w2 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_b - w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; }
include/dca/phys/dca_step/cluster_solver/high_temperature_series_expansion/sigma_perturbation_4th_order.inc +35 −35 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ public: using concurrency_t = typename parameters_type::concurrency_type; using w = func::dmn_0<domains::frequency_domain>; using WVertexDmn_BOSONIC = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using WVertexBosonicDmn = func::dmn_0<domains::vertex_frequency_domain<domains::EXTENDED_BOSONIC>>; using b = func::dmn_0<domains::electron_band_domain>; using s = func::dmn_0<domains::electron_spin_domain>; using nu = func::dmn_variadic<b, s>; // orbital-spin index Loading Loading @@ -209,9 +209,9 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4A( Sigma_4A = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { int nu_c = (nu_ind - WVertexDmn_BOSONIC::dmn_size() / 2); int nu_c = (nu_ind - WVertexBosonicDmn::dmn_size() / 2); for (int w_ind = std::fabs(nu_c); w_ind < w::dmn_size() - std::fabs(nu_c); ++w_ind) { for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -245,7 +245,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4C( Sigma_4C = 0.; for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -287,7 +287,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4D( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_ff(nu_ind, w_ind); if (w_minus_nu < 0 || w_minus_nu >= WVertexDmn_BOSONIC::dmn_size()) if (w_minus_nu < 0 || w_minus_nu >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -324,7 +324,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4E( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_ff(w_ind, nu_ind); if (nu_minus_w < 0 || nu_minus_w >= WVertexDmn_BOSONIC::dmn_size()) if (nu_minus_w < 0 || nu_minus_w >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -361,7 +361,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4F( for (int p_ind = 0; p_ind < k_dmn_t::dmn_size(); ++p_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_plus_nu = add_freq_ff(w_ind, nu_ind); if (w_plus_nu < 0 || w_plus_nu >= WVertexDmn_BOSONIC::dmn_size()) if (w_plus_nu < 0 || w_plus_nu >= WVertexBosonicDmn::dmn_size()) continue; for (int k_ind = 0; k_ind < k_dmn_t::dmn_size(); ++k_ind) { Loading Loading @@ -393,7 +393,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4G( Sigma_4G = 0.; func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -407,10 +407,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4G( int nu_ind1 = coordinates[0]; int q_ind1 = coordinates[1]; // for(int nu_ind1=0; nu_ind1<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind1){ // for(int nu_ind1=0; nu_ind1<WVertexBosonicDmn::dmn_size(); ++nu_ind1){ // for(int q_ind1=0; q_ind1<k_dmn_t::dmn_size(); ++q_ind1){ for (int nu_ind2 = 0; nu_ind2 < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind2) { for (int nu_ind2 = 0; nu_ind2 < WVertexBosonicDmn::dmn_size(); ++nu_ind2) { for (int q_ind2 = 0; q_ind2 < k_dmn_t::dmn_size(); ++q_ind2) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu_ind1, w_ind); Loading Loading @@ -459,7 +459,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( Sigma_4H = 0.; func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -473,10 +473,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( int nu_ind1 = coordinates[0]; int q_ind1 = coordinates[1]; // for(int nu_ind1=0; nu_ind1<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind1){ // for(int nu_ind1=0; nu_ind1<WVertexBosonicDmn::dmn_size(); ++nu_ind1){ // for(int q_ind1=0; q_ind1<k_dmn_t::dmn_size(); ++q_ind1){ for (int nu_ind2 = 0; nu_ind2 < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind2) { for (int nu_ind2 = 0; nu_ind2 < WVertexBosonicDmn::dmn_size(); ++nu_ind2) { for (int q_ind2 = 0; q_ind2 < k_dmn_t::dmn_size(); ++q_ind2) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu1 = subtract_freq_bf(nu_ind1, w_ind); Loading Loading @@ -527,7 +527,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( Sigma_4J = 0.; for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for(int w1_ind=0; w1_ind<w::dmn_size(); ++w1_ind){ Loading @@ -539,7 +539,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4H( int nu_minus_w2 = subtract_freq_fb(w2_ind, nu_ind); if(nu_minus_w2 < 0 || nu_minus_w2 >= w::dmn_size()) continue; int nu_minus_w1_minus_w2 = subtract_freq_ff(w2_ind, nu_minus_w1); if(nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) continue; if(nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for(int p2_ind=0; p2_ind<k_dmn_t::dmn_size(); ++p2_ind){ for(int w_ind=0; w_ind<w::dmn_size(); ++w_ind){ Loading Loading @@ -587,10 +587,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( Sigma_4J = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -604,7 +604,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -617,7 +617,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( if (nu_minus_w2 < 0 || nu_minus_w2 >= w::dmn_size()) continue; int nu_minus_w1_minus_w2 = subtract_freq_ff(w2_ind, nu_minus_w1); if (nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (nu_minus_w1_minus_w2 < 0 || nu_minus_w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_minus_p1 = k_dmn_t::parameters_type::subtract(p1_ind, q_ind); Loading @@ -637,7 +637,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4J( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int nu_minus_w = subtract_freq_fb(w_ind, nu_ind); Loading Loading @@ -674,10 +674,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( Sigma_4K = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -691,7 +691,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -704,7 +704,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( if (nu_plus_w2 < 0 || nu_plus_w2 >= w::dmn_size()) continue; int nu_plus_w1_plus_w2 = add_freq_ff(nu_plus_w1, w2_ind); if (nu_plus_w1_plus_w2 < 0 || nu_plus_w1_plus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (nu_plus_w1_plus_w2 < 0 || nu_plus_w1_plus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_plus_p1 = k_dmn_t::parameters_type::add(q_ind, p1_ind); Loading @@ -724,7 +724,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4K( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_bf(nu_ind, w_ind); Loading Loading @@ -761,10 +761,10 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( Sigma_4L = 0.; func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexDmn_BOSONIC>> func::function<std::complex<double>, func::dmn_variadic<nu, nu, k_dmn_t, WVertexBosonicDmn>> F; // Calculating part independent of k func::dmn_variadic<WVertexDmn_BOSONIC, k_dmn_t> dmn; func::dmn_variadic<WVertexBosonicDmn, k_dmn_t> dmn; dca::parallel::ThreadManagerSum<concurrency_t> sum_manager(concurrency); do { Loading @@ -778,7 +778,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( int nu_ind = coordinates[0]; int q_ind = coordinates[1]; // for(int nu_ind=0; nu_ind<WVertexDmn_BOSONIC::dmn_size(); ++nu_ind){ // for(int nu_ind=0; nu_ind<WVertexBosonicDmn::dmn_size(); ++nu_ind){ // for(int q_ind=0; q_ind<k_dmn_t::dmn_size(); ++q_ind){ for (int w1_ind = 0; w1_ind < w::dmn_size(); ++w1_ind) { Loading @@ -791,7 +791,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( if (nu_plus_w2 < 0 || nu_plus_w2 >= w::dmn_size()) continue; int w1_minus_w2 = subtract_freq_ff(w2_ind, w1_ind); if (w1_minus_w2 < 0 || w1_minus_w2 >= WVertexDmn_BOSONIC::dmn_size()) if (w1_minus_w2 < 0 || w1_minus_w2 >= WVertexBosonicDmn::dmn_size()) continue; for (int p2_ind = 0; p2_ind < k_dmn_t::dmn_size(); ++p2_ind) { int q_plus_p1 = k_dmn_t::parameters_type::add(q_ind, p1_ind); Loading @@ -811,7 +811,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( delete[] coordinates; } while (!sum_manager.sum_and_check(F)); for (int nu_ind = 0; nu_ind < WVertexDmn_BOSONIC::dmn_size(); ++nu_ind) { for (int nu_ind = 0; nu_ind < WVertexBosonicDmn::dmn_size(); ++nu_ind) { for (int q_ind = 0; q_ind < k_dmn_t::dmn_size(); ++q_ind) { for (int w_ind = 0; w_ind < w::dmn_size(); ++w_ind) { int w_minus_nu = subtract_freq_bf(nu_ind, w_ind); Loading Loading @@ -842,7 +842,7 @@ void sigma_perturbation<4, parameters_type, k_dmn_t>::execute_4L( template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, int w2) { int w_f = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w2 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w2 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_b - w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } Loading @@ -850,7 +850,7 @@ int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_fb(int w1, in template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_bf(int w1, int w2) { int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int res = ((w_f - w_b) - 1 + w::dmn_size()) / 2; // result is fermionic return res; } Loading @@ -859,7 +859,7 @@ template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::subtract_freq_ff(int w1, int w2) { int w_f1 = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_f2 = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_f2 - w_f1) + WVertexDmn_BOSONIC::dmn_size()) / 2; // result is bosonic int res = ((w_f2 - w_f1) + WVertexBosonicDmn::dmn_size()) / 2; // result is bosonic return res; } Loading @@ -867,13 +867,13 @@ template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::add_freq_ff(int w1, int w2) { int w_f1 = 2 * (w1 - w::dmn_size() / 2) + 1; // transform fermionic int w_f2 = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_f1 + w_f2) + WVertexDmn_BOSONIC::dmn_size()) / 2; // result is bosonic int res = ((w_f1 + w_f2) + WVertexBosonicDmn::dmn_size()) / 2; // result is bosonic return res; } template <class parameters_type, class k_dmn_t> int sigma_perturbation<4, parameters_type, k_dmn_t>::add_freq_bf(int w1, int w2) { int w_b = 2 * (w1 - WVertexDmn_BOSONIC::dmn_size() / 2); // transform bosonic int w_b = 2 * (w1 - WVertexBosonicDmn::dmn_size() / 2); // transform bosonic int w_f = 2 * (w2 - w::dmn_size() / 2) + 1; // transform fermionic int res = ((w_b + w_f) - 1 + w::dmn_size()) / 2; // result is fermionic return res; Loading