summaryrefslogtreecommitdiff
path: root/src/main/ProcessEnvironment.c
blob: b67f97d7c81921dfcd3fb3f593e44600d3fe1598 (plain)
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
 /*@@
   @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 warnings about unused arguments */
  argc = argc;
  argv = argv;
  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));
  }
#endif

  return 0;
}

/********************************************************************
 *********************     Local Routines   *************************
 ********************************************************************/