Model

Inheritance Diagram

Inheritance diagram of tenpy.models.model.Model

Methods

Model.__init__(lattice)

Model.copy()

Shallow copy of self.

Model.enlarge_mps_unit_cell([factor])

Repeat the unit cell for infinite MPS boundary conditions; in place.

Model.extract_segment([first, last, enlarge])

Return a (shallow) copy with extracted segment of MPS.

Model.from_hdf5(hdf5_loader, h5gr, subpath)

Load instance from a HDF5 file.

Model.group_sites([n, grouped_sites])

Modify self in place to group sites.

Model.save_hdf5(hdf5_saver, h5gr, subpath)

Export self into a HDF5 file.

Model.update_time_parameter(new_time)

Reconstruct Hamiltonian for time-dependent models, potentially (!) in-place.

Class Attributes and Properties

Model.logger

class attribute.

Model.rng

Reproducible numpy pseudo random number generator.

class tenpy.models.model.Model(lattice)[source]

Bases: Hdf5Exportable

Base class for all models.

The common base to all models is the underlying Hilbert space and geometry, specified by a Lattice.

Parameters

lattice (Lattice) – The lattice defining the geometry and the local Hilbert space(s).

lat

The lattice defining the geometry and the local Hilbert space(s).

Type

Lattice

dtype

The data type of the Hamiltonian

Type

dtype

logger = <Logger tenpy.models.model.Model (WARNING)>

class attribute.

Type

logging.Logger

Type

An instance of a logger; see Logging and terminal output. NB

property rng

Reproducible numpy pseudo random number generator.

If you want to add randomness/disorder to your model, it is recommended use this random number generator for reproducibility of the model:

self.rng.random(size=[3, 5])

Especially for models with time-dependence, you can/will otherwise end up generating a new disordered at each time-step!

Options

random_seed :: None | int

Defaults to 123456789. Seed for numpy pseudo random number generator which can be used as e.g. self.rng.random(...).

copy()[source]

Shallow copy of self.

save_hdf5(hdf5_saver, h5gr, subpath)[source]

Export self into a HDF5 file.

Same as save_hdf5(), but handle rng.

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

Load instance from a HDF5 file.

Same as from_hdf5(), but handle rng.

extract_segment(first=0, last=None, enlarge=None)[source]

Return a (shallow) copy with extracted segment of MPS.

Parameters
Returns

cp – A shallow copy of self with MPO and lattice extracted for the segment.

Return type

Model

enlarge_mps_unit_cell(factor=2)[source]

Repeat the unit cell for infinite MPS boundary conditions; in place.

This has to be done after finishing initialization and can not be reverted.

Parameters

factor (int) – The new number of sites in the MPS unit cell will be increased from N_sites to factor*N_sites_per_ring. Since MPS unit cells are repeated in the x-direction in our convetion, the lattice shape goes from (Lx, Ly, ..., Lu) to (Lx*factor, Ly, ..., Lu).

group_sites(n=2, grouped_sites=None)[source]

Modify self in place to group sites.

Group each n sites together using the GroupedSite. This might allow to do TEBD with a Trotter decomposition, or help the convergence of DMRG (in case of too long range interactions).

This has to be done after finishing initialization and can not be reverted.

Parameters
  • n (int) – Number of sites to be grouped together.

  • grouped_sites (None | list of GroupedSite) – The sites grouped together.

Returns

grouped_sites – The sites grouped together.

Return type

list of GroupedSite

update_time_parameter(new_time)[source]

Reconstruct Hamiltonian for time-dependent models, potentially (!) in-place.

For TimeDependentHAlgorithm, we assume that the model reads out the parameter self.options['time'], and reinitialize/update the model calling this method.

Paramters

new_timefloat

Time at which the (time-dependent) Hamiltonian should be constructed.

returns

updated_model – Model of the same class as self with Hamiltonian at time new_time. Note that it can just be a reference to self if modified in place, or an entirely new constructed model.

rtype

model