#ifndef _FISPHACK_H_
/* Arguments for the boundary conditions in fishpack:
The first name is the b.c. at the lowest value of the variable,
the second one is the b.c. at the highest value.
DIR = Dirichlet,
NEU = Neumann,
UNS = Unspecified (when r = 0 for cylindrical calculations).
*/
#define FISH_PERIODIC 0
#define FISH_DIR_DIR 1
#define FISH_DIR_NEU 2
#define FISH_NEU_NEU 3
#define FISH_NEU_DIR 4
#define FISH_UNS_DIR 5
#define FISH_UNS_NEU 6
/* This is the maximum number of grid cells that fishpack can handle
without accumulating larger and larger roundoff errors
(it's only an approximation: not checked throughly so if you notice
that you are getting strange things such as artificial lines in
the electric field, this is the first thing you should check). */
#define FISH_MAX_GRIDPOINTS 1700
#define LOG2 0.69314718055994530941723212145818
#define FISH_WORK(M_, N_) (13 * (M_) + 4 * (N_) \
+ (M_) * (int) (log(N_) / LOG2))
#define FISH_ERROR_MAX 13
const char *hstcyl_error_str[FISH_ERROR_MAX];
void
fish_hstcyl (double r0, double r1, int nr,
int rbndcnd, double *bcr0, double *bcr1,
double z0, double z1, int nz,
int zbndcnd, double *bcz0, double *bcz1,
double lambda, double s, double *f, int idimf);
void
fish_hstcrt (double r0, double r1, int nr,
int rbndcnd, double *bcr0, double *bcr1,
double z0, double z1, int nz,
int zbndcnd, double *bcz0, double *bcz1,
double lambda, double *f, int idimf);
#define _FISHPACK_H_
#endif /* _FISHPACK_H_ */