Actual source code: ex114.c
2: static char help[] = "Tests sequential MatGetRowMax(), MatGetRowMin(), MatGetRowMaxAbs()\n";
4: #include petscmat.h
8: int main(int argc,char **args)
9: {
10: Mat A;
11: Vec min,max,maxabs;
12: PetscInt imin[5],imax[5],imaxabs[5],indices[6],row;
13: PetscScalar values[6];
16: PetscInitialize(&argc,&args,(char *)0,help);
18: MatCreateSeqAIJ(PETSC_COMM_SELF,5,6,0,PETSC_NULL,&A);
19: row = 0;
20: indices[0] = 0; indices[1] = 1; indices[2] = 2; indices[3] = 3; indices[4] = 4; indices[5] = 5;
21: values[0] = -1.0; values[1] = 0.0; values[2] = 1.0; values[3] = 3.0; values[4] = 4.0; values[5] = -5.0;
22: MatSetValues(A,1,&row,6,indices,values,INSERT_VALUES);
23: row = 1;
24: MatSetValues(A,1,&row,3,indices,values,INSERT_VALUES);
25: row = 4;
26: MatSetValues(A,1,&row,1,indices+4,values+4,INSERT_VALUES);
27: row = 4;
28: MatSetValues(A,1,&row,2,indices+4,values+4,INSERT_VALUES);
29: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
30: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
32: VecCreateSeq(PETSC_COMM_SELF,5,&min);
33: VecCreateSeq(PETSC_COMM_SELF,5,&max);
34: VecCreateSeq(PETSC_COMM_SELF,5,&maxabs);
36: MatGetRowMin(A,min,imin);
37: MatGetRowMax(A,max,imax);
38: MatGetRowMaxAbs(A,maxabs,imaxabs);
40: MatView(A,PETSC_VIEWER_STDOUT_SELF);
41: PetscPrintf(PETSC_COMM_WORLD,"Row Minimums\n");
42: VecView(min,PETSC_VIEWER_STDOUT_SELF);
43: PetscIntView(5,imin,PETSC_VIEWER_STDOUT_SELF);
44: PetscPrintf(PETSC_COMM_WORLD,"Row Maximums\n");
45: VecView(max,PETSC_VIEWER_STDOUT_SELF);
46: PetscIntView(5,imax,PETSC_VIEWER_STDOUT_SELF);
47: PetscPrintf(PETSC_COMM_WORLD,"Row Maximum Absolute Values\n");
48: VecView(maxabs,PETSC_VIEWER_STDOUT_SELF);
49: PetscIntView(5,imaxabs,PETSC_VIEWER_STDOUT_SELF);
51: MatConvert(A,MATSEQDENSE,MAT_REUSE_MATRIX,&A);
53: MatGetRowMin(A,min,imin);
54: MatGetRowMax(A,max,imax);
55: MatGetRowMaxAbs(A,maxabs,imaxabs);
57: MatView(A,PETSC_VIEWER_STDOUT_SELF);
58: PetscPrintf(PETSC_COMM_WORLD,"Row Minimums\n");
59: VecView(min,PETSC_VIEWER_STDOUT_SELF);
60: PetscIntView(5,imin,PETSC_VIEWER_STDOUT_SELF);
61: PetscPrintf(PETSC_COMM_WORLD,"Row Maximums\n");
62: VecView(max,PETSC_VIEWER_STDOUT_SELF);
63: PetscIntView(5,imax,PETSC_VIEWER_STDOUT_SELF);
64: PetscPrintf(PETSC_COMM_WORLD,"Row Maximum Absolute Values\n");
65: VecView(maxabs,PETSC_VIEWER_STDOUT_SELF);
66: PetscIntView(5,imaxabs,PETSC_VIEWER_STDOUT_SELF);
68: VecDestroy(min);
69: VecDestroy(max);
70: VecDestroy(maxabs);
71: MatDestroy(A);
72: PetscFinalize();
73: return 0;
74: }