82 int alpha =
n - 3 * j;
85 bool alphaeven =
true;
95 for (
int i = 0; i <= 5; i++)
96 sum +=
S(alpha, i) / (i + 3);
104 for (
int i = 0; i <= 5; i++)
106 sum +=
S(alpha, i) * (prod1 + prod2 + prod3);
107 prod1 *= (i + 3.0) / (i + 4.0);
108 prod2 *= (i + 2.0) / (i + 3.0);
109 prod3 *= (i + 1.0) / (i + 2.0);
111 sum *= deltap3 * min1toalpha;
120 for (
int i = 0; i <= 5; i++)
122 sum +=
S(alpha, i) * (prod1 + prod2);
123 prod1 *= (i + 3.0) / (i + 4.0);
124 prod2 *= (i + 1.0) / (i + 2.0);
130 for (
int i = 0; i <= 5; i++)
131 sum +=
S(alpha, i) / (i + 2.0);
132 sum *= deltap3 * 4. * j;
142 int alpha =
m - 3 * i;
146 for (
int n = 0;
n <= 5;
n++)
148 sum +=
S(alpha,
n) * (
Dplus(i, k,
n));
153 for (
int n = 0;
n <= 5;
n++)
161 for (
int n = 0;
n <= 5;
n++)
173 std::complex<mRealType> eye(0.0, 1.0);
178 return (-(eye / k) * e1 * e2);
182 std::complex<mRealType> t1, t2;
183 t1 = std::complex<mRealType>(
cos(k *
delta * (i + 1)),
sin(k *
delta * (i + 1)));
186 return (-(eye / k) * (t1 + t2));
193 std::complex<mRealType> eye(0.0, 1.0);
198 return (-(eye / k) * e1 * e2);
202 std::complex<mRealType> t1, t2;
206 return (-(eye / k) * (t1 + t2));
213 std::complex<mRealType> Z1 =
Eplus(i, k,
n + 1);
214 std::complex<mRealType> Z2 =
Eplus(i, k,
n);
221 std::complex<mRealType> Z1 =
Eminus(i, k,
n + 1);
222 std::complex<mRealType> Z2 =
Eminus(i, k,
n);
a class that defines a supercell in D-dimensional Euclean space.
mRealType Dminus(int i, mRealType k, int n) const
mRealType hintr2(int n) const override
helper functions for EinsplineSetBuilder
MakeReturn< UnaryNode< FnSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sin(const Vector< T1, C1 > &l)
EwaldHandler3D::mRealType mRealType
MakeReturn< UnaryNode< FnCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cos(const Vector< T1, C1 > &l)
Scalar_t Volume
Physical properties of a supercell.
void set_rc(mRealType rc) override
std::complex< mRealType > Eplus(int i, mRealType k, int n) const
mRealType m_rc
Real-space cutoff for short-range part.
mRealType c(int n, mRealType k) const override
DECLARE_COULOMB_TYPES int BasisSize
size of the basis elements
std::complex< mRealType > Eminus(int i, mRealType k, int n) const
mRealType Dplus(int i, mRealType k, int n) const