11@eval module $ (gensym ())
22using DataGraphs: underlying_graph
33using Graphs: nv
4- using NamedGraphs. NamedGraphGenerators: named_grid
4+ using NamedGraphs. NamedGraphGenerators: named_comb_tree, named_grid
55using ITensorNetworks:
66 BeliefPropagationCache,
77 BilinearFormNetwork,
@@ -12,16 +12,18 @@ using ITensorNetworks:
1212 dual_index_map,
1313 environment,
1414 flatten_siteinds,
15+ inner,
1516 ket_network,
1617 ket_vertex,
1718 operator_network,
1819 random_tensornetwork,
20+ scalar,
1921 siteinds,
2022 state_vertices,
2123 tensornetwork,
2224 union_all_inds,
2325 update
24- using ITensors: contract, dag, inds, prime, random_itensor
26+ using ITensors: Index, contract, dag, inds, prime, random_itensor, sim
2527using LinearAlgebra: norm
2628using StableRNGs: StableRNG
2729using TensorOperations: TensorOperations
@@ -84,5 +86,25 @@ using Test: @test, @testset
8486 ∂qf_∂v_bp = contract (∂qf_∂v_bp)
8587 ∂qf_∂v_bp /= norm (∂qf_∂v_bp)
8688 @test ∂qf_∂v_bp ≈ ∂qf_∂v
89+
90+ # Test having non-uniform number of site indices per vertex
91+ g = named_comb_tree ((3 , 3 ))
92+ s = siteinds (" S=1/2" , g)
93+ s = union_all_inds (s, sim (s))
94+ s[(1 , 1 )] = Index[]
95+ s[(3 , 3 )] = Index[first (s[(3 , 3 )])]
96+ χ = 2
97+ rng = StableRNG (1234 )
98+ ψket = random_tensornetwork (rng, ComplexF64, s; link_space= χ)
99+ ψbra = random_tensornetwork (rng, ComplexF64, s; link_space= χ)
100+
101+ blf = BilinearFormNetwork (ψbra, ψket)
102+ @test scalar (blf; alg= " exact" ) ≈ inner (ψbra, ψket; alg= " exact" )
103+
104+ lf = LinearFormNetwork (ψbra, ψket)
105+ @test scalar (lf; alg= " exact" ) ≈ inner (ψbra, ψket; alg= " exact" )
106+
107+ qf = QuadraticFormNetwork (ψket)
108+ @test scalar (qf; alg= " exact" ) ≈ inner (ψket, ψket; alg= " exact" )
87109end
88110end
0 commit comments