Actual source code: petscsys.h

  1: /* $Id: petscsys.h,v 1.63 2001/08/07 21:32:24 bsmith Exp $ */
  2: /*
  3:     Provides access to system related and general utility routines.
  4: */
 7:  #include petsc.h
  8: PETSC_EXTERN_CXX_BEGIN

 10: EXTERN int  PetscGetArchType(char[],int);
 11: EXTERN int  PetscGetHostName(char[],int);
 12: EXTERN int  PetscGetUserName(char[],int);
 13: EXTERN int  PetscGetProgramName(char[],int);
 14: EXTERN int  PetscSetProgramName(const char[]);
 15: EXTERN int  PetscGetDate(char[],int);
 16: EXTERN int  PetscSetInitialDate(void);
 17: EXTERN int  PetscGetInitialDate(char[],int);

 19: EXTERN int  PetscSortInt(int,int[]);
 20: EXTERN int  PetscSortIntWithPermutation(int,const int[],int[]);
 21: EXTERN int  PetscSortStrWithPermutation(int,const char*[],int[]);
 22: EXTERN int  PetscSortIntWithArray(int,int[],int[]);
 23: EXTERN int  PetscSortReal(int,PetscReal[]);
 24: EXTERN int  PetscSortRealWithPermutation(int,const PetscReal[],int[]);

 26: EXTERN int  PetscSetDisplay(void);
 27: EXTERN int  PetscGetDisplay(char[],int);

 29: extern int PETSC_RANDOM_COOKIE;

 31: typedef enum { RANDOM_DEFAULT,RANDOM_DEFAULT_REAL,
 32:                RANDOM_DEFAULT_IMAGINARY } PetscRandomType;

 34: /*S
 35:      PetscRandom - Abstract PETSc object that manages generating random numbers

 37:    Level: intermediate

 39:   Concepts: random numbers

 41: .seealso:  PetscRandomCreate(), PetscRandomGetValue()
 42: S*/
 43: typedef struct _p_PetscRandom*   PetscRandom;

 45: EXTERN int PetscRandomCreate(MPI_Comm,PetscRandomType,PetscRandom*);
 46: EXTERN int PetscRandomGetValue(PetscRandom,PetscScalar*);
 47: EXTERN int PetscRandomSetInterval(PetscRandom,PetscScalar,PetscScalar);
 48: EXTERN int PetscRandomDestroy(PetscRandom);

 50: EXTERN int PetscGetFullPath(const char[],char[],int);
 51: EXTERN int PetscGetRelativePath(const char[],char[],int);
 52: EXTERN int PetscGetWorkingDirectory(char[],int);
 53: EXTERN int PetscGetRealPath(char[],char[]);
 54: EXTERN int PetscGetHomeDirectory(char[],int);
 55: EXTERN int PetscTestFile(const char[],char,PetscTruth*);
 56: EXTERN int PetscTestDirectory(const char[],char,PetscTruth*);
 57: EXTERN int PetscBinaryRead(int,void*,int,PetscDataType);
 58: EXTERN int PetscSynchronizedBinaryRead(MPI_Comm,int,void*,int,PetscDataType);
 59: EXTERN int PetscBinaryWrite(int,void*,int,PetscDataType,int);
 60: EXTERN int PetscBinaryOpen(const char[],int,int *);
 61: EXTERN int PetscBinaryClose(int);
 62: EXTERN int PetscSharedTmp(MPI_Comm,PetscTruth *);
 63: EXTERN int PetscSharedWorkingDirectory(MPI_Comm,PetscTruth *);
 64: EXTERN int PetscGetTmp(MPI_Comm,char *,int);
 65: EXTERN int PetscFileRetrieve(MPI_Comm,const char *,char *,int,PetscTruth*);
 66: EXTERN int PetscLs(MPI_Comm,const char[],char*,int,PetscTruth*);
 67: EXTERN int PetscDLLibraryCCAAppend(MPI_Comm,PetscDLLibraryList*,const char[]);

 69: /*
 70:    In binary files variables are stored using the following lengths,
 71:   regardless of how they are stored in memory on any one particular
 72:   machine. Use these rather then sizeof() in computing sizes for 
 73:   PetscBinarySeek().
 74: */
 75: #define PETSC_BINARY_INT_SIZE    (32/8)
 76: #define PETSC_BINARY_FLOAT_SIZE  (32/8)
 77: #define PETSC_BINARY_CHAR_SIZE    (8/8)
 78: #define PETSC_BINARY_SHORT_SIZE  (16/8)
 79: #define PETSC_BINARY_DOUBLE_SIZE (64/8)
 80: #define PETSC_BINARY_SCALAR_SIZE sizeof(PetscScalar)

 82: /*E
 83:   PetscBinarySeekType - argument to PetscBinarySeek()

 85:   Level: advanced

 87: .seealso: PetscBinarySeek(), PetscSynchronizedBinarySeek()
 88: E*/
 89: typedef enum {PETSC_BINARY_SEEK_SET = 0,PETSC_BINARY_SEEK_CUR = 1,PETSC_BINARY_SEEK_END = 2} PetscBinarySeekType;
 90: EXTERN int PetscBinarySeek(int,int,PetscBinarySeekType,int*);
 91: EXTERN int PetscSynchronizedBinarySeek(MPI_Comm,int,int,PetscBinarySeekType,int*);

 93: EXTERN int PetscSetDebugger(const char[],PetscTruth);
 94: EXTERN int PetscSetDefaultDebugger(void);
 95: EXTERN int PetscSetDebuggerFromString(char*);
 96: EXTERN int PetscAttachDebugger(void);
 97: EXTERN int PetscStopForDebugger(void);

 99: EXTERN int PetscGatherNumberOfMessages(MPI_Comm,int*,int*,int*);
