Actual source code: randomimpl.h
1: #pragma once
3: #include <petsc/private/petscimpl.h>
5: PETSC_EXTERN PetscBool PetscRandomRegisterAllCalled;
6: PETSC_EXTERN PetscErrorCode PetscRandomRegisterAll(void);
8: typedef struct _PetscRandomOps *PetscRandomOps;
9: struct _PetscRandomOps {
10: /* 0 */
11: PetscErrorCode (*seed)(PetscRandom);
12: PetscErrorCode (*getvalue)(PetscRandom, PetscScalar *);
13: PetscErrorCode (*getvaluereal)(PetscRandom, PetscReal *);
14: PetscErrorCode (*getvalues)(PetscRandom, PetscInt, PetscScalar *);
15: PetscErrorCode (*getvaluesreal)(PetscRandom, PetscInt, PetscReal *);
16: PetscErrorCode (*destroy)(PetscRandom);
17: PetscErrorCode (*setfromoptions)(PetscRandom, PetscOptionItems);
18: };
20: struct _p_PetscRandom {
21: PETSCHEADER(struct _PetscRandomOps);
22: void *data; /* implementation-specific data */
23: unsigned long seed;
24: PetscScalar low, width; /* lower bound and width of the interval over
25: which the random numbers are distributed */
26: PetscBool iset; /* if true, indicates that the user has set the interval */
27: /* array for shuffling ??? */
28: };