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