18 #ifndef QMCPLUSPLUS_LRBFEEHANLDERTEMP_H 19 #define QMCPLUSPLUS_LRBFEEHANLDERTEMP_H 35 template<
class Func,
class BreakupBasis = LPQHIBasis>
106 for (
int n = 0;
n <
coefs.size();
n++)
120 for (
int n = 0;
n <
coefs.size();
n++)
142 for (
int n = 0;
n <
Basis.NumBasisElem();
n++)
165 Basis.set_Lattice(ref);
169 Basis.set_NumKnots(NumKnots);
170 Basis.set_rc(ref.LR_rc);
189 app_log() <<
" finding kc: " << ref.LR_kc <<
" , " <<
LR_kc << std::endl;
190 app_log() <<
" LRBreakp parameter Kc =" <<
kc << std::endl;
191 app_log() <<
" Continuum approximation in k = [" << kcut <<
"," << kmax <<
")" << std::endl;
208 for (
int ki = 0; ki < KList.size(); ki++)
218 const std::vector<int>& kshell(KList.
kshell);
223 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.
void resetTargetParticleSet(ParticleSet &ref) override
void initBreakup(ParticleSet &ref) override
helper functions for EinsplineSetBuilder
LRRPABFeeHandlerTemp(ParticleSet &ref, mRealType kc_in=-1.0)
BreakupBasis BreakupBasisType
mRealType LR_kc
Maximum k cutoff.
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > ParticleLayout
int SetupKVecs(mRealType kc, mRealType kcont, mRealType kmax)
setup KList
LRRPABFeeHandlerTemp(const LRRPABFeeHandlerTemp &aLR, ParticleSet &ref)
"copy" constructor
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 Breakup(ParticleSet &ref, mRealType rs_ext) override
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.
size_type size() const
return the current size
mRealType evaluateLR(mRealType r) const override
evaluate the contribution from the long-range part for for spline
mRealType evalXk(mRealType k) const
mRealType LR_rc
Maximum r cutoff.
LRHandlerBase * makeClone(ParticleSet &ref) const override
make clone
mRealType evaluate(mRealType r, mRealType rinv) const override
void resetTargetParticleSet(ParticleSet &ref, mRealType rs)
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.
#define DECLARE_COULOMB_TYPES
mRealType DoBreakup(mRealType *Fk, mRealType *t, mRealType *adjust)
std::vector< RealType > ksq
squre of kpts in Cartesian coordniates
mRealType srDf(mRealType r, mRealType rinv) const override
evaluate the first derivative of the short range part at r
void fillXk(std::vector< TinyVector< mRealType, 2 >> &KList)
mRealType evaluate_vlr_k(mRealType k) const override
const auto & getLattice() const
base class for LRHandlerTemp<FUNC,BASIS> and DummyLRHanlder<typename Func>
void InitBreakup(const ParticleLayout &ref, int NumFunctions)
Initialise the basis and coefficients for the long-range beakup.
mRealType evalFk(mRealType k) const
std::vector< TinyVector< mRealType, 2 > > KList
For each k, KList[k][0] = |k| and KList[k][1] = degeneracy.
Define LRHandlerBase and DummyLRHandler<typename Func>
Vector< mRealType > Fk_symm
Fourier component for each k-shell.