multi_sites_combine_charges¶
full name: tenpy.networks.site.multi_sites_combine_charges
parent module:
tenpy.networks.sitetype: function
-
tenpy.networks.site.multi_sites_combine_charges(sites, same_charges=[])[source]¶ Adjust the charges of the given sites (in place) such that they can be used together.
When we want to contract tensors corresponding to different
Siteinstances, these sites need to share a singleChargeInfo. This function adjusts the charges of these sites such that they can be used together.- Parameters
- siteslist of
Site The sites to be combined. Modified in place.
- same_charges
[[(int, int|str), (int, int|str), ...], ...] Defines which charges actually are the same, i.e. their quantum numbers are added up. Each charge is specified by a tuple
(s, i)= (int, int|str), where s gives the index of the site withinsitesand i the index or name of the charge in theChargeInfoof this site.
- siteslist of
- Returns
- permslist of ndarray
For each site the permutation performed on the physical leg to sort by charges.
Examples
>>> ferm = SpinHalfFermionSite(cons_N='N', cons_Sz='Sz') >>> spin = SpinSite(1.0, 'Sz') >>> ferm.leg.chinfo is spin.leg.chinfo False >>> print(spin.leg) +1 0 [[-1] 1 [ 1]] 2 >>> multi_sites_combine_charges([ferm, spin], same_charges=[[(0, 'Sz'), (1, 0)]]) [array([0, 1, 2, 3]), array([0, 1])] >>> # no permutations where needed >>> ferm.leg.chinfo is spin.leg.chinfo True >> ferm.leg.chinfo.names ['N', 'Sz'] >>> print(spin.leg) +1 0 [[ 0 -1] 1 [ 0 1]] 2