Actual source code: ex95.c
1: static char help[] = "Testing MatMerge_SeqsToMPI().\n\n";
3: #include petscmat.h
7: int main(int argc,char **argv)
8: {
9: Mat A,B;
10: MatScalar a[1],alpha;
11: PetscMPIInt size,rank;
12: PetscInt m,n,i,col, prid;
15: PetscInitialize(&argc,&argv,(char *)0,help);
16: MPI_Comm_size(PETSC_COMM_WORLD,&size);
17: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
18: prid = size;
19: PetscOptionsGetInt(PETSC_NULL,"-prid",&prid,PETSC_NULL);
21: m = n = 10*size;
22: MatCreate(PETSC_COMM_SELF,PETSC_DETERMINE,PETSC_DETERMINE,m,n,&A);
23: MatSetType(A,MATSEQAIJ);
25: a[0] = rank+1;
26: for (i=0; i<m-rank; i++){
27: col = i+rank;
28: MatSetValues(A,1,&i,1,&col,a,INSERT_VALUES);
29: }
30: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
31: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
32:
33: if (rank == prid){
34: PetscPrintf(PETSC_COMM_SELF,"[%d] A: \n",rank);
35: MatView(A,PETSC_VIEWER_STDOUT_SELF);
36: }
38: /* Test MatMerge_SeqsToMPI */
39: MatMerge_SeqsToMPI(PETSC_COMM_WORLD,A,PETSC_DECIDE,PETSC_DECIDE,MAT_INITIAL_MATRIX,&B);
41: /* Test MAT_REUSE_MATRIX */
42: alpha = 0.1;
43: for (i=0; i<3; i++){
44: MatScale(&alpha,A);
45: MatMerge_SeqsToMPI(PETSC_COMM_WORLD,A,PETSC_DECIDE,PETSC_DECIDE,MAT_REUSE_MATRIX,&B);
46: }
47: MatView(B, PETSC_VIEWER_STDOUT_WORLD);
48: MatDestroy(B);
49: MatDestroy(A);
50:
51: PetscFinalize();
52: return(0);
53: }