xref: /petsc/src/mat/tests/ex162.c (revision 9371c9d470a9602b6d10a8bf50c9b2280a79e45a)
1c4762a1bSJed Brown static char help[] = "Tests MatShift for SeqAIJ matrices with some missing diagonal entries\n\n";
2c4762a1bSJed Brown 
3c4762a1bSJed Brown #include <petscmat.h>
4c4762a1bSJed Brown 
5*9371c9d4SSatish Balay int main(int argc, char **argv) {
6c4762a1bSJed Brown   Mat         A;
7c4762a1bSJed Brown   PetscInt    coli[4], row;
8c4762a1bSJed Brown   PetscScalar vali[4];
9c4762a1bSJed Brown   PetscMPIInt size;
10c4762a1bSJed Brown 
11327415f7SBarry Smith   PetscFunctionBeginUser;
129566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
139566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
14be096a46SBarry Smith   PetscCheck(size == 1, PETSC_COMM_WORLD, PETSC_ERR_WRONG_MPI_SIZE, "This is a uniprocessor example only!");
15c4762a1bSJed Brown 
169566063dSJacob Faibussowitsch   PetscCall(MatCreate(PETSC_COMM_SELF, &A));
179566063dSJacob Faibussowitsch   PetscCall(MatSetSizes(A, 4, 4, 4, 4));
189566063dSJacob Faibussowitsch   PetscCall(MatSetType(A, MATSEQAIJ));
199566063dSJacob Faibussowitsch   PetscCall(MatSeqAIJSetPreallocation(A, 4, NULL));
20c4762a1bSJed Brown 
21*9371c9d4SSatish Balay   row     = 0;
22*9371c9d4SSatish Balay   coli[0] = 1;
23*9371c9d4SSatish Balay   coli[1] = 3;
24*9371c9d4SSatish Balay   vali[0] = 1.0;
25*9371c9d4SSatish Balay   vali[1] = 2.0;
269566063dSJacob Faibussowitsch   PetscCall(MatSetValues(A, 1, &row, 2, coli, vali, ADD_VALUES));
27c4762a1bSJed Brown 
28*9371c9d4SSatish Balay   row     = 1;
29*9371c9d4SSatish Balay   coli[0] = 0;
30*9371c9d4SSatish Balay   coli[1] = 1;
31*9371c9d4SSatish Balay   coli[2] = 2;
32*9371c9d4SSatish Balay   coli[3] = 3;
33*9371c9d4SSatish Balay   vali[0] = 3.0;
34*9371c9d4SSatish Balay   vali[1] = 4.0;
35*9371c9d4SSatish Balay   vali[2] = 5.0;
36*9371c9d4SSatish Balay   vali[3] = 6.0;
379566063dSJacob Faibussowitsch   PetscCall(MatSetValues(A, 1, &row, 4, coli, vali, ADD_VALUES));
38c4762a1bSJed Brown 
39*9371c9d4SSatish Balay   row     = 2;
40*9371c9d4SSatish Balay   coli[0] = 0;
41*9371c9d4SSatish Balay   coli[1] = 3;
42*9371c9d4SSatish Balay   vali[0] = 7.0;
43*9371c9d4SSatish Balay   vali[1] = 8.0;
449566063dSJacob Faibussowitsch   PetscCall(MatSetValues(A, 1, &row, 2, coli, vali, ADD_VALUES));
45c4762a1bSJed Brown 
469566063dSJacob Faibussowitsch   PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY));
479566063dSJacob Faibussowitsch   PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY));
489566063dSJacob Faibussowitsch   PetscCall(MatView(A, PETSC_VIEWER_STDOUT_WORLD));
49c4762a1bSJed Brown 
509566063dSJacob Faibussowitsch   PetscCall(MatShift(A, 0.0));
519566063dSJacob Faibussowitsch   PetscCall(MatView(A, PETSC_VIEWER_STDOUT_WORLD));
52c4762a1bSJed Brown 
539566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&A));
549566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
55b122ec5aSJacob Faibussowitsch   return 0;
56c4762a1bSJed Brown }
57c4762a1bSJed Brown 
58c4762a1bSJed Brown /*TEST
59c4762a1bSJed Brown 
60c4762a1bSJed Brown    test:
61c4762a1bSJed Brown 
62c4762a1bSJed Brown TEST*/
63