Files @ b7792cb187f7
Branch filter:

Location: MD/arcos/include/interpol2.h

greta
Edited file README via RhodeCode
/** @file interpol2.h
 * @brief Header file for interpol2.c.
 */
#ifndef _INTERPOL2_H_

/* We will certainly never use a 16th order scheme,
 * but in case we do, remember to change it here
 */
#define MAX_ORDER 16

#define MAX_INTERPOL_METHODS 9

typedef struct interpol_t interpol_t;
typedef struct interpol_method_t interpol_method_t;

struct interpol_t
{
  double *coeffs;
  double *stencil;

  /* The separation between stencil points. */
  double Lr, Lz;

  /* The interpolation method to use. */
  interpol_method_t *method;

  /* Origin of the interpolation polynomial, which is thus written in
     powers of (r - r0) and (z - z0). */
  double r0, z0;
};

struct interpol_method_t
{
  double *matrix;

  /* p is the order of the polynomial plus one.
   * q is the number of stencil points in one direction (the total
   * number is, of course, q^2. */
  int p, q;

  /* Location of the origin with respect to the stencil in units of L. */
  int ir0, iz0;

  int masses;

  void (*set_coeffs) (interpol_t *this);
  double (*apply) (interpol_t *this, double r, double z);
};

extern interpol_method_t interpol_zero;
extern interpol_method_t interpol_wackers;
extern interpol_method_t interpol_luque;
extern interpol_method_t interpol_quadratic;
extern interpol_method_t interpol_bilin;
extern interpol_method_t interpol_quadlog;
extern interpol_method_t interpol_zero_masses;
extern interpol_method_t interpol_wackers_masses;
extern interpol_method_t interpol_luque_masses;
extern interpol_method_t interpol_quadratic_masses;
extern interpol_method_t interpol_bilin_masses;

extern interpol_method_t *interpol_methods_index[MAX_INTERPOL_METHODS];

#define _INTERPOL2_H_
#endif