Skip to content
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

Use reallinsolve for solving the CTMRG gradient linear problem #94

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

pbrehmer
Copy link
Collaborator

This PR replaces linsolve with reallinsolve for the CTMRG fixed-point gradient linear problem, as implemented and explained in this recent PR. Since the Jacobians $\partial f / \partial A$ and $\partial f/\partial x$ are not complex linear but only real linear operators (see added test), using linsolve directly is not valid in principle.

@pbrehmer pbrehmer marked this pull request as draft November 14, 2024 16:47
Copy link

codecov bot commented Nov 14, 2024

Codecov Report

Attention: Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/algorithms/peps_opt.jl 0.00% 3 Missing ⚠️
Files with missing lines Coverage Δ
src/algorithms/peps_opt.jl 2.88% <0.00%> (-91.71%) ⬇️

... and 22 files with indirect coverage changes

@lkdvos
Copy link
Member

lkdvos commented Nov 14, 2024

boundarymps errors are unrelated and should be fixed by #95

@pbrehmer pbrehmer marked this pull request as ready for review December 12, 2024 16:14
@pbrehmer
Copy link
Collaborator Author

This PR should be essentially ready to go. It only switches to reallinsolve and adds a linearity test for the CTMRG Jacobians. However, we need to wait until KrylovKit tags a new release because as of now, the reallinsolve functionality is only available on the master branch.

One thing I'm confused about is that using FullInfiniteProjector the Jacobians somehow stop being properly linear even for real coefficients. (See the jacobian_real_linear.jl test.) Somehow the full-infinite projector algorithm really doesn't differentiate too well - at least in its current implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants