• GSOC 2017 summary

    As GSOC 2017 is coming to an end, I'd like to use this blog post to give a summary of the things I have been working on.

    August 18, 2017 - 13 minute read -
    gsoc julia
  • Orthogonalization performance

    Methods like GMRES and Jacobi-Davidson construct an orthogonal basis for their search subspace. It is well-known that classical Gram-Schmidt (CGS) is vulnerable for loss of orthogonality due to rounding errors. Modified Gram-Schmidt (MGS) is usually the fix for this, yet it is not free of rounding errors and is memory-bound when it comes to performance. In this post we'll look into iterative or refined orthogonalization methods and their performance.

    June 18, 2017 - 10 minute read -
    gsoc julia
  • Jacobi-Davidson example

    Let's take a look how the Jacobi-Davidson algorithm targets interior eigenvalues of a Poisson matrix.

    June 11, 2017 - 4 minute read -
    gsoc julia
  • Harmonic Ritz values visualized

    A hopefully insightful visualizion of harmonic Ritz values versus ordinary Ritz values.

    June 7, 2017 - 11 minute read -
    gsoc julia
  • Interior eigenvalues in Jacobi-Davidson

    From the Arnoldi method we know that Ritz values tend to converge to exterior eigenvalues; similar behaviour is observed in Jacobi-Davidson. This is an issue when restarting the method: a Ritz value close to a specified interior target is not necessarily a good approximation of an eigenvalue in that neighbourhood; the Ritz value might as well be on its way to an exterior eigenvalue, and in that case we would not want the Ritz vector to be retained at restart. An alternative is to use harmonic Ritz pairs.

    June 6, 2017 - 14 minute read -
    gsoc julia
  • Towards the next eigenpair in Jacobi-Davidson

    After removing a converged Ritz vector from the search space, we must ensure that new expansions do not bring it back. In practice this means updating the correction equation so that these directions are deflated.

    June 3, 2017 - 5 minute read -
    gsoc julia
  • Non-Hermetian eigenproblems in Jacobi-Davidson

    Non-Hermetian matrices do not necessarily have orthogonal eigenvectors for distinct eigenvalues. So far we have relied upon this property when shrinking the search subspace. Fortunately we can work with the Schur decomposition to tackle this problem.

    June 3, 2017 - 4 minute read -
    gsoc julia
  • Shrinking the search subspace in Jacobi-Davidson

    Once an approximate eigenvector has converged, we must remove it from the search space, so that other eigenpairs can be found. Also, when a search subspace becomes too large, a restart is necessary. This also requires removing vectors from the search space. Fortunately, shrinking the search subspace is easier in comparison to IRAM.

    June 2, 2017 - 6 minute read -
    gsoc julia
  • Options in Jacobi-Davidson

    In my previous post I showed the defining property for Jacobi-Davidson, but it turns out that there is a lot of freedom in the remaining parts of the algorithm. For instance in how to initialize it; this post will be about exactly that.

    June 2, 2017 - 3 minute read -
    gsoc julia
  • Jacobi-Davidson

    As part of Google Summer of Code I'm implementing several iterative methods for linear systems of equations and eigenvalue problems in Julia. Up to now I have studied Jacobi-Davidson and have a poor man's version working. The first post is about my notes on the method.

    June 1, 2017 - 11 minute read -
    gsoc julia
  • Compile-time primes

    Anyone who has seen C++ template meta-programming must have come across the compile-time prime number generator by Erwin Unruh. Since then the language has evolved and provides a very readible alternative. In this post I'll touch on both the classical and modern approach.

    March 10, 2017 - 8 minute read -
  • Hello world

    Every now and then I'll post some findings in programming and math, ranging from solutions to Project Euler exercises to numerical methods in partial differential equations.

    March 9, 2017 - 1 minute read -