27 #ifndef QPMS_TRANSLATIONS_H
28 #define QPMS_TRANSLATIONS_H
35 #if defined LATTICESUMS32 || defined LATTICESUMS31
68 complex
double **A_multipliers;
69 complex
double **B_multipliers;
80 #if defined LATTICESUMS32 || defined LATTICESUMS31
100 complex
double *Adest, complex
double *Bdest,
104 complex
double *Adest, complex
double *Bdest,
105 size_t deststride,
size_t srcstride,
110 int m,
int n,
int mu,
int nu, complex
double kdlj_r,
111 double kdlj_th,
double kdlj_phi,
int r_ge_d,
int J);
114 int m,
int n,
int mu,
int nu, complex
double kdlj_r,
115 double kdlj_th,
double kdlj_phi,
int r_ge_d,
int J);
118 complex
double *Adest, complex
double *Bdest,
119 int m,
int n,
int mu,
int nu, complex
double kdlj_r,
120 double kdlj_th,
double kdlj_phi,
int r_ge_d,
int J);
123 complex
double *Adest, complex
double *Bdest,
124 size_t deststride,
size_t srcstride,
125 complex
double kdlj_r,
double kdlj_theta,
double kdlj_phi,
130 complex
double *target,
141 complex
double *target,
159 complex
double *Adest,
double *Aerr,
160 complex
double *Bdest,
double *Berr,
161 const ptrdiff_t deststride,
const ptrdiff_t srcstride,
162 const double eta,
const complex
double wavenumber,
166 double maxR,
double maxK
170 complex
double *Adest,
double *Aerr,
171 complex
double *Bdest,
double *Berr,
172 const ptrdiff_t deststride,
const ptrdiff_t srcstride,
173 const double eta,
const complex
double wavenumber,
177 double maxR,
double maxK,
178 qpms_ewald_part parts
183 complex
double *target,
double *err,
188 const double eta,
const complex
double wavenumber,
192 double maxR,
double maxK
196 complex
double *target,
double *err,
201 const double eta,
const complex
double wavenumber,
205 double maxR,
double maxK,
206 qpms_ewald_part parts
215 complex
double *Adest,
double *Aerr,
216 complex
double *Bdest,
double *Berr,
217 const ptrdiff_t deststride,
const ptrdiff_t srcstride,
218 const double eta,
const double k,
219 const double unitcell_area,
220 const size_t nRpoints,
const cart2_t *Rpoints,
221 const size_t nKpoints,
const cart2_t *Kpoints,
223 const double particle_shift
230 #ifdef QPMS_COMPILE_PYTHON_EXTENSIONS
232 #include <numpy/npy_common.h>
233 int qpms_cython_trans_calculator_get_AB_arrays_loop(
235 int daxis,
int saxis,
236 char *A_data,
const npy_intp *A_shape,
const npy_intp *A_strides,
237 char *B_data,
const npy_intp *B_shape,
const npy_intp *B_strides,
238 const char *r_data,
const npy_intp *r_shape,
const npy_intp *r_strides,
239 const char *theta_data,
const npy_intp *theta_shape,
const npy_intp *theta_strides,
240 const char *phi_data,
const npy_intp *phi_shape,
const npy_intp *phi_strides,
241 const char *r_ge_d_data,
const npy_intp *r_ge_d_shape,
const npy_intp *r_ge_d_strides);
Lattice sums of spherical waves.
size_t qpms_y_t
Type for the (l, m) multiindex of transversal (M or N -type) VSWFs.
Definition: qpms_types.h:44
qpms_normalisation_t
Vector spherical wavefuction normalisation and phase convention codes.
Definition: qpms_types.h:104
int qpms_l_t
Type for spherical harmonic degree l.
Definition: qpms_types.h:27
qpms_errno_t
Error codes / return values for certain numerical functions.
Definition: qpms_types.h:85
qpms_bessel_t
Bessel function kinds.
Definition: qpms_types.h:176
qpms_lm_t qpms_m_t
Type for spherical harmonic order m.
Definition: qpms_types.h:31
2D cartesian coordinates. See also vectors.h.
Definition: qpms_types.h:202
3D cartesian coordinates. See also vectors.h.
Definition: qpms_types.h:186
Spherical coordinates with complex radial component. See also vectors.h.
Definition: qpms_types.h:212
Object holding the Ewald sum constant factors.
Definition: ewald.h:56
Structure holding the constant factors in normalisation operators.
Definition: translations.h:64
Specifies a finite set of VSWFs.
Definition: qpms_types.h:290
complex double qpms_trans_single_B(qpms_normalisation_t norm, qpms_m_t m, qpms_l_t n, qpms_m_t mu, qpms_l_t nu, csph_t kdlj, bool r_ge_d, qpms_bessel_t J)
Definition: translations.c:204
qpms_errno_t qpms_trans_calculator_get_trans_array(const qpms_trans_calculator *c, complex double *target, const qpms_vswf_set_spec_t *destspec, size_t deststride, const qpms_vswf_set_spec_t *srcspec, size_t srcstride, csph_t kdlj, bool r_ge_d, qpms_bessel_t J)
Definition: translations.c:701
complex double qpms_trans_single_A(qpms_normalisation_t norm, qpms_m_t m, qpms_l_t n, qpms_m_t mu, qpms_l_t nu, csph_t kdlj, bool r_ge_d, qpms_bessel_t J)
Definition: translations.c:135
struct qpms_trans_calculator qpms_trans_calculator
Structure holding the constant factors in normalisation operators.
void qpms_trans_calculator_free(qpms_trans_calculator *)
Destructor for qpms_trans_calculator_t.
Definition: translations.c:288
qpms_errno_t qpms_trans_calculator_get_trans_array_lc3p(const qpms_trans_calculator *c, complex double *target, const qpms_vswf_set_spec_t *destspec, size_t deststride, const qpms_vswf_set_spec_t *srcspec, size_t srcstride, complex double k, cart3_t destpos, cart3_t srcpos, qpms_bessel_t J)
Definition: translations.c:796
qpms_trans_calculator * qpms_trans_calculator_init(qpms_l_t lMax, qpms_normalisation_t nt)
Initialise a qpms_trans_calculator_t instance for a given convention and truncation degree.
Definition: translations.c:440
Coordinate transforms and vector arithmetics.