18 #ifndef QMCPLUSPLUS_LRRPAHANLDERTEMP_H 19 #define QMCPLUSPLUS_LRRPAHANLDERTEMP_H 35 template<
class Func,
class BreakupBasis = LPQHIBasis>
109 for (
int n = 0;
n <
coefs.size();
n++)
123 for (
int n = 0;
n <
coefs.size();
n++)
145 for (
int n = 0;
n <
Basis.NumBasisElem();
n++)
168 Basis.set_Lattice(ref);
172 Basis.set_NumKnots(NumKnots);
173 Basis.set_rc(ref.LR_rc);
192 app_log() <<
" finding kc: " << ref.LR_kc <<
" , " <<
LR_kc << std::endl;
193 app_log() <<
" LRBreakp parameter Kc =" <<
kc << std::endl;
194 app_log() <<
" Continuum approximation in k = [" << kcut <<
"," << kmax <<
")" << std::endl;
211 for (
int ki = 0; ki < KList.size(); ki++)
221 const std::vector<int>& kshell(KList.
kshell);
226 for (
int ks = 0, ki = 0; ks <
Fk_symm.
size(); ks++)
void resize(size_type n, Type_t val=Type_t())
Resize the container.
a class that defines a supercell in D-dimensional Euclean space.
std::vector< PosType > kpts_cart
K-vector in Cartesian coordinates.
mRealType evalFk(mRealType k) const
helper functions for EinsplineSetBuilder
BreakupBasis BreakupBasisType
mRealType evaluate_vlr_k(mRealType k) const override
void Breakup(ParticleSet &ref, mRealType rs_ext) override
mRealType LR_kc
Maximum k cutoff.
size_t getTotalNum() const
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > ParticleLayout
int SetupKVecs(mRealType kc, mRealType kcont, mRealType kmax)
setup KList
DECLARE_COULOMB_TYPES int MaxKshell
Maxkimum Kshell for the given Kc.
EwaldHandler3D::mRealType mRealType
void fillFk(const KContainer &KList)
std::vector< mRealType > coefs
Fourier component for each k-shell Coefficient.
void resetTargetParticleSet(ParticleSet &ref, mRealType rs)
void initBreakup(ParticleSet &ref) override
LRHandlerBase * makeClone(ParticleSet &ref) const override
make clone
MakeReturn< BinaryNode< FnPow, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t pow(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
const auto & getSimulationCell() const
Specialized paritlce class for atomistic simulations.
mRealType srDf(mRealType r, mRealType rinv) const override
evaluate the first derivative of the short range part at r
size_type size() const
return the current size
mRealType LR_rc
Maximum r cutoff.
mRealType evaluateLR(mRealType r) const override
evaluate the contribution from the long-range part for for spline
std::vector< int > kshell
kpts which belong to the ith-shell [kshell[i], kshell[i+1])
Vector< mRealType > Fk
Fourier component for all the k-point.
void fillXk(std::vector< TinyVector< mRealType, 2 >> &KList)
#define DECLARE_COULOMB_TYPES
mRealType DoBreakup(mRealType *Fk, mRealType *t, mRealType *adjust)
mRealType evaluate(mRealType r, mRealType rinv) const override
std::vector< RealType > ksq
squre of kpts in Cartesian coordniates
void InitBreakup(const ParticleLayout &ref, int NumFunctions)
Initialise the basis and coefficients for the long-range beakup.
const auto & getLattice() const
void resetTargetParticleSet(ParticleSet &ref) override
base class for LRHandlerTemp<FUNC,BASIS> and DummyLRHanlder<typename Func>
std::vector< TinyVector< mRealType, 2 > > KList
For each k, KList[k][0] = |k| and KList[k][1] = degeneracy.
LRRPAHandlerTemp(ParticleSet &ref, mRealType kc_in=-1.0)
LRRPAHandlerTemp(const LRRPAHandlerTemp &aLR, ParticleSet &ref)
"copy" constructor
Define LRHandlerBase and DummyLRHandler<typename Func>
mRealType evalXk(mRealType k) const
Vector< mRealType > Fk_symm
Fourier component for each k-shell.