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 */ 5 #if !defined(__PETSCSYS_H) 6 #define __PETSCSYS_H 7 8 #include "petsc.h" 9 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); 18 19 EXTERN int PetscSortInt(int,int[]); 20 EXTERN int PetscSortIntWithPermutation(int,const int[],int[]); 21 EXTERN int PetscSortIntWithArray(int,int[],int[]); 22 EXTERN int PetscSortReal(int,PetscReal[]); 23 EXTERN int PetscSortRealWithPermutation(int,const PetscReal[],int[]); 24 25 EXTERN int PetscSetDisplay(void); 26 EXTERN int PetscGetDisplay(char[],int); 27 28 #define PETSCRANDOM_COOKIE PETSC_COOKIE+19 29 30 typedef enum { RANDOM_DEFAULT,RANDOM_DEFAULT_REAL, 31 RANDOM_DEFAULT_IMAGINARY } PetscRandomType; 32 33 typedef struct _p_PetscRandom* PetscRandom; 34 35 EXTERN int PetscRandomCreate(MPI_Comm,PetscRandomType,PetscRandom*); 36 EXTERN int PetscRandomGetValue(PetscRandom,PetscScalar*); 37 EXTERN int PetscRandomSetInterval(PetscRandom,PetscScalar,PetscScalar); 38 EXTERN int PetscRandomDestroy(PetscRandom); 39 40 EXTERN int PetscGetFullPath(const char[],char[],int); 41 EXTERN int PetscGetRelativePath(const char[],char[],int); 42 EXTERN int PetscGetWorkingDirectory(char[],int); 43 EXTERN int PetscGetRealPath(char[],char[]); 44 EXTERN int PetscGetHomeDirectory(char[],int); 45 EXTERN int PetscTestFile(const char[],char,PetscTruth*); 46 EXTERN int PetscBinaryRead(int,void*,int,PetscDataType); 47 EXTERN int PetscSynchronizedBinaryRead(MPI_Comm,int,void*,int,PetscDataType); 48 EXTERN int PetscBinaryWrite(int,void*,int,PetscDataType,int); 49 EXTERN int PetscBinaryOpen(const char[],int,int *); 50 EXTERN int PetscBinaryClose(int); 51 EXTERN int PetscSharedTmp(MPI_Comm,PetscTruth *); 52 EXTERN int PetscSharedWorkingDirectory(MPI_Comm,PetscTruth *); 53 EXTERN int PetscGetTmp(MPI_Comm,char *,int); 54 EXTERN int PetscFileRetrieve(MPI_Comm,const char *,char *,int,PetscTruth*); 55 56 /* 57 In binary files variables are stored using the following lengths, 58 regardless of how they are stored in memory on any one particular 59 machine. Use these rather then sizeof() in computing sizes for 60 PetscBinarySeek(). 61 */ 62 #define PETSC_BINARY_INT_SIZE (32/8) 63 #define PETSC_BINARY_FLOAT_SIZE (32/8) 64 #define PETSC_BINARY_CHAR_SIZE (8/8) 65 #define PETSC_BINARY_SHORT_SIZE (16/8) 66 #define PETSC_BINARY_DOUBLE_SIZE (64/8) 67 #define PETSC_BINARY_SCALAR_SIZE sizeof(PetscScalar) 68 69 typedef enum {PETSC_BINARY_SEEK_SET = 0,PETSC_BINARY_SEEK_CUR = 1,PETSC_BINARY_SEEK_END = 2} PetscBinarySeekType; 70 EXTERN int PetscBinarySeek(int,int,PetscBinarySeekType,int*); 71 EXTERN int PetscSynchronizedBinarySeek(MPI_Comm,int,int,PetscBinarySeekType,int*); 72 73 EXTERN int PetscSetDebugger(const char[],PetscTruth); 74 EXTERN int PetscSetDefaultDebugger(void); 75 EXTERN int PetscSetDebuggerFromString(char*); 76 EXTERN int PetscAttachDebugger(void); 77 EXTERN int PetscStopForDebugger(void); 78 79 EXTERN int PetscGatherNumberOfMessages(MPI_Comm,int*,int*,int*); 80 EXTERN int PetscGatherMessageLengths(MPI_Comm,int,int,int*,int**,int**); 81 EXTERN int PetscPostIrecvInt(MPI_Comm,int,int,int*,int*,int***,MPI_Request**); 82 EXTERN int PetscPostIrecvScalar(MPI_Comm,int,int,int*,int*,PetscScalar***,MPI_Request**); 83 84 EXTERN int PetscSSEIsEnabled(MPI_Comm,PetscTruth *,PetscTruth *); 85 86 /* ParameterDict objects encapsulate arguments to generic functions, like mechanisms over interfaces */ 87 EXTERN int ParameterDictCreate(MPI_Comm, ParameterDict *); 88 EXTERN int ParameterDictDestroy(ParameterDict); 89 EXTERN int ParameterDictRemove(ParameterDict, const char []); 90 EXTERN int ParameterDictSetInteger(ParameterDict, const char [], int); 91 EXTERN int ParameterDictSetDouble(ParameterDict, const char [], double); 92 EXTERN int ParameterDictSetObject(ParameterDict, const char [], void *); 93 EXTERN int ParameterDictGetInteger(ParameterDict, const char [], int *); 94 EXTERN int ParameterDictGetDouble(ParameterDict, const char [], double *); 95 EXTERN int ParameterDictGetObject(ParameterDict, const char [], void **); 96 97 /* Parallel communication routines */ 98 /*E 99 InsertMode - Whether entries are inserted or added into vectors or matrices 100 101 Level: beginner 102 103 .seealso: VecSetValues(), MatSetValues(), VecSetValue(), VecSetValuesBlocked(), 104 VecSetValuesLocal(), VecSetValuesBlockedLocal(), MatSetValuesBlocked(), 105 MatSetValuesBlockedLocal(), MatSetValuesLocal() 106 E*/ 107 typedef enum {NOT_SET_VALUES, INSERT_VALUES, ADD_VALUES, MAX_VALUES} InsertMode; 108 /*E 109 ScatterMode - Determines the direction of a scatter 110 111 Level: beginner 112 113 .seealso: VecScatter, VecScatterBegin(), VecScatterEnd() 114 E*/ 115 typedef enum {SCATTER_FORWARD=0, SCATTER_REVERSE=1, SCATTER_FORWARD_LOCAL=2, SCATTER_REVERSE_LOCAL=3, SCATTER_LOCAL=2} ScatterMode; 116 117 EXTERN int PetscGhostExchange(MPI_Comm, int, int *, int *, PetscDataType, int *, InsertMode, ScatterMode, void *, void *); 118 119 #endif 120