Streamer fluid modeling - An overview of ARCoS  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
cstream.h
Go to the documentation of this file.
1 
5 #ifndef _CSTREAM_H_
6 
7 #include "tree.h"
8 #include "assert.h"
9 #include "stdlib.h"
10 
11 #ifdef _OPENMP
12 # include "omp.h"
13 #endif
14 
15 #ifndef TRUE
16 # define TRUE 1
17 #endif
18 
19 #ifndef FALSE
20 # define FALSE 0
21 #endif
22 
23 
24 #ifdef DEBUG_LEVEL
25 # ifdef _OPENMP
26 # define debug(level, ...) if (DEBUG_LEVEL >= level) { \
27  fprintf (stderr,"[%d] %s:%d: ", omp_get_thread_num(), \
28  __FILE__, __LINE__); \
29  fprintf (stderr,__VA_ARGS__); \
30  }
31 # else /*_OPENMP*/
32 # define debug(level, ...) if (DEBUG_LEVEL >= level) { \
33  fprintf (stderr,"%s:%d: ", __FILE__, __LINE__); \
34  fprintf (stderr,__VA_ARGS__); \
35  }
36 # endif
37 #else
38 # define debug(level, ...)
39 # define NDEBUG /* To supress the asserts */
40 #endif
41 
42 #define warning(...) do{ \
43  fprintf (stderr, "%s: Warning: ", invok_name); \
44  fprintf (stderr, ## __VA_ARGS__); \
45  } while(0)
46 
47 #define fatal(...) do{ \
48  fprintf (stderr, "%s: Fatal error: ", invok_name); \
49  fprintf (stderr, ## __VA_ARGS__); \
50  exit(-1); \
51  } while(0)
52 
53 /* Useful to debug. */
54 #define show_double(VAR_) printf (#VAR_ " = %g\n", VAR_)
55 #define show_int(VAR_) printf (#VAR_ " = %d\n", VAR_)
56 
57 /* Beware of side-effects! */
58 #define MYMAX(X_, Y_) ((X_) > (Y_)? (X_): (Y_))
59 #define MYMIN(X_, Y_) ((X_) < (Y_)? (X_): (Y_))
60 #define MAX_AT_LEVEL(X_, Y_, L_) MYMAX(X_, (Y_) << (L_))
61 #define MIN_AT_LEVEL(X_, Y_, L_) MYMIN(X_, (Y_) << (L_))
62 #define MAX_AT_LEVEL_WITH_SHIFT(X_, Y_, L_, S_) \
63  MYMAX(X_, ((Y_) << (L_)) + ((L_) > 0? ((S_) << (L_ - 1)): 0))
64 #define MIN_AT_LEVEL_WITH_SHIFT(X_, Y_, L_, S_) \
65  MYMIN(X_, ((Y_) << (L_)) + ((L_) > 0? ((S_) << (L_ - 1)): 0))
66 
67 #define XCHG(X1_, X2_) do { \
68  typeof(X1_) TMP_; \
69  TMP_ = X1_; \
70  X1_ = X2_; \
71  X2_ = TMP_; \
72  } while(0)
73 
74 
75 #define SQ(X_) ((X_) * (X_))
76 
78 //typedef struct param_t param_t;
79 //struct param_t {
80  //char *name;
81  //char *desc;
82  //char *type;
83  //void *value;
84 //};
85 
87 typedef char* string;
88 typedef double* doublep;
89 
90 //#ifdef ALLOC_PARAMS
91 //# define decl_param(TYPE, NAME, DESC, DEFAULT) \
92  //TYPE NAME = DEFAULT; \
93  //param_t NAME ## _st = { \
94  //#NAME, \
95  //DESC, \
96  //#TYPE, \
97  //(void *) &NAME};
98 //# define decl_deprec_param(TYPE, NAME, DESC, DEFAULT) \
99  //TYPE NAME; \
100  //param_t NAME ## _st = { \
101  //#NAME, \
102  //DESC, \
103  //"deprecated", \
104  //NULL};
105 //#else
106 //# define decl_param(TYPE, NAME, DESC, DEFAULT) \
107  //extern TYPE NAME; \
108  //extern param_t NAME ## _st;
109 //# define decl_deprec_param(TYPE, NAME, DESC, DEFAULT) \
110  //decl_param(TYPE, NAME, DESC, DEFAULT)
111 //#endif
112 
113 typedef double REAL;
114 
115 extern double *dr, *dz, dtheta;
117 extern double *w2k, *wk;
120 #define decl_field_comp(_DIR) \
121  double (*ext_e_ ## _DIR) (double r, double z, double theta)
122 
125 extern decl_field_comp(r);
126 extern decl_field_comp(z);
127 extern decl_field_comp(theta);
128 
129 extern char *invok_name;
130 
131 extern const double twopi;
132 extern const double invfourpi;
133 extern const double invpi32;
134 
135 /**********
136  * misc.c *
137  **********/
138 void *xmalloc (size_t size);
139 void *xrealloc (void *ptr, size_t size);
140 void *xcalloc (size_t count, size_t size);
141 
142 #define _CSTREAM_H_
143 #endif