[petsc-dev] FieldSplit error
Barry Smith
bsmith at mcs.anl.gov
Fri May 29 13:08:55 CDT 2015
I will fix this.
Barry
> On May 29, 2015, at 10:40 AM, Mark Adams <mfadams at lbl.gov> 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);
>
> }
>
> }
>
> }
>
> }
>
> }
>
More information about the petsc-dev
mailing list