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: mpirun -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: int event;
19: PetscRandom rnd;
20: PetscScalar value;
22: PetscMPIInt rank,view_rank=-1;
24: PetscInitialize(&argc,&argv,(char *)0,help);
25: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
26: PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
27: PetscOptionsGetInt(PETSC_NULL,"-view_randomvalues",&view_rank,PETSC_NULL);
28:
29: PetscRandomCreate(PETSC_COMM_WORLD,&rnd);
30: #if defined(PETSC_HAVE_DRAND48)
31: PetscRandomSetType(rnd,PETSCRAND48);
32: #elif defined(PETSC_HAVE_RAND)
33: PetscRandomSetType(rnd,PETSCRAND);
34: #endif
35: PetscRandomSetFromOptions(rnd);
37: PetscMalloc(n*sizeof(PetscInt),&values);
38: for (i=0; i<n; i++) {
39: PetscRandomGetValue(rnd,&value);
40: if (view_rank == rank) {
41: PetscPrintf(PETSC_COMM_SELF,"[%D] value[%d] = %g\n",rank,i,PetscRealPart(value));
42: }
43: values[i] = (PetscInt)(n*PetscRealPart(value) + 2.0);
44: }
45: PetscSortInt(n,values);
49:
50: PetscRandomSeed(rnd);
51: for (i=0; i<n; i++) {
52: PetscRandomGetValue(rnd,&value);
53: values[i] = (PetscInt)(n*PetscRealPart(value) + 2.0);
54: /* printf("value[%d] = %g\n",i,value); */
55: }
56: PetscSortInt(n,values);
59: for (i=1; i<n; i++) {
60: if (values[i] < values[i-1]) SETERRQ(1,"Values not sorted");
61: }
62: PetscFree(values);
63: PetscRandomDestroy(rnd);
65: PetscFinalize();
66: return 0;
67: }
68: