Releases: QuantumKitHub/TNRKit.jl
v0.6.0
TNRKit v0.6.0
TNRKit 0.6.0 (since v0.5.0)
⚠️ Breaking changes (exported API interface changes)
-
cft_dataremoved from exports; replaced byCFTData- Before (exported):
cft_data(...)methods returned arrays/dictionaries of conformal data. - Now (exported):
CFTData(...)constructors return aCFTDatastruct with:central_chargescaling_dimensions
- Before (exported):
-
central_chargeexported interface removed- Before:
central_charge(scheme::TNRScheme, n::Number)andcentral_charge(scheme::BTRG, n::Number). - Now: these exported method definitions are removed.
- Before:
-
finalize_central_charge!exported interface removed- Before:
finalize_central_charge!(scheme::TNRScheme). - Now: exported name remains, but method definition is removed.
- Before:
-
finalize_cftdata!behavior/interface changed- Before:
finalize_cftdata!(scheme::LoopTNR)returnedcft_data(...). - Now: generalized to
finalize_cftdata!(scheme::TNRScheme)and returnsCFTData(...)(plusSLoopTNRspecialization).
- Before:
Added
CTM_honeycombexported and implemented. (#163)- Classical clock model with Dq symmetry (
classical_clock) added. (#167) CFTDataexported as new conformal-data interface. (#171)CFT_Finalizerexported. (#171)
Changed
- Improved algorithm for U1 implementation of
phi4_complex. (#164) - File/module reorganization (“Rearrange files”). (#170)
- Added/expanded CFT documentation page (
docs/src/cft.md). (#171)
Fixed
- Fix and tests for Sublattice CTM. (#159)
- Loop entropy reduction test and related robustness updates. (#160)
- Bug fix for impure tensors in complex
phi4, with added impurity tests for real/complexphi4. (#168) - Miscellaneous small fixes. (#169)
Documentation
Merged pull requests:
- Add CTM_honeycomb (#163) (@sanderdemeyer)
- Remove a singular dot in phi4 real docstring (#166) (@VictorVanthilt)
- Added classical clock model with Dq symmetry (#167) (@Chenqitrg)
- Fix bug impure tensors complex phi4 + added test for impure tensors for real and complex phi4 (#168) (@JaridPiceu)
- Small fixes (#169) (@VictorVanthilt)
- Rearrange files (#170) (@Adwait-Naravane)
- [Breaking] Change the CFT data interface (#171) (@VictorVanthilt)
- Bump 0.6.0 (#173) (@VictorVanthilt)
v0.5.1
TNRKit v0.5.1
Merged pull requests:
- Fix and test Sublattice CTM (#159) (@VictorVanthilt)
- Test that NNR can reduce loop entropies (#160) (@Chenqitrg)
- Improved algorithm for U1 implementation of Complex phi4 (#164) (@JaridPiceu)
- Add info about approximations in phi4 docstrings (#165) (@VictorVanthilt)
Closed issues:
- The maximal available symmetry of classical q-state potts model is not Z_q but S_q (#161)
v0.5.0
TNRKit v0.5.0
TNRKit v0.5.0 adds new features and significantly unifies the model interface.
Breaking Changes
Unified Model Interface (#149)
All models that previously had a separate functionname_symmetric variant for symmetry-enhanced tensors
have been unified into a single function that takes the symmetry type as the first positional argument.
The default behavior of each function now returns a tensor with the maximum available symmetry.
| Old (v0.4.0) | New (v0.5.0) |
|---|---|
classical_ising(β) |
classical_ising(Trivial, β) |
classical_ising_symmetric(β) |
classical_ising(β) or classical_ising(Z2Irrep, β) |
classical_ising_3D(β) |
classical_ising_3D(Trivial, β) |
classical_ising_symmetric_3D(β) |
classical_ising_3D(β) or classical_ising_3D(Z2Irrep, β) |
classical_ising_triangular(β) |
classical_ising_triangular(Trivial, β) |
classical_ising_triangular_symmetric(β) |
classical_ising_triangular(β) or classical_ising_triangular(Z2Irrep, β) |
classical_potts(q, β) |
classical_potts(Trivial, q, β) |
classical_potts_symmetric(q, β) |
classical_potts(q, β) or classical_potts(ZNIrrep{q}, q, β) |
classical_clock(q, β) |
classical_clock(Trivial, q, β) |
classical_clock_symmetric(q, β) |
classical_clock(q, β) or classical_clock(ZNIrrep{q}, q, β) |
classical_XY_U1_symmetric(β, n) |
classical_XY(β, n) or classical_XY(U1Irrep, β, n) |
classical_XY_O2_symmetric(β, n) |
classical_XY(CU1Irrep, β, n) |
phi4_real(K, μ0, λ) |
phi4_real(Trivial, K, μ0, λ) |
phi4_real_symmetric(K, μ0, λ) |
phi4_real(K, μ0, λ) or phi4_real(Z2Irrep, K, μ0, λ) |
phi4_complex(K, μ0, λ) |
phi4_complex(Trivial, K, μ0, λ) |
phi4_complex_symmetric(K, μ0, λ) |
phi4_complex(K, μ0, λ) or phi4_complex(U1Irrep, K, μ0, λ) |
The following exported names have been removed:
classical_ising_symmetricclassical_ising_symmetric_3Dclassical_ising_triangular_symmetricclassical_potts_symmetricclassical_clock_symmetricclassical_XY_U1_symmetricclassical_XY_O2_symmetricphi4_real_symmetricphi4_complex_symmetric
All model functions now also accept a T::Type{<:Number} keyword argument to control the element type of the output tensor.
LoopTNR run! Interface (#144)
The six-argument run! call for LoopTNR that took separate truncation and stopping criterion arguments for the entanglement optimization has been replaced by the LoopParameters struct, which bundles all loop-optimization parameters:
# Old (v0.4.0)
run!(scheme, trscheme, truncentanglement, criterion, entanglement_criterion, loop_criterion)
# New (v0.5.0)
run!(scheme, trscheme, criterion, LoopParameters())The simplified two-argument form run!(scheme, trscheme, criterion) still works and uses LoopParameters() defaults internally.
New Methods
Correlation Functions
CorrelationHOTRG: Computes two-point correlation functions using HOTRG. Calculates correlators between two impurities at a horizontal distance of 2ⁿ sites (#139).
Honeycomb Lattice CTM
c3vCTM_honeycomb: C3v-symmetric Corner Transfer Matrix for honeycomb lattices (#141).
New Models
Honeycomb Lattice Ising Model (#141)
classical_ising_honeycomb: Ising model on the honeycomb lattice- New constants:
ising_βc_honeycombandf_onsager_honeycomb
XY Model
classical_XY: Unified XY model function (replacesclassical_XY_U1_symmetricandclassical_XY_O2_symmetric)- New constant:
XY_βc
Added Functionality
Nuclear Norm Regularized LoopTNR (#144)
LoopParameters: New exported struct to configure loop optimization, including support for the nuclear norm regularization (NNR-TNR).VN_entropy: Calculate the von Neumann entropy of a transfer matrix.loop_entropy: Calculate the loop entropy of aLoopTNRscheme.
Bugfixes
- Fix wrong twist factors and switch from
svd_trunctoeigh_truncfor projectors in 3D HOTRG (#145). - Fix broken onesite CTM implementation (#155).
- Fix incorrect symmetric complex φ⁴ tensor construction, now accessible via
phi4_complex(U1Irrep, ...)(#142). - Remove incorrect mentions of external field
hfrom complex φ⁴ docstrings and ensure all tensors useComplexF64(#147).
Merged pull requests:
- CorrelationHOTRG (#139) (@JaridPiceu)
- Implement c3vCTM on the honeycomb lattice (#141) (@sanderdemeyer)
- Fix complex phi4 (#142) (@JaridPiceu)
- Update README with new phi4 models (#143) (@JaridPiceu)
- Nuclear norm regularized LoopTNR (#144) (@Chenqitrg)
- Fix twist and use eigh_trunc in 3D HOTRG (#145) (@Yue-Zhengyuan)
- Add Code Coverage (#146) (@VictorVanthilt)
- Small Improvement Complex phi4 model (#147) (@JaridPiceu)
- Small improvements to the LoopTNR docstrings (#148) (@Chenqitrg)
- [Breaking] Redefine functions to take symmetries as argument (#149) (@borisdevos)
- LoopTNR docstring typos (#150) (@Chenqitrg)
- Added the reference and test of classical XY model (#152) (@Chenqitrg)
- Fix onesite CTM (#155) (@VictorVanthilt)
- Adding two references about CFT data calculation (#156) (@Yue-Zhengyuan)
- Test Krylov and NNR LoopTNR methods (#157) (@VictorVanthilt)
Merged pull requests:
- CorrelationHOTRG (#139) (@JaridPiceu)
- Implement c3vCTM on the honeycomb lattice (#141) (@sanderdemeyer)
- Fix complex phi4 (#142) (@JaridPiceu)
- Update README with new phi4 models (#143) (@JaridPiceu)
- Nuclear norm regularized LoopTNR (#144) (@Chenqitrg)
- Fix twist and use eigh_trunc in 3D HOTRG (#145) (@Yue-Zhengyuan)
- Add Code Coverage (#146) (@VictorVanthilt)
- Small Improvement Complex phi4 model (#147) (@JaridPiceu)
- Small improvements to the LoopTNR docstrings (#148) (@VictorVanthilt)
- [Breaking] Redefine functions to take symmetries as argument (#149) (@borisdevos)
- LoopTNR docstring typos (#150) (@VictorVanthilt)
- Added the reference and test of classical XY model (#152) (@Chenqitrg)
- Fix onesite CTM (#155) (@VictorVanthilt)
- Adding two references about CFT data calculation (#156) (@Chenqitrg)
- Test Krylov and NNR LoopTNR methods (#157) (@VictorVanthilt)
Closed issues:
- Hi Yue, thanks for this! I want to refactor the whole way we are calculating cft data to unify it and make it easier for the user to understand. Right now the cft methods are often type unstable, or return
Dict{Any, Any}by design and this really should not be the case. (#153)
v0.4.0
TNRKit v0.4.0
TNRKit v0.4.0 adds a bunch of new features!
One of the main changes in this version is the update to TensorKit v0.16.
This brings a couple of internal and interface changes.
The projectors in HOTRG are now finally calculated with a truncated hermitian eigenvalue decomposition (eigh_trunc).
The TensorKit.TruncationSchemes like truncdim and truncbelow are now MatrixAlgebraKit.TruncationStrategys like truncrank and trunctol.
New Methods
2D Triangular CTM Methods
- c6vCTM_triangular: C6v symmetric Corner Transfer Matrix for triangular lattices (#109)
- CTM_triangular: Corner Transfer Matrix for triangular lattices (#128)
New Models
XY Models (#130)
classical_XY_U1_symmetric: XY model with U(1) symmetryclassical_XY_O2_symmetric: XY model with O(2) symmetry
Triangular Lattice Models
classical_ising_triangular: Ising model on triangular latticeclassical_ising_triangular_symmetric: Symmetric Ising model on triangular lattice with ℤ₂ grading- New constants:
ising_βc_triangularandf_onsager_triangular
φ⁴ theory models (#134)
Real φ⁴:
phi4_real: Partition function tensorphi4_real_symmetric: Partition function with explicit ℤ₂ symmetry
Corresponding impurity tensors have also been added.
Complex φ⁴:
phi4_complex: Partition function tensorphi4_complex_symmetric: Partition function with explicit U(1) symmetry
Corresponding impurity tensors have also been added.
Clock Model (#129)
classical_clock_symmetric: Clock model with explicit ℤq symmetry on each space
Added Functionality
CFT Analysis (#123)
ground_state_degeneracy: Calculate GSD from fixed-point tensors using Shannon entropygu_wen_ratio: Calculate Gu-Wen ratios (X1 and X2) related to GSD and scaling dimensions- New finalizers:
GSDegeneracy_Finalizerandguwenratio_Finalizer
API Changes
- Breaking: Renamed
cft_data!tocft_data(no longer mutates scheme) - TensorKit v0.16.2 is now required, users should now use it's
TruncationStrategyinterface for truncation.
Bugfixes
- Fixed arrow direction checks in LoopTNR implementation (#127)
Merged pull requests:
- Add C6 symmetric CTMRG for triangular lattice (#109) (@sanderdemeyer)
- Clarify loop-TNR CFT calculation (#120) (@Yue-Zhengyuan)
- Make all
cft_datanon-mutating (#122) (@Yue-Zhengyuan) - Ground state degeneracy (#123) (@Adwait-Naravane)
normalize!(#124) (@lkdvos)coner_spectrumwith symmetries (#125) (@lkdvos)- declare globals as const (#126) (@lkdvos)
- Preserve arrows in loop-TNR (#127) (@Yue-Zhengyuan)
- Add general CTMRG for triangular lattice (#128) (@sanderdemeyer)
- Add Zq symmetric classical clock model (#129) (@dartsushi)
- Added XY model protected by U(1) and O(2) symmetries (#130) (@Chenqitrg)
- Update to TensorKit 0.16 (#133) (@VictorVanthilt)
- Add phi^4 models (#134) (@JaridPiceu)
- Remove double definitions of
HOTRGsteps (#136) (@VictorVanthilt) - Use
svd_compactinstead ofsvd_full(#137) (@VictorVanthilt) - Version 0.4.0 (#138) (@VictorVanthilt)
Closed issues:
v0.3.0
TNRKit v0.3.0
- The run! function has been made type stable.
- To do this the way finalizers are handled has changed, see the docs section on finalizers for more details.
Breaking changes
- Finalization is now handled through passing a
Finalizerto therun!function instead of adding afinalize!function to the TNRScheme struct.
Merged pull requests:
- Avoid
Anyin data generation (#114) (@VictorVanthilt) - List Impurity methods in the docs (#115) (@VictorVanthilt)
- Added extra documentation (#116) (@JaridPiceu)
- Type Stability and general improvements attempt (#118) (@VictorVanthilt)
- Small typo correction (#119) (@VictorVanthilt)
v0.2.2
TNRKit v0.2.2
Merged pull requests:
- Loop-TNR: Improve type stability and add 2x2 initialization (#104) (@Yue-Zhengyuan)
- Impurity TRG (#111) (@TheRealHermanator)
- C4ctm fermionic (#112) (@sanderdemeyer)
Closed issues:
- Initialize loop-TNR with 2x2 unit cell (#103)
v0.2.1
TNRKit v0.2.1
Merged pull requests:
- Impurity HOTRG (#105) (@Adwait-Naravane)
- Fix CFT spectrum per sector calculation (#106) (@Yue-Zhengyuan)
- Refactor
_step_hotrg(3d)_x(y)(#107) (@Yue-Zhengyuan) - Test on julia 1 and lts (#108) (@VictorVanthilt)
v0.2.0
TNRKit v0.2.0
Breaking changes
- Added 3D HOTRG
- Fixed left and right unitaries in 2D and 3D HOTRG
- Added CTM and sublattice CTM
Merged pull requests:
- Add 3D HOTRG (#84) (@Yue-Zhengyuan)
- Small docs update (#85) (@VictorVanthilt)
- Fix LaTeX redering in README (#87) (@Yue-Zhengyuan)
- Update PEPSKit compat (#88) (@Yue-Zhengyuan)
- Update sixvertex.jl (#89) (@dartsushi)
- add_generic_ctms (#90) (@dartsushi)
- Loop-TNR options (#91) (@dartsushi)
- typo fixed (#92) (@dartsushi)
CartesianSpaceremoval (#93) (@VictorVanthilt)- fix_typo (#95) (@dartsushi)
- change DOI to permanent DOI (#97) (@VictorVanthilt)
- Fix unitaries in HOTRG (#100) (@Yue-Zhengyuan)
Closed issues:
v0.1.4
TNRKit v0.1.4
Merged pull requests:
- add Zenodo DOI tag (#80) (@VictorVanthilt)
- Add DOI to citation (#81) (@VictorVanthilt)
- Add model docstrings (#83) (@VictorVanthilt)
v0.1.3
TNRKit v0.1.3
Merged pull requests:
- Switch formatting to Runic (#72) (@VictorVanthilt)
- A method to compute the conformal spin up to 10 (#74) (@Chenqitrg)
- Tests rework (#75) (@VictorVanthilt)
- Remove precommit hook (#76) (@VictorVanthilt)
- A trivial simplification of TRG (#77) (@Chenqitrg)
- add CITATION.cff (#78) (@VictorVanthilt)
- Update version number (#79) (@VictorVanthilt)