Actual source code: ex25.c
1: /*$Id: ex25.c,v 1.17 2001/08/07 03:03:07 balay Exp $*/
3: static char help[] = "Tests MatTranspose()nn";
5: #include petscmat.h
7: int main(int argc,char **args)
8: {
9: Mat C,A;
10: PetscScalar v;
11: int i,j,m = 4,n = 4,rank,size,I,J,ierr,Istart,Iend;
13: PetscInitialize(&argc,&args,(char *)0,help);
14: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
15: MPI_Comm_size(PETSC_COMM_WORLD,&size);
16:
17: MatCreateMPIAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,
18: m*n,m*n,5,PETSC_NULL,5,PETSC_NULL,&C);
20: /* create the matrix for the five point stencil, YET AGAIN*/
21: MatGetOwnershipRange(C,&Istart,&Iend);
22: for (I=Istart; I<Iend; I++) {
23: v = -1.0; i = I/n; j = I - i*n;
24: if (i>0) {J = I - n; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
25: if (i<m-1) {J = I + n; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
26: if (j>0) {J = I - 1; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
27: if (j<n-1) {J = I + 1; MatSetValues(C,1,&I,1,&J,&v,INSERT_VALUES);}
28: v = 4.0; MatSetValues(C,1,&I,1,&I,&v,INSERT_VALUES);
29: }
30: MatAssemblyBegin(C,MAT_FINAL_ASSEMBLY);
31: MatAssemblyEnd(C,MAT_FINAL_ASSEMBLY);
32: MatView(C,PETSC_VIEWER_STDOUT_WORLD);
34: MatTranspose(C,&A);
35: MatView(A,PETSC_VIEWER_STDOUT_WORLD);
37: MatDestroy(C);
38: MatDestroy(A);
39: PetscFinalize();
40: return 0;
41: }