1
2 static char help[] = "Tests VecMax() with index.\n\
3 -n <length> : vector length\n\n";
4
5 #include <petscvec.h>
6
main(int argc,char ** argv)7 int main(int argc,char **argv)
8 {
9 PetscErrorCode ierr;
10 PetscInt n = 5,idx;
11 PetscReal value;
12 Vec x;
13 PetscScalar one = 1.0;
14
15 ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
16 ierr = PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);CHKERRQ(ierr);
17
18 /* create vector */
19 ierr = VecCreate(PETSC_COMM_WORLD,&x);CHKERRQ(ierr);
20 ierr = VecSetSizes(x,PETSC_DECIDE,n);CHKERRQ(ierr);
21 ierr = VecSetFromOptions(x);CHKERRQ(ierr);
22
23
24 ierr = VecSet(x,one);CHKERRQ(ierr);
25 ierr = VecSetValue(x,0,0.0,INSERT_VALUES);CHKERRQ(ierr);
26 ierr = VecSetValue(x,n-1,2.0,INSERT_VALUES);CHKERRQ(ierr);
27 ierr = VecAssemblyBegin(x);CHKERRQ(ierr);
28 ierr = VecAssemblyEnd(x);CHKERRQ(ierr);
29
30 ierr = VecView(x,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
31 ierr = VecMax(x,&idx,&value);CHKERRQ(ierr);
32 ierr = PetscPrintf(PETSC_COMM_WORLD,"Maximum value %g index %D\n",(double)value,idx);CHKERRQ(ierr);
33 ierr = VecMin(x,&idx,&value);CHKERRQ(ierr);
34 ierr = PetscPrintf(PETSC_COMM_WORLD,"Minimum value %g index %D\n",(double)value,idx);CHKERRQ(ierr);
35
36 ierr = VecDestroy(&x);CHKERRQ(ierr);
37
38 ierr = PetscFinalize();
39 return ierr;
40 }
41
42
43
44 /*TEST
45 test:
46
47 test:
48 suffix: 2
49 nsize: 2
50
51 TEST*/
52