100: EXTERN int PetscGatherMessageLengths(MPI_Comm,int,int,int*,int**,int**);
101: EXTERN int PetscPostIrecvInt(MPI_Comm,int,int,int*,int*,int***,MPI_Request**);
102: EXTERN int PetscPostIrecvScalar(MPI_Comm,int,int,int*,int*,PetscScalar***,MPI_Request**);

104: EXTERN int PetscSSEIsEnabled(MPI_Comm,PetscTruth *,PetscTruth *);

106: /* ParameterDict objects encapsulate arguments to generic functions, like mechanisms over interfaces */
107: EXTERN int ParameterDictCreate(MPI_Comm, ParameterDict *);
108: EXTERN int ParameterDictDestroy(ParameterDict);
109: EXTERN int ParameterDictRemove(ParameterDict, const char []);
110: EXTERN int ParameterDictSetInteger(ParameterDict, const char [], int);
111: EXTERN int ParameterDictSetDouble(ParameterDict, const char [], double);
112: EXTERN int ParameterDictSetObject(ParameterDict, const char [], void *);
113: EXTERN int ParameterDictGetInteger(ParameterDict, const char [], int *);
114: EXTERN int ParameterDictGetDouble(ParameterDict, const char [], double *);
115: EXTERN int ParameterDictGetObject(ParameterDict, const char [], void **);

117: /* Parallel communication routines */
118: /*E
119:   InsertMode - Whether entries are inserted or added into vectors or matrices

121:   Level: beginner

123: .seealso: VecSetValues(), MatSetValues(), VecSetValue(), VecSetValuesBlocked(),
124:           VecSetValuesLocal(), VecSetValuesBlockedLocal(), MatSetValuesBlocked(),
125:           MatSetValuesBlockedLocal(), MatSetValuesLocal()
126: E*/
127: typedef enum {NOT_SET_VALUES, INSERT_VALUES, ADD_VALUES, MAX_VALUES} InsertMode;
128: /*E
129:   ScatterMode - Determines the direction of a scatter

131:   Level: beginner

133: .seealso: VecScatter, VecScatterBegin(), VecScatterEnd()
134: E*/
135: typedef enum {SCATTER_FORWARD=0, SCATTER_REVERSE=1, SCATTER_FORWARD_LOCAL=2, SCATTER_REVERSE_LOCAL=3, SCATTER_LOCAL=2} ScatterMode;

137: EXTERN int PetscGhostExchange(MPI_Comm, int, int *, int *, PetscDataType, int *, InsertMode, ScatterMode, void *, void *);

139: PETSC_EXTERN_CXX_END
140: #endif /* __PETSCSYS_H */