Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This builds on top of #161
The user-facing consequences of this PR are
Schur1D()
takes no keyword arguments.g(ω, 1=>n)
used a fastpath that was twice faster than a generalg(ω, m=>n)
. Not anymore. Through careful reuse of Schur factorizations, now everything is faster than the originalg(ω, 1=>n)
, and there is no penalty for the general case.g0 = g(ω)
withg::GreensFunction{Schur1DGreensSolver}
generates aSchur1DGreensSolution
object, instead of defaulting tog(ω, 1=>1)
. It is the equivalent of Deflating Schur algorithm for quasi1D Green functions #161'sg(ω, missing)
. Theng0[n=>m]
computes the actual Greens function matrix. Fastpaths still exist that save a little bit of time when only a specificn,m
is needed. The syntax for the fastpath computation is just as before,g(ω, n=>m)
, with the guarantee thatg(ω, n=>m) ≈ g(ω)[n=>m]
unitcell
. This is done to avoid nasty bugs (unitcell is not a block-wise cell expansion, but shuffles sites/sublattices)Example