Skip to content

Commit ce2d7ed

Browse files
committed
add utility and defaults
1 parent 48458ba commit ce2d7ed

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

src/MPSKit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ using Compat: @compat
6060
using TensorKit
6161
using TensorKit: BraidingTensor
6262
using MatrixAlgebraKit
63+
using MatrixAlgebraKit: TruncationStrategy, PolarViaSVD, LAPACK_SVDAlgorithm
6364
using BlockTensorKit
6465
using BlockTensorKit: TensorMapSumSpace
6566
using TensorOperations

src/utility/defaults.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import KrylovKit: GMRES, Arnoldi, Lanczos
99
using OhMyThreads
1010
using ..MPSKit: DynamicTol
1111
using TensorKit: TensorKit
12+
using MatrixAlgebraKit: LAPACK_HouseholderQR, LAPACK_HouseholderLQ, LAPACK_DivideAndConquer
1213

1314
const VERBOSE_NONE = 0
1415
const VERBOSE_WARN = 1
@@ -56,7 +57,9 @@ function alg_eigsolve(;
5657
return dynamic_tols ? DynamicTol(alg, tol_min, tol_max, tol_factor) : alg
5758
end
5859

59-
alg_svd() = TensorKit.SDD()
60+
alg_svd() = LAPACK_DivideAndConquer()
61+
alg_qr() = LAPACK_HouseholderQR(; positive = true)
62+
alg_lq() = LAPACK_HouseholderLQ(; positive = true)
6063

6164
# TODO: make verbosity and maxiter actually do something
6265
function alg_environments(;

src/utility/utility.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@ function _embedders(spaces)
7676
totalspace = reduce(, spaces)
7777

7878
maps = [isometry(totalspace, first(spaces))]
79-
restmap = leftnull(first(maps))
79+
restmap = left_null(first(maps))
8080

8181
for sp in spaces[2:end]
8282
cm = isometry(domain(restmap), sp)
8383

8484
push!(maps, restmap * cm)
85-
restmap = restmap * leftnull(cm)
85+
restmap = restmap * left_null(cm)
8686
end
8787

8888
return maps
@@ -151,28 +151,28 @@ function check_unambiguous_braiding(V::VectorSpace)
151151
end
152152

153153
# temporary workaround for the fact that left_orth and right_orth are poorly designed:
154-
function _left_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm)
154+
function _left_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm, trunc::MatrixAlgebraKit.TruncationStrategy = notrunc())
155155
if alg isa LAPACK_HouseholderQR
156-
return left_orth!(t; kind = :qr, alg_qr = alg)
156+
return left_orth!(t; kind = :qr, alg_qr = alg, trunc)
157157
elseif alg isa LAPACK_HouseholderLQ
158-
return left_orth!(t; kind = :qr, alg_qr = LAPACK_HouseholderQR(; alg.kwargs...))
158+
return left_orth!(t; kind = :qr, alg_qr = LAPACK_HouseholderQR(; alg.kwargs...), trunc)
159159
elseif alg isa PolarViaSVD
160-
return left_orth!(t; kind = :polar, alg_polar = alg)
160+
return left_orth!(t; kind = :polar, alg_polar = alg, trunc)
161161
elseif alg isa LAPACK_SVDAlgorithm
162-
return left_orth!(t; kind = :svd, alg_svd = alg)
162+
return left_orth!(t; kind = :svd, alg_svd = alg, trunc)
163163
else
164164
error(lazy"unkown algorithm $alg")
165165
end
166166
end
167-
function _right_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm)
167+
function _right_orth!(t; alg::MatrixAlgebraKit.AbstractAlgorithm, trunc::TruncationStrategy = notrunc())
168168
if alg isa LAPACK_HouseholderLQ
169-
return right_orth!(t; kind = :lq, alg_lq = alg)
170-
elseif alg isa LAPACK_HouseholderQr
171-
return right_orth!(t; kind = :lq, alg_lq = LAPACK_HouseholderLQ(; alg.kwargs...))
169+
return right_orth!(t; kind = :lq, alg_lq = alg, trunc)
170+
elseif alg isa LAPACK_HouseholderQR
171+
return right_orth!(t; kind = :lq, alg_lq = LAPACK_HouseholderLQ(; alg.kwargs...), trunc)
172172
elseif alg isa PolarViaSVD
173-
return right_orth!(t; kind = :polar, alg_polar = alg)
173+
return right_orth!(t; kind = :polar, alg_polar = alg, trunc)
174174
elseif alg isa LAPACK_SVDAlgorithm
175-
return right_orth!(t; kind = :svd, alg_svd = alg)
175+
return right_orth!(t; kind = :svd, alg_svd = alg, trunc)
176176
else
177177
error(lazy"unkown algorithm $alg")
178178
end

0 commit comments

Comments
 (0)