lammps/tools/phonon/interpolate.h

41 lines
876 B
C++

#ifndef INTERPOLATION_H
#define INTERPOLATION_H
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "memory.h"
extern "C" typedef struct { double r, i; } doublecomplex;
using namespace std;
class Interpolate{
public:
Interpolate(int, int, int, int, doublecomplex **);
~Interpolate();
void set_method();
void execute(double *, doublecomplex *);
void reset_gamma();
int UseGamma;
private:
void tricubic_init();
void tricubic(double *, doublecomplex *);
void trilinear(double *, doublecomplex *);
Memory *memory;
int which;
int Nx, Ny, Nz, Npt, ndim;
int flag_reset_gamma, flag_allocated_dfs;
doublecomplex **data;
doublecomplex **Dfdx, **Dfdy, **Dfdz, **D2fdxdy, **D2fdxdz, **D2fdydz, **D3fdxdydz;
double a[64], f[8], dfdx[8], dfdy[8], dfdz[8], d2fdxdy[8], d2fdxdz[8], d2fdydz[8], d3fdxdydz[8];
int vidx[8];
};
#endif