On Feb 17, 2012, at 2:45 PM, Matthew Knepley wrote:

On Fri, Feb 17, 2012 at 2:39 PM, Blaise Bourdin <bourdin@lsu.edu> wrote:
The way I do it right now is
 ierr = ISGetTotalIndices(csIS,&labels);CHKERRQ(ierr);
 ierr = ISGetSize(csIS,&num_cs_global);CHKERRQ(ierr);

I would violate PETSc semantics here since you are going to destroy csIS anyway:

  PetscSortRemoveDupsInt(&num_cs_global, labels);
     PetscSortRemoveDupsInt(&num_cs_global, (PetscInt *) labels);

Facepalm...

Blaise


      Matt
 
That's what I was thinking too, but PetscSortRemoveDupsInt expect a PetscInt* not a const PetscInt*

It's not a big deal, I can live with the 2 copies, considering that the local size of the IS is going to be quite small.

Blaise




  ISCreateGeneral(comm, num_cs_global, labels, PETSC_COPY_VALUES, &csIS_global);
 
 ierr = ISRestoreTotalIndices(csIS,&labels);CHKERRQ(ierr);

   Matt
 

Blaise
--
Department of Mathematics and Center for Computation & Technology
Louisiana State University, Baton Rouge, LA 70803, USA
Tel. +1 (225) 578 1612, Fax  +1 (225) 578 4276 http://www.math.lsu.edu/~bourdin










--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

-- 
Department of Mathematics and Center for Computation & Technology
Louisiana State University, Baton Rouge, LA 70803, USA










--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

-- 
Department of Mathematics and Center for Computation & Technology
Louisiana State University, Baton Rouge, LA 70803, USA
Tel. +1 (225) 578 1612, Fax  +1 (225) 578 4276 http://www.math.lsu.edu/~bourdin