Actual source code: ex61.c


  2: static char help[] = "Tests MatSeq(B)AIJSetColumnIndices().\n\n";

  4: #include <petscmat.h>

  6: /*
  7:       Generate the following matrix:

  9:          1 0 3
 10:          1 2 3
 11:          0 0 3
 12: */
 13: int main(int argc, char **args)
 14: {
 15:   Mat         A;
 16:   PetscScalar v;
 17:   PetscInt    i, j, rowlens[] = {2, 3, 1}, cols[] = {0, 2, 0, 1, 2, 2};
 18:   PetscBool   flg;

 21:   PetscInitialize(&argc, &args, (char *)0, help);
 22:   PetscOptionsHasName(NULL, NULL, "-baij", &flg);
 23:   if (flg) {
 24:     MatCreateSeqBAIJ(PETSC_COMM_WORLD, 1, 3, 3, 0, rowlens, &A);
 25:     MatSeqBAIJSetColumnIndices(A, cols);
 26:   } else {
 27:     MatCreateSeqAIJ(PETSC_COMM_WORLD, 3, 3, 0, rowlens, &A);
 28:     MatSeqAIJSetColumnIndices(A, cols);
 29:   }

 31:   i = 0;
 32:   j = 0;
 33:   v = 1.0;
 34:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);
 35:   i = 0;
 36:   j = 2;
 37:   v = 3.0;
 38:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);

 40:   i = 1;
 41:   j = 0;
 42:   v = 1.0;
 43:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);
 44:   i = 1;
 45:   j = 1;
 46:   v = 2.0;
 47:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);
 48:   i = 1;
 49:   j = 2;
 50:   v = 3.0;
 51:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);

 53:   i = 2;
 54:   j = 2;
 55:   v = 3.0;
 56:   MatSetValues(A, 1, &i, 1, &j, &v, INSERT_VALUES);

 58:   MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);
 59:   MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);
 60:   MatView(A, PETSC_VIEWER_STDOUT_WORLD);

 62:   MatDestroy(&A);
 63:   PetscFinalize();
 64:   return 0;
 65: }

 67: /*TEST

 69:    test:

 71:    test:
 72:       suffix: 2
 73:       args: -baij

 75: TEST*/