Hex
1.0
Hydrogen-electron collision solver
|
Macros | |
#define | NDIAG ((2*ORDER+1)*(2*ORDER+1)) |
#define | NROW (NSPLINE * NSPLINE) |
#define | NCOL (NSPLINE * NSPLINE) |
Functions | |
double2 | cpxm (double2 a, double2 b) |
Complex multiplication. More... | |
kernel void | a_vec_b_vec (private double2 a, global double2 *x, private double2 b, global double2 *y) |
AXBY operation. More... | |
kernel void | vec_mul_vec (global double2 *a, global double2 *b, global double2 *c) |
Vector-vector multiplication. More... | |
kernel void | vec_norm (global double2 *v, global double *n) |
Per-element square of a vector. More... | |
kernel void | scalar_product (global double2 *u, global double2 *v, global double2 *z) |
Full scalar product. More... | |
kernel void | norm (global double2 *v, global double *z) |
Full vector norm. More... | |
kernel void | DIA_dot_vec (global double2 *A, global double2 *x, global double2 *y) |
DIA-matrix-vector multiplication. More... | |
#define NCOL (NSPLINE * NSPLINE) |
#define NDIAG ((2*ORDER+1)*(2*ORDER+1)) |
#define NROW (NSPLINE * NSPLINE) |
kernel void a_vec_b_vec | ( | private double2 | a, |
global double2 * | x, | ||
private double2 | b, | ||
global double2 * | y | ||
) |
Computes the linear combination \( ax + by \) of vectors \( x \) and \( y \) and stores the result in \( x \).
|
inline |
Multiplies two complex numbers and returns the product.
kernel void DIA_dot_vec | ( | global double2 * | A, |
global double2 * | x, | ||
global double2 * | y | ||
) |
The input matrix is supplied in the form of zero-padded concatenated diagonals. For example, the matrix
\[ A = \pmatrix { a_{11} & a_{12} & & & \cr a_{21} & a_{22} & a_{23} & & \cr & a_{32} & a_{33} & a_{34} & \cr & & a_{43} & a_{44} & a_{45} \cr & & & a_{54} & a_{55} \cr } \]
would be column-padded to
\[ A' = \pmatrix { 0 & a_{11} & a_{12} \cr a_{21} & a_{22} & a_{23} \cr a_{32} & a_{33} & a_{34} \cr a_{43} & a_{44} & a_{45} \cr a_{54} & a_{55} & 0 \cr } \]
and sent in as a 1D array
\[ A'' = [0, a_{21} , a_{32}, a_{43}, a_{54}; a_{11}, a_{22}, a_{33}, a_{44}, a_{55}; a_{12}, a_{23}, a_{34}, a_{45}, 0] \ . \]
kernel void norm | ( | global double2 * | v, |
global double * | z | ||
) |
kernel void scalar_product | ( | global double2 * | u, |
global double2 * | v, | ||
global double2 * | z | ||
) |
kernel void vec_mul_vec | ( | global double2 * | a, |
global double2 * | b, | ||
global double2 * | c | ||
) |
Computes per-element vector-vector multiplication \( a * b \) and stores the resulting vector in \( c \),
kernel void vec_norm | ( | global double2 * | v, |
global double * | n | ||
) |
Similarly to vec_mul_vec, computes a per-element square of a given vector \( v \) and stores the result in the vector given as the second argument.