for_each_pair(label_a, label_b)ΒΆ
for_each_pair iterates over all ordered pairs (i, j) in [0, N) x [0, N).
This includes diagonal pairs (i, i).
Use it when:
you need a dense two-body sweep
diagonal and off-diagonal pairs are both meaningful
you prefer to remove illegal cases with
where(...)instead of choosing a more restrictive iterator
Example:
hop = (
SymbolicDiscreteJaxOperator(hi, "hop")
.for_each_pair("i", "j")
.where(site("i").index != site("j").index)
.where(site("i") > 0)
.emit(shift("i", -1).shift("j", +1), matrix_element=1.0)
.build()
)