Actual source code: error.c

  1: #define PETSCKSP_DLL

  3: /**********************************error.c*************************************

  5: Author: Henry M. Tufo III

  7: e-mail: hmt@cs.brown.edu

  9: snail-mail:
 10: Division of Applied Mathematics
 11: Brown University
 12: Providence, RI 02912

 14: Last Modification: 
 15: 6.21.97
 16: ***********************************error.c************************************/

 18: /**********************************error.c*************************************
 19: File Description:
 20: -----------------

 22: ***********************************error.c************************************/
 23:  #include src/ksp/pc/impls/tfs/tfs.h

 25: /**********************************error.c*************************************
 26: Function error_msg_fatal()

 28: Input : pointer to formatted error message.
 29: Output: prints message to stdout.
 30: Return: na.
 31: Description: prints error message and terminates program.
 32: ***********************************error.c************************************/
 33: void error_msg_fatal(const char msg[], ...)
 34: {
 35:   va_list    ap;
 36:   const char *p;
 37:   char       *sval, cval;
 38:   int        ival;
 39:   PetscScalar       dval;


 42:   /* print error message along w/node identifier */
 43:   va_start(ap,msg);
 44:   printf("%d :: FATAL :: ", my_id);
 45:   for (p=msg; *p; p++)
 46:     {
 47:       if (*p != '%')
 48:         {
 49:           putchar(*p);
 50:           continue;
 51:         }
 52:       switch (*++p) {
 53:       case 'c':
 54:         cval = va_arg(ap,int);
 55:           putchar(cval);
 56:         break;
 57:       case 'd':
 58:         ival = va_arg(ap,int);
 59:         printf("%d",ival);
 60:         break;
 61:       case 'e':
 62:         dval = va_arg(ap,PetscScalar);
 63:         printf("%e",dval);
 64:         break;
 65:       case 'f':
 66:         dval = va_arg(ap,PetscScalar);
 67:         printf("%f",dval);
 68:         break;
 69:       case 'g':
 70:         dval = va_arg(ap,PetscScalar);
 71:         printf("%g",dval);
 72:         break;
 73:       case 's':
 74:         for (sval=va_arg(ap,char *); *sval; sval++)
 75:           {putchar(*sval);}
 76:         break;
 77:       default:
 78:         putchar(*p);
 79:         break;
 80:       }
 81:     }
 82:   /* printf("\n"); */
 83:   va_end(ap);

 85:   fflush(stdout);

 87:   /* Try with MPI_Finalize() as well _only_ if all procs call this routine */
 88:   /* Choose a more meaningful error code than -12 */
 89:   MPI_Abort(MPI_COMM_WORLD, -12);
 90: }



 94: /**********************************error.c*************************************
 95: Function error_msg_warning()

 97: Input : formatted string and arguments.
 98: Output: conversion printed to stdout.
 99: Return: na.
100: Description: prints error message.
101: ***********************************error.c************************************/
102: void 
103: error_msg_warning(const char msg[], ...)
104: {
105:   /* print error message along w/node identifier */
106: #if   defined V
107:   va_list ap;
108:   char *p, *sval, cval;
109:   int ival;
110:   PetscScalar dval;

112:   va_start(ap,msg);
113:   if (!my_id)
114:     {
115:       printf("%d :: WARNING :: ", my_id);
116:       for (p=msg; *p; p++)
117:         {
118:           if (*p != '%')
119:             {
120:               putchar(*p);
121:               continue;
122:             }
123:           switch (*++p) {
124:           case 'c':
125:             cval = va_arg(ap,char);
126:             putchar(cval);
127:             break;
128:           case 'd':
129:             ival = va_arg(ap,int);
130:             printf("%d",ival);
131:             break;
132:           case 'e':
133:             dval = va_arg(ap,PetscScalar);
134:             printf("%e",dval);
135:             break;
136:           case 'f':
137:             dval = va_arg(ap,PetscScalar);
138:             printf("%f",dval);
139:             break;
140:           case 'g':
141:             dval = va_arg(ap,PetscScalar);
142:             printf("%g",dval);
143:             break;
144:           case 's':
145:             for (sval=va_arg(ap,char *); *sval; sval++)
146:               {putchar(*sval);}
147:             break;
148:           default:
149:             putchar(*p);
150:             break;
151:           }
152:         }
153:       /*      printf("\n"); */
154:     }
155:   va_end(ap);


158: #elif defined VV
159:   va_list ap;
160:   char *p, *sval, cval;
161:   int ival;
162:   PetscScalar dval;
163:   va_start(ap,msg);
164:   if (my_id>=0)
165:     {
166:       printf("%d :: WARNING :: ", my_id);
167:       for (p=msg; *p; p++)
168:         {
169:           if (*p != '%')
170:             {
171:               putchar(*p);
172:               continue;
173:             }
174:           switch (*++p) {
175:           case 'c':
176:             cval = va_arg(ap,char);
177:             putchar(cval);
178:             break;
179:           case 'd':
180:             ival = va_arg(ap,int);
181:             printf("%d",ival);
182:             break;
183:           case 'e':
184:             dval = va_arg(ap,PetscScalar);
185:             printf("%e",dval);
186:             break;
187:           case 'f':
188:             dval = va_arg(ap,PetscScalar);
189:             printf("%f",dval);
190:             break;
191:           case 'g':
192:             dval = va_arg(ap,PetscScalar);
193:             printf("%g",dval);
194:             break;
195:           case 's':
196:             for (sval=va_arg(ap,char *); *sval; sval++)
197:               {putchar(*sval);}
198:             break;
199:           default:
200:             putchar(*p);
201:             break;
202:           }
203:         }
204:       /* printf("\n"); */
205:     }
206:   va_end(ap);
207: #endif

209: #ifdef DELTA  
210:   fflush(stdout);
211: #else
212:   fflush(stdout);
213:   /*  fflush(NULL); */
214: #endif

216: }