Skip to content

Commit 622660d

Browse files
committed
deprecation
1 parent 729ebf9 commit 622660d

1 file changed

Lines changed: 50 additions & 65 deletions

File tree

src/states/finitemps.jl

Lines changed: 50 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,16 @@ function FiniteMPS(As::Vector{<:GenericMPSTensor}; normalize::Bool = false)
218218
return mps
219219
end
220220

221+
# construct from dense state
222+
# TODO: make planar?
223+
function FiniteMPS::AbstractTensor)
224+
U = ones(scalartype(ψ), oneunit(spacetype(ψ)))
225+
A = _transpose_front(
226+
U * transpose* U', ((), reverse(ntuple(identity, numind(ψ) + 1))))
227+
)
228+
return FiniteMPS(decompose_localmps(A); normalize = false, overwrite = true)
229+
end
230+
221231
for f in (:zeros, :ones)
222232
@eval begin
223233
Base.$f(manifold::FiniteMPSManifold) = $f(Defaults.eltype, manifold)
@@ -249,71 +259,46 @@ for randf in (:rand, :randn, :randexp, :randisometry)
249259
end
250260
end
251261

252-
function FiniteMPS(
253-
f, elt, Pspaces::Vector{<:Union{S, CompositeSpace{S}}}, maxVspaces::Vector{S};
254-
normalize = true, left::S = oneunit(S), right::S = oneunit(S)
255-
) where {S <: ElementarySpace}
256-
N = length(Pspaces)
257-
length(maxVspaces) == N - 1 ||
258-
throw(DimensionMismatch("length of physical spaces ($N) and virtual spaces $(length(maxVspaces)) should differ by 1"))
259-
260-
# limit the maximum virtual dimension such that result is full rank
261-
fusedPspaces = fuse.(Pspaces) # for working with multiple physical spaces
262-
Vspaces = similar(maxVspaces, N + 1)
263-
264-
Vspaces[1] = left
265-
for k in 2:N
266-
Vspaces[k] = infimum(fuse(Vspaces[k - 1], fusedPspaces[k - 1]), maxVspaces[k - 1])
267-
dim(Vspaces[k]) > 0 || @warn "no fusion channels available at site $k"
268-
end
269-
270-
Vspaces[end] = right
271-
for k in reverse(2:N)
272-
Vspaces[k] = infimum(Vspaces[k], fuse(Vspaces[k + 1], dual(fusedPspaces[k])))
273-
dim(Vspaces[k]) > 0 || @warn "no fusion channels available at site $k"
274-
end
275-
276-
# construct MPS
277-
tensors = MPSTensor.(f, elt, Pspaces, Vspaces[1:(end - 1)], Vspaces[2:end])
278-
return FiniteMPS(tensors; normalize, overwrite = true)
279-
end
280-
function FiniteMPS(
281-
f, elt, Pspaces::Vector{<:Union{S, CompositeSpace{S}}}, maxVspace::S;
282-
kwargs...
283-
) where {S <: ElementarySpace}
284-
maxVspaces = fill(maxVspace, length(Pspaces) - 1)
285-
return FiniteMPS(f, elt, Pspaces, maxVspaces; kwargs...)
286-
end
287-
function FiniteMPS(
288-
Pspaces::Vector{<:Union{S, CompositeSpace{S}}}, maxVspaces::Union{S, Vector{S}};
289-
kwargs...
290-
) where {S <: ElementarySpace}
291-
return FiniteMPS(rand, Defaults.eltype, Pspaces, maxVspaces; kwargs...)
292-
end
293-
294-
# Also accept single physical space and length
295-
function FiniteMPS(N::Int, V::VectorSpace, args...; kwargs...)
296-
return FiniteMPS(fill(V, N), args...; kwargs...)
297-
end
298-
function FiniteMPS(f, elt, N::Int, V::VectorSpace, args...; kwargs...)
299-
return FiniteMPS(f, elt, fill(V, N), args...; kwargs...)
300-
end
301-
302-
# Also accept ProductSpace of physical spaces
303-
FiniteMPS(P::ProductSpace, args...; kwargs...) = FiniteMPS(collect(P), args...; kwargs...)
304-
function FiniteMPS(f, elt, P::ProductSpace, args...; kwargs...)
305-
return FiniteMPS(f, elt, collect(P), args...; kwargs...)
306-
end
307-
308-
# construct from dense state
309-
# TODO: make planar?
310-
function FiniteMPS::AbstractTensor)
311-
U = ones(scalartype(ψ), oneunit(spacetype(ψ)))
312-
A = _transpose_front(
313-
U * transpose* U', ((), reverse(ntuple(identity, numind(ψ) + 1))))
314-
)
315-
return FiniteMPS(decompose_localmps(A); normalize = false, overwrite = true)
316-
end
262+
# Deprecate old constructor syntaxes
263+
# ----------------------------------
264+
Base.@deprecate(
265+
FiniteMPS(
266+
f, elt, Pspaces::Vector{<:TensorSpace{S}}, maxVspaces::Vector{S}; left::S = oneunit(S), right::S = oneunit(S)
267+
) where {S <: ElementarySpace},
268+
f(elt, FiniteMPSManifold(Pspaces, maxVspaces; left_virtualspace = left, right_virtualspace = right))
269+
)
270+
Base.@deprecate(
271+
FiniteMPS(
272+
f, elt, Pspaces::Vector{<:TensorSpace{S}}, maxVspace::S; left::S = oneunit(S), right::S = oneunit(S)
273+
) where {S <: ElementarySpace},
274+
f(elt, FiniteMPSManifold(Pspaces, maxVspaces; left_virtualspace = left, right_virtualspace = right))
275+
)
276+
Base.@deprecate(
277+
FiniteMPS(
278+
Pspaces::Vector{<:TensorSpace{S}}, maxVspaces::Union{S, Vector{S}}; left::S = oneunit(S), right::S = oneunit(S)
279+
) where {S <: ElementarySpace},
280+
rand(FiniteMPSManifold(Pspaces, maxVspaces; left_virtualspace = left, right_virtualspace = right))
281+
)
282+
Base.@deprecate(
283+
FiniteMPS(
284+
f, elt, N::Int, V::VectorSpace, args...; left::S = oneunit(S), right::S = oneunit(S)
285+
) where {S <: ElementarySpace},
286+
f(elt, FiniteMPSManifold(fill(V, N), args...; left_virtualspace = left, right_virtualspace = right))
287+
)
288+
Base.@deprecate(
289+
FiniteMPS(
290+
N::Int, V::VectorSpace, args...; left::S = oneunit(S), right::S = oneunit(S)
291+
) where {S <: ElementarySpace},
292+
rand(FiniteMPSManifold(fill(V, N), args...; left_virtualspace = left, right_virtualspace = right))
293+
)
294+
Base.@deprecate(
295+
FiniteMPS(P::ProductSpace, args...; kwargs...),
296+
rand(FiniteMPSManifold(collect(P), args...; kwargs...))
297+
)
298+
Base.@deprecate(
299+
FiniteMPS(f, elt, P::ProductSpace, args...; kwargs...),
300+
f(elt, FiniteMPSManifold(collect(P), args...; kwargs...))
301+
)
317302

318303
#===========================================================================================
319304
Utility

0 commit comments

Comments
 (0)