PEPSKit v0.7.0
We are pleased to announce the release of PEPSKit.jl v0.7.0! This release brings significant new features for time evolution, improved PEPO support, and numerous bug fixes and performance improvements.
Highlights
- Time Evolution: Real-time and finite-temperature evolution functionality for simple update
- Enhanced PEPO Support: Extended PEPO operations including correlators and density matrices
- TensorKit v0.15 Compatibility: Updated compatibility with the latest TensorKit release
- Code Quality: Migration to Runic formatter for consistent code style
New Features
Time Evolution
- Real-time and finite-temperature evolution functionality for simple update
- Unified interface for Trotter-based time evolution algorithms via
timestepandtime_evolvefunctions
PEPO Operations
- Correlator for mixed state
InfinitePEPO - Simple update for PEPO, including 3-site version
- Single-layer and double-layer PEPO reduced density matrix
spacetypemethod forInfinitePartitionFunction
Environment Conversion
SUWeighttoCTMRGEnvconversion (asInfinitePEPSenvironment)
Symmetry Support
- Support for
SU2Irrepsymmetry inj1_j2_model
Breaking Changes
Interface Changes
- Time Evolution: The old
su_iterandsimpleupdatefunctions have been replaced by the unifiedtimestepandtime_evolveinterface - Gradient Algorithm: Default fixed-point gradient algorithm changed from the previous default to
:eigsolver
Removed Features
InfiniteWeightPEPSandmirror_antidiag- Support for integer space specifiers in state and environment constructors
- Redefinition of
tensorexpr - Support for dual physical spaces for non-bosonic symmetries
Improvements
Algorithm Enhancements
- BoundaryMPS methods now have their own custom transfer functions, avoiding double conjugation and fixing twist issues for fermions
physicalspaceand related functions now correctly handle periodic indexing for infinite networks- Unit normalization of half and full infinite environments before projector computation, improving gradient accuracy
Code Quality
- Migration to Runic formatter for consistent code style
- Updated compatibility with TensorKit v0.15
Bug Fixes
Gradient and Optimization
- Fixed sporadic test timeouts when running variational optimization after simple update for the Heisenberg model by switching to a
GMRES-based gradient solver - Fixed
maxiterbehavior for fallback gradient linear solver - Fixed gauge fixing in
:fixedmode for non-uniform unit cells from full SVD
Operator Handling
- Rotation of iPEPO is now done correctly
- Fixed
rotl90,rotr90androt180forLocalOperator - Fixed XXZ model convention
- Fixed
add_physical_chargefor fermionic operators
Performance
- Avoided
@autooptfor partition function calculations, improving compilation times - Multithreaded scheduler now correctly taken into account for the reverse rules
Dependencies
Compatibility
- TensorKit: 0.15+
Acknowledgments
Thank you to all contributors who made this release possible! Special thanks to those who submitted pull requests, reported issues, and participated in discussions.
Documentation
For detailed documentation, please visit:
Links
For any issues or questions, please file an issue on our GitHub repository.
Merged pull requests:
- Remove InfiniteWeightPEPS and mirror_antidiag (#239) (@Yue-Zhengyuan)
- define
spacetype(InfinitePartitionFunction)(#241) (@ogauthe) - Bump actions/checkout from 4 to 5 (#242) (@dependabot[bot])
- Runic formatter (#243) (@Yue-Zhengyuan)
- Set up optional color inversion for docs images (#244) (@leburgel)
- [perf] avoid
@autooptfor partition function (#245) (@ogauthe) - Change default fixed-point gradient algorithm to
:eigsolver(#246) (@leburgel) - Allow SU2Irrep symmetry in j1_j2_model (#248) (@Yue-Zhengyuan)
- Fix gauge fixing in
:fixedmode for non-uniform unit cells from full SVD (#249) (@pbrehmer) - Simple update for PEPO (#250) (@Yue-Zhengyuan)
- Actually use scheduler in reverse rules (#251) (@lkdvos)
- Add double-layer-pepo reduced densitymatrix (#252) (@lkdvos)
- Fix
add_physical_chargefor fermionic operators (#253) (@leburgel) - Add single-layer-pepo reduced densitymatrix (#254) (@lkdvos)
- Fix InfinitePEPO rotation (#260) (@Yue-Zhengyuan)
- Fix
maxiterbehavior for fallback gradient linear solver (#261) (@leburgel) - Simple update for PEPO (3-site version) (#262) (@Yue-Zhengyuan)
- Remove support for integer space specifiers in state and environment constructors (#266) (@leburgel)
- Fix
rotl90,rotr90androt180forLocalOperator(#267) (@pbrehmer) - Remove redefinition of
tensorexpr(#268) (@Yue-Zhengyuan) - CompatHelper: bump compat for TensorKit to 0.15 (#270) (@github-actions[bot])
- Fix XXZ model convention (#272) (@leburgel)
- Small tests for infinite partition function (#273) (@kshyatt)
- Add correlator for InfinitePEPO (mixed state) (#274) (@Yue-Zhengyuan)
- Add iPEPS SUWeight to CTMRGEnv conversion (#275) (@Yue-Zhengyuan)
- Normalize environments before SVD (#276) (@leburgel)
- Restrict Julia to
<v1.12due to Zygote incompatibility (#278) (@leburgel) - Switch to
GMRES-based gradient solver to stabilize simple update into AD optimization test (#279) (@leburgel) - Improve time evolution interface (#280) (@Yue-Zhengyuan)
- Remove unused
_setindex!(#281) (@leburgel) - Disallow dual physical spaces for symmetries with non-trivial braiding (#284) (@leburgel)
- Make physicalspace etc periodic for infinite networks (#290) (@Yue-Zhengyuan)
- Correct evolved time for bipartite simple update (#291) (@Yue-Zhengyuan)
- Release v0.7.0 (#293) (@lkdvos)
- Update README badges and links (#294) (@leburgel)
- Attempt to fix Julia v1.12 (#295) (@leburgel)
- Update diff link in changelog to most recent registered version [skip ci] (#296) (@leburgel)
- Remove some straggling integer space specifiers (#297) (@leburgel)
Closed issues:
- Renormalize the tensors before SVD for the CTMRG projectors (#137)
- Use
FixedSpaceTruncationbefore gauge fixing (#157) - Performance(?) regressions after update to Zygote.jl v0.7.5 (#166)
- Bug in
add_physical_chargefor fermionic operators (#259) - [Discussion] Remove support for specifying
ComplexSpaces using integers (#265) - Convention of XXZ model (#271)
- Set up a bot to re-generate example docs (#286)
- Error when implementing the example Fermi Hubbard model (#288)