For a Bounday Element Method problem I require the solution of a system of linear equations with multiple right-hand sides. Though this is a dense system, I still want to do it via Petsc in parallel. Would the best way to do this be through something such as -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps?

Furthermore and importantly, I refine my grid in a regular way by adding $N-1$ points between the already present $N$ points. This leads to a new system of equations of size $N\left(N-1\right) \times N\left(N-1\right)$ in $N\left(N-1\right)$ unknowns.

The upper-left matrix $A_{11}$ in this new system is identical to the unrefined matrix (multiplied by 0.5). The other three blocks $A_{12}$, $A_{21}$ and $A_{22}$ are new:


The question is now whether knowledge about the unrefined matrix $A_{11}$ can be used to speed up calculation of the refined system?

I was thinking, for example, about using the LU decomposition of $A_{11}$ to calculate the LU decomposition of the entire matrix $A$ using the well-known formula's

$$ \left\{\begin{aligned} L_{21} U_{11} &= A_{21} \\ L_{11} U_{12} &= A_{12} \\ L_{22} U_{22} &= A_{22} - L_{21} U_{12} \end{aligned}\right. $$

where $L_{21}$ and $U_{12}^T$ are $N-1\times N$ full matrices, $L_{11}$, $L_{22}$ are lower triangular $N\times N$ and $N-1 \times N-1$ matrices and $U_{11}$, $U_{22}$ are upper triangular with the same sizes.

Is there any way to do this in Petsc?

Or is there a better thing I can do?

For example, due to the fact that $A_{21}$, $A_{12}$ and $A_{22}$ result from mesh refinement of the original system, they all look a lot like $A_{11}$: Definining

$$ V = \left.\underbrace{\left[\begin{array}{cccc} 0.5 & 0.5 & 0 & \cdots & 0 & 0 \\ 0 & 0.5 & 0.5 & \cdots & 0 & 0\\ \vdots & \vdots & \ddots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & \cdots & 0.5 & 0.5 \end{array}\right]}_{N}\right\} N-1 $$ an $N-1 \times N$ matrix, it can be seen that

  • $A_{21} \approx V A_{11} $, i.e. an average of the rows of $A_{11}$.
  • $A_{21} \approx A_{11} V^T $, i.e. an average of the columns of $A_{11}$.
  • $A_{22} \approx V A_{11} V^T $, i.e. an average of the rows and columns of $A_{11}$.

This would therefore mean that a good approximate for $A$ would be

$$ A \approx \left(\begin{array}{c} 1_N \\ V \end{array}\right) A_{11} \left(\begin{array}{c} 1_N \\ V \end{array}\right)^T , $$

from which it might be possible to construct some preconditioner easily using the LU decomposition from $A_{11}$:

$$ \left\{\begin{aligned} L_{21} &\approx V L_{11} \\ U_{12} &\approx U_{11} V^T \end{aligned}\right. , $$ from the equations above. However, this implies that $L_{22} \approx 0$ and $U_{22}\approx 0$, which I do not really understand well as it leads to non-invertible approximations for $U$ and $L$:

$$ L \approx \left(\begin{array}{cc} L_{11} & 0 \\ V L_{11} & 0 \end{array}\right) \ \text{and} \ U \approx \left(\begin{array}{cc} U_{11} & U_{11} V^T \\ 0 & 0 \end{array}\right) $$

How would this be used as a preconditioner?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.