that is what (*PetscErrorPrintf)() is for. Please fix. Thanks Barry

  ierr = MatSetValues(A, numIndices, indices, numIndices, indices, values, 
mode);
  if (ierr) {
    PetscMPIInt    rank;
    PetscErrorCode ierr2;

    ierr2 = MPI_Comm_rank(((PetscObject) A)->comm, &rank);CHKERRQ(ierr2);
    ierr2 = PetscPrintf(PETSC_COMM_SELF, "[%D]ERROR in DMPlexMatSetClosure\n", 
rank);CHKERRQ(ierr2);
    ierr2 = DMPlexPrintMatSetValues(A, point, numIndices, indices, 
values);CHKERRQ(ierr2);
    ierr2 = DMRestoreWorkArray(dm, numIndices, PETSC_INT, 
&indices);CHKERRQ(ierr);

                                      Also the above should be ierr2 ^^^^^
    CHKERRQ(ierr);
  }


Why? Because PetscPrintf() and (*PetscErrorPrintf)() may be completely 
different streams, for example (*PetscErrorPrintf)() going to a nice GUI popup 
or console etc etc

Reply via email to