1 #ifndef _DENSITY_KERNEL_H
2 #define _DENSITY_KERNEL_H
4 #if !defined(TWODIMS) && !defined(ONEDIM)
6 #define NORM_COEFF 4.188790204786
10 #define NORM_COEFF M_PI
13 #define NORM_COEFF 2.0
57 for(d = 0; d < 3; d ++) {
63 static inline void crossproduct(
const double v1[3],
const double v2[3],
double out[3])
65 static const int D2[3] = {1, 2, 0};
66 static const int D3[3] = {2, 0, 1};
69 for(d1 = 0; d1 < 3; d1++)
71 const int d2 = D2[d1];
72 const int d3 = D3[d1];
73 out[d1] = (v1[d2] * v2[d3] - v2[d2] * v1[d3]);
double(* wk)(DensityKernel *kernel, double q)
double(* dwk)(DensityKernel *kernel, double q)
double density_kernel_dwk(DensityKernel *kernel, double u)
@ DENSITY_KERNEL_CUBIC_SPLINE
@ DENSITY_KERNEL_QUINTIC_SPLINE
@ DENSITY_KERNEL_QUARTIC_SPLINE
double density_kernel_volume(DensityKernel *kernel)
static double dotproduct(const double v1[3], const double v2[3])
static void crossproduct(const double v1[3], const double v2[3], double out[3])
void density_kernel_init(DensityKernel *kernel, double H, enum DensityKernelType type)
double density_kernel_desnumngb(DensityKernel *kernel, double eta)
static double density_kernel_dW(DensityKernel *kernel, double u, double wk, double dwk)
double density_kernel_wk(DensityKernel *kernel, double u)
static double kernel(double loga, void *params)