MP-Gadget  5.0.1.dev1-76bc7d4726-dirty
densitykernel.h
Go to the documentation of this file.
1 #ifndef _DENSITY_KERNEL_H
2 #define _DENSITY_KERNEL_H
3 
4 #if !defined(TWODIMS) && !defined(ONEDIM)
5 #define NUMDIMS 3
6 #define NORM_COEFF 4.188790204786
7 #else
8 #ifdef TWODIMS
9 #define NUMDIMS 2
10 #define NORM_COEFF M_PI
11 #else
12 #define NUMDIMS 1
13 #define NORM_COEFF 2.0
14 #endif
15 #endif
16 
21 };
22 
23 typedef struct {
24  double H;
25  double HH;
26  double Hinv; /* convert from r to u*/
27  int type;
28  double support;
29  const char * name;
30  /* private: */
31  double Wknorm;
32  double dWknorm;
34 
35 double
37 void
39 double
41 double
43 double
45 
46 static inline double
47 density_kernel_dW(DensityKernel * kernel, double u, double wk, double dwk)
48 {
49  return - (NUMDIMS * kernel->Hinv * wk + u * dwk);
50 }
51 
52 static inline double
53 dotproduct(const double v1[3], const double v2[3])
54 {
55  double r =0;
56  int d;
57  for(d = 0; d < 3; d ++) {
58  r += v1[d] * v2[d];
59  }
60  return r;
61 }
62 
63 static inline void crossproduct(const double v1[3], const double v2[3], double out[3])
64 {
65  static const int D2[3] = {1, 2, 0};
66  static const int D3[3] = {2, 0, 1};
67 
68  int d1;
69  for(d1 = 0; d1 < 3; d1++)
70  {
71  const int d2 = D2[d1];
72  const int d3 = D3[d1];
73  out[d1] = (v1[d2] * v2[d3] - v2[d2] * v1[d3]);
74  }
75 }
76 
77 #endif
double(* wk)(DensityKernel *kernel, double q)
Definition: densitykernel.c:94
double(* dwk)(DensityKernel *kernel, double q)
Definition: densitykernel.c:95
double density_kernel_dwk(DensityKernel *kernel, double u)
DensityKernelType
Definition: densitykernel.h:17
@ DENSITY_KERNEL_CUBIC_SPLINE
Definition: densitykernel.h:18
@ DENSITY_KERNEL_QUINTIC_SPLINE
Definition: densitykernel.h:19
@ DENSITY_KERNEL_QUARTIC_SPLINE
Definition: densitykernel.h:20
#define NUMDIMS
Definition: densitykernel.h:5
double density_kernel_volume(DensityKernel *kernel)
static double dotproduct(const double v1[3], const double v2[3])
Definition: densitykernel.h:53
static void crossproduct(const double v1[3], const double v2[3], double out[3])
Definition: densitykernel.h:63
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)
Definition: densitykernel.h:47
double density_kernel_wk(DensityKernel *kernel, double u)
static double kernel(double loga, void *params)
Definition: lightcone.c:59
const char * name
Definition: densitykernel.h:29