LayerwiseEvolver¶
- class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)[source]¶
Bases:
TEBDEvolverA special case of the
TEBDEvolverbased on layer-wise evolution models.As also explained in
tenpy_layers, this implementation extracts the alternating even/odd bond updates implemented inside of the originalTEBDEngineto become the end users responsibility. It does so, by replacing the single Hamiltonian provided to theTEBDEvolverinstance with a sequence ofLayerModelinstances. Every single instance of these encodes a single layer of interactions. These should enforce the alternating updates of even and odd bonds of the underlying tensor network.The motivation for this more complicated interface is that is provides a lot more flexbility and enables users to define custom Trotter product formulas rather than being limited to the ones implemented by TeNPy directly.
Initialize a
LayerwiseEvolverinstance.- Parameters:
evolution_state (tenpy_tebd.MPOState) – forwarded to
TEBDEvolver. Please refer to its documentation for more details.layers (list[LayerModel]) – the list of models describing single layers of interactions. See above as well as the explanations provided in
tenpy_layers.args – any further positional arguments will be forwarded to the
TEBDEvolverconstructor.kwargs – any further keyword arguments will be forwarded to the
TEBDEvolverconstructor.
Attributes
- reverse_layers¶
Whether to reverse the layers.
This defaults to
Truewhenself.psiis an MPO and toFalsewhen it is an MPS. This is necessary because the middle-out MPO contraction applies the circuits to an identity initial state and contracts with the circuits intended initial state from the outside. Therefore, the layers must be reversed to ensure the same circuit is computed as if it were applied on top of the initial state.
- layers¶
The layers of interactions used to implement the time-evolution.
- dt¶
The time step to be used by this time-evolution instance.
Methods
- calc_U(order, delta_t, type_evo='real', E_offset=None)[source]¶
Calculates the local bond updates.
This adapts
calc_U()to work with the layer-wise implementation.
- evolve(N_steps, dt)[source]¶
Perform a single time step of TEBD.
- Parameters:
- Returns:
The truncation error.
- Raises:
RuntimeError – if
N_stepsis not equal to1.- Return type:
- static suzuki_trotter_decomposition(order, N_steps)[source]¶
Returns an empty list.
Note
This method is undefined for this subclass but we cannot raise an error upon calling it because of the internal algorithm flow. Instead, the Trotter decomposition in this class is encoded directly into the
layers.