Actual source code: ex24.c
1: /*$Id: ex24.c,v 1.15 2001/08/07 03:03:07 balay Exp $*/
3: static char help[] = "Tests copying an AIJ matrix.nn";
5: #include petscmat.h
7: int main(int argc,char **args)
8: {
9: Mat C,A;
10: int i,j,m = 5,n = 5,I,J,ierr;
11: PetscScalar v;
13: PetscInitialize(&argc,&args,(char *)0,help);
15: /* create the matrix for the five point stencil, YET AGAIN*/
16: MatCreateSeqAIJ(PETSC_COMM_SELF,m*n,m*n,5,PETSC_NULL,&C);
17: for (i=0; i<m; i++) {
18: for (j=0; j<n; j++) {
19: v = -1.0; I = j + n*i;
20: if (i>0) {J = I - n; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
21: if (i<m-1) {J = I + n; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
22: if (j>0) {J = I - 1; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
23: if (j<n-1) {J = I + 1; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
24: v = 4.0; MatSetValues(C,1,&I,1,&I,&v,INSERT_VALUES);
25: }
26: }
27: MatAssemblyBegin(C,MAT_FINAL_ASSEMBLY);
28: MatAssemblyEnd(C,MAT_FINAL_ASSEMBLY);
30: MatConvert(C,MATSAME,&A);
32: for (i=0; i<m; i++) {
33: for (j=0; j<n; j++) {
34: v = -1.0; I = j + n*i;
35: if (i>0) {J = I - n; MatSetValues(A,1,&I,1,&J,&v,ADD_VALUES);}
36: if (i<m-1) {J = I + n; MatSetValues(A,1,&I,1,&J,&v,ADD_VALUES);}
37: if (j>0) {J = I - 1; MatSetValues(A,1,&I,1,&J,&v,ADD_VALUES);}
38: if (j<n-1) {J = I + 1; MatSetValues(A,1,&I,1,&J,&v,ADD_VALUES);}
39: v = 4.0; MatSetValues(A,1,&I,1,&I,&v,ADD_VALUES);
40: }
41: }
42: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
43: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
45: MatView(A,PETSC_VIEWER_STDOUT_SELF);
47: MatDestroy(C);
48: MatDestroy(A);
49: PetscFinalize();
50: return 0;
51: }