1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*@@
@file ProcessEnvironment.c
@date Fri Feb 26 11:20:15 1999
@author Tom Goodale
@desc
Checks the environment for various settings, and acts on them.
@enddesc
@version $Header$
@@*/
#include <stdio.h>
#include <stdlib.h>
#include "cctk_Capabilities.h"
#include "cctk_Flesh.h"
#ifdef CCTK_MPI
# include <mpi.h>
#endif
static const char *rcsid = "$Header$";
CCTK_FILEVERSION(main_ProcessEnvironment_c);
/********************************************************************
********************* Local Data Types ***********************
********************************************************************/
/********************************************************************
********************* Local Routine Prototypes *********************
********************************************************************/
/********************************************************************
********************* Other Routine Prototypes *********************
********************************************************************/
int CCTKi_ProcessEnvironment (int *argc, char ***argv,tFleshConfig *ConfigData);
/********************************************************************
********************* Local Data *****************************
********************************************************************/
#ifdef CCTK_MPI
#define CACTUS_MPI_ERROR(xf) \
do \
{ \
int errcode; \
\
\
if((errcode = xf) != MPI_SUCCESS) \
{ \
char mpi_error_string[MPI_MAX_ERROR_STRING+1]; \
int resultlen; \
\
\
MPI_Error_string(errcode, mpi_error_string, &resultlen); \
fprintf(stderr, "MPI Call %s returned error code %d (%s)\n", \
#xf, errcode, mpi_error_string); \
fprintf(stderr, "At line %d of file %s\n", \
__LINE__, __FILE__); \
} \
} while (0)
#endif
#ifdef CCTK_MPI
char MPI_Active = 0;
#endif
/********************************************************************
********************* External Routines **********************
********************************************************************/
/*@@
@routine CCTKi_ProcessEnvironment
@date Fri Feb 26 11:20:15 1999
@author Tom Goodale
@desc
@enddesc
@calls
@calledby
@history
@endhistory
@var argc
@vdesc Number of arguments
@vtype int *
@vio inout
@vcomment
@endvar
@var argv
@vdesc Argument list
@vtype char ***
@vio inout
@vcomment
@endvar
@var ConfigData
@vdesc Flesh configuration data
@vtype tFleshConfig
@vio inout
@vcomment
@endvar
@returntype int
@returndesc
0 - success
@endreturndesc
@@*/
int CCTKi_ProcessEnvironment(int *argc, char ***argv,tFleshConfig *ConfigData)
{
/* avoid compiler warning about unused argument */
ConfigData = ConfigData;
/* Check if MPI compiled in but choosing not to use MPI. */
#ifdef CCTK_MPI
if(!getenv("CACTUS_NOMPI"))
{
MPI_Active = 1;
CACTUS_MPI_ERROR(MPI_Init(argc, argv));
}
#else
argc = argc;
argv = argv;
#endif
return 0;
}
/********************************************************************
********************* Local Routines *************************
********************************************************************/
|