[petsc-users] Question about PCFieldSplit

Matthew Knepley knepley at gmail.com
Sat Apr 17 14:09:06 CDT 2021

On Fri, Apr 16, 2021 at 8:39 PM Jorti, Zakariae via petsc-users <
petsc-users at mcs.anl.gov> wrote:

> Hello,
> I have a DMStag grid with one dof on each edge and face center.
> I want to use a PCFieldSplit preconditioner on a Jacobian matrix that I
> assume is already split but I am not sure how to determine the fields.
> In the DMStag examples (ex2.c and ex3.c), the
> function PCFieldSplitSetDetectSaddlePoint is used to determine those fields
> based on zero diagonal entries. In my case, I have a Jacobian matrix that
> does not have zero diagonal entries.
> Can I use that PCFieldSplitSetDetectSaddlePoint in this case?
> If not, how should I do?
> Should I do like this example (
> https://www.mcs.anl.gov/petsc/petsc-master/src/ksp/ksp/tutorials/ex43.c.html
> ):
> const PetscInt Bfields[1] = {0},Efields[1] = {1};
> KSPGetPC(ksp,&pc);
> PCFieldSplitSetBlockSize(pc,2);
> PCFieldSplitSetFields(pc,"B",1,Bfields,Bfields);
> PCFieldSplitSetFields(pc,"E",1,Efields,Efields);
> where my B unknowns are defined on face centers and E unknowns are defined
> on edge centers?
That will not work.That interface only works for colocated fields that you
get from DMDA.

Patrick, does DMSTAG use PetscSection? Then the field split would be
automatically calculated. If not, does it maintain the
field division so that it could be given to PCFIELDSPLIT as ISes?



> One last thing, I do not know which field comes first. Is it the one
> defined for face dofs or edge dofs.
> Thank you.
> Best regards,
> Zakariae

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/20210417/08d1e40b/attachment-0001.html>

More information about the petsc-users mailing list