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: }