Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/src/assets/tnrkit.bib
Original file line number Diff line number Diff line change
Expand Up @@ -233,3 +233,17 @@ @article{homma2024a
number = {4},
doi = {10.1103/PhysRevResearch.6.043102}
}

@article{Yu_2014,
title = {Tensor renormalization group study of classical XY model on the square lattice},
volume = {89},
ISSN = {1550-2376},
url = {http://dx.doi.org/10.1103/PhysRevE.89.013308},
DOI = {10.1103/physreve.89.013308},
number = {1},
journal = {Physical Review E},
publisher = {American Physical Society (APS)},
author = {Yu, J. F. and Xie, Z. Y. and Meurice, Y. and Liu, Yuzhi and Denbleyker, A. and Zou, Haiyuan and Qin, M. P. and Chen, J. and Xiang, T.},
year = {2014},
month = {jan}
}
2 changes: 1 addition & 1 deletion src/TNRKit.jl
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export classical_ising, classical_ising_symmetric, ising_βc, f_onsager, ising_c
classical_ising_triangular, classical_ising_triangular_symmetric,
ising_βc_triangular, f_onsager_triangular,
classical_ising_honeycomb, classical_ising_honeycomb_symmetric,
ising_βc_honeycomb, f_onsager_honeycomb
ising_βc_honeycomb, f_onsager_honeycomb, XY_βc

include("models/gross-neveu.jl")
export gross_neveu_start
Expand Down
10 changes: 9 additions & 1 deletion src/models/XY.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function algebraic_initialization(m::TensorMap, bond::TensorMap)
function algebraic_initialization(m::AbstractTensorMap{E, S, 1, 2}, bond::AbstractTensorMap{E, S, 1, 1}) where {E, S}
@tensor opt = true T[l u; d r] :=
m[u; Au Bu] *
bond[Au; Ad] *
Expand All @@ -11,6 +11,8 @@ function algebraic_initialization(m::TensorMap, bond::TensorMap)
return T
end

const XY_βc = 1.1199 # This is an approximation!

"""
$(SIGNATURES)

Expand All @@ -23,6 +25,9 @@ and charge truncation `charge_trunc`.
classical_XY_U1_symmetric(0.9, 6)
```

### References
* [Yu et. al. 10.1103/PhysRevE.89.013308 (2014)](@cite Yu_2014)

See also: [`classical_XY_O2_symmetric`](@ref).
"""
function classical_XY_U1_symmetric(beta::Float64, charge_trunc::Int)
Expand Down Expand Up @@ -52,6 +57,9 @@ and charge truncation `charge_trunc`.
classical_XY_O2_symmetric(0.9, 6)
```

### References
* [Yu et. al. 10.1103/PhysRevE.89.013308 (2014)](@cite Yu_2014)

See also: [`classical_XY_U1_symmetric`](@ref).
"""
function classical_XY_O2_symmetric(beta::Float64, charge_trunc::Int)
Expand Down
38 changes: 38 additions & 0 deletions test/models.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,41 @@ model_temp_answer = [
@test free_energy(data, temp) ≈ answer rtol = 1.0e-3
end
end

@testset "LoopTNR - 2D XY model" begin
@info "Central charge of KT phase with U(1) symmetry"
T_KT = classical_XY_U1_symmetric(XY_βc + 0.1, 8)
scheme = LoopTNR(T_KT)
data = run!(scheme, truncrank(16), maxiter(20))
cft = cft_data(scheme, [sqrt(2), 2 * sqrt(2), 0])
central_charge = cft["c"]
@test central_charge ≈ 1.0 atol = 1.0e-2
@info "Obtained central charge:\n$central_charge."

@info "Central charge of symmetric phase with U(1) symmetry"
T_sym = classical_XY_U1_symmetric(XY_βc - 0.1, 8)
scheme = LoopTNR(T_sym)
data = run!(scheme, truncrank(16), maxiter(20))
cft = cft_data(scheme, [sqrt(2), 2 * sqrt(2), 0])
central_charge = cft["c"]
@test central_charge ≈ 0.0 atol = 1.0e-13
@info "Obtained central charge:\n$central_charge."

@info "Central charge of KT phase with O(2) symmetry"
T_KT = classical_XY_O2_symmetric(XY_βc + 0.1, 8)
scheme = LoopTNR(T_KT)
data = run!(scheme, truncrank(16), maxiter(20))
cft = cft_data(scheme, [sqrt(2), 2 * sqrt(2), 0])
central_charge = cft["c"]
@test central_charge ≈ 1.0 atol = 1.0e-2
@info "Obtained central charge:\n$central_charge."

@info "Central charge of symmetric phase with O(2) symmetry"
T_sym = classical_XY_O2_symmetric(XY_βc - 0.1, 8)
scheme = LoopTNR(T_sym)
data = run!(scheme, truncrank(16), maxiter(20))
cft = cft_data(scheme, [sqrt(2), 2 * sqrt(2), 0])
central_charge = cft["c"]
@test central_charge ≈ 0.0 atol = 1.0e-13
@info "Obtained central charge:\n$central_charge."
end
Loading