# LightKrylov (v0.1.0-beta) : Pre-release

**URL:** <https://fortran-lang.discourse.group/t/lightkrylov-v0-1-0-beta-pre-release/8766>\
**Category:** Announcements\
**Created:** [October 29, 2024, 1:58pm UTC](https://fortran-lang.discourse.group/t/lightkrylov-v0-1-0-beta-pre-release/8766 "2024-10-29T13:58:05Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![loiseaujc](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/loiseaujc/32/4582_2.png) [@loiseaujc](https://fortran-lang.discourse.group/u/loiseaujc)\
**Post date:** [October 29, 2024, 1:58pm UTC](https://fortran-lang.discourse.group/t/lightkrylov-v0-1-0-beta-pre-release/8766/1 "2024-10-29T13:58:05Z")

</div>

Hej everyone!

I’m happy to announce that we’ve just officially released `LightKrylov v0.1.0-beta`! The code can be found [here](https://github.com/nekStab/LightKrylov) and the associated documentation [here](https://nekstab.github.io/LightKrylov/). It is a joint effort with two postdoctoral researchers in my lab (Simon Kern and Ricardo Frantz) and is funded partially thanks to an _Agence Nationale pour la Recherche_ project (the French equivalent of the NSF basically).

I had already discussed quickly about `LightKrylov` on [this topic](https://fortran-lang.discourse.group/t/generic-or-kind-agnostic-linear-system-solvers/7574/1) but for those of you who have no idea what it is, here is the _too long/didn’t read_ summary:

> `LightKrylov` is a lightweight implementation of standard Krylov-based techniques relying on modern `Fortran` features, in particular its `abstract type` capabilities. Having no dependencies other than `stdlib`, it exposes `abstract vector` and `abstract linop` types which you can easily extend and adapt to the particular data structure and/or parallelization paradigm you use. Having extending these two types to accomodate your particular applications, `LightKrylov` lets you solve linear systems, compute leading eigenvalues or singular values of your linear operator fairly easily using standard Krylov techniques such `gmres`, `arnoldi` or `lanczos`.

The code is still a bit rough around the edges and we would be more than happy if any of you could give it a test drive and let us know any issue you would encounter or any improvement you’d like to see happen. We have a couple of examples at the moment, including computing the leading eigenpairs of the linearized Ginzburg-Landau operator, or using a Newton-Krylov algorithm to compute an unstable periodic orbit of the Roessler system in the chaotic regime and the associated Lyapunov vectors. We plan to add new examples shortly, in particular how to solve in parallel a Helmholtz equation (the `Hello World` of PDE) using the conjugate gradient method (with the preconditioned version being added quite soon).

Note that we have already started to incorporate `LightKrylov` into [`neklab`](https://github.com/nekStab/neklab), a bifurcation and linear stability analysis toolbox we’re writing for the massively parallel spectral element solver `Nek5000`. Preliminary results on a slightly older version indicated that `LightKrylov` is competitive in terms of computational performances with `Arpack` for computing the leading eigenvalues of the linearized Navier-Stokes operator for the incompressible two-dimensional cylinder flow (roughly a million degrees of freedom on a dozen cores) while requiring far fewer lines of code and a much easier integration into the existing code base. `LightKrylov` is also the base package upon which we are building [`LightROM`](https://github.com/nekStab/LightROM), another package that will eventually makes its way into `neklab` to solve really high-dimensional Lyapunov and Riccati equations for linear optimal feedback control or estimation (i.e. LQR and LQG) using [Dynamical Low-Rank Approximation](https://epubs.siam.org/doi/10.1137/050639703). We’ll make a dedicated annoucement once `LightROM` has reached a sufficient level of maturity though.

Finally, the low-level routines of `LightKrylov` rely quite extensively on `stdlib` and in particular `stdlib_linalg` and `stdlib_linalg_lapack`. As such, I’d like to personally thank @FedericoPerini, @hkvzjal and @jeremie.vandenplas for their amazing work on this!

---

_[View the full topic](https://fortran-lang.discourse.group/t/lightkrylov-v0-1-0-beta-pre-release/8766)._
