Ewald.h doxygen
Former-commit-id: b89871b97680d5262637e7c1af2186c1d1307a84
This commit is contained in:
parent
7b8e7d39e5
commit
5820de30ef
21
qpms/ewald.h
21
qpms/ewald.h
|
@ -35,15 +35,21 @@
|
||||||
#include "qpms_types.h"
|
#include "qpms_types.h"
|
||||||
#include "lattices.h"
|
#include "lattices.h"
|
||||||
|
|
||||||
// Use this handler to ignore underflows of incomplete gamma.
|
/// Use this handler to ignore underflows of incomplete gamma.
|
||||||
gsl_error_handler_t IgnoreUnderflowsGSLErrorHandler;
|
gsl_error_handler_t IgnoreUnderflowsGSLErrorHandler;
|
||||||
|
|
||||||
|
|
||||||
/* Object holding the constant factors from [1, (4.5)] */
|
/// Object holding the Ewald sum constant factors.
|
||||||
|
/**
|
||||||
|
* Used internally by qpms_translation_calculator_t.
|
||||||
|
* Initialised by qpms_ewald3_constants_init() and freed by qpms_ewald3_constants_free().
|
||||||
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
qpms_l_t lMax;
|
qpms_l_t lMax;
|
||||||
qpms_y_t nelem_sc;
|
qpms_y_t nelem_sc;
|
||||||
|
/// The values of maximum \a j's in the long-range part summation, `[(l-|m|/2)]`.
|
||||||
qpms_l_t *s1_jMaxes;
|
qpms_l_t *s1_jMaxes;
|
||||||
|
/// The constant factors for the long range part of a 2D Ewald sum.
|
||||||
complex double **s1_constfacs; // indices [y][j] where j is same as in [1, (4.5)]
|
complex double **s1_constfacs; // indices [y][j] where j is same as in [1, (4.5)]
|
||||||
/* These are the actual numbers now: (in the EWALD32_CONSTANTS_AGNOSTIC version)
|
/* These are the actual numbers now: (in the EWALD32_CONSTANTS_AGNOSTIC version)
|
||||||
* for m + n EVEN:
|
* for m + n EVEN:
|
||||||
|
@ -58,17 +64,22 @@ typedef struct {
|
||||||
*
|
*
|
||||||
* s1_constfacs[y(m,n)][j] = 0
|
* s1_constfacs[y(m,n)][j] = 0
|
||||||
*/
|
*/
|
||||||
complex double *s1_constfacs_base; // internal pointer holding the memory for the constants
|
complex double *s1_constfacs_base; ///< Internal pointer holding memory for the 2D Ewald sum constant factors.
|
||||||
// similarly for the 1D z-axis aligned case; now the indices are [n][j] (as m == 0)
|
// similarly for the 1D z-axis aligned case; now the indices are [n][j] (as m == 0)
|
||||||
|
/// The constant factors for the long range part of a 1D Ewald sum along the \a z axis.
|
||||||
|
/** If the summation points lie along a different direction, use the formula for
|
||||||
|
* 2D sum with additional factor of
|
||||||
|
* \f$ \sqrt{pi} \kappa \gamma(\abs{\vect{k}+\vect{K}}/\kappa) \f$.
|
||||||
|
*/
|
||||||
complex double **s1_constfacs_1Dz;
|
complex double **s1_constfacs_1Dz;
|
||||||
/* These are the actual numbers now:
|
/* These are the actual numbers now:
|
||||||
* s1_consstfacs_1Dz[n][j] =
|
* s1_constfacs_1Dz[n][j] =
|
||||||
*
|
*
|
||||||
* -I**(n+1) (-1)**j * n!
|
* -I**(n+1) (-1)**j * n!
|
||||||
* --------------------------
|
* --------------------------
|
||||||
* j! * 2**(2*j) * (n - 2*j)!
|
* j! * 2**(2*j) * (n - 2*j)!
|
||||||
*/
|
*/
|
||||||
complex double *s1_constfacs_1Dz_base;
|
complex double *s1_constfacs_1Dz_base; ///<Internal pointer holding memory for the 1D Ewald sum constant factors.
|
||||||
|
|
||||||
double *legendre0; /* now with GSL_SF_LEGENDRE_NONE normalisation, because this is what is
|
double *legendre0; /* now with GSL_SF_LEGENDRE_NONE normalisation, because this is what is
|
||||||
* what the multipliers from translations.c count with.
|
* what the multipliers from translations.c count with.
|
||||||
|
|
Loading…
Reference in New Issue