From 0a76178bd41fc06b73f8cc763cbd8d43283da8a3 Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Mon, 26 Jan 2026 17:05:36 -0500 Subject: [PATCH 1/6] add impurity prefix to output files; fix spin-symmetry in Uijkl --- src/green/impurity/inchworm_inpurity_solver.h | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/green/impurity/inchworm_inpurity_solver.h b/src/green/impurity/inchworm_inpurity_solver.h index fec19e2..2d92f36 100644 --- a/src/green/impurity/inchworm_inpurity_solver.h +++ b/src/green/impurity/inchworm_inpurity_solver.h @@ -50,7 +50,7 @@ namespace green::impurity { // One-body term // Static: { - std::ofstream hooping_file("hopping.txt"); + std::ofstream hooping_file("imp_" + std::to_string(imp_n) + "_hopping.txt"); for (size_t i = 0; i < nio; ++i) { for (size_t s1 = 0; s1 < ns; ++s1) { for (size_t j = 0; j < nio; ++j) { @@ -75,7 +75,7 @@ namespace green::impurity { MMatrixX> delta_t_m(delta_t.data(), _uxl.shape()[0], ns * nio * nio); CMMatrixX> delta_w_m(delta_w.data(), delta_w.shape()[0], ns * nio * nio); delta_t_m = Ttc_even * Tcn * delta_w_m * std::sqrt(2.0 / ft.sd().beta()); - std::ofstream delta_file("delta.txt"); + std::ofstream delta_file("imp_" + std::to_string(imp_n) + "_delta.txt"); for (size_t t = 0; t < delta_t.shape()[0]; ++t) { for (size_t i = 0; i < nio; ++i) { for (size_t s1 = 0; s1 < ns; ++s1) { @@ -92,40 +92,42 @@ namespace green::impurity { } } } - // Two-body term + // Two-body term with spin symmetry + // NOTE: Whether or not we break spin-symmetry in G, or even in relativistic cases, U will still have spin-symmetry. + // TODO: Fully relativistic GW, beyond X2C will require modifications { // transform interaction into physics convention + // Only consider terms of the form U( i s1; j s2; k s1; l s2) auto interaction_phys = ndarray::transpose(interaction, "ijkl->ikjl"); size_t non_zero = 0; - for (size_t i = 0; i < nio * ns; ++i) { - for (size_t j = 0; j < nio * ns; ++j) { - for (size_t k = 0; k < nio * ns; ++k) { - for (size_t l = 0; l < nio * ns; ++l) { - size_t I = i / ns; - size_t J = j / ns; - size_t K = k / ns; - size_t L = l / ns; - if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) { - ++non_zero; + for (size_t s1 = 0; s1 < ns; ++s1) { + for (size_t s2 = 0; s2 < ns; ++s2) { + for (size_t I = 0; I < nio; ++I) { + for (size_t J = 0; J < nio; ++J) { + for (size_t K = 0; K < nio; ++K) { + for (size_t L = 0; L < nio; ++L) { + if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) ++non_zero; + } } } } } } - std::ofstream U_file("Uijkl.txt"); + std::ofstream U_file("imp_" + std::to_string(imp_n) + "_Uijkl.txt"); U_file << non_zero << "\n"; int idx = 0; - for (size_t i = 0; i < nio * ns; ++i) { - for (size_t j = 0; j < nio * ns; ++j) { - for (size_t k = 0; k < nio * ns; ++k) { - for (size_t l = 0; l < nio * ns; ++l) { - size_t I = i / ns; - size_t J = j / ns; - size_t K = k / ns; - size_t L = l / ns; - if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) { - U_file << idx << "\t" << i << " " << j << " " << k << " " << l << " " << interaction_phys(I, J, K, L) << " " << 0.0 << "\n"; - ++idx; + for (size_t s1 = 0; s1 < ns; ++s1) { + for (size_t s2 = 0; s2 < ns; ++s2) { + for (size_t I = 0; I < nio; ++I) { + for (size_t J = 0; J < nio; ++J) { + for (size_t K = 0; K < nio; ++K) { + for (size_t L = 0; L < nio; ++L) { + if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) { + U_file << idx << "\t" << I * ns + s1 << " " << J * ns + s2 << " " << K * ns + s1 << " " << L * ns + s2 + << " " << interaction_phys(I, J, K, L) << " " << 0.0 << "\n"; + ++idx; + } + } } } } From e2228996525e85d156e6425b144baa1e22ad0399 Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Wed, 28 Jan 2026 00:58:36 -0500 Subject: [PATCH 2/6] add test case for inchworm workflow --- test/data/transform.h5 | Bin 19296 -> 108608 bytes test/impurity_solver_test.cpp | 36 ++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/test/data/transform.h5 b/test/data/transform.h5 index d380081917d9998d5359ff71c5763ef1fc1a47ec..8f91e934e53642d1248118069e9d5f545a0081d7 100644 GIT binary patch literal 108608 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
vQmJRhHgus`N0;lD^KFpyr)75F2XbEBVWIV< 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 delta 63 zcmX?bf$hOG#t9nC3Em77wObh_Hg05RVl #include +#include namespace green::impurity { ztensor<4> compute_local_obj(const ztensor<5>& obj, const ztensor<3>& x_k, const grids::transformer_t& ft, const bz_utils_t& bz_utils, size_t ns, size_t nso) { @@ -57,7 +58,7 @@ namespace green::impurity { } } -TEST_CASE("Impurity Solver") { +void impurity_solver_test(std::string impurity_solver_type) { std::string test_file = TEST_PATH + "/data.h5"s; std::string bath_file = TEST_PATH + "/bath.txt"s; std::string input_file = TEST_PATH + "/transform.h5"s; @@ -69,12 +70,15 @@ TEST_CASE("Impurity Solver") { green::grids::define_parameters(p); p.define("spin_symm", "", false); p.define("bath_file", "", bath_file); - p.define("impurity_solver", "", "ED"); + p.define("impurity_solver", "", impurity_solver_type); p.define("impurity_solver_exec", "", "/bin/true"); p.define("impurity_solver_params", "", ""); p.define("dc_data_prefix", "", ""); p.define("seet_root_dir", "", TEST_PATH + ""s); p.define("seet_input", "", input_file); + if (impurity_solver_type == "INCHWORM") { + p.define("itermax", "", "1"); + } p.parse("test --BETA 100 --grid_file " + grid_file + " --input_file " + weak_input_file ); @@ -123,6 +127,34 @@ TEST_CASE("Impurity Solver") { solver.solve(mu, ovlp, h_core, sigma1, sigma, g); } +TEST_CASE("Impurity Solver") { + SECTION("ED") { impurity_solver_test("ED"); } + SECTION("INCHWORM") { + impurity_solver_test("INCHWORM"); + // Check if Hamiltonian data files were created successfully for all impurities + REQUIRE(std::filesystem::exists("imp_0_hopping.txt")); + REQUIRE(std::filesystem::exists("imp_0_delta.txt")); + REQUIRE(std::filesystem::exists("imp_0_Uijkl.txt")); + REQUIRE(std::filesystem::exists("imp_1_hopping.txt")); + REQUIRE(std::filesystem::exists("imp_1_delta.txt")); + REQUIRE(std::filesystem::exists("imp_1_Uijkl.txt")); + // Check if files have something in them - not checking for exact values + REQUIRE(std::filesystem::file_size("imp_0_hopping.txt")); + REQUIRE(std::filesystem::file_size("imp_0_delta.txt")); + REQUIRE(std::filesystem::file_size("imp_0_Uijkl.txt")); + REQUIRE(std::filesystem::file_size("imp_1_hopping.txt")); + REQUIRE(std::filesystem::file_size("imp_1_delta.txt")); + REQUIRE(std::filesystem::file_size("imp_1_Uijkl.txt")); + // Cleanup: Remove all files + REQUIRE(std::filesystem::remove("imp_0_hopping.txt")); + REQUIRE(std::filesystem::remove("imp_0_delta.txt")); + REQUIRE(std::filesystem::remove("imp_0_Uijkl.txt")); + REQUIRE(std::filesystem::remove("imp_1_hopping.txt")); + REQUIRE(std::filesystem::remove("imp_1_delta.txt")); + REQUIRE(std::filesystem::remove("imp_1_Uijkl.txt")); + } +} + int main(int argc, char** argv) { MPI_Init(&argc, &argv); int result = Catch::Session().run(argc, argv); From 8a1dbc13d3db960df2c7ef64848d612941be5ed7 Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Thu, 29 Jan 2026 02:00:32 -0500 Subject: [PATCH 3/6] clean up Uijkl output for Inchworm workflow --- src/green/impurity/inchworm_inpurity_solver.h | 67 ++++++++++++------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/src/green/impurity/inchworm_inpurity_solver.h b/src/green/impurity/inchworm_inpurity_solver.h index 2d92f36..9abc7a5 100644 --- a/src/green/impurity/inchworm_inpurity_solver.h +++ b/src/green/impurity/inchworm_inpurity_solver.h @@ -47,6 +47,8 @@ namespace green::impurity { ztensor<4> sigma_new(delta_w.shape()); size_t nio = h_core.shape()[1]; size_t ns = h_core.shape()[0]; + bool rhf = (ns == 1); + if (rhf) std::cout << "Detected ns = 1; Assuming this is RHF. Support for relativistic cases not implemented yet." << std::endl; // One-body term // Static: { @@ -93,22 +95,25 @@ namespace green::impurity { } } // Two-body term with spin symmetry - // NOTE: Whether or not we break spin-symmetry in G, or even in relativistic cases, U will still have spin-symmetry. - // TODO: Fully relativistic GW, beyond X2C will require modifications + // NOTE: Whether or not we break spin-symmetry in G, or even in x2c relativistic cases, U will still have spin-symmetry. { - // transform interaction into physics convention - // Only consider terms of the form U( i s1; j s2; k s1; l s2) - auto interaction_phys = ndarray::transpose(interaction, "ijkl->ikjl"); + size_t ndim_increment = (rhf) ? 1 : 4; // restricted vs unrestricted + size_t spin_decrement = (rhf) ? 0 : 2; // avoid double creation/annihilation in same spin-orbitals size_t non_zero = 0; - for (size_t s1 = 0; s1 < ns; ++s1) { - for (size_t s2 = 0; s2 < ns; ++s2) { - for (size_t I = 0; I < nio; ++I) { - for (size_t J = 0; J < nio; ++J) { - for (size_t K = 0; K < nio; ++K) { - for (size_t L = 0; L < nio; ++L) { - if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) ++non_zero; - } + bool is_non_zero = false; + for (size_t I = 0; I < nio; ++I) { + for (size_t J = 0; J < nio; ++J) { + for (size_t K = 0; K < nio; ++K) { + for (size_t L = 0; L < nio; ++L) { + is_non_zero = std::abs(interaction(I, J, K, L)) > 1e-10; // if interaction is below threshold, skip + if (!is_non_zero) continue; // forget all logic and skip if interaction is zero + if (rhf) { + non_zero += ndim_increment; + continue; } + // uhf case + non_zero += ndim_increment; + if (I == K || J == L) non_zero -= spin_decrement; // remove (up up up up) and(dn dn dn dn) } } } @@ -116,18 +121,30 @@ namespace green::impurity { std::ofstream U_file("imp_" + std::to_string(imp_n) + "_Uijkl.txt"); U_file << non_zero << "\n"; int idx = 0; - for (size_t s1 = 0; s1 < ns; ++s1) { - for (size_t s2 = 0; s2 < ns; ++s2) { - for (size_t I = 0; I < nio; ++I) { - for (size_t J = 0; J < nio; ++J) { - for (size_t K = 0; K < nio; ++K) { - for (size_t L = 0; L < nio; ++L) { - if (std::abs(interaction_phys(I, J, K, L)) > 1e-10) { - U_file << idx << "\t" << I * ns + s1 << " " << J * ns + s2 << " " << K * ns + s1 << " " << L * ns + s2 - << " " << interaction_phys(I, J, K, L) << " " << 0.0 << "\n"; - ++idx; - } - } + for (size_t i = 0; i < nio * ns; ++i) { + for (size_t j = 0; j < nio * ns; ++j) { + for (size_t k = 0; k < nio * ns; ++k) { + for (size_t l = 0; l < nio * ns; ++l) { + size_t I = i / ns; + size_t J = j / ns; + size_t K = k / ns; + size_t L = l / ns; + is_non_zero = std::abs(interaction(I, J, K, L)) > 1e-10; // if interaction is below threshold, skip + if (!is_non_zero) continue; + if (rhf) { + U_file << idx << "\t" << i << " " << j << " " << k << " " << l << " " << interaction(I, J, K, L) << " " << 0.0 << "\n"; + ++idx; + } else { + // Deal with spin only for UHF + size_t s1 = i % ns; + size_t s2 = j % ns; + size_t s3 = k % ns; + size_t s4 = l % ns; + if (i == k || j == l) continue; // ignore double creation/annihilation in same spin-orbitals + if (s1 != s2 || s3 != s4) continue; // ignore spin-flip terms + // what remains is a valid term in Uijkl + U_file << idx << "\t" << i << " " << j << " " << k << " " << l << " " << interaction(I, J, K, L) << " " << 0.0 << "\n"; + ++idx; } } } From 1c09f16d388b94bf2fd85743cddf15e583e08007 Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Thu, 29 Jan 2026 02:21:35 -0500 Subject: [PATCH 4/6] Update test/impurity_solver_test.cpp remove require() on cleanup Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- test/impurity_solver_test.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/impurity_solver_test.cpp b/test/impurity_solver_test.cpp index ae66230..3029fd2 100644 --- a/test/impurity_solver_test.cpp +++ b/test/impurity_solver_test.cpp @@ -145,13 +145,13 @@ TEST_CASE("Impurity Solver") { REQUIRE(std::filesystem::file_size("imp_1_hopping.txt")); REQUIRE(std::filesystem::file_size("imp_1_delta.txt")); REQUIRE(std::filesystem::file_size("imp_1_Uijkl.txt")); - // Cleanup: Remove all files - REQUIRE(std::filesystem::remove("imp_0_hopping.txt")); - REQUIRE(std::filesystem::remove("imp_0_delta.txt")); - REQUIRE(std::filesystem::remove("imp_0_Uijkl.txt")); - REQUIRE(std::filesystem::remove("imp_1_hopping.txt")); - REQUIRE(std::filesystem::remove("imp_1_delta.txt")); - REQUIRE(std::filesystem::remove("imp_1_Uijkl.txt")); + // Cleanup: Remove all files (best-effort; do not fail test on cleanup) + std::filesystem::remove("imp_0_hopping.txt"); + std::filesystem::remove("imp_0_delta.txt"); + std::filesystem::remove("imp_0_Uijkl.txt"); + std::filesystem::remove("imp_1_hopping.txt"); + std::filesystem::remove("imp_1_delta.txt"); + std::filesystem::remove("imp_1_Uijkl.txt"); } } From 206f824650baede6dc31598553b6e4b8bf261a94 Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Thu, 29 Jan 2026 02:35:21 -0500 Subject: [PATCH 5/6] add extra comments for logic of Uijkl, address other minor suggestions in Copilot review --- src/green/impurity/inchworm_inpurity_solver.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/green/impurity/inchworm_inpurity_solver.h b/src/green/impurity/inchworm_inpurity_solver.h index 9abc7a5..78bc395 100644 --- a/src/green/impurity/inchworm_inpurity_solver.h +++ b/src/green/impurity/inchworm_inpurity_solver.h @@ -100,27 +100,31 @@ namespace green::impurity { size_t ndim_increment = (rhf) ? 1 : 4; // restricted vs unrestricted size_t spin_decrement = (rhf) ? 0 : 2; // avoid double creation/annihilation in same spin-orbitals size_t non_zero = 0; - bool is_non_zero = false; for (size_t I = 0; I < nio; ++I) { for (size_t J = 0; J < nio; ++J) { for (size_t K = 0; K < nio; ++K) { for (size_t L = 0; L < nio; ++L) { - is_non_zero = std::abs(interaction(I, J, K, L)) > 1e-10; // if interaction is below threshold, skip - if (!is_non_zero) continue; // forget all logic and skip if interaction is zero + if (std::abs(interaction(I, J, K, L)) < 1e-10) continue; // forget all logic and skip if interaction is zero if (rhf) { non_zero += ndim_increment; continue; } // uhf case + // if I == K or J == L, it warrants that the spin label of I and K will be opposite, + // and by construction spin of I = spin of J and spin of K = spin of L, + // so when (I==K) or (J==L) or both, we need to remove two combinations: + // (up up up up) and (dn dn dn dn) non_zero += ndim_increment; - if (I == K || J == L) non_zero -= spin_decrement; // remove (up up up up) and(dn dn dn dn) + if (I == K || J == L) non_zero -= spin_decrement; } } } } + std::cout << "NOTE: Will write interaction tensor in the Chemist notation!" << std::endl; + std::cout << "i.,e., U(ijkl) cdag_i cdag_k c_l c_j" << std::endl; std::ofstream U_file("imp_" + std::to_string(imp_n) + "_Uijkl.txt"); U_file << non_zero << "\n"; - int idx = 0; + size_t idx = 0; for (size_t i = 0; i < nio * ns; ++i) { for (size_t j = 0; j < nio * ns; ++j) { for (size_t k = 0; k < nio * ns; ++k) { @@ -129,8 +133,7 @@ namespace green::impurity { size_t J = j / ns; size_t K = k / ns; size_t L = l / ns; - is_non_zero = std::abs(interaction(I, J, K, L)) > 1e-10; // if interaction is below threshold, skip - if (!is_non_zero) continue; + if (std::abs(interaction(I, J, K, L)) < 1e-10) continue; if (rhf) { U_file << idx << "\t" << i << " " << j << " " << k << " " << l << " " << interaction(I, J, K, L) << " " << 0.0 << "\n"; ++idx; @@ -140,7 +143,7 @@ namespace green::impurity { size_t s2 = j % ns; size_t s3 = k % ns; size_t s4 = l % ns; - if (i == k || j == l) continue; // ignore double creation/annihilation in same spin-orbitals + if (i == k || j == l) continue; // ignore double creation/annihilation in same spin-orbitals (different from I,J,K,L which are atomic orbitals) if (s1 != s2 || s3 != s4) continue; // ignore spin-flip terms // what remains is a valid term in Uijkl U_file << idx << "\t" << i << " " << j << " " << k << " " << l << " " << interaction(I, J, K, L) << " " << 0.0 << "\n"; From 9bd69447fa56bc8bbe8342dcb340e9d7bea0cc8c Mon Sep 17 00:00:00 2001 From: Gaurav Harsha Date: Thu, 29 Jan 2026 14:57:22 -0500 Subject: [PATCH 6/6] make tests more reigorous --- test/impurity_solver_test.cpp | 73 +++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/test/impurity_solver_test.cpp b/test/impurity_solver_test.cpp index 3029fd2..2a500d2 100644 --- a/test/impurity_solver_test.cpp +++ b/test/impurity_solver_test.cpp @@ -138,13 +138,72 @@ TEST_CASE("Impurity Solver") { REQUIRE(std::filesystem::exists("imp_1_hopping.txt")); REQUIRE(std::filesystem::exists("imp_1_delta.txt")); REQUIRE(std::filesystem::exists("imp_1_Uijkl.txt")); - // Check if files have something in them - not checking for exact values - REQUIRE(std::filesystem::file_size("imp_0_hopping.txt")); - REQUIRE(std::filesystem::file_size("imp_0_delta.txt")); - REQUIRE(std::filesystem::file_size("imp_0_Uijkl.txt")); - REQUIRE(std::filesystem::file_size("imp_1_hopping.txt")); - REQUIRE(std::filesystem::file_size("imp_1_delta.txt")); - REQUIRE(std::filesystem::file_size("imp_1_Uijkl.txt")); + // Check hopping file data + { + std::ifstream hop_file("imp_0_hopping.txt"); + std::string line; + size_t n_terms = 16; + size_t count = 0; + while (std::getline(hop_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } + { + std::ifstream hop_file("imp_1_hopping.txt"); + std::string line; + size_t n_terms = 16; + size_t count = 0; + while (std::getline(hop_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } + // Check Delta file data + { + std::ifstream delta_file("imp_0_delta.txt"); + std::string line; + size_t n_terms = 16 * 101; + size_t count = 0; + while (std::getline(delta_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } + { + std::ifstream delta_file("imp_1_delta.txt"); + std::string line; + size_t n_terms = 16 * 101; + size_t count = 0; + while (std::getline(delta_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } + // Check Uijkl file data + { + std::ifstream U_file("imp_0_Uijkl.txt"); + std::string line; + // read number of non-zero terms from the heaer + std::getline(U_file, line); + size_t n_terms = std::stol(line); + size_t count = 0; + while (std::getline(U_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } + { + std::ifstream U_file("imp_1_Uijkl.txt"); + std::string line; + std::getline(U_file, line); + size_t n_terms = std::stol(line); + size_t count = 0; + while (std::getline(U_file, line)) { + ++count; + } + REQUIRE(n_terms == count); + } // Cleanup: Remove all files (best-effort; do not fail test on cleanup) std::filesystem::remove("imp_0_hopping.txt"); std::filesystem::remove("imp_0_delta.txt");