14 maxk(kpts_cart.size())
22 for (
int ik = 0; ik <
maxk; ik++)
40 const int j2 = 2 * ik;
41 const int j1 = j2 - 1;
44 dpvec[j1] = -sinkr *
kvecs[ik];
45 dpvec[j2] = coskr *
kvecs[ik];
46 d2pvec[j1] =
k2neg[ik] * coskr;
47 d2pvec[j2] =
k2neg[ik] * sinkr;
67 const int j2 = 2 * ik;
68 const int j1 = j2 - 1;
85 for (
int iat = first, i = 0; iat < last; iat++, i++)
103 for (
int iat = first, i = 0; iat < last; iat++, i++)
110 for (
int ik =
mink; ik <
maxk; ik++)
121 hess[ik](la, la) = -phi_of_r * (
kvecs[ik])[la] * (
kvecs[ik])[la];
122 for (
int lb = la + 1; lb <
OHMMS_DIM; lb++)
124 hess[ik](la, lb) = -phi_of_r * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
125 hess[ik](lb, la) = hess[ik](la, lb);
129 const int j2 = 2 * ik;
130 const int j1 = j2 - 1;
133 dp[j1] = -sinkr *
kvecs[ik];
134 dp[j2] = coskr *
kvecs[ik];
137 hess[j1](la, la) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[la];
138 hess[j2](la, la) = -sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[la];
139 for (
int lb = la + 1; lb <
OHMMS_DIM; lb++)
141 hess[j1](la, lb) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
142 hess[j2](la, lb) = -sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
143 hess[j1](lb, la) = hess[j1](la, lb);
144 hess[j2](lb, la) = hess[j2](la, lb);
167 for (
int iat = first, i = 0; iat < last; iat++, i++)
175 for (
int ik =
mink; ik <
maxk; ik++)
182 dp[ik] = compi * phi_of_r *
kvecs[ik];
185 hess[ik](la, la) = -phi_of_r * (
kvecs[ik])[la] * (
kvecs[ik])[la];
186 for (
int lb = la + 1; lb <
OHMMS_DIM; lb++)
188 hess[ik](la, lb) = -phi_of_r * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
189 hess[ik](lb, la) = hess[ik](la, lb);
194 ggg[ik][la] = compi * (
kvecs[ik])[la] * hess[ik];
197 const int j2 = 2 * ik;
198 const int j1 = j2 - 1;
201 dp[j1] = -sinkr *
kvecs[ik];
202 dp[j2] = coskr *
kvecs[ik];
205 hess[j1](la, la) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[la];
206 hess[j2](la, la) = -sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[la];
207 ggg[j1][la](la, la) = sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[la] * (
kvecs[ik])[la];
208 ggg[j2][la](la, la) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[la] * (
kvecs[ik])[la];
209 for (
int lb = la + 1; lb <
OHMMS_DIM; lb++)
211 hess[j1](la, lb) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
212 hess[j2](la, lb) = -sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[lb];
213 hess[j1](lb, la) = hess[j1](la, lb);
214 hess[j2](lb, la) = hess[j2](la, lb);
215 ggg[j1][la](lb, la) = sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[la];
216 ggg[j2][la](lb, la) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[la];
217 ggg[j1][la](la, lb) = ggg[j1][la](lb, la);
218 ggg[j2][la](la, lb) = ggg[j2][la](lb, la);
219 ggg[j1][lb](la, la) = ggg[j1][la](lb, la);
220 ggg[j2][lb](la, la) = ggg[j2][la](lb, la);
221 ggg[j1][la](lb, lb) = sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[lb];
222 ggg[j2][la](lb, lb) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[lb];
223 ggg[j1][lb](la, lb) = ggg[j1][la](lb, lb);
224 ggg[j2][lb](la, lb) = ggg[j2][la](lb, lb);
225 ggg[j1][lb](lb, la) = ggg[j1][la](lb, lb);
226 ggg[j2][lb](lb, la) = ggg[j2][la](lb, lb);
227 for (
int lc = lb + 1; lc <
OHMMS_DIM; lc++)
229 ggg[j1][la](lb, lc) = sinkr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[lc];
230 ggg[j2][la](lb, lc) = -coskr * (
kvecs[ik])[la] * (
kvecs[ik])[lb] * (
kvecs[ik])[lc];
231 ggg[j1][la](lc, lb) = ggg[j1][la](lb, lc);
232 ggg[j2][la](lc, lb) = ggg[j2][la](lb, lc);
233 ggg[j1][lb](la, lc) = ggg[j1][la](lb, lc);
234 ggg[j2][lb](la, lc) = ggg[j2][la](lb, lc);
235 ggg[j1][lb](lc, la) = ggg[j1][la](lb, lc);
236 ggg[j2][lb](lc, la) = ggg[j2][la](lb, lc);
237 ggg[j1][lc](la, lb) = ggg[j1][la](lb, lc);
238 ggg[j2][lc](la, lb) = ggg[j2][la](lb, lc);
239 ggg[j1][lc](lb, la) = ggg[j1][la](lb, lc);
240 ggg[j2][lc](lb, la) = ggg[j2][la](lb, lc);
257 app_log() << pad <<
"FreeOrbital report" << std::endl;
258 for (
int ik = 0; ik <
kvecs.size(); ik++)
260 app_log() << pad << ik <<
" " <<
kvecs[ik] << std::endl;
262 app_log() << pad <<
"end FreeOrbital report" << std::endl;
base class for Single-particle orbital sets
OrbitalSetTraits< ValueType >::HessVector HessVector
helper functions for EinsplineSetBuilder
std::vector< RealType > k2neg
FreeOrbital(const std::string &my_name, const std::vector< PosType > &kpts_cart)
OrbitalSetTraits< ValueType >::ValueMatrix ValueMatrix
void evaluate_notranspose(const ParticleSet &P, int first, int last, ValueMatrix &phi, GradMatrix &dphi, ValueMatrix &d2phi) override
evaluate the values, gradients and laplacians of this single-particle orbital for [first...
const std::vector< PosType > kvecs
void evaluateValue(const ParticleSet &P, int iat, ValueVector &pvec) override
evaluate the values of this single-particle orbital set
OrbitalSetTraits< ValueType >::GradMatrix GradMatrix
Specialized paritlce class for atomistic simulations.
QTBase::ValueType ValueType
void report(const std::string &pad) const override
print SPOSet information
OrbitalSetTraits< ValueType >::ValueVector ValueVector
void evaluateVGL(const ParticleSet &P, int i, ValueVector &pvec, GradVector &dpvec, ValueVector &d2pvec) override
evaluate the values, gradients and laplacians of this single-particle orbital set ...
IndexType OrbitalSetSize
number of Single-particle orbitals
const PosType & activeR(int iat) const
return the active position if the particle is active or the return current position if not ...
OrbitalSetTraits< ValueType >::GradHessVector GGGVector
OrbitalSetTraits< ValueType >::GradVector GradVector
void sincos(T a, T *restrict s, T *restrict c)
sincos function wrapper
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)
OrbitalSetTraits< ValueType >::GradHessMatrix GGGMatrix
OrbitalSetTraits< ValueType >::HessMatrix HessMatrix