[v0.9.0] - 2021-09-21¶
It’s been a while, so we have a bunch of new features, in particular quite some progress with the simulation classes.
The DMRG mixer has been rewritten, and the setup for orthogonal excitations with DMRG has been adjusted a bit.
If you already used the simulation class setup, watch out for the renaming of the
simultion_class(_name) and the
change of the default separater for recursive keys.
Apart form that, there are not major incompatibilities compared to v0.8.4
Special thanks go to Wilhelm Kadow for great work on the mixed real- and momentum-space representation for models!
Support Python 3.6 to 3.9
Backwards incompatible changes¶
Renamed the simulation_class_name argument/parameter to simulation_class of
run_simulation()for more consistency with remaining simulation parameters.
deprecated options: - sweep_0 for sweep classes; use sweeps in the resume_data instead.
Require context-manager-style setup for Simulation classes.
Replace the SingleSiteMixer and TwoSiteMixer with the
SubspaceExpansion; major rewriting of the mixer code. Further, we now reactivate/reset the
Mixerwhenever growing the bond dimension due to chi_list in DMRG. The new option
DMRGEngine.chi_list_reactivates_mixerallows to disable this.
init_RP()additionally support the argument start_env_sites, which can now be part of the init_env_data. This allows to converge MPO environments from scratch, given only the MPO and MPS, with a power-method. The
tenpy.networks.mpo.MPOTransferMatrixwas added for converging environments from scratch with Arnoldi.
Caching with the
tenpy.tools.cache.Hdf5Cacheto reduce memory requirements. In that context, the keyword argument cache was added to the
equality test for
MPS with segment boundaries now keep track of unitaries at the boundaries in
OrthogonalExcitationssimulation class for finding excited states with DMRG.
Simulation.group_sitesfor the simultion class.
extract_segment method for model, lattice and MPS/MPO classes.
TimeDependentExpMPOEvolutionfor time-dependent hamiltonians.
tenpy.tools.misc.merge_recursive()to merge nested parameter dictionaries.
tenpy.tools.misc.find_subclass()now directly raises an error if no subclass with that name is found.
Renamed the logging_params to log_params.
tenpy.simulations.measurement.correlation_length()now supports a unit keyword. If it is not given explicitly, a warning is raised.
tenpy.networks.mps.MPS.canonical_form()now supports an argument envs_to_update to allow keeping MPS/MPOEnvironments consistent.
keyword argument sequential_simulations for
Allow to select the distribution of the generated U for the
RandomUnitaryEvolution. For randomly perturbing an MPS in
randomized()or the new
perturb(), select the distribution suitable to preserve the dtype of the MPS.
Rewriting of the
tenpy.networks.mpo.MPOEnvironment.full_contraction()when H.explicit_plus_hc was True. This caused wrong energies being reported during DMRG when explicit_plus_hc was used.
(!) The DMRG mixers didn’t respect/handle the explicit_plus_hc of MPOs correctly. This might have lead to an insufficient subspace expandsion.
Always return psi in the
tenpy.algorithms.algorithm.Algorithm.get_resume_data(). Optionally, this can be a copy, e.g. if psi.canonical_form needs to be called at the end of the algorithm, which would render the environments invalid.
Use logging in simulation only after calling
Missing return in
resume_run()broke simulation resume for DMRG.
Simulation checkpoints during DMRG resulted in MPS failing test_sanity() during load.