16 #ifndef QMCPLUSPLUS_EWALD_HANLDER3D_H 17 #define QMCPLUSPLUS_EWALD_HANLDER3D_H 41 std::vector<mRealType>
kMag;
107 const std::vector<int>& kshell(KList.
kshell);
109 for (
int ks = 0, ki = 0; ks <
MaxKshell; ks++)
133 for (
int dim1 = 0; dim1 <
OHMMS_DIM; dim1++)
134 for (
int dim2 = dim1; dim2 <
OHMMS_DIM; dim2++)
136 deriv_tensor(dim1, dim2) =
155 for (
int dim1 = 0; dim1 <
OHMMS_DIM; dim1++)
157 for (
int dim2 = dim1; dim2 <
OHMMS_DIM; dim2++)
159 deriv_tensor(dim1, dim2) = r[dim1] * r[dim2] * Sr_r;
199 return -
norm *
std::exp(-k2 / denom) * (denom + k2) / (k * k2 * 2.0 * sigma2);
void resize(size_type n, Type_t val=Type_t())
Resize the container.
LRHandlerBase * makeClone(ParticleSet &ref) const override
make clone
std::vector< PosType > kpts_cart
K-vector in Cartesian coordinates.
helper functions for EinsplineSetBuilder
SymTensor< mRealType, OHMMS_DIM > evaluateSR_k0_dstrain() const override
mRealType LR_kc
Maximum k cutoff.
DECLARE_COULOMB_TYPES int MaxKshell
Maxkimum Kshell for the given Kc.
EwaldHandler3D::mRealType mRealType
void fillYkgstrain(const KContainer &KList)
void resetTargetParticleSet(ParticleSet &ref) override
Vector< mRealType > Fkgstrain
Vector of df_k/dk, fit as to optimize strains.
mRealType Sigma
Related to the Gaussian width: .
mRealType Area
Area of the supercell: always z is the slab direction.
mRealType Volume
Volume of the supercell.
void filldFk_dk(const KContainer &KList)
void Breakup(ParticleSet &ref, mRealType rs_in) override
std::vector< SymTensor< mRealType, OHMMS_DIM > > dFk_dstrain
Fourier component of the LR part of strain tensor, by optimized breakup.
std::vector< mRealType > kMag
store |k|
mRealType evalYkgstrain(mRealType k) const
mRealType evaluateLR_r0() const override
evaluate for the self-interaction term
Specialized paritlce class for atomistic simulations.
size_type size() const
return the current size
qmcplusplus::LRHandlerBase::pRealType pRealType
double norm(const zVec &c)
SymTensor< mRealType, OHMMS_DIM > evaluateLR_r0_dstrain() const override
These functions return the strain derivatives of all corresponding quantities in total energy...
mRealType evaluateSR_k0() const override
evaluate
mRealType evaldYkgstrain(mRealType k) const
mRealType srDf(mRealType r, mRealType rinv) const override
evaluate the first derivative of the short range part at r
mRealType evaluate(mRealType r, mRealType rinv) const override
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
int SuperCellEnum
type of supercell
std::vector< int > kshell
kpts which belong to the ith-shell [kshell[i], kshell[i+1])
void fillFk(const KContainer &KList)
SymTensor< mRealType, OHMMS_DIM > evaluateSR_dstrain(TinyVector< pRealType, OHMMS_DIM > r, pRealType rmag) const override
mRealType evaluateLR(mRealType r) const override
evaluate the contribution from the long-range part for for spline
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
std::vector< RealType > ksq
squre of kpts in Cartesian coordniates
TinyVector< mRealType, 4 > PreFactors
mRealType evaluateLR_r0_dstrain(int i, int j) const
mRealType evaluate_vlr_k(mRealType k) const override
const auto & getLattice() const
base class for LRHandlerTemp<FUNC,BASIS> and DummyLRHanlder<typename Func>
Define LRHandlerBase and DummyLRHandler<typename Func>
EwaldHandler3D(ParticleSet &ref, mRealType kc_in=-1.0)
Constructor.
void initBreakup(ParticleSet &ref) override
mRealType lrDf(mRealType r) const override
evaluate the first derivative of the long range part (in real space) at r
SymTensor< mRealType, OHMMS_DIM > evaluateLR_dstrain(TinyVector< pRealType, OHMMS_DIM > k, pRealType kmag) const override