[petsc-dev] FieldSplit error

Mark Adams mfadams at lbl.gov
Fri May 29 10:40:11 CDT 2015


I have a 2 x 2 MatComposite and PCSetup is hanging because this branch
below does "NEED" to be checked. This is in matrix.c around line 7500.
Barry added this a year ago (and the code has been working so I am
puzzled).  I commented this code out and it works.

The 2nd block here is very small and is all on one processor, so all but
one proc have (n == rend-rstart).

This code seems to work in maint, so I am puzzled.  Perhaps this code was
merged recently?

Mark

  if (!iscol || isrow == iscol) {

    PetscBool stride;

    ierr =
PetscObjectTypeCompare((PetscObject)isrow,ISSTRIDE,&stride);CHKERRQ(ierr);

    if (stride) {

      PetscInt first,step,n,rstart,rend;

      ierr = ISStrideGetInfo(isrow,&first,&step);CHKERRQ(ierr);

      if (step == 1) {

        ierr = MatGetOwnershipRange(mat,&rstart,&rend);CHKERRQ(ierr);

        if (rstart == first) {

          ierr = ISGetLocalSize(isrow,&n);CHKERRQ(ierr);

          if (n == rend-rstart) {

            /* special case grabbing all rows; NEED to do a global
reduction to make sure all processes are doing this */

            if (cll == MAT_INITIAL_MATRIX) {

              *newmat = mat;

              ierr    =
PetscObjectReference((PetscObject)mat);CHKERRQ(ierr);

            }

            PetscFunctionReturn(0);

          }

        }

      }

    }

  }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20150529/55b77920/attachment.html>


More information about the petsc-dev mailing list