xref: /petsc/include/petscsys.h (revision d834d2e41ae6b89f751071fd2a79cb2d48f82431)
1 /* $Id: sys.h,v 1.29 1997/09/18 03:24:30 bsmith Exp bsmith $ */
2 /*
3     Provides access to system related and general utility routines.
4 */
5 #if !defined(__SYS_PACKAGE)
6 #define __SYS_PACKAGE
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 
14 extern char *PetscGetDate();
15 
16 extern int  PetscSortInt(int,int*);
17 extern int  PetscSortIntWithPermutation(int,int*,int*);
18 extern int  PetscSortDouble(int,double*);
19 extern int  PetscSortDoubleWithPermutation(int,double*,int*);
20 
21 extern int  PetscSetDisplay();
22 extern int  PetscGetDisplay(char *,int);
23 
24 #define PETSCRANDOM_COOKIE PETSC_COOKIE+19
25 
26 typedef enum { RANDOM_DEFAULT, RANDOM_DEFAULT_REAL,
27                RANDOM_DEFAULT_IMAGINARY } PetscRandomType;
28 
29 typedef struct _p_PetscRandom*   PetscRandom;
30 
31 extern int PetscRandomCreate(MPI_Comm,PetscRandomType,PetscRandom*);
32 extern int PetscRandomGetValue(PetscRandom,Scalar*);
33 extern int PetscRandomSetInterval(PetscRandom,Scalar,Scalar);
34 extern int PetscRandomDestroy(PetscRandom);
35 
36 extern int PetscGetFullPath(char*,char*,int);
37 extern int PetscGetRelativePath(char*,char*,int);
38 extern int PetscGetWorkingDirectory(char *, int);
39 extern int PetscGetRealPath(char *,char*);
40 extern int PetscGetHomeDirectory(int,char*);
41 
42 typedef enum { BINARY_INT, BINARY_DOUBLE, BINARY_SHORT, BINARY_FLOAT,
43                BINARY_CHAR } PetscBinaryType;
44 #define BINARY_SCALAR BINARY_DOUBLE /* not correct if compiled with complex */
45 extern int PetscBinaryRead(int,void*,int,PetscBinaryType);
46 extern int PetscBinaryWrite(int,void*,int,PetscBinaryType,int);
47 extern int PetscBinaryOpen(char *,int,int *);
48 extern int PetscBinaryClose(int);
49 
50 /*
51    In binary files variables are stored using the following lengths,
52   regardless of how they are stored in memory on any one particular
53   machine. Use these rather then sizeof() in computing sizes for
54   PetscBinarySeek().
55 */
56 #define BINARY_INT_SIZE    32
57 #define BINARY_FLOAT_SIZE  32
58 #define BINARY_CHAR_SIZE    8
59 #define BINARY_SHORT_SIZE  16
60 #define BINARY_DOUBLE_SIZE 64
61 #define BINARY_SCALAR_SIZE sizeof(Scalar)
62 
63 typedef enum {BINARY_SEEK_SET = 0, BINARY_SEEK_CUR = 1, BINARY_SEEK_END = 2} PetscBinarySeekType;
64 extern int PetscBinarySeek(int,int,PetscBinarySeekType);
65 
66 extern int PetscSetDebugger(char *,int,char *);
67 extern int PetscAttachDebugger();
68 
69 #endif
70 
71