Actual source code: ex162.c
1: static char help[] = "Tests MatShift for SeqAIJ matrices with some missing diagonal entries\n\n";
3: #include <petscmat.h>
5: int main(int argc,char **argv)
6: {
7: Mat A;
8: PetscInt coli[4],row;
9: PetscScalar vali[4];
10: PetscMPIInt size;
12: PetscInitialize(&argc,&argv,(char*)0,help);
13: MPI_Comm_size(PETSC_COMM_WORLD,&size);
16: MatCreate(PETSC_COMM_SELF,&A);
17: MatSetSizes(A,4,4,4,4);
18: MatSetType(A,MATSEQAIJ);
19: MatSeqAIJSetPreallocation(A,4,NULL);
21: row = 0; coli[0] = 1; coli[1] = 3; vali[0] = 1.0; vali[1] = 2.0;
22: MatSetValues(A,1,&row,2,coli,vali,ADD_VALUES);
24: row = 1; coli[0] = 0; coli[1] = 1; coli[2] = 2; coli[3] = 3; vali[0] = 3.0; vali[1] = 4.0; vali[2] = 5.0; vali[3] = 6.0;
25: MatSetValues(A,1,&row,4,coli,vali,ADD_VALUES);
27: row = 2; coli[0] = 0; coli[1] = 3; vali[0] = 7.0; vali[1] = 8.0;
28: MatSetValues(A,1,&row,2,coli,vali,ADD_VALUES);
30: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
31: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
32: MatView(A,PETSC_VIEWER_STDOUT_WORLD);
34: MatShift(A,0.0);
35: MatView(A,PETSC_VIEWER_STDOUT_WORLD);
37: MatDestroy(&A);
38: PetscFinalize();
39: return 0;
40: }
42: /*TEST
44: test:
46: TEST*/