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?