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@mcs.anl.gov <mailto:petsc-users@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/>

Reply via email to