ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mdtools/interface_implementation/simError.c
Revision: 156
Committed: Thu Oct 24 20:40:52 2002 UTC (21 years, 10 months ago) by mmeineke
Content type: text/plain
File size: 1485 byte(s)
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 mmeineke 154 #include <stdlib.h>
2     #include <stdio.h>
3    
4     #ifdef IS_MPI
5     #include <mpi.h>
6     #endif // IS_MPI
7    
8     #include "simError.h"
9    
10    
11 mmeineke 156 void initSimError( void ){
12     painCave.errMsg[0] = '\0';
13     painCave.isFatal = 0;
14     #ifdef IS_MPI
15     painCave.isEventLoop = 0;
16     #endif
17     }
18    
19 mmeineke 154 int simError( void ) {
20    
21     #ifdef IS_MPI
22     int myRank;
23     int myError = 1;
24     int isError;
25     int isFatal;
26    
27     MPI_Comm_rank( MPI_COMM_WORLD, &myRank );
28    
29 mmeineke 156 if( painCave.isEventLoop ){
30 mmeineke 154 fprintf( stderr,
31 mmeineke 156 "MPI Error on node %d: %s\n",
32 mmeineke 154 myRank,
33     painCave.errMsg );
34     return 1;
35     }
36     else{
37 mmeineke 156 if( painCave.isFatal ){
38     fprintf( stderr,
39     "MPI Fatal Error on node %d: %s\n",
40     myRank,
41     painCave.errMsg );
42     MPI_Allreduce( &myError, &isError, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD );
43    
44 mmeineke 154 MPI_Finalize();
45     exit(0);
46     }
47 mmeineke 156 else{
48     fprintf( stderr,
49     "MPI Non-Fatal Error on node %d: %s\n",
50     myRank,
51     painCave.errMsg );
52     }
53 mmeineke 154 return 1;
54     }
55    
56     #else
57    
58     if( painCave.isFatal ){
59 mmeineke 156 fprintf( stderr,
60     "Fatal Error: %s\n",
61     painCave.errMsg );
62 mmeineke 154 exit(0);
63     }
64 mmeineke 156 else{
65     fprintf( stderr,
66     "Warning: %s\n",
67     painCave.errMsg );
68     }
69 mmeineke 154 return 1;
70    
71     #endif // IS_MPI
72    
73     return 0; // in case nobody caught that.
74    
75     }
76    
77    
78 mmeineke 156 #ifdef IS_MPI
79    
80     void checkMPIError( void ){
81    
82     int myError = 0;
83     int isError;
84    
85     MPI_Allreduce( &myError, &isError, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD );
86     if( isError ){
87     MPI_Finalize();
88     exit(0);
89     }
90     }
91    
92     #endif // IS_MPI