diff --git a/Project.toml b/Project.toml index a79a20c..c7f3fbc 100644 --- a/Project.toml +++ b/Project.toml @@ -12,7 +12,7 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SparseIR = "4fe2279e-80f0-4adb-8463-ee114ff56b7d" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" T4AITensorCompat = "864b39ca-388c-4f43-a593-a1076cf4b253" -T4APartitionedMPSs = "f7a3e09c-877e-4116-af24-45397c1413c2" +T4APartitionedTT = "7ada5264-53d5-494a-9572-4199565888e0" TensorCrossInterpolation = "b261b2ec-6378-4871-b32e-9173bb050604" [compat] @@ -20,7 +20,7 @@ EllipsisNotation = "1" QuanticsTCI = "0.7" SparseIR = "^0.96, 0.97, 1" StaticArrays = "1" -T4APartitionedMPSs = "0.7.3" +T4APartitionedTT = "0.8" julia = "1" [extras] @@ -30,9 +30,9 @@ QuanticsTCI = "b11687fd-3a1c-4c41-97d0-998ab401d50e" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" SparseIR = "4fe2279e-80f0-4adb-8463-ee114ff56b7d" -T4APartitionedMPSs = "f7a3e09c-877e-4116-af24-45397c1413c2" +T4APartitionedTT = "7ada5264-53d5-494a-9572-4199565888e0" TensorCrossInterpolation = "b261b2ec-6378-4871-b32e-9173bb050604" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test", "Random", "ReTestItems", "Aqua", "T4APartitionedMPSs", "TensorCrossInterpolation", "QuanticsTCI", "QuanticsGrids", "SparseIR"] +test = ["Test", "Random", "ReTestItems", "Aqua", "T4APartitionedTT", "TensorCrossInterpolation", "QuanticsTCI", "QuanticsGrids", "SparseIR"] diff --git a/docs/Project.toml b/docs/Project.toml index d4ca2a1..6d26332 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,3 +1,4 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +T4APartitionedTT = "7ada5264-53d5-494a-9572-4199565888e0" T4AQuantics = "99202d80-6772-4c79-995b-f2660cf2bd6d" \ No newline at end of file diff --git a/docs/make.jl b/docs/make.jl index f564c2f..4192fe2 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -7,6 +7,7 @@ makedocs(; modules=[T4AQuantics], authors="Hiroshi Shinaoka and contributors", sitename="T4AQuantics.jl", + remotes=nothing, format=Documenter.HTML(; canonical="https://github.com/tensor4all/T4AQuantics.jl", edit_link="main", diff --git a/src/T4AQuantics.jl b/src/T4AQuantics.jl index bd893d2..361d851 100644 --- a/src/T4AQuantics.jl +++ b/src/T4AQuantics.jl @@ -15,7 +15,7 @@ import SparseArrays: sparse import QuanticsTCI import TensorCrossInterpolation as TCI -import T4APartitionedMPSs +import T4APartitionedTT using T4AITensorCompat: contract, Algorithm, apply, product using EllipsisNotation @@ -32,6 +32,6 @@ include("fouriertransform.jl") include("imaginarytime.jl") include("transformer.jl") include("affine.jl") -include("partitionedmps.jl") +include("partitionedtt.jl") end diff --git a/src/partitionedmps.jl b/src/partitionedtt.jl similarity index 66% rename from src/partitionedmps.jl rename to src/partitionedtt.jl index c3972cd..8442752 100644 --- a/src/partitionedmps.jl +++ b/src/partitionedtt.jl @@ -1,5 +1,5 @@ -# Integration with T4APartitionedMPSs -# This file contains methods for T4APartitionedMPSs types (SubDomainMPS, PartitionedMPS) +# Integration with T4APartitionedTT +# This file contains methods for T4APartitionedTT types (SubDomainTT, PartitionedTT) using ITensors import ITensors @@ -8,20 +8,20 @@ import ITensors.NDTensors: Tensor, BlockSparseTensor, blockview using T4AITensorCompat: TensorTrain using T4AITensorCompat: findsite, linkinds, linkind, findsites -import T4APartitionedMPSs: T4APartitionedMPSs, SubDomainMPS, PartitionedMPS, isprojectedat, +import T4APartitionedTT: T4APartitionedTT, SubDomainTT, PartitionedTT, isprojectedat, project -function makesitediagonal(subdmps::SubDomainMPS, site::Index) +function makesitediagonal(subdmps::SubDomainTT, site::Index) return _makesitediagonal(subdmps, site; baseplev=0) end -function makesitediagonal(subdmps::SubDomainMPS, sites::AbstractVector{Index}) +function makesitediagonal(subdmps::SubDomainTT, sites::AbstractVector{Index}) return _makesitediagonal(subdmps, sites; baseplev=0) end -function makesitediagonal(subdmps::SubDomainMPS, tag::String) - mps_diagonal = makesitediagonal(TensorTrain(subdmps), tag) - subdmps_diagonal = SubDomainMPS(mps_diagonal) +function makesitediagonal(subdmps::SubDomainTT, tag::String) + tt_diagonal = makesitediagonal(TensorTrain(subdmps), tag) + subdmps_diagonal = SubDomainTT(tt_diagonal) target_sites = findallsiteinds_by_tag( unique(ITensors.noprime.(Iterators.flatten(siteinds(subdmps)))); tag=tag @@ -38,7 +38,7 @@ function makesitediagonal(subdmps::SubDomainMPS, tag::String) end function _makesitediagonal( - subdmps::SubDomainMPS, sites::AbstractVector{Index{IndsT}}; baseplev=0 + subdmps::SubDomainTT, sites::AbstractVector{Index{IndsT}}; baseplev=0 ) where {IndsT} M_ = deepcopy(TensorTrain(subdmps)) for site in sites @@ -48,12 +48,12 @@ function _makesitediagonal( return project(M_, subdmps.projector) end -function _makesitediagonal(subdmps::SubDomainMPS, site::Index; baseplev=0) +function _makesitediagonal(subdmps::SubDomainTT, site::Index; baseplev=0) return _makesitediagonal(subdmps, [site]; baseplev=baseplev) end function extractdiagonal( - subdmps::SubDomainMPS, sites::AbstractVector{Index{IndsT}} + subdmps::SubDomainTT, sites::AbstractVector{Index{IndsT}} ) where {IndsT} tensors = collect(subdmps.data) for i in eachindex(tensors) @@ -73,55 +73,55 @@ function extractdiagonal( delete!(projector.data, site') end end - return SubDomainMPS(TensorTrain(Vector{ITensor}(tensors)), projector) + return SubDomainTT(TensorTrain(Vector{ITensor}(tensors)), projector) end -function extractdiagonal(subdmps::SubDomainMPS, site::Index{IndsT}) where {IndsT} +function extractdiagonal(subdmps::SubDomainTT, site::Index{IndsT}) where {IndsT} return extractdiagonal(subdmps, [site]) end -function extractdiagonal(subdmps::SubDomainMPS, tag::String)::SubDomainMPS +function extractdiagonal(subdmps::SubDomainTT, tag::String)::SubDomainTT targetsites = findallsiteinds_by_tag( - unique(ITensors.noprime.(T4APartitionedMPSs._allsites(subdmps))); tag=tag + unique(ITensors.noprime.(T4APartitionedTT._allsites(subdmps))); tag=tag ) return extractdiagonal(subdmps, targetsites) end -function rearrange_siteinds(subdmps::SubDomainMPS, sites) - return T4APartitionedMPSs.rearrange_siteinds(subdmps, sites) +function rearrange_siteinds(subdmps::SubDomainTT, sites) + return T4APartitionedTT.rearrange_siteinds(subdmps, sites) end -function rearrange_siteinds(partmps::PartitionedMPS, sites) - return T4APartitionedMPSs.rearrange_siteinds(partmps, sites) +function rearrange_siteinds(partmps::PartitionedTT, sites) + return T4APartitionedTT.rearrange_siteinds(partmps, sites) end """ -Make the PartitionedMPS diagonal for a given site index `s` by introducing a dummy index `s'`. +Make the PartitionedTT diagonal for a given site index `s` by introducing a dummy index `s'`. """ -function makesitediagonal(obj::PartitionedMPS, site) - return PartitionedMPS([_makesitediagonal(prjmps, site; baseplev=0) +function makesitediagonal(obj::PartitionedTT, site) + return PartitionedTT([_makesitediagonal(prjmps, site; baseplev=0) for prjmps in values(obj)]) end -function _makesitediagonal(obj::PartitionedMPS, site; baseplev=0) - return PartitionedMPS([_makesitediagonal(prjmps, site; baseplev=baseplev) +function _makesitediagonal(obj::PartitionedTT, site; baseplev=0) + return PartitionedTT([_makesitediagonal(prjmps, site; baseplev=baseplev) for prjmps in values(obj)]) end """ -Extract diagonal of the PartitionedMPS for `s`, `s'`, ... for a given site index `s`, +Extract diagonal of the PartitionedTT for `s`, `s'`, ... for a given site index `s`, where `s` must have a prime level of 0. """ -function extractdiagonal(obj::PartitionedMPS, site) - return PartitionedMPS([extractdiagonal(prjmps, site) for prjmps in values(obj)]) +function extractdiagonal(obj::PartitionedTT, site) + return PartitionedTT([extractdiagonal(prjmps, site) for prjmps in values(obj)]) end """ By default, elementwise multiplication will be performed. """ function automul( - M1::PartitionedMPS, - M2::PartitionedMPS; + M1::PartitionedTT, + M2::PartitionedTT; tag_row::String="", tag_shared::String="", tag_col::String="", @@ -155,7 +155,7 @@ function automul( M2 = rearrange_siteinds( M2, combinesites(sites_M2_diag, Vector{Index{Int}}(sites_shared), Vector{Index{Int}}(sites_col))) - M = T4APartitionedMPSs.contract(M1, M2; alg=alg, kwargs...) + M = T4APartitionedTT.contract(M1, M2; alg=alg, kwargs...) M = extractdiagonal(M, sites1_ewmul) @@ -174,11 +174,11 @@ function automul( end end end - return T4APartitionedMPSs.truncate( + return T4APartitionedTT.truncate( rearrange_siteinds(M, ressites); cutoff=cutoff, maxdim=maxdim) end -function _findallsiteinds_by_tag(M::PartitionedMPS; tag::String="") +function _findallsiteinds_by_tag(M::PartitionedTT; tag::String="") return findallsiteinds_by_tag(only.(siteinds(M)); tag=tag) end diff --git a/test/mul_tests.jl b/test/mul_tests.jl index 24bd9a5..3fe9172 100644 --- a/test/mul_tests.jl +++ b/test/mul_tests.jl @@ -122,7 +122,7 @@ end @testitem "mul_tests.jl/batchedmatmul" begin using Test - import T4APartitionedMPSs: project, Projector, SubDomainMPS, PartitionedMPS, isprojectedat + import T4APartitionedTT: project, Projector, SubDomainTT, PartitionedTT, isprojectedat import T4AQuantics using ITensors import T4AITensorCompat: random_mps, TensorTrain, siteinds @@ -170,7 +170,7 @@ end @test ab_arr ≈ ab_arr_reconst end - @testset "PartitionedMPS" begin + @testset "PartitionedTT" begin @testset "batchedmatmul" for T in [Float64, ComplexF64] """ C(x, z, k) = sum_y A(x, y, k) * B(y, z, k) @@ -198,14 +198,14 @@ end ab_arr[:, :, k] .= a_arr[:, :, k] * b_arr[:, :, k] end - a_ = PartitionedMPS([ + a_ = PartitionedTT([ project(a, Projector(Dict(sx[1] => 1, sy[1] => 1))), project(a, Projector(Dict(sx[1] => 1, sy[1] => 2))), project(a, Projector(Dict(sx[1] => 2, sy[1] => 1))), project(a, Projector(Dict(sx[1] => 2, sy[1] => 2))) ]) - b_ = PartitionedMPS([ + b_ = PartitionedTT([ project(b, Projector(Dict(sy[1] => 1, sz[1] => 1))), project(b, Projector(Dict(sy[1] => 1, sz[1] => 2))), project(b, Projector(Dict(sy[1] => 2, sz[1] => 1))), diff --git a/test/util_tests.jl b/test/util_tests.jl index f26cab6..d3aaa94 100644 --- a/test/util_tests.jl +++ b/test/util_tests.jl @@ -1,6 +1,6 @@ @testitem "util.jl" begin using Test - import T4APartitionedMPSs: T4APartitionedMPSs, SubDomainMPS, PartitionedMPS, project, + import T4APartitionedTT: T4APartitionedTT, SubDomainTT, PartitionedTT, project, isprojectedat import T4AQuantics using ITensors @@ -267,7 +267,7 @@ end end - @testset "SubDomainMPS" begin + @testset "SubDomainTT" begin @testset "rearrange_siteinds" begin N = 3 sitesx = [Index(2, "x=$n") for n in 1:N] @@ -277,7 +277,7 @@ Ψ = _random_mpo(sites) - prjΨ = SubDomainMPS(Ψ) + prjΨ = SubDomainTT(Ψ) prjΨ1 = project(prjΨ, Dict(sitesx[1] => 1)) sitesxy = collect(collect.(zip(sitesx, sitesy))) @@ -289,7 +289,7 @@ prjΨ1_rearranged = T4AQuantics.rearrange_siteinds(prjΨ1, sites_rearranged) @test reduce(*, TensorTrain(prjΨ1)) ≈ reduce(*, TensorTrain(prjΨ1_rearranged)) - @test T4APartitionedMPSs.siteinds(prjΨ1_rearranged) == sites_rearranged + @test T4APartitionedTT.siteinds(prjΨ1_rearranged) == sites_rearranged end @testset "makesitediagonal and extractdiagonal" begin @@ -304,11 +304,11 @@ Ψ = _random_mpo(sites) - prjΨ = SubDomainMPS(Ψ) + prjΨ = SubDomainTT(Ψ) prjΨ1 = project(prjΨ, Dict(sitesx[1] => 1)) prjΨ1_diagonalz = T4AQuantics.makesitediagonal(prjΨ1, "y") - sites_diagonalz = Iterators.flatten(T4APartitionedMPSs.siteinds(prjΨ1_diagonalz)) + sites_diagonalz = Iterators.flatten(T4APartitionedTT.siteinds(prjΨ1_diagonalz)) psi_diag = prod(prjΨ1_diagonalz.data) psi = prod(prjΨ1.data)