18 #ifndef QMCPLUSPLUS_SPLINE_C2C_H    19 #define QMCPLUSPLUS_SPLINE_C2C_H    24 #include "spline2/MultiBspline.hpp"    40   using SplineType       = 
typename bspline_traits<ST, 3>::SplineType;
    41   using BCType           = 
typename bspline_traits<ST, 3>::BCType;
    87   virtual std::string 
getClassName()
 const override { 
return "SplineC2C"; }
    88   virtual std::string 
getKeyword()
 const override { 
return "SplineC2C"; }
    92   std::unique_ptr<SPOSet> 
makeClone()
 const override { 
return std::make_unique<SplineC2C>(*this); }
   114     size_t npad = getAlignedSize<ST>(2 * 
n);
   128     const int Nbands      = 
kPoints.size();
   129     const int Nbandgroups = 
comm->
size();
   130     offset.resize(Nbandgroups + 1, 0);
   132     for (
size_t ib = 0; ib < 
offset.size(); ib++)
   137   template<
typename GT, 
typename BCT>
   141     SplineInst = std::make_shared<MultiBspline<ST>>();
   143     app_log() << 
"MEMORY " << 
SplineInst->sizeInByte() / (1 << 20) << 
" MB allocated "   144               << 
"for the coefficients in 3D spline orbital representation" << std::endl;
   152     const size_t nk = 
kPoints.size();
   155     for (
size_t i = 0; i < nk; ++i)
   175                          std::vector<ValueType>& ratios) 
override;
   211                     int last  = -1) 
const;
   220   template<
class BSPLINESPO>
 void set_spline(SingleSplineType *spline_r, SingleSplineType *spline_i, int twist, int ispline, int level)
void resize(size_type n, Type_t val=Type_t())
Resize the container. 
OrbitalSetTraits< ValueType >::HessVector HessVector
typename bspline_traits< ST, 3 >::SplineType SplineType
UBspline_3d_d SingleSplineType
virtual std::string getKeyword() const override
helper functions for EinsplineSetBuilder 
void storeParamsBeforeRotation() override
Store an original copy of the spline coefficients for orbital rotation. 
BsplineSet is the base class for SplineC2C, SplineC2R, SplineR2R. 
void evaluateVGL(const ParticleSet &P, const int iat, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi) override
evaluate the values, gradients and laplacians of this single-particle orbital set ...
void evaluateValue(const ParticleSet &P, const int iat, ValueVector &psi) override
evaluate the values of this single-particle orbital set 
A ParticleSet that handles virtual moves of a selected particle of a given physical ParticleSet Virtu...
Soa Container for D-dim vectors. 
typename bspline_traits< ST, 3 >::BCType BCType
OrbitalSetTraits< ValueType >::ValueMatrix ValueMatrix
Tensor< ST, 3 > GGt
, transformation for tensor in LatticeUnit to CartesianUnit, e.g. Hessian 
bool isRotationSupported() const override
return true if this SPOSet can be wrappered by RotatedSPO 
VectorSoaContainer< ST, 3 > myKcart
OrbitalSetTraits< ValueType >::ValueVector ValueVector
vContainer_type myV
intermediate result vectors 
int size() const
return the number of tasks 
bool write_splines(hdf_archive &h5f)
void FairDivideLow(int ntot, int npart, IV &adist)
partition ntot elements among npart 
void assign_vgl_from_l(const PointType &r, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi)
assign_vgl_from_l can be used when myL is precomputed and myV,myG,myL in cartesian ...
void resizeStorage(size_t n, size_t nvals)
Wrapping information on parallelism. 
void create_spline(GT &xyz_g, BCT &xyz_bc)
Each SplineC2X needs a reader derived from BsplineReader. 
Specialized paritlce class for atomistic simulations. 
General SplineSetReader to handle any unitcell. 
TinyVector< ST, 3 > PointType
std::vector< int > offset
band offsets used for communication 
A collection of functions for dividing fairly. 
size_type size() const
return the current size 
QTBase::ValueType ValueType
void assign_vgh(const PointType &r, ValueVector &psi, GradVector &dpsi, HessVector &grad_grad_psi, int first, int last) const
std::shared_ptr< MultiBspline< ST > > SplineInst
multi bspline set 
Matrix< ComplexT > ratios_private
thread private ratios for reduction when using nested threading, numVP x numThread ...
OrbitalSetTraits< ValueType >::ValueVector ValueVector
typename BsplineSet::ValueType ComplexT
void assign_v(const PointType &r, const vContainer_type &myV, ValueVector &psi, int first, int last) const
BsplineSet is a SPOSet derived class and serves as a base class for B-spline SPO C2C/C2R/R2R implemen...
bool read_splines(hdf_archive &h5f)
bool isComplex() const override
std::unique_ptr< SPOSet > makeClone() const override
make a clone of itself every derived class must implement this to have threading working correctly...
void evaluateVGH(const ParticleSet &P, const int iat, ValueVector &psi, GradVector &dpsi, HessVector &grad_grad_psi) override
evaluate the values, gradients and hessians of this single-particle orbital set 
void evaluateDetRatios(const VirtualParticleSet &VP, ValueVector &psi, const ValueVector &psiinv, std::vector< ValueType > &ratios) override
evaluate determinant ratios for virtual moves, e.g., sphere move for nonlocalPP 
std::shared_ptr< std::vector< ST > > coef_copy_
Copy of original splines for orbital rotation. 
OrbitalSetTraits< ValueType >::GradHessVector GGGVector
CrystalLattice< ST, 3 > PrimLattice
primitive cell 
OrbitalSetTraits< ValueType >::GradVector GradVector
void evaluateVGHGH(const ParticleSet &P, const int iat, ValueVector &psi, GradVector &dpsi, HessVector &grad_grad_psi, GGGVector &grad_grad_grad_psi) override
evaluate the values, gradients, hessians, and grad hessians of this single-particle orbital set ...
SplineC2C(const std::string &my_name)
void assign_vgl(const PointType &r, ValueVector &psi, GradVector &dpsi, ValueVector &d2psi, int first, int last) const
assign_vgl 
void applyRotation(const ValueMatrix &rot_mat, bool use_stored_copy) override
apply rotation to all the orbitals 
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)
void gather_tables(Communicate *comm)
void resize(size_type n)
resize myData 
void bcast_tables(Communicate *comm)
void gatherv(T *sb, T *rb, int n, IT &counts, IT &displ, int dest)
virtual std::string getClassName() const override
return class name 
class to match std::complex<ST> spline with BsplineSet::ValueType (complex) SPOs 
void assign_vghgh(const PointType &r, ValueVector &psi, GradVector &dpsi, HessVector &grad_grad_psi, GGGVector &grad_grad_grad_psi, int first=0, int last=-1) const
void resize_kpoints()
remap kPoints to pack the double copy 
std::vector< SPOSet::PosType > kPoints
kpoints for each unique orbitals. 
Vector< ST, aligned_allocator< ST > > vContainer_type