xref: /petsc/src/vec/is/tests/ex6.c (revision 31d78bcd2b98084dc1368b20eb1129c8b9fb39fe)
13c429eb5SStefano Zampini static char help[] = "Tests ISRenumber.\n\n";
23c429eb5SStefano Zampini 
33c429eb5SStefano Zampini #include <petscis.h>
43c429eb5SStefano Zampini 
5d71ae5a4SJacob Faibussowitsch PetscErrorCode TestRenumber(IS is, IS mult)
6d71ae5a4SJacob Faibussowitsch {
73c429eb5SStefano Zampini   IS       nis;
83c429eb5SStefano Zampini   PetscInt N;
93c429eb5SStefano Zampini 
103c429eb5SStefano Zampini   PetscFunctionBegin;
119566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is), "\n-----------------\n"));
129566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is), "\nInitial\n"));
139566063dSJacob Faibussowitsch   PetscCall(ISView(is, NULL));
143c429eb5SStefano Zampini   if (mult) {
159566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is), "\nMult\n"));
169566063dSJacob Faibussowitsch     PetscCall(ISView(mult, NULL));
173c429eb5SStefano Zampini   }
189566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is, mult, &N, NULL));
199566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is), "\nRenumbered, unique entries %" PetscInt_FMT "\n", N));
209566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is, mult, NULL, &nis));
219566063dSJacob Faibussowitsch   PetscCall(ISView(nis, NULL));
229566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&nis));
23*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
243c429eb5SStefano Zampini }
253c429eb5SStefano Zampini 
26d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
27d71ae5a4SJacob Faibussowitsch {
283c429eb5SStefano Zampini   IS          is;
293c429eb5SStefano Zampini   PetscMPIInt size, rank;
303c429eb5SStefano Zampini 
31327415f7SBarry Smith   PetscFunctionBeginUser;
329566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
339566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
349566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank));
353c429eb5SStefano Zampini 
363c429eb5SStefano Zampini   for (PetscInt c = 0; c < 3; c++) {
373c429eb5SStefano Zampini     IS mult = NULL;
383c429eb5SStefano Zampini 
399566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD, 0, 0, 0, &is));
403c429eb5SStefano Zampini     if (c) {
413c429eb5SStefano Zampini       PetscInt n;
429566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is, &n));
439566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, c - 2, 0, &mult));
443c429eb5SStefano Zampini     }
459566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is, mult));
469566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
479566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
483c429eb5SStefano Zampini 
499566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD, 2, -rank - 1, -4, &is));
503c429eb5SStefano Zampini     if (c) {
513c429eb5SStefano Zampini       PetscInt n;
529566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is, &n));
539566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, c - 2, 0, &mult));
543c429eb5SStefano Zampini     }
559566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is, mult));
569566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
579566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
583c429eb5SStefano Zampini 
599566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD, 10, 4 + rank, 2, &is));
603c429eb5SStefano Zampini     if (c) {
613c429eb5SStefano Zampini       PetscInt n;
629566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is, &n));
639566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, c - 2, 1, &mult));
643c429eb5SStefano Zampini     }
659566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is, mult));
669566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
679566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
683c429eb5SStefano Zampini 
699566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD, 10, -rank - 1, 2, &is));
703c429eb5SStefano Zampini     if (c) {
713c429eb5SStefano Zampini       PetscInt n;
729566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is, &n));
739566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD, n, c - 2, 1, &mult));
743c429eb5SStefano Zampini     }
759566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is, mult));
769566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
779566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
783c429eb5SStefano Zampini   }
793c429eb5SStefano Zampini   /* Finalize */
809566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
81b122ec5aSJacob Faibussowitsch   return 0;
823c429eb5SStefano Zampini }
833c429eb5SStefano Zampini 
843c429eb5SStefano Zampini /*TEST
853c429eb5SStefano Zampini 
863c429eb5SStefano Zampini   test:
873c429eb5SStefano Zampini     suffix: 1
883c429eb5SStefano Zampini     nsize: {{1 2}separate output}
893c429eb5SStefano Zampini 
903c429eb5SStefano Zampini TEST*/
91