1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef __utils_h
#define __utils_h
#include "cctk.h"
enum mp_coord {mp_theta, mp_phi};
void Multipole_OutputArrayToFile(CCTK_ARGUMENTS, char const *name, int array_size,
CCTK_REAL const th[], CCTK_REAL const ph[],
CCTK_REAL const x[], CCTK_REAL const y[], CCTK_REAL const z[],
CCTK_REAL const data[]);
void Multipole_Output1D(CCTK_ARGUMENTS, char const *name, int array_size,
CCTK_REAL const th[], CCTK_REAL const ph[], mp_coord coord,
CCTK_REAL const data[]);
void Multipole_OutputComplexToFile(CCTK_ARGUMENTS, char const *name, CCTK_REAL redata, CCTK_REAL imdata);
void Multipole_CoordSetup(int ntheta, int nphi,
CCTK_REAL xhat[], CCTK_REAL yhat[],
CCTK_REAL zhat[], CCTK_REAL th[],
CCTK_REAL ph[]);
void Multipole_ScaleCartesian(int ntheta, int nphi, CCTK_REAL r,
CCTK_REAL const xhat[], CCTK_REAL const yhat[], CCTK_REAL const zhat[],
CCTK_REAL x[], CCTK_REAL y[], CCTK_REAL z[]);
static inline int Multipole_Index(int it, int ip, int ntheta)
{
return it + (ntheta+1)*ip;
}
void Multipole_Integrate(int array_size, int ntheta,
CCTK_REAL const array1r[], CCTK_REAL const array1i[],
CCTK_REAL const array2r[], CCTK_REAL const array2i[],
CCTK_REAL const th[], CCTK_REAL const pph[],
CCTK_REAL out_arrayr[], CCTK_REAL out_arrayi[]);
#endif
|