-
Notifications
You must be signed in to change notification settings - Fork 27
Gauge improvements #101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gauge improvements #101
Changes from 2 commits
28a7339
cba8815
399a9a2
5e4e1a8
8e97379
176d706
d48f8bb
1c1278b
99881f8
040b1f1
bd89ed0
b981a12
fa10a52
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| using KrylovKit: schursolve, Arnoldi | ||
| # TODO: call as `orthogonalize(ψ, -∞)` | ||
| # TODO: could use commontags(ψ) as a default for left_tags | ||
| function right_orthogonalize( | ||
|
|
@@ -12,9 +13,15 @@ function right_orthogonalize( | |
| # Start by getting the right eivenvector/eigenvalue of T | ||
| # TODO: make a function `right_environments(::InfiniteMPS)` that computes | ||
| # all of the right environments using `eigsolve` and shifting unit cells | ||
| λ⃗₁ᴿᴺ, v⃗₁ᴿᴺ, eigsolve_info = eigsolve(T, v₁ᴿᴺ, 1, :LM; tol=tol) | ||
|
|
||
| # original eigsolve function, switch to schur which enforces real | ||
| #λ⃗₁ᴿᴺ, v⃗₁ᴿᴺ, eigsolve_info = eigsolve(T, v₁ᴿᴺ, 1, :LM; tol, eager=true) | ||
| TT, v⃗₁ᴿᴺ, λ⃗₁ᴿᴺ, eigsolve_info = schursolve(T, v₁ᴿᴺ, 1, :LM, Arnoldi(; tol)) | ||
ryanlevy marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| λ₁ᴿᴺ, v₁ᴿᴺ = λ⃗₁ᴿᴺ[1], v⃗₁ᴿᴺ[1] | ||
|
|
||
| if size(TT, 2) > 1 && TT[2, 1] != 0 | ||
| @warn("Largest transfer matrix eigenvector is not real?") | ||
|
||
| end | ||
| if imag(λ₁ᴿᴺ) / norm(λ₁ᴿᴺ) > 1e-15 | ||
| @show λ₁ᴿᴺ | ||
| error( | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.