STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
starsh-electrodynamics.h
Go to the documentation of this file.
1 
13 #ifndef __STARSH_ELECTRODYNAMICS_H__
14 #define __STARSH_ELECTRODYNAMICS_H__
15 
30 // Add definitions for size_t, va_list, STARSH_kernel and STARSH_particles
31 #include "starsh.h"
32 #include "starsh-particles.h"
33 
34 typedef struct starsh_eddata
36 
38 {
41  //char dtype;
43  double k;
45  double diag;
48 
51 
59 {
76 };
77 
80 
89 {
98 };
99 
100 int starsh_eddata_new(STARSH_eddata **data, STARSH_int count, int ndim);
101 int starsh_eddata_init(STARSH_eddata **data, STARSH_int count, int ndim,
102  double *point, double k, double diag);
103 int starsh_eddata_generate(STARSH_eddata **data, STARSH_int count, int ndim,
104  double k, double diag, enum STARSH_PARTICLES_PLACEMENT place);
106  va_list args);
107 int starsh_eddata_generate_el(STARSH_eddata **data, STARSH_int count, ...);
111 
112 // KERNELS
113 
114 void starsh_eddata_block_sin_kernel_1d(int nrows, int ncols, STARSH_int *irow,
115  STARSH_int *icol, void *row_data, void *col_data, void *result,
116  int ld);
117 void starsh_eddata_block_sin_kernel_2d(int nrows, int ncols, STARSH_int *irow,
118  STARSH_int *icol, void *row_data, void *col_data, void *result,
119  int ld);
120 void starsh_eddata_block_sin_kernel_3d(int nrows, int ncols, STARSH_int *irow,
121  STARSH_int *icol, void *row_data, void *col_data, void *result,
122  int ld);
123 void starsh_eddata_block_sin_kernel_4d(int nrows, int ncols, STARSH_int *irow,
124  STARSH_int *icol, void *row_data, void *col_data, void *result,
125  int ld);
126 void starsh_eddata_block_sin_kernel_nd(int nrows, int ncols, STARSH_int *irow,
127  STARSH_int *icol, void *row_data, void *col_data, void *result,
128  int ld);
129 
130 void starsh_eddata_block_sin_kernel_1d_simd(int nrows, int ncols,
131  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
132  void *result, int ld);
133 void starsh_eddata_block_sin_kernel_2d_simd(int nrows, int ncols,
134  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
135  void *result, int ld);
136 void starsh_eddata_block_sin_kernel_3d_simd(int nrows, int ncols,
137  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
138  void *result, int ld);
139 void starsh_eddata_block_sin_kernel_4d_simd(int nrows, int ncols,
140  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
141  void *result, int ld);
142 void starsh_eddata_block_sin_kernel_nd_simd(int nrows, int ncols,
143  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
144  void *result, int ld);
145 
146 void starsh_eddata_block_cos_kernel_1d(int nrows, int ncols, STARSH_int *irow,
147  STARSH_int *icol, void *row_data, void *col_data, void *result,
148  int ld);
149 void starsh_eddata_block_cos_kernel_2d(int nrows, int ncols, STARSH_int *irow,
150  STARSH_int *icol, void *row_data, void *col_data, void *result,
151  int ld);
152 void starsh_eddata_block_cos_kernel_3d(int nrows, int ncols, STARSH_int *irow,
153  STARSH_int *icol, void *row_data, void *col_data, void *result,
154  int ld);
155 void starsh_eddata_block_cos_kernel_4d(int nrows, int ncols, STARSH_int *irow,
156  STARSH_int *icol, void *row_data, void *col_data, void *result,
157  int ld);
158 void starsh_eddata_block_cos_kernel_nd(int nrows, int ncols, STARSH_int *irow,
159  STARSH_int *icol, void *row_data, void *col_data, void *result,
160  int ld);
161 
162 void starsh_eddata_block_cos_kernel_1d_simd(int nrows, int ncols,
163  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
164  void *result, int ld);
165 void starsh_eddata_block_cos_kernel_2d_simd(int nrows, int ncols,
166  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
167  void *result, int ld);
168 void starsh_eddata_block_cos_kernel_3d_simd(int nrows, int ncols,
169  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
170  void *result, int ld);
171 void starsh_eddata_block_cos_kernel_4d_simd(int nrows, int ncols,
172  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
173  void *result, int ld);
174 void starsh_eddata_block_cos_kernel_nd_simd(int nrows, int ncols,
175  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
176  void *result, int ld);
177 
178 #endif // __STARSH_ELECTRODYNAMICS_H__
179 
void starsh_eddata_block_sin_kernel_4d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 4-dimensional electrodynamics problem.
Definition: kernel_sin_4d.c:107
ssize_t STARSH_int
STARSH signed integer to support more, than MAX_INT rows/columns.
Definition: starsh.h:64
void starsh_eddata_block_cos_kernel_4d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 4-dimensional electrodynamics problem.
Definition: kernel_cos_4d.c:107
struct starsh_eddata STARSH_eddata
Structure for electrodynamics problems.
int starsh_eddata_init(STARSH_eddata **data, STARSH_int count, int ndim, double *point, double k, double diag)
Initialize STARSH_eddata object by given data.
Definition: electrodynamics.c:52
void starsh_eddata_block_sin_kernel_nd_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for n-dimensional electrodynamics problem.
Definition: kernel_sin_nd.c:107
Definition: starsh-electrodynamics.h:64
void starsh_eddata_block_cos_kernel_1d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 1-dimensional electrodynamics problem.
Definition: kernel_cos_1d.c:107
void starsh_eddata_block_cos_kernel_2d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 2-dimensional electrodynamics problem.
Definition: kernel_cos_2d.c:107
void starsh_eddata_block_cos_kernel_4d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 4-dimensional electrodynamics problem.
Definition: kernel_cos_4d.c:31
Value of diagonal elements (diag, double).
Definition: starsh-electrodynamics.h:94
#define ndim
Replace variable ndim with static integer value.
Definition: kernel_sin_1d.c:28
double diag
Value of diagonal elements.
Definition: starsh-electrodynamics.h:45
Definition: starsh-electrodynamics.h:72
void starsh_eddata_block_sin_kernel_nd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz sin for n-dimensional electrodynamics problem.
Definition: kernel_sin_nd.c:31
void starsh_eddata_block_cos_kernel_3d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 3-dimensional electrodynamics problem.
Definition: kernel_cos_3d.c:107
void starsh_eddata_block_sin_kernel_2d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz sin for 2-dimensional electrodynamics problem.
Definition: kernel_sin_2d.c:31
Wave number (k, double).
Definition: starsh-electrodynamics.h:92
Distribution of particles (place, STARSH_PARTICLES_PLACEMENT).
Definition: starsh-electrodynamics.h:96
void starsh_eddata_block_sin_kernel_4d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz sin for 4-dimensional electrodynamics problem.
Definition: kernel_sin_4d.c:31
Definition: starsh-electrodynamics.h:60
void starsh_eddata_block_sin_kernel_1d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 1-dimensional electrodynamics problem.
Definition: kernel_sin_1d.c:107
void starsh_eddata_block_cos_kernel_nd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for n-dimensional electrodynamics problem.
Definition: kernel_cos_nd.c:31
void starsh_eddata_block_sin_kernel_2d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 2-dimensional electrodynamics problem.
Definition: kernel_sin_2d.c:107
Dimensionality of space (ndim, integer).
Definition: starsh-electrodynamics.h:90
void starsh_eddata_free(STARSH_eddata *data)
Free memory of STARSH_eddata object.
Definition: electrodynamics.c:247
int starsh_eddata_generate_va(STARSH_eddata **data, STARSH_int count, va_list args)
Generate STARSH_eddata object with incomplete set of parameters.
Definition: electrodynamics.c:131
STARSH_ELECTRODYNAMICS_PARAM
List of parameters for starsh_application().
Definition: starsh-electrodynamics.h:78
void STARSH_kernel(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Definition: starsh.h:68
void starsh_eddata_block_cos_kernel_2d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 2-dimensional electrodynamics problem.
Definition: kernel_cos_2d.c:31
int starsh_eddata_generate(STARSH_eddata **data, STARSH_int count, int ndim, double k, double diag, enum STARSH_PARTICLES_PLACEMENT place)
Generate STARSH_ssdata object by given distribution.
Definition: electrodynamics.c:96
STARSH_PARTICLES_PLACEMENT
Distribution of particles for starsh_particles_generate().
Definition: starsh-particles.h:51
int starsh_eddata_generate_el(STARSH_eddata **data, STARSH_int count,...)
Generate STARSH_eddata object with incomplete set of parameters.
Definition: electrodynamics.c:200
int starsh_eddata_new(STARSH_eddata **data, STARSH_int count, int ndim)
Allocate memory for STARSH_eddata object.
Definition: electrodynamics.c:17
double k
Characteristical wave number.
Definition: starsh-electrodynamics.h:43
void starsh_eddata_block_cos_kernel_3d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 3-dimensional electrodynamics problem.
Definition: kernel_cos_3d.c:31
STARSH_ELECTRODYNAMICS_KERNEL
List of built-in kernels for starsh_eddata_get_kernel().
Definition: starsh-electrodynamics.h:49
void starsh_eddata_block_cos_kernel_nd_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for n-dimensional electrodynamics problem.
Definition: kernel_cos_nd.c:107
Structure for electrodynamics problems.
Definition: starsh-electrodynamics.h:34
void starsh_eddata_block_sin_kernel_1d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz sin for 1-dimensional electrodynamics problem.
Definition: kernel_sin_1d.c:31
int starsh_eddata_get_kernel(STARSH_kernel **kernel, STARSH_eddata *data, enum STARSH_ELECTRODYNAMICS_KERNEL type)
Get kernel for electrodynamics problem.
Definition: electrodynamics.c:386
void starsh_eddata_block_cos_kernel_1d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 1-dimensional electrodynamics problem.
Definition: kernel_cos_1d.c:31
void starsh_eddata_block_sin_kernel_3d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz sin for 3-dimensional electrodynamics problem.
Definition: kernel_sin_3d.c:31
void starsh_eddata_block_sin_kernel_3d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Helmholtz cos for 3-dimensional electrodynamics problem.
Definition: kernel_sin_3d.c:107
Definition: starsh-electrodynamics.h:68
STARSH_particles particles
Particles.
Definition: starsh-electrodynamics.h:39
Structure for general N-body problems.
Definition: starsh-particles.h:36