xref: /petsc/include/petscsys.h (revision 262ff7bbb8d19d69e3928431622c455081fa134e)
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 #include "petsc.h"
8 PETSC_EXTERN_CXX_BEGIN
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  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[]);
25 
26 EXTERN int  PetscSetDisplay(void);
27 EXTERN int  PetscGetDisplay(char[],int);
28 
29 extern int PETSC_RANDOM_COOKIE;
30 
31 typedef enum { RANDOM_DEFAULT,RANDOM_DEFAULT_REAL,
32                RANDOM_DEFAULT_IMAGINARY } PetscRandomType;
33 
34 /*S
35      PetscRandom - Abstract PETSc object that manages generating random numbers
36 
37    Level: intermediate
38 
39   Concepts: random numbers
40 
41 .seealso:  PetscRandomCreate(), PetscRandomGetValue()
42 S*/
43 typedef struct _p_PetscRandom*   PetscRandom;
44 
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);
49 
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[]);
68 
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)
81 
82 /*E
83   PetscBinarySeekType - argument to PetscBinarySeek()
84 
85   Level: advanced
86 
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*);
92 
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);
98 
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**);
103 
104 EXTERN int PetscSSEIsEnabled(MPI_Comm,PetscTruth *,PetscTruth *);
105 
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 **);
116 
117 /* Parallel communication routines */
118 /*E
119   InsertMode - Whether entries are inserted or added into vectors or matrices
120 
121   Level: beginner
122 
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
130 
131   Level: beginner
132 
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;
136 
137 EXTERN int PetscGhostExchange(MPI_Comm, int, int *, int *, PetscDataType, int *, InsertMode, ScatterMode, void *, void *);
138 
139 PETSC_EXTERN_CXX_END
140 #endif /* __PETSCSYS_H */
141