Actual source code: ex1.c
2: static char help[] = "Tests PetscRandom functions.\n\n";
4: #include petsc.h
5: #include petscsys.h
7: /* Usage:
8: mpiexec -np <np> ./ex1 -n <num_of_random_numbers> -random_type <type> -log_summary
9: -view_randomvalues <view_rank>
10: -random_view ascii -random_view_file <filename>
11: */
15: int main(int argc,char **argv)
16: {
17: PetscInt i,n = 1000,*values;
18: PetscRandom rnd;
19: PetscScalar value;
21: PetscMPIInt rank,view_rank=-1;
22: #if defined (PETSC_USE_LOG)
23: int event;
24: #endif
26: PetscInitialize(&argc,&argv,(char *)0,help);
27: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
28: PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
29: PetscOptionsGetInt(PETSC_NULL,"-view_randomvalues",&view_rank,PETSC_NULL);
30:
31: PetscRandomCreate(PETSC_COMM_WORLD,&rnd);
32: #if defined(PETSC_HAVE_DRAND48)
33: PetscRandomSetType(rnd,PETSCRAND48);
34: #elif defined(PETSC_HAVE_RAND)
35: PetscRandomSetType(rnd,PETSCRAND);
36: #endif
37: PetscRandomSetFromOptions(rnd);
39: PetscMalloc(n*sizeof(PetscInt),&values);
40: for (i=0; i<n; i++) {
41: PetscRandomGetValue(rnd,&value);
42: if (view_rank == rank) {
43: PetscPrintf(PETSC_COMM_SELF,"[%D] value[%d] = %g\n",rank,i,PetscRealPart(value));
44: }
45: values[i] = (PetscInt)(n*PetscRealPart(value) + 2.0);
46: }
47: PetscSortInt(n,values);
51:
52: PetscRandomSeed(rnd);
53: for (i=0; i<n; i++) {
54: PetscRandomGetValue(rnd,&value);
55: values[i] = (PetscInt)(n*PetscRealPart(value) + 2.0);
56: /* printf("value[%d] = %g\n",i,value); */
57: }
58: PetscSortInt(n,values);
61: for (i=1; i<n; i++) {
62: if (values[i] < values[i-1]) SETERRQ(1,"Values not sorted");
63: }
64: PetscFree(values);
65: PetscRandomDestroy(rnd);
67: PetscFinalize();
68: return 0;
69: }
70: