[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