# Advice on solving a coupled physics problem

I am taking a shot at solving a coupled physics problem. I have this matrix formed:

$\mathbf{J}=\begin{bmatrix} \mathbf{A} & \mathbf{B}\\ \mathbf{C} & \mathbf{D} \end{bmatrix}$

where $\mathbf{A}$ and $\mathbf{D}$ represent two different physics, and $\mathbf{C}=-\mathbf{B}^{T}$. Originally, I wanted to use the Schur complement:

$\mathbf{S}_{D}=\mathbf{D}-\mathbf{C}\mathbf{A}^{-1}\mathbf{B}$

But this won't work as shown because $\mathbf{A}$ is non-invertible. It's guaranteed at least one row in $\mathbf{A}$ will be zero.

My question is: what other methods could I apply to solve this problem? Is there any way to take advantage of the fact that:

$\mathbf{S}_{A}=\mathbf{A}-\mathbf{C}\mathbf{D}^{-1}\mathbf{B}$

exists since $\mathbf{D}$ is nonsingular?

## Follow-up

The size of $\mathbf{J}$ shouldn't exceed 1000x1000. I'm solving a statics problem for a geometrically nonlinear structure with no PDEs involved. In the past, this problem was solved using a monolithic algorithm, where the $\mathbf{A}$/$\mathbf{D}$ physics are solved independently of one another. I want to try a new approach since a rudimentary algorithm already developed shows significant speed-up over traditional methods. As Jan pointed out below, using $S_{A}$ is an option. Is there a PETSc run-time option to alternate from $S_{D}$ to $S_{A}$ (for background, page 87 in the PETSc manual discusses Schur factorization)? Or do I have to reorganize the $\mathbf{J}$ matrix structure, essentially swapping the $\mathbf{A}$ and $\mathbf{D}$ blocks?

• Welcome to SciComp. Can you give some more information on the problem. What are the dimensions? Why aren't you satisfied with simply using $S_A$ to decouple the system? – Jan Jul 9 '13 at 6:16
• As far as I know there's not option in PETSc to switch between $S_A$ and $S_D$, but perhaps one of the developers will react. For Schur complement methods in PETSc with $J$ as given, you need to invert $S_D$. Maybe you can provide an approximation for $A^{-1}$ to be used by PETSc in the Schur complement? Or directly provide an approximation for the entire Schur complement? – chris Jul 9 '13 at 8:10

• Thank you; your video tutorials are great (I like how an occasional lecture on good programming practices is thrown into the mix). I have used a direct solver, but I am insisting on using an iterative solver because it will eventually be needed when moving onto larger systems, and I might as well prototype it now. Since PETSc is being used, I suppose the solution is to change the $\mathbf{J}$ matrix structure, as indicated in the original question. – user2183232343 Jul 12 '13 at 20:02