TEBDEvolver¶
- class TEBDEvolver(evolution_state, *args, order=2, **kwargs)[source]¶
- 
A TEBD algorithm for evolving an internal MPO. As discussed in more detail in quimb_tebd, this extension ofquimb’s existingquimb.tensor.TEBDimplementation time-evolves an internal matrix product operator (MPO) rather than the conventional matrix product state (MPS).More concretely, the internal object is expected to be an MPOState.Warning The API of this class is actually much larger than shown here, because it inherits additional methods from the quimb.tensor.TEBDbase class. However, we do not duplicate that API here.Initialize a TEBDEvolverinstance.- Parameters:
- evolution_state (MPOState | MatrixProductState) – - a reference to the time-evolution state. This overwrites the - p0argument of the underlying- quimb.tensor.TEBDclass.- Warning - In contrast to the default behavior, this state will NOT be canonicalized. Instead, it is taken as is and is kept by reference (i.e. no copy is created). This ensures that the same object can be shared between two instances of this class, as required by the - DynamicMPFalgorithm.
- args – any further positional arguments will be forwarded to the - quimb.tensor.TEBDconstructor.
- order (int) – the order of the builtin Suzuki-Trotter formula to use during time evolution. This will be the value forwarded to the - quimb.tensor.TEBD.step()method.
- kwargs – any further keyword arguments will be forwarded to the - quimb.tensor.TEBDconstructor.
 
 Attributes - conjugate¶
- Returns whether this time-evolver instance acts on the right-hand side. 
 - evolved_time¶
- Returns the current evolution time. 
 Methods - step()[source]¶
- Perform a single time step of TEBD. - This essentially calls - quimb.tensor.TEBD.step()and forwards the value of the- orderattribute that was provided upon construction.- Return type:
- None 
 
 - sweep(direction, dt_frac, dt=None, queue=False)[source]¶
- Perform a single sweep of the TEBD algorithm [1]. - The TEBD algorithm updates the even and odd bonds of the underlying tensor network in alternating fashion. In the implementation of the - quimb.tensor.TEBDbase class, this is realized in the form of alternating “sweeps” in left and right directions over the internal state.- We are overwriting the behavior of this method in this subclass, in order to call the specialized - gate_split()method.- Parameters:
- direction (Literal['left', 'right']) – the direction of the sweep. This must be either of the literal strings, - "left"or- "right".
- dt_frac (float) – what fraction of the internal time step ( - dt) to time-evolve for. This is how any builtin Suzuki-Trotter formula specifies its splitting.
- dt (float | None) – an optional value to overwrite the internal time step. 
- queue (bool) – setting this to - Truewill raise a- NotImplementedError.
 
- Raises:
- NotImplementedError – if - queue=True.
- NotImplementedError – if - cyclicis- True.
- NotImplementedError – if - imagis- True.
- RuntimeError – if an invalid - directionis provided.
 
- Return type:
- None 
 - References - [1]: https://en.wikipedia.org/wiki/Time-evolving_block_decimation