summaryrefslogtreecommitdiff
path: root/src/include/cctk_Interp.h
blob: ad202cb19a2959185d292c2e0a743fdc0027b187 (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 /*@@
   @header    cctk_Interp.h
   @date      July 07 1999
   @author    Thomas Radke
   @desc
              Header file for using interpolation operators
   @enddesc
   @history
   @date      July 07 1999
   @author    Thomas Radke
   @hdesc     Just copied from cctk_Reduction.h
   @endhistory
 @@*/


#ifndef _CCTK_INTERP_H_
#define _CCTK_INTERP_H_

#ifdef __cplusplus
extern "C"
{
#endif

/* prototype for interpolation operator routine
   working on a list of grid variables */
typedef int (*cInterpOperatorGV) (cGH *GH,
                                  const char *coord_system,
                                  int num_points,
                                  int num_in_array_indices,
                                  int num_out_arrays,
                                  const void *const interp_coord_arrays[],
                                  const int interp_coord_array_types[],
                                  const int in_array_indices[],
                                  void *const out_arrays[],
                                  const int out_array_types[]);

/* prototype for interpolation operator routine
   working on local arrays */
typedef int (*cInterpOperatorLocal) (cGH *GH,
                                     int num_points,
                                     int num_dims,
                                     int num_in_arrays,
                                     int num_out_arrays,
                                     const int coord_dims[],
                                     const void *const coord_arrays[],
                                     const int coord_array_types[],
                                     const void *const interp_coord_arrays[],
                                     const int interp_coord_array_types[],
                                     const void *const in_arrays[],
                                     const int in_array_types[],
                                     void *const out_arrays[],
                                     const int out_array_types[]);

int CCTK_InterpHandle (const char *name);

int CCTK_InterpRegisterOperatorGV (cInterpOperatorGV operator_GV,
                                   const char *name);

int CCTK_InterpRegisterOperatorLocal (cInterpOperatorLocal operator_local,
                                      const char *name);

int CCTK_InterpGV (cGH *GH,
                   int operator_handle,
                   int coord_system_handle,
                   int num_points,
                   int num_in_array_indices,
                   int num_out_arrays,
                   ...);

int CCTK_InterpLocal (cGH *GH,
                      int operator_handle,
                      int num_points,
                      int num_dims,
                      int num_in_arrays,
                      int num_out_arrays,
                      ...);

#ifdef __cplusplus
}
#endif

#endif  /* _INTERP_H_ */