ExpMPOEvolution¶
full name: tenpy.algorithms.mpo_evolution.ExpMPOEvolution
parent module:
tenpy.algorithms.mpo_evolution
type: class
Inheritance Diagram
Methods
|
|
|
Calculate |
Return necessary data to resume a |
|
Resume a run that was interrupted. |
|
Run the real-time evolution with the W_I/W_II approximation. |
|
|
Time evolve by N_steps steps. |
Class Attributes and Properties
|
whether the algorithm supports time-dependent H |
|
- class tenpy.algorithms.mpo_evolution.ExpMPOEvolution(psi, model, options, **kwargs)[source]¶
Bases:
tenpy.algorithms.algorithm.TimeEvolutionAlgorithm
Time evolution of an MPS using the W_I or W_II approximation for
exp(H dt)
.[zaletel2015] described a method to obtain MPO approximations \(W_I\) and \(W_{II}\) for the exponential
U = exp(i H dt)
of an MPO H, implemented inmake_U_I()
andmake_U_II()
. This class uses it for real-time evolution.Parameters are the same as for
Algorithm
.Options
- config ExpMPOEvolution¶
option summary Specifies which approximation is applied. The default 'II' is more precise. [...]
By default (``None``) this feature is disabled. [...]
Whether to combine legs into pipes. This combines the virtual and [...]
compression_method (from ApplyMPO) in MPO.apply
Mandatory. [...]
dt (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm
Minimal time step by which to evolve.
init_env_data (from Sweep) in DMRGEngine.init_env
Dictionary as returned by ``self.env.get_initialization_data()`` from [...]
lanczos_params (from Sweep) in Sweep
Lanczos parameters as described in :cfg:config:`Lanczos`.
m_temp (from ZipUpApplyMPO) in MPO.apply_zipup
bond dimension will be truncated to `m_temp * chi_max`
N_steps (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm
Number of time steps `dt` to evolve by in :meth:`run`. [...]
N_sweeps (from VariationalCompression) in VariationalCompression
Number of sweeps to perform.
Order of the algorithm. The total error up to time `t` scales as ``O(t*dt^o [...]
orthogonal_to (from Sweep) in DMRGEngine.init_env
Deprecated in favor of the `orthogonal_to` function argument (forwarded fro [...]
Number of sweeps to be performed without optimization to update the environment.
start_env_sites (from VariationalCompression) in VariationalCompression
Number of sites to contract for the inital LP/RP environment in case of inf [...]
start_time (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm
Initial value for :attr:`evolved_time`.
Initial truncation error for :attr:`trunc_err`
trunc_params (from ApplyMPO) in MPO.apply
Truncation parameters as described in :cfg:config:`truncation`.
trunc_weight (from ZipUpApplyMPO) in MPO.apply_zipup
reduces cut for Schmidt values to `trunc_weight * svd_min`
-
option start_trunc_err:
TruncationError
¶ Initial truncation error for
trunc_err
- option approximation: 'I' | 'II'¶
Specifies which approximation is applied. The default ‘II’ is more precise. See [zaletel2015] and
make_U()
for more details.
- option order: int¶
Order of the algorithm. The total error up to time t scales as
O(t*dt^order)
. Implemented are order = 1 and order = 2.
-
option start_trunc_err:
- evolved_time¶
Indicating how long psi has been evolved,
psi = exp(-i * evolved_time * H) psi(t=0)
.- Type
- trunc_err¶
The error of the represented state which is introduced due to the truncation during the sequence of update steps
- Type
- _U¶
Exponentiated H_MPO;
- Type
list of
MPO
- _U_param¶
A dictionary containing the information of the latest created _U. We won’t recalculate _U if those parameters didn’t change.
- Type
- calc_U(dt, order=2, approximation='II')[source]¶
Calculate
self._U_MPO
.This function calculates the approximation
U ~= exp(-i dt_ H)
withdt_ = dt` for ``order=1
, ordt_ = (1 - 1j)/2 dt
anddt_ = (1 + 1j)/2 dt
fororder=2
.
- update(N_steps)[source]¶
Time evolve by N_steps steps.
- Parameters
N_steps (int) – The number of time steps psi is evolved by.
- Returns
trunc_err – Truncation error induced during the update.
- Return type
- get_resume_data(sequential_simulations=False)[source]¶
Return necessary data to resume a
run()
interrupted at a checkpoint.At a
checkpoint
, you can savepsi
,model
andoptions
along with the data returned by this function. When the simulation aborts, you can resume it using this saved data with:eng = AlgorithmClass(psi, model, options, resume_data=resume_data) eng.resume_run()
An algorithm which doesn’t support this should override resume_run to raise an Error.
- Parameters
sequential_simulations (bool) – If True, return only the data for re-initializing a sequential simulation run, where we “adiabatically” follow the evolution of a ground state (for variational algorithms), or do series of quenches (for time evolution algorithms); see
run_seq_simulations()
.- Returns
resume_data – Dictionary with necessary data (apart from copies of psi, model, options) that allows to continue the simulation from where we are now. It might contain an explicit copy of psi.
- Return type
- resume_run()[source]¶
Resume a run that was interrupted.
In case we saved an intermediate result at a
checkpoint
, this function allows to resume therun()
of the algorithm (after re-initialization with the resume_data). Since most algorithms just have a while loop with break conditions, the default behaviour implemented here is to just callrun()
.