Files @ b7792cb187f7
Branch filter:

Location: MD/arcos/include/cstream.h

greta
Edited file README via RhodeCode
/** @file cstream.h
 *  @brief Global header file
 */

#ifndef _CSTREAM_H_

#include "tree.h"
#include "assert.h"
#include "stdlib.h"

#ifdef _OPENMP
# include "omp.h"
#endif

#ifndef TRUE
# define TRUE 1
#endif 

#ifndef FALSE
# define FALSE 0
#endif 


#ifdef DEBUG_LEVEL
# ifdef _OPENMP
#  define debug(level, ...) if (DEBUG_LEVEL >= level) {	      \
    fprintf (stderr,"[%d] %s:%d: ", omp_get_thread_num(),    \
	     __FILE__, __LINE__);			      \
    fprintf (stderr,__VA_ARGS__);			      \
  }
# else /*_OPENMP*/
#  define debug(level, ...) if (DEBUG_LEVEL >= level) {	      \
    fprintf (stderr,"%s:%d: ", __FILE__, __LINE__);	      \
    fprintf (stderr,__VA_ARGS__);			      \
  }
# endif
#else
# define debug(level, ...)
# define NDEBUG  /* To supress the asserts */
#endif

#define warning(...) do{				\
    fprintf (stderr, "%s: Warning: ", invok_name);	\
    fprintf (stderr, ## __VA_ARGS__);			\
  } while(0)

#define fatal(...) do{					\
    fprintf (stderr, "%s: Fatal error: ", invok_name);	\
    fprintf (stderr, ## __VA_ARGS__);			\
    exit(-1);						\
  } while(0)
    
/* Useful to debug. */
#define show_double(VAR_) printf (#VAR_ " = %g\n", VAR_)
#define show_int(VAR_) printf (#VAR_ " = %d\n", VAR_)

/* Beware of side-effects! */
#define MYMAX(X_, Y_)  ((X_) > (Y_)? (X_): (Y_))
#define MYMIN(X_, Y_)  ((X_) < (Y_)? (X_): (Y_))
#define MAX_AT_LEVEL(X_, Y_, L_)  MYMAX(X_, (Y_) << (L_))
#define MIN_AT_LEVEL(X_, Y_, L_)  MYMIN(X_, (Y_) << (L_))
#define MAX_AT_LEVEL_WITH_SHIFT(X_, Y_, L_, S_)  \
  MYMAX(X_, ((Y_) << (L_)) + ((L_) > 0? ((S_) << (L_ - 1)): 0))
#define MIN_AT_LEVEL_WITH_SHIFT(X_, Y_, L_, S_)  \
  MYMIN(X_, ((Y_) << (L_)) + ((L_) > 0? ((S_) << (L_ - 1)): 0))

#define XCHG(X1_, X2_) do {			\
    typeof(X1_) TMP_;				\
    TMP_ = X1_;					\
    X1_ = X2_;					\
    X2_ = TMP_;					\
  } while(0)


#define SQ(X_)  ((X_) * (X_))

///** @brief Information about each program parameter. */
//typedef struct param_t param_t;
//struct param_t {
  //char *name;
  //char *desc;
  //char *type;
  //void *value;
//};

/** @brief These are the types for the global parameters. */
typedef char* string;
typedef double* doublep;

//#ifdef ALLOC_PARAMS
//# define decl_param(TYPE, NAME, DESC, DEFAULT)		\
       //TYPE NAME = DEFAULT;				\
       //param_t NAME ## _st = {				\
	 //#NAME,						\
	 //DESC,						\
	 //#TYPE,						\
	 //(void *) &NAME};
//# define decl_deprec_param(TYPE, NAME, DESC, DEFAULT)	\
       //TYPE NAME;					\
       //param_t NAME ## _st = {				\
	 //#NAME,						\
	 //DESC,						\
	 //"deprecated",					\
	 //NULL};
//#else
//# define decl_param(TYPE, NAME, DESC, DEFAULT)	\
  //extern TYPE NAME;				\
  //extern param_t NAME ## _st;
//# define decl_deprec_param(TYPE, NAME, DESC, DEFAULT)	\
  //decl_param(TYPE, NAME, DESC, DEFAULT)
//#endif

typedef double REAL;

extern double *dr, *dz, dtheta;
/*!< The grid sizes */
extern double *w2k, *wk;
/*!< See cstream.c */

#define decl_field_comp(_DIR) \
  double (*ext_e_ ## _DIR) (double r, double z, double theta)
/*!< The three components of the external field: ext_e_r, ext_e_z and
 *   ext_e_theta. */

extern decl_field_comp(r);
extern decl_field_comp(z);
extern decl_field_comp(theta);

extern char *invok_name;

extern const double twopi;
extern const double invfourpi;
extern const double invpi32;

/**********
 * misc.c *
 **********/
void *xmalloc (size_t size);
void *xrealloc (void *ptr, size_t size);
void *xcalloc (size_t count, size_t size);

#define _CSTREAM_H_
#endif