ExponentiallyDecayingTerms

  • full name: tenpy.networks.terms.ExponentiallyDecayingTerms

  • parent module: tenpy.networks.terms

  • type: class

Inheritance Diagram

Inheritance diagram of tenpy.networks.terms.ExponentiallyDecayingTerms

Methods

ExponentiallyDecayingTerms.__init__(L)

ExponentiallyDecayingTerms.add_centered_exponentially_decaying_term(...)

Add exponentially decaying terms centered around a single site.

ExponentiallyDecayingTerms.add_exponentially_decaying_coupling(...)

Add an exponentially decaying long-range coupling.

ExponentiallyDecayingTerms.add_to_graph(graph)

Add terms from onsite_terms to an MPOGraph.

ExponentiallyDecayingTerms.from_hdf5(...)

Load instance from a HDF5 file.

ExponentiallyDecayingTerms.max_range()

Maximum range of the couplings.

ExponentiallyDecayingTerms.save_hdf5(...)

Export self into a HDF5 file.

ExponentiallyDecayingTerms.to_TermList([...])

Convert self into a TermList.

Class Attributes and Properties

ExponentiallyDecayingTerms.is_empty

class tenpy.networks.terms.ExponentiallyDecayingTerms(L)[source]

Bases: Hdf5Exportable

Represent a sum of exponentially decaying (long-range) couplings.

MPOs can represent translation invariant, exponentially decaying long-range terms of the following form with a single extra index of the virtual bonds:

\[sum_{i < j} lambda^{|i-j|} A_i B_j\]

For 2D cylinders (or ladders), we need a slight generalization of this, where the operators act only on a subset of the sites in each unit cell, given by a 1D array subsites:

\[strength sum_{i < j} lambda^{|i-j|} A_{subsites[i]} B_{subsites[j]}\]

Note that we still have |i-j|, such that this will give uniformly decaying interactions, independent of the way the MPS winds through the 2D lattice, as long as subsites is sorted. An easy example would be a ladder, where we want the long-range interactions on the first rung only, subsites = lat.mps_idx_fix_u(u=0), see mps_idx_fix_u().

Suppose we want long-range (LR) couplings between all sites on a strip of width Ly. The subsites parameters allows us to implement LR couplings along each leg of the strip. We want LR couplings between sites that have both vertical and horizontal offset according to the Euclidean distance. To do this, we use subsites_start. For each site in subsites_start, we couple to all sites to the right of subsites. In our example, the sites in one leg can be coupled to all sites with larger index in another leg.

\[strength sum_{subsites_start[i] < subsites[j]} \ lambda^{|j-argmin(subsites>subsites_start[i])|} A_{subsites_start[i]} B_{subsites[j]}\]
Parameters:

L (int) – Number of sites.

L

Number of sites.

Type:

int

exp_decaying_terms

Each tuple (strength, opname_i, opname_j, lambda, subsites, subsites_start, opname_string) represents one of the terms as described above; see add_exponentially_decaying_coupling() for more details.

Type:

list of tuples

centered_terms

Each tuple (strength, opname_i, opname_j, lambda_, subsites, opname_string) represents one of the centered terms as described in add_centered_exponentially_decaying_term().

Type:

list of tuples

add_exponentially_decaying_coupling(strength, lambda_, op_i, op_j, subsites=None, subsites_start=None, op_string='Id')[source]

Add an exponentially decaying long-range coupling.

\[strength \sum_{i} \sum_{j > i} \lambda^{|i-j|} A_i B_j\]

Where the operator A is given by op_i, and B is given by op_j. Note that the sum over i,j is long-range, for infinite systems beyond the MPS unit cell.

They can be generalized in several ways, see lambda_, subsites, subsites_start, as well as the notes below.

Parameters:
  • strength (float) – Overall prefactor.

  • lambda (float | 1D array) – Decay-rate. Either a single number, applied uniformly or a sequence of length L.

  • op_i (string) – Names for the operators.

  • op_j (string) – Names for the operators.

  • subsites (1D array, optional) – Selects a subset of sites within the MPS unit cell on which the operators act. See docs in add_exponentially_decaying_coupling.

  • subsites_start (1D array, optional) – Selects a subset of sites within the MPS unit cell on which the operators act. See docs in add_exponentially_decaying_coupling.

  • op_string (string) – The operator to be inserted between A and B; for Fermions this should be "JW".

add_centered_exponentially_decaying_term(strength, lambda_, op_i, op_j, i, subsites=None, op_string='Id')[source]

Add exponentially decaying terms centered around a single site.

See add_centered_exponentially_decaying_term() for details.

add_to_graph(graph, key='exp-decay')[source]

Add terms from onsite_terms to an MPOGraph.

Parameters:
to_TermList(cutoff=0.01, bc='finite')[source]

Convert self into a TermList.

Parameters:
  • cutoff (float) – Drop terms where the overall prefactor is smaller then cutoff.

  • bc ("finite" | "infinite") – Boundary conditions to be used.

Returns:

term_list – Representation of the terms as a list of terms. For “infinite” bc, only terms starting in the first MPS unit cell are included.

Return type:

TermList

max_range()[source]

Maximum range of the couplings.

In this case np.inf.

classmethod from_hdf5(hdf5_loader, h5gr, subpath)[source]

Load instance from a HDF5 file.

This method reconstructs a class instance from the data saved with save_hdf5().

Parameters:
  • hdf5_loader (Hdf5Loader) – Instance of the loading engine.

  • h5gr (Group) – HDF5 group which is represent the object to be constructed.

  • subpath (str) – The name of h5gr with a '/' in the end.

Returns:

obj – Newly generated class instance containing the required data.

Return type:

cls

save_hdf5(hdf5_saver, h5gr, subpath)[source]

Export self into a HDF5 file.

This method saves all the data it needs to reconstruct self with from_hdf5().

This implementation saves the content of __dict__ with save_dict_content(), storing the format under the attribute 'format'.

Parameters:
  • hdf5_saver (Hdf5Saver) – Instance of the saving engine.

  • h5gr (:class`Group`) – HDF5 group which is supposed to represent self.

  • subpath (str) – The name of h5gr with a '/' in the end.