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.karabe...@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!

Reply via email to