# [petsc-users] Augmented Linear System

Karabelas, Elias (elias.karabelas@uni-graz.at) elias.karabelas at uni-graz.at
Thu Mar 30 10:56:37 CDT 2023

```Dear Community,

I have a linear system of the form

|K B| du    f1

=

|C D| dp    f2

where K is a big m x m sparsematrix that comes from some FE
discretization, B is a coupling matrix (of the form m x 4), C is of the
form (4 x m) and D is 4x4.

I save B and C as 4 Vecs and D as a 4x4 double array. D might be
singular so at the moment I use the following schur-complement approach
to solve this system

1) Calculate the vecs v1 = KSP(K,PrecK) * f1, invB = [ KSP(K, PrecK) *
B[0], KSP(K, PrecK) * B[1], KSP(K, PrecK) * B[2], KSP(K, PrecK) * B[3] ]

2) Build the schurcomplement S=[C ^ K^-1 B - D] via VecDots (C ^ K^-1 B
[i, j] = VecDot(C[i], invB[j])

3) invert S (this seems to be mostly non-singular) to get dp

4) calculate du with dp

So counting this, I need 5x to call KSP which can be expensive and I
thought of somehow doing the Schur-Complement the other way around,
however due to the (possible) singularity of D this seems like a bad
idea (even using a pseudoinverse)

Two things puzzle me here still

A) Can this be done more efficiently?

B) In case my above matrix is the Jacobian in a newton method, how do I
make sure with any form of Schur Complement approach that I hit the
correct residual reduction?

Thanks

Elias

--
Dr. Elias Karabelas
Universitätsassistent | PostDoc

Institut für Mathematik & Wissenschaftliches Rechnen | Institute of Mathematics & Scientific Computing
Universität Graz | University of Graz

Heinrichstraße 36, 8010 Graz
Tel.:   +43/(0)316/380-8546
E-Mail: elias.karabelas at uni-graz.at
Web: 	https://ccl.medunigraz.at

Bitte denken Sie an die Umwelt, bevor Sie dieses E-Mail drucken. Danke!
Please consider the environment before printing this e-mail. Thank you!

```