Actual source code: ex2.c

  2: /*
  3:        Formatted test for ISStride routines.
  4: */

  6: static char help[] = "Tests IS stride routines.\n\n";

 8:  #include petscis.h

 12: int main(int argc,char **argv)
 13: {
 14:   PetscInt       i,n,start,stride;
 15:   const PetscInt *ii;
 16:   IS             is;
 17:   PetscTruth     flg;

 20:   PetscInitialize(&argc,&argv,(char*)0,help);

 22:   /*
 23:      Test IS of size 0 
 24:   */
 25:   ISCreateStride(PETSC_COMM_SELF,0,0,2,&is);
 26:   ISGetSize(is,&n);
 27:   if (n != 0) SETERRQ(1,"ISCreateStride");
 28:   ISStrideGetInfo(is,&start,&stride);
 29:   if (start != 0) SETERRQ(1,"ISStrideGetInfo");
 30:   if (stride != 2) SETERRQ(1,"ISStrideGetInfo");
 31:   ISStride(is,&flg);
 32:   if (!flg) SETERRQ(1,"ISStride");
 33:   ISGetIndices(is,&ii);
 34:   ISRestoreIndices(is,&ii);
 35:   ISDestroy(is);

 37:   /*
 38:      Test ISGetIndices()
 39:   */
 40:   ISCreateStride(PETSC_COMM_SELF,10000,-8,3,&is);
 41:   ISGetLocalSize(is,&n);
 42:   ISGetIndices(is,&ii);
 43:   for (i=0; i<10000; i++) {
 44:     if (ii[i] != -8 + 3*i) SETERRQ(1,"ISGetIndices");
 45:   }
 46:   ISRestoreIndices(is,&ii);
 47:   ISDestroy(is);

 49:   PetscFinalize();
 50:   return 0;
 51: }
 52: