Fast solvers for saddle-point problem (linear system)

31 Views Asked by At

I would like to speed up my multi body simulator. There, in every time step a linear system, often referred to as saddle-point problem, has to be solved. The system looks like this

$$ \begin{bmatrix} A & -B^{\top} \\ -B & 0 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} c \\ d \end{bmatrix} $$

where $A \in \mathbb{R}^{n\times n}$ is sparse, positive definite and $B \in \mathbb{R}^{m \times n}$, where $m < n$ has full rank. My systems are moderately sized, meaning $m+n<1000$.

I would like to know, if there are any specialized solvers for this particular problem. Also, I was wondering if it is possible to gain a speed up by disregarding $y$, as I'm often only interested in the solution for $x$. I wrote down a formula for this but the code unfortunately was ~100x slower than just solving the full problem. I'm happy for any suggestions on this.