krylov methods
Opened this issue · 5 comments
Is there a way to use Krylov methods with QuantumOptics.jl, or a plan to support in future?
https://github.com/Jutho/KrylovKit.jl is excellent with specific methods for exponential operators
Alternately, some of the solvers in DifferentialEquations.jl allow Krylov methods in the linear solve step, and also has IMEX methods with exponential operators, which might be a more direct pathway.
There would certainly be interest in having these implemented, and the maintainers would be eager to help, but the current maintainers probably do not have the bandwidth to do it themselves (we are all working on this as a volunteer job that occasionally helps our actual research work). If you or someone working with you wants to give it a go, please submit a PR (even a very draft unfinished one) and we will help with polishing it and merging it.
Alexander did a bunch of work on this issue in #367
There are a few more places where we can pursue this, and maybe fully excise Arpack from this library (as long as KrylovKit is indeed always faster).
Hi, @aravindh-krishnamoorthy ! That sounds wonderful. Check out #367 - it is a good example of how to provide better defaults for various computational methods, that one specifically looking into the diagonalization tooling.
Places where similar work could be helpful are the steady-state solvers and matrix exponentiation:
- I think most of that type of work for matrix exponentiation was already done in qojulia/QuantumOpticsBase.jl#112 . Multiple different methods were discussed, but right now only one is implemented (which we think is the best one). However, more methods being made available in the style of #367 would probably be valuable.
- For steady state solvers we now have gone through a few different implementations (see #338 and #252 and #308 ) but we do not have much flexibility in it. Implementing more options will be valuable. It would be amazing if we can have a set of benchmarks and implementation similar to what was done in #112 for exponentiation or #367 for eigensolvers.
- A developer documentation page that actually explains these choices and what is available in the ecosystem and having benchmarks would be invaluable!
The difference between QuantumOptics.jl and QuantumOpticsBase.jl is that the former contains various simulation of dynamics tools, while the base package defines the fundamental datastructure and various linear algebra operations between them.
@Krastanov Perfect! Thank you very much for the pointers. I'll get started!
- A developer documentation page that actually explains these choices and what is available in the ecosystem and having benchmarks would be invaluable!
Perhaps this is the most logical first step as this gives me an idea how the existing solutions are implemented. Once I'm done, I'll start with the KrylovKit support for functions.