From db86013b6a27b088a5be842a21f1be110f7706f2 Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:36:22 +0300 Subject: [PATCH 01/11] add few local files --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index b8b75c4..eb48f60 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,8 @@ examples/local_testing2.ipynb src/RSI_tk.jl RhombGraph.ipynb logo_tensorBinding.svg +examples/nontracked/ +GPU_tk.jl +Conductivity_tk.jl +TensorBinding_JOSS_AI_tex.txt +TensorBinding_JOSS_AI.txt \ No newline at end of file From 8456475b8fbbfedd5043f8dd77f4a4587d948c09 Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:36:37 +0300 Subject: [PATCH 02/11] added logo --- logo_TensorBinding_v0.png | Bin 0 -> 159916 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logo_TensorBinding_v0.png diff --git a/logo_TensorBinding_v0.png b/logo_TensorBinding_v0.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc4070e812e6c4ed65983920817d6a42fd98fd6 GIT binary patch literal 159916 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%0Dh!&;aem``C=Zu{H1#ds_^ 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 Date: Tue, 26 May 2026 12:37:13 +0300 Subject: [PATCH 03/11] removed plotting packages and TCIITensorConversion --- Project.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Project.toml b/Project.toml index 515e642..457a649 100644 --- a/Project.toml +++ b/Project.toml @@ -10,13 +10,9 @@ ITensorMPS = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2" ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" NDTensors = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" -PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee" Quantics = "87f76fb3-a40a-40c9-a63c-29fcfe7b7547" QuanticsGrids = "634c7f73-3e90-4749-a1bd-001b8efc642d" QuanticsTCI = "b11687fd-3a1c-4c41-97d0-998ab401d50e" -TCIITensorConversion = "9f0aa9f4-9415-4e6a-8795-331ebf40aa04" TensorCrossInterpolation = "b261b2ec-6378-4871-b32e-9173bb050604" [compat] From c7c7aa0bf361d99584a427d7f1d6fcbd33e76aa1 Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:39:23 +0300 Subject: [PATCH 04/11] added local files --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index eb48f60..ab20e23 100644 --- a/.gitignore +++ b/.gitignore @@ -14,5 +14,5 @@ logo_tensorBinding.svg examples/nontracked/ GPU_tk.jl Conductivity_tk.jl -TensorBinding_JOSS_AI_tex.txt -TensorBinding_JOSS_AI.txt \ No newline at end of file +TensorBinding_JOSS_AI.txt + From 5cd37ea9fe71aff86251b67432a570da184040ad Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:39:48 +0300 Subject: [PATCH 05/11] minor --- examples/getting_started.ipynb | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/examples/getting_started.ipynb b/examples/getting_started.ipynb index 4dcccb0..96f1c60 100644 --- a/examples/getting_started.ipynb +++ b/examples/getting_started.ipynb @@ -1,17 +1,4 @@ { - "nbformat": 4, - "nbformat_minor": 5, - "metadata": { - "kernelspec": { - "display_name": "Julia 1.10", - "language": "julia", - "name": "julia-1.10" - }, - "language_info": { - "name": "julia", - "version": "1.10.0" - } - }, "cells": [ { "cell_type": "markdown", @@ -291,5 +278,18 @@ "three_panel(H_sc, omega_sc; Ncheb=Ncheb, mdim=mdim, title_prefix=\"BdG Delta=$(Delta)\")" ] } - ] -} \ No newline at end of file + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.12", + "language": "julia", + "name": "julia-1.12" + }, + "language_info": { + "name": "julia", + "version": "1.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From ae105ab65d80e65567fe9a489d01432477fa630c Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:42:05 +0300 Subject: [PATCH 06/11] refactor: move plotting helpers out of src/2D_lattice.jl --- src/2D_lattice.jl | 170 +--------------------------------------------- 1 file changed, 1 insertion(+), 169 deletions(-) diff --git a/src/2D_lattice.jl b/src/2D_lattice.jl index 3e1d3e5..71cc071 100644 --- a/src/2D_lattice.jl +++ b/src/2D_lattice.jl @@ -1648,172 +1648,4 @@ _geom_n_sub(::Val{:kagome}) = 3 _geom_n_sub(::Val{:lieb}) = 3 _geom_n_sub(::Val{:dice}) = 4 -""" - plot_ldos_2d(ldos_mat, ωlist, ω_target; - geometry, Lx, Ly, - markersize, colormap, colorbar, clims, title, kwargs...) - -> Plot - -Scatter plot of the spatial LDOS at the energy in `ωlist` nearest to `ω_target`. -Each atom in the geometry is drawn as a coloured dot. - -**Arguments** - -- `ldos_mat` : `(Nω × n_atoms)` matrix as returned by `get_ldos_spatial` with - `num_x = H.N`. Column `k` maps to atom `k` in the positions matrix of the - geometry (interleaved order `[A₀, B₀, …]`). Pass the full-lattice matrix from - `get_ldos_spatial` directly — no sublattice filtering required: - - `proj_sl=k` result: only sublattice `k` atoms carry weight, others are zero. - - `proj_sl=nothing` result: every atom carries its own sublattice LDOS. -- `geometry` : `:honeycomb`, `:kagome`, `:lieb`, or `:dice`. -- `Lx`, `Ly` : log₂ grid dimensions (same values passed to the constructor). - -An assertion checks that `size(ldos_mat, 2) == n_atoms`; the error message -reminds the user to call `get_ldos_spatial` with `num_x = H.N`. - -Examples --------- -```julia -# Single sublattice (only A atoms lit up, B atoms zero) -p1 = plot_ldos_2d(ldos_A, ωlist, 0.5; geometry=:honeycomb, Lx=2, Ly=2) - -# All sublattices — every atom coloured by its own LDOS -ldos_all = get_ldos_spatial(H_kg, 100, ωlist; num_x=H_kg.N) -p = plot_ldos_2d(ldos_all, ωlist, -2.0; geometry=:kagome, Lx=2, Ly=2, - markersize=14, colormap=:plasma) -``` -""" -function plot_ldos_2d(ldos_mat::AbstractMatrix, ωlist, ω_target; - geometry::Symbol = :honeycomb, - Lx::Int, - Ly::Int, - markersize::Real = 12.0, - colormap::Symbol = :inferno, - colorbar::Bool = true, - clims = nothing, - title::String = "", - kwargs...) - positions_all = _geom_positions(Val(geometry), Lx, Ly) - n_atoms = size(positions_all, 1) - n_cols = size(ldos_mat, 2) - n_atoms == n_cols || error( - "plot_ldos_2d: ldos_mat has $n_cols columns but geometry has $n_atoms atoms. " * - "Call get_ldos_spatial with num_x=H.N so each column maps to one atom.") - - ω_arr = collect(ωlist) - ω_idx = argmin(abs.(ω_arr .- ω_target)) - ω_actual = ω_arr[ω_idx] - vals = ldos_mat[ω_idx, :] # one value per atom, already in positions order - - cl = isnothing(clims) ? (0.0, maximum(vals) + eps(Float64)) : clims - tstr = isempty(title) ? "LDOS ω ≈ $(round(ω_actual; digits=3))" : title - - Plots.scatter(positions_all[:, 1], positions_all[:, 2]; - marker_z = vals, - color = colormap, - colorbar = colorbar, - clims = cl, - markersize = markersize, - markerstrokewidth = 0, - xlabel = "x", - ylabel = "y", - aspect_ratio = :equal, - title = tstr, - label = "", - kwargs...) -end - - -""" - plot_ldos_multilayer(ldos_layers, ωlist, ω_target; - stacking=:Bernal, geometry=:honeycomb, Lx, Ly, - markersize, colormap, colorbar, clims, title, kwargs...) - -> Plot - -Scatter plot of the multilayer LDOS **as seen from above** at the energy -nearest to `ω_target`. - -`ldos_layers` is a `Vector` of `(Nω × n_atoms)` matrices, one per layer, as -returned by - -```julia -ldos_layers = [get_ldos_spatial(H, Nc, ωlist; - proj_layer=k, num_x=H.N) for k in 1:n_layers] -``` - -**Geometry** - -For `:AA` stacking all layers share the same 2D positions; the result is a -single honeycomb with LDOS summed over all layers. - -For `:Bernal` stacking the odd and even layers form two physically distinct -groups: odd layers (1, 3, …) sit at the standard honeycomb positions and even -layers (2, 4, …) are displaced by the intra-cell A→B bond vector τ. The -function plots both groups together — a total of `2 × n_atoms` scatter points -— giving a visual picture of the two interlocked honeycomb sublattices that -make up the Bernal stack viewed from above. LDOS is summed independently -within each group (odd / even) without sublattice permutation, since the τ -shift already places even-layer atoms at their correct visual registry. -""" -function plot_ldos_multilayer(ldos_layers::AbstractVector{<:AbstractMatrix}, - ωlist, ω_target; - stacking::Symbol = :Bernal, - geometry::Symbol = :honeycomb, - Lx::Int, - Ly::Int, - markersize::Real = 10.0, - colormap::Symbol = :inferno, - colorbar::Bool = true, - clims = nothing, - title::String = "", - kwargs...) - stacking ∈ (:AA, :Bernal) || - error("plot_ldos_multilayer: unknown stacking :$stacking. Supported: :AA, :Bernal.") - - rs = _geom_positions(Val(geometry), Lx, Ly) # (n_atoms, 2) - Nω = size(ldos_layers[1], 1) - ω_arr = collect(ωlist) - ω_idx = argmin(abs.(ω_arr .- ω_target)) - ω_actual = ω_arr[ω_idx] - - if stacking === :AA - # All layers share the same positions: simple sum. - vals = sum(ldos_k[ω_idx, :] for ldos_k in ldos_layers) - cl = isnothing(clims) ? (0.0, maximum(vals) + eps(Float64)) : clims - tstr = isempty(title) ? "LDOS (AA top view) ω ≈ $(round(ω_actual; digits=3))" : title - return Plots.scatter(rs[:, 1], rs[:, 2]; - marker_z=vals, color=colormap, clims=cl, - colorbar=colorbar, markersize=markersize, - markerstrokewidth=0, aspect_ratio=:equal, - xlabel="x", ylabel="y", title=tstr, label="", - kwargs...) - end - - # ── Bernal: two groups of layers at two shifted honeycomb lattices ──────── - # τ = intra-cell A→B bond vector (first unit cell). - τ = rs[2, :] - rs[1, :] # (2,) displacement - - vals_odd = zeros(size(rs, 1)) # group 1: layers 1, 3, 5, … - vals_even = zeros(size(rs, 1)) # group 2: layers 2, 4, … - for (k, ldos_k) in enumerate(ldos_layers) - if isodd(k) - vals_odd .+= ldos_k[ω_idx, :] - else - vals_even .+= ldos_k[ω_idx, :] - end - end - - rs_even = rs .+ τ' # even-layer honeycomb, shifted by τ - all_pos = vcat(rs, rs_even) # (2*n_atoms, 2) - all_vals = vcat(vals_odd, vals_even) - - cl = isnothing(clims) ? (0.0, maximum(all_vals) + eps(Float64)) : clims - tstr = isempty(title) ? "LDOS (Bernal top view) ω ≈ $(round(ω_actual; digits=3))" : title - - Plots.scatter(all_pos[:, 1], all_pos[:, 2]; - marker_z=all_vals, color=colormap, clims=cl, - colorbar=colorbar, markersize=markersize, - markerstrokewidth=0, aspect_ratio=:equal, - xlabel="x", ylabel="y", title=tstr, label="", - kwargs...) -end +# plot_ldos_2d and plot_ldos_multilayer moved to examples/nontracked/TensorBinding_plots.jl From 060e2cbe86b303550f2cdf2b009855188319319a Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:42:16 +0300 Subject: [PATCH 07/11] minor --- src/KPM_tk.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KPM_tk.jl b/src/KPM_tk.jl index 0556ca3..cbb29e1 100644 --- a/src/KPM_tk.jl +++ b/src/KPM_tk.jl @@ -112,7 +112,7 @@ function KPM_Tn(H_mpo::MPO, N::Int, sites; if verbose if k%5 == 0 || k == N+1 # print info every 5 iterations and at the end println("Computed T_$((k-1)) with maxlinkdim = ", ITensorMPS.maxlinkdim(T_k)) - end + end end end From 34730afac60de934298aea5a8c5a6c2e729f5eea Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:43:30 +0300 Subject: [PATCH 08/11] add TBHamiltonian-aware conjugate_by_qft and displacement-embedding helpers Adds an overload of conjugate_by_qft(H, W) that applies the QFT only on position sites and uses identity at auxiliary sites. Adds _embed_in_full_sites (identity padding) and _embed_displacement_in_full_sites (all-ones padding, required so inter-sublattice/inter-layer current matrix elements are not zeroed out). --- src/QFT_tk.jl | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/src/QFT_tk.jl b/src/QFT_tk.jl index 9d3dff8..7c9df72 100644 --- a/src/QFT_tk.jl +++ b/src/QFT_tk.jl @@ -108,6 +108,84 @@ function conjugate_by_qft(W; tol=1e-9, maxdim::Int=100) end +""" + conjugate_by_qft(H::TBHamiltonian, W::MPO; tol, maxdim) -> MPO + +TBHamiltonian-aware version of `conjugate_by_qft`. Applies `U·W·U†` where +`U` is the QFT acting **only on the position (Qubit) sites** of `H`, with +identity operators at all auxiliary sites (Layer, spin, sublattice, Nambu). + +Use this overload whenever `W` lives on the full `H.sites` space (including +aux indices), as is the case in the bubble pipeline after `replace_sites`. +""" +function conjugate_by_qft(H::TBHamiltonian, W::MPO; tol=1e-9, maxdim::Int=100) + pos_s = _pos_sites(H) + R = length(pos_s) + FTirev_pos = fix_sites(MPO(TCI.reverse(QuanticsTCI.quanticsfouriermpo(R; sign=-1.0, normalize=true))), pos_s) + FTrev_pos = fix_sites(MPO(TCI.reverse(QuanticsTCI.quanticsfouriermpo(R; sign=+1.0, normalize=true))), pos_s) + FTirev = _embed_in_full_sites(H, FTirev_pos) + FTrev = _embed_in_full_sites(H, FTrev_pos) + Op1 = apply(W, FTirev; cutoff=tol, maxdim=maxdim) + Op2 = apply(swapprime(FTrev, 0 => 1), Op1; cutoff=tol, maxdim=maxdim) + return TCI.truncate(Op2; cutoff=tol, maxdim=maxdim) +end + + +""" + _embed_in_full_sites(H, mpo_pos) -> MPO + +Embed `mpo_pos` (which lives on `_pos_sites(H)`) into the full `H.sites` +space by prepending/appending dim-1 identity tensors at each auxiliary site. +""" +function _embed_in_full_sites(H::TBHamiltonian, mpo_pos::MPO) + pos_set = Set(_pos_sites(H)) + first_pos = findfirst(s -> s ∈ pos_set, H.sites) + last_pos = findlast( s -> s ∈ pos_set, H.sites) + pre_aux = H.sites[1:first_pos-1] + post_aux = H.sites[last_pos+1:end] + result = mpo_pos + for s in reverse(pre_aux) + result = mpo_kron(MPO([dense(delta(s, prime(s)))]), result) + end + for s in post_aux + result = mpo_kron(result, MPO([dense(delta(s, prime(s)))])) + end + return result +end + + +""" + _embed_displacement_in_full_sites(H, mpo_pos) -> MPO + +Like `_embed_in_full_sites` but pads auxiliary sites with all-ones matrices +instead of identity. Required for current-operator construction: the +displacement (xᵣ − xᵣ′) depends only on position, so it must be broadcast +uniformly across all auxiliary (sublattice, layer, spin, Nambu) index pairs, +including off-diagonal ones where physical hoppings exist. + +Using identity at an aux site with off-diagonal hoppings (e.g. sublattice A↔B +in honeycomb, or inter-layer tunneling in bilayers) would set those current +matrix elements to zero and give σ = 0. +""" +function _embed_displacement_in_full_sites(H::TBHamiltonian, mpo_pos::MPO) + pos_set = Set(_pos_sites(H)) + first_pos = findfirst(s -> s ∈ pos_set, H.sites) + last_pos = findlast( s -> s ∈ pos_set, H.sites) + pre_aux = H.sites[1:first_pos-1] + post_aux = H.sites[last_pos+1:end] + result = mpo_pos + for s in reverse(pre_aux) + ones_t = dense(ITensor(ones(Float64, dim(s), dim(s)), prime(s), s)) + result = mpo_kron(MPO([ones_t]), result) + end + for s in post_aux + ones_t = dense(ITensor(ones(Float64, dim(s), dim(s)), prime(s), s)) + result = mpo_kron(result, MPO([ones_t])) + end + return result +end + + # ============================================================ # 2. Legacy sublattice projection (mask sandwich) # From 22faeaecb9f3a84acb21eb9a5978d9301d58aaec Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:45:14 +0300 Subject: [PATCH 09/11] skip redundant density-matrix and KPM moment computation when H1 === H2 All five bubble pipeline variants (get_bubble_mpo, get_bubble_mpo_cheb2d, get_bubble_mpo_cheb2d_tucker, get_bubble_diag_cheb2d, get_bubble_diag_cheb2d_svd/tucker) now short-circuit P2 = P1 and Tn2 = Tn1 when both Hamiltonians are the same object, halving the most expensive steps for the self-bubble case. use replaceinds instead of delta contractions in replace_sites Replaces the MPOin[n] * delta(bra, prime(new)) * delta(ket, new) pattern with replaceinds, which is a metadata-only operation and avoids spurious tensor contractions. --- src/RPA_tk.jl | 130 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 46 deletions(-) diff --git a/src/RPA_tk.jl b/src/RPA_tk.jl index 3f58f5b..0621843 100644 --- a/src/RPA_tk.jl +++ b/src/RPA_tk.jl @@ -68,14 +68,14 @@ Replace the physical (bra + ket) indices of each site in `MPOin` with the corresponding index from `newsites`, preserving prime levels. """ function replace_sites(MPOin::MPO, newsites) - L = length(MPOin) + L = length(MPOin) indsMPO = siteinds(MPOin) T = MPO(L) for n in 1:L bra_old, ket_old = _bra_ket(indsMPO[n]) - T[n] = MPOin[n] * - delta(bra_old, prime(newsites[n])) * - delta(ket_old, newsites[n]) + T[n] = replaceinds(MPOin[n], + [bra_old, ket_old], + [prime(newsites[n]), newsites[n]]) end return T end @@ -576,10 +576,14 @@ function get_bubble_mpo(H1::TBHamiltonian, H2::TBHamiltonian, ω::Real; P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - verbose && println("Polarization bubble: computing P2...") - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + if H1 === H2 + P2 = P1 + else + verbose && println("Polarization bubble: computing P2...") + P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) + end # ---- Numerator: I₁⊗P₂ − P₁⊗I₂ ---- id1 = MPO(sites1, "Id") @@ -1279,20 +1283,28 @@ function get_bubble_mpo_cheb2d(H1::TBHamiltonian, H2::TBHamiltonian, Tn1, _, _ = KPM_Tn(H1.mpo, Ncheb, H1.sites; scale=scale1, center=center1, maxdim=maxdim, cutoff=cutoff, verbose=false) - verbose && println("cheb2d: building T_n(H2) moments...") - Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; - scale=scale2, center=center2, - maxdim=maxdim, cutoff=cutoff, verbose=false) + if H1 === H2 + Tn2 = Tn1 + else + verbose && println("cheb2d: building T_n(H2) moments...") + Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; + scale=scale2, center=center2, + maxdim=maxdim, cutoff=cutoff, verbose=false) + end N = length(Tn1) # = Ncheb + 1 (T_0 … T_Ncheb) verbose && println("cheb2d: computing P1...") P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - verbose && println("cheb2d: computing P2...") - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + if H1 === H2 + P2 = P1 + else + verbose && println("cheb2d: computing P2...") + P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) + end verbose && println("cheb2d: precomputing T_m(H1)·P1 and T_n(H2)·P2...") TP1 = [ITensorMPS.truncate!( @@ -1421,18 +1433,22 @@ function get_bubble_mpo_cheb2d_tucker(H1::TBHamiltonian, H2::TBHamiltonian, Tn1, _, _ = KPM_Tn(H1.mpo, Ncheb, H1.sites; scale=scale1, center=center1, maxdim=maxdim, cutoff=cutoff, verbose=false) - Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; - scale=scale2, center=center2, - maxdim=maxdim, cutoff=cutoff, verbose=false) + if H1 === H2 + Tn2 = Tn1 + else + Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; + scale=scale2, center=center2, + maxdim=maxdim, cutoff=cutoff, verbose=false) + end N = length(Tn1) verbose && println("cheb2d_mpo_tucker: computing density matrices...") P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + P2 = H1 === H2 ? P1 : _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) out_sites = siteinds("Qubit", L) @@ -1498,8 +1514,11 @@ function get_bubble_mpo_cheb2d_tucker(H1::TBHamiltonian, H2::TBHamiltonian, had_A = _hadamard_mpo(A_tuck[s1], B_tuck[s2], out_sites; maxdim=maxdim, cutoff=cutoff) had_B = _hadamard_mpo(C_tuck[s1], E_tuck[s2], out_sites; maxdim=maxdim, cutoff=cutoff) D_tuck[s1, s2] = ITensorMPS.truncate!(+(had_A, -1 * had_B; maxdim=maxdim); cutoff=cutoff) - - verbose && println(" ($s1,$s2)/($r_m,$r_n) done") + if verbose + idx = (s1 - 1) * r_n + s2 + (idx % 10 == 0 || idx == r_m * r_n) && + println(" ($s1,$s2)/($r_m,$r_n) done [$idx/$(r_m*r_n)]") + end end # ── Per-ω accumulation: scalar × MPO additions only ────────────────────── @@ -1582,20 +1601,28 @@ function get_bubble_diag_cheb2d(H1::TBHamiltonian, H2::TBHamiltonian, Tn1, _, _ = KPM_Tn(H1.mpo, Ncheb, H1.sites; scale=scale1, center=center1, maxdim=maxdim, cutoff=cutoff, verbose=false) - verbose && println("cheb2d_diag: building T_n(H2) moments...") - Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; - scale=scale2, center=center2, - maxdim=maxdim, cutoff=cutoff, verbose=false) + if H1 === H2 + Tn2 = Tn1 + else + verbose && println("cheb2d_diag: building T_n(H2) moments...") + Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; + scale=scale2, center=center2, + maxdim=maxdim, cutoff=cutoff, verbose=false) + end N = length(Tn1) verbose && println("cheb2d_diag: computing P1...") P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - verbose && println("cheb2d_diag: computing P2...") - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + if H1 === H2 + P2 = P1 + else + verbose && println("cheb2d_diag: computing P2...") + P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) + end verbose && println("cheb2d_diag: precomputing T_m(H1)·P1 and T_n(H2)·P2...") TP1 = [ITensorMPS.truncate!( @@ -1752,18 +1779,22 @@ function get_bubble_diag_cheb2d_svd(H1::TBHamiltonian, H2::TBHamiltonian, Tn1, _, _ = KPM_Tn(H1.mpo, Ncheb, H1.sites; scale=scale1, center=center1, maxdim=maxdim, cutoff=cutoff, verbose=false) - Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; - scale=scale2, center=center2, - maxdim=maxdim, cutoff=cutoff, verbose=false) + if H1 === H2 + Tn2 = Tn1 + else + Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; + scale=scale2, center=center2, + maxdim=maxdim, cutoff=cutoff, verbose=false) + end N = length(Tn1) verbose && println("cheb2d_diag_svd: computing density matrices...") P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + P2 = H1 === H2 ? P1 : _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) out_sites = siteinds("Qubit", L) @@ -1903,18 +1934,22 @@ function get_bubble_diag_cheb2d_tucker(H1::TBHamiltonian, H2::TBHamiltonian, Tn1, _, _ = KPM_Tn(H1.mpo, Ncheb, H1.sites; scale=scale1, center=center1, maxdim=maxdim, cutoff=cutoff, verbose=false) - Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; - scale=scale2, center=center2, - maxdim=maxdim, cutoff=cutoff, verbose=false) + if H1 === H2 + Tn2 = Tn1 + else + Tn2, _, _ = KPM_Tn(H2.mpo, Ncheb, H2.sites; + scale=scale2, center=center2, + maxdim=maxdim, cutoff=cutoff, verbose=false) + end N = length(Tn1) verbose && println("cheb2d_tucker: computing density matrices...") P1 = _get_density_matrix(H1, ϵF, P_method, Ncheb, maxdim, cutoff, purify_method, purify_maxdim, purify_maxiters, purify_tol, verbose) - P2 = _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, - purify_method, purify_maxdim, purify_maxiters, - purify_tol, verbose) + P2 = H1 === H2 ? P1 : _get_density_matrix(H2, ϵF, P_method, Ncheb, maxdim, cutoff, + purify_method, purify_maxdim, purify_maxiters, + purify_tol, verbose) out_sites = siteinds("Qubit", L) @@ -1986,8 +2021,11 @@ function get_bubble_diag_cheb2d_tucker(H1::TBHamiltonian, H2::TBHamiltonian, D_phys = replace_sites(D, H1.sites) D_k = conjugate_by_qft(D_phys; tol=qft_tol, maxdim=qft_maxdim) diag_D[s1, s2] = ITensorMPS.truncate!(extract_diagonal_to_mps(D_k); cutoff=cutoff) - - verbose && println(" ($s1,$s2)/($r_m,$r_n) done") + if verbose + idx = (s1 - 1) * r_n + s2 + (idx % 10 == 0 || idx == r_m * r_n) && + println(" ($s1,$s2)/($r_m,$r_n) done [$idx/$(r_m*r_n)]") + end end # ── Accumulate per ω: scalar × MPS additions only ──────────────────────── From 303d2574120dd4c75309863bf7f130004ddd729b Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:47:24 +0300 Subject: [PATCH 10/11] Removed RSI_tk and some plotting pakcages. (note to others: remove conductivity_tk and GPU_tk as I am locally playing around with those) --- src/TensorBinding.jl | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/TensorBinding.jl b/src/TensorBinding.jl index be9d4b6..62a0c74 100644 --- a/src/TensorBinding.jl +++ b/src/TensorBinding.jl @@ -8,12 +8,8 @@ using ITensorMPS using Quantics using QuanticsTCI using QuanticsGrids -using TCIITensorConversion using TensorCrossInterpolation import TensorCrossInterpolation as TCI -using PyCall -using PyPlot -using Plots using FFTW using Base.Threads @@ -48,7 +44,8 @@ include("Topology_tk.jl") include("Purification_tk.jl") include("Meanfi_tk.jl") include("RPA_tk.jl") -include("RSI_tk.jl") +include("Conductivity_tk.jl") +include("GPU_tk.jl") include("krylov_tk.jl") include("Timeev_tk.jl") include("twisted_tk.jl") From 75b3bffed997ab750ebced5c002ddffc95ffe4a1 Mon Sep 17 00:00:00 2001 From: Anouar Moustaj Date: Tue, 26 May 2026 12:47:55 +0300 Subject: [PATCH 11/11] =?UTF-8?q?add=20ASCII=20Lambda=20alias=20for=20?= =?UTF-8?q?=CE=9B=20in=20get=5FC=20get=5FC=20now=20accepts=20Lambda=3D=20a?= =?UTF-8?q?s=20an=20ASCII=20keyword=20that=20falls=20back=20to=20the=20Uni?= =?UTF-8?q?code=20=CE=9B=20parameter,=20easing=20use=20from=20environments?= =?UTF-8?q?=20without=20easy=20Unicode=20input.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Topology_tk.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Topology_tk.jl b/src/Topology_tk.jl index 8f973b5..e7714e6 100644 --- a/src/Topology_tk.jl +++ b/src/Topology_tk.jl @@ -565,11 +565,13 @@ function get_C(H::TBHamiltonian, xfunc=nothing, yfunc=nothing; fermi::Real = 0.0, l = nothing, Λ::Real = 10, + Lambda = nothing, # ASCII alias for Λ Nchebychev::Int = 300, maxdim::Int = 500, cutoff::Float64 = 1e-8, Nel = nothing, quenched::Bool = true) + Λ_val = Lambda !== nothing ? Float64(Lambda) : Λ if xfunc === nothing || yfunc === nothing geom = H.geometry_uc !== nothing ? H.geometry_uc : H.geometry !== nothing ? H.geometry : @@ -580,7 +582,7 @@ function get_C(H::TBHamiltonian, xfunc=nothing, yfunc=nothing; P = _get_projector(H; method=method, fermi=fermi, Nchebychev=Nchebychev, maxdim=maxdim, cutoff=cutoff, Nel=Nel) return get_C_op_MPO_from_P(P, H.L, H.sites, xfunc, yfunc; - l=l, Λ=Λ, maxdim=maxdim, cutoff=cutoff, + l=l, Λ=Λ_val, maxdim=maxdim, cutoff=cutoff, quenched=quenched) end