Re: [petsc-dev] FieldSplit error
fixed in master and next with the commit a9de710 Barry
On May 29, 2015, at 1:08 PM, Barry Smith <[email protected]> wrote:
I will fix this.
Barry
On May 29, 2015, at 10:40 AM, Mark Adams <[email protected]> wrote:
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);
}
}
}
}
}
participants (1)
-
Barry Smith