[petsc-users] Solving block systems with some null diagonal blocks

Manuel Colera Rico m.colera at upm.es
Tue Mar 26 04:23:25 CDT 2019


OK, thank you Matt.

Manuel

---

On 3/25/19 6:27 PM, Matthew Knepley wrote:
> On Mon, Mar 25, 2019 at 8:07 AM Manuel Colera Rico via petsc-users 
> <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>> wrote:
>
>     Hello,
>
>     I would like to solve a N*N block system (with N>2) in which some
>     of the
>     diagonal blocks are null. My system matrix is defined as a
>     MatNest. As
>     N>2, I can't use "pc_fieldsplit_type schur" nor
>     "pc_fieldsplit_detect_saddle_point". The other algorithms
>     ("additive",
>     "multiplicative" and "symmetric_multiplicative") don't work either as
>     they need each A_ii to be non-zero.
>
>     Is there any built-in function in PETSc for this? If not, could you
>     please suggest a workaround?
>
>
> You can just shove all of the rows with nonzero diagonal in one field, 
> and all with zero diagonal in another, and do Schur. This is what
>
>   -pc_fieldsplit_detect_saddle_point
>
> does. However, you have to understand the Schur complement to solve it 
> efficiently. More generally, you can recursively split the matrix,
> which is what I do for many multiphysics problems.
>
>   Thanks,
>
>     Matt
>
>     Thanks and kind regards,
>
>     Manuel
>
>     ---
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener
>
> https://www.cse.buffalo.edu/~knepley/ 
> <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190326/d92a786e/attachment.html>


More information about the petsc-users mailing list