1
1
@eval module $ (gensym ())
2
2
using DataGraphs: underlying_graph
3
3
using Graphs: nv
4
- using NamedGraphs. NamedGraphGenerators: named_grid
4
+ using NamedGraphs. NamedGraphGenerators: named_comb_tree, named_grid
5
5
using ITensorNetworks:
6
6
BeliefPropagationCache,
7
7
BilinearFormNetwork,
@@ -12,16 +12,18 @@ using ITensorNetworks:
12
12
dual_index_map,
13
13
environment,
14
14
flatten_siteinds,
15
+ inner,
15
16
ket_network,
16
17
ket_vertex,
17
18
operator_network,
18
19
random_tensornetwork,
20
+ scalar,
19
21
siteinds,
20
22
state_vertices,
21
23
tensornetwork,
22
24
union_all_inds,
23
25
update
24
- using ITensors: contract, dag, inds, prime, random_itensor
26
+ using ITensors: Index, contract, dag, inds, prime, random_itensor, sim
25
27
using LinearAlgebra: norm
26
28
using StableRNGs: StableRNG
27
29
using TensorOperations: TensorOperations
@@ -84,5 +86,25 @@ using Test: @test, @testset
84
86
∂qf_∂v_bp = contract (∂qf_∂v_bp)
85
87
∂qf_∂v_bp /= norm (∂qf_∂v_bp)
86
88
@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" )
87
109
end
88
110
end
0 commit comments