QMCPACK
SoaLocalizedBasisSet< COT, ORBT > Class Template Reference

A localized basis set derived from SoaBasisSetBase<ORBT> More...

+ Inheritance diagram for SoaLocalizedBasisSet< COT, ORBT >:
+ Collaboration diagram for SoaLocalizedBasisSet< COT, ORBT >:

Classes

struct  SoaLocalizedBSetMultiWalkerMem
 

Public Types

using RealType = typename COT::RealType
 
using BaseType = SoaBasisSetBase< ORBT >
 
using ValueType = QMCTraits::ValueType
 
using vgl_type = typename BaseType::vgl_type
 
using vgh_type = typename BaseType::vgh_type
 
using vghgh_type = typename BaseType::vghgh_type
 
using PosType = typename ParticleSet::PosType
 
using OffloadMWVGLArray = Array< ValueType, 3, OffloadPinnedAllocator< ValueType > >
 
using OffloadMWVArray = Array< ValueType, 2, OffloadPinnedAllocator< ValueType > >
 
- Public Types inherited from SoaBasisSetBase< ORBT >
using value_type = ORBT
 
using vgl_type = VectorSoaContainer< ORBT, OHMMS_DIM+2 >
 
using vgh_type = VectorSoaContainer< ORBT, 10 >
 
using vghgh_type = VectorSoaContainer< ORBT, 20 >
 
using ValueType = QMCTraits::ValueType
 
using OffloadMWVGLArray = Array< ValueType, 3, OffloadPinnedAllocator< ValueType > >
 
using OffloadMWVArray = Array< ValueType, 2, OffloadPinnedAllocator< ValueType > >
 

Public Member Functions

 SoaLocalizedBasisSet (ParticleSet &ions, ParticleSet &els)
 constructor More...
 
 SoaLocalizedBasisSet (const SoaLocalizedBasisSet &a)
 copy constructor More...
 
BaseTypemakeClone () const override
 makeClone More...
 
void setPBCParams (const TinyVector< int, 3 > &PBCImages, const TinyVector< double, 3 > Sup_Twist, const Vector< ValueType, OffloadPinnedAllocator< ValueType >> &phase_factor, const Array< RealType, 2, OffloadPinnedAllocator< RealType >> &pbc_displacements)
 set Number of periodic Images to evaluate the orbitals. More...
 
void setBasisSetSize (int nbs) override
 set BasisSetSize and allocate mVGL container More...
 
void queryOrbitalsForSType (const std::vector< bool > &corrCenter, std::vector< bool > &is_s_orbital) const override
 Determine which orbitals are S-type. More...
 
void evaluateVGL (const ParticleSet &P, int iat, vgl_type &vgl) override
 compute VGL More...
 
void mw_evaluateValue (const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basis_list, const RefVectorWithLeader< ParticleSet > &P_list, int iat, OffloadMWVArray &v) override
 compute V using packed array with all walkers More...
 
void mw_evaluateValueVPs (const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basis_list, const RefVectorWithLeader< const VirtualParticleSet > &vp_list, OffloadMWVArray &v) override
 compute V using packed array with all walkers More...
 
void mw_evaluateVGL (const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basis_list, const RefVectorWithLeader< ParticleSet > &P_list, int iat, OffloadMWVGLArray &vgl) override
 compute VGL using packed array with all walkers More...
 
void evaluateVGH (const ParticleSet &P, int iat, vgh_type &vgh) override
 compute VGH More...
 
void evaluateVGHGH (const ParticleSet &P, int iat, vghgh_type &vghgh) override
 compute VGHGH More...
 
void evaluateV (const ParticleSet &P, int iat, ORBT *restrict vals) override
 compute values for the iat-paricle move More...
 
void evaluateGradSourceV (const ParticleSet &P, int iat, const ParticleSet &ions, int jion, vgl_type &vgl) override
 
void evaluateGradSourceVGL (const ParticleSet &P, int iat, const ParticleSet &ions, int jion, vghgh_type &vghgh) override
 
void add (int icenter, std::unique_ptr< COT > aos)
 add a new set of Centered Atomic Orbitals More...
 
void createResource (ResourceCollection &collection) const override
 initialize a shared resource and hand it to collection More...
 
void acquireResource (ResourceCollection &collection, const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list) const override
 acquire a shared resource from collection More...
 
void releaseResource (ResourceCollection &collection, const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list) const override
 return a shared resource to collection More...
 
- Public Member Functions inherited from SoaBasisSetBase< ORBT >
virtual ~SoaBasisSetBase ()=default
 
int getBasisSetSize ()
 
virtual void evaluateVGL (const ParticleSet &P, int iat, vgl_type &vgl)=0
 
virtual void evaluateVGH (const ParticleSet &P, int iat, vgh_type &vgh)=0
 
virtual void evaluateVGHGH (const ParticleSet &P, int iat, vghgh_type &vghgh)=0
 
virtual void evaluateGradSourceV (const ParticleSet &P, int iat, const ParticleSet &ions, int jion, vgl_type &vgl)=0
 
virtual void evaluateGradSourceVGL (const ParticleSet &P, int iat, const ParticleSet &ions, int jion, vghgh_type &vghgh)=0
 
virtual bool is_S_orbital (int mo_idx, int ao_idx)
 
virtual void acquireResource (ResourceCollection &collection, const RefVectorWithLeader< SoaBasisSetBase > &bset_list) const
 acquire a shared resource from collection More...
 
virtual void releaseResource (ResourceCollection &collection, const RefVectorWithLeader< SoaBasisSetBase > &bset_list) const
 return a shared resource to collection More...
 

Static Public Member Functions

static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList (const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
 helper function for extracting a list of atomic basis sets for a single species (indexed by id) from a list of basis sets More...
 

Public Attributes

size_t NumCenters
 number of centers, e.g., ions More...
 
size_t NumTargets
 number of quantum particles More...
 
const ParticleSetions_
 ion particle set More...
 
const int myTableIndex
 number of quantum particles More...
 
PosType SuperTwist
 Global Coordinate of Supertwist read from HDF5. More...
 
std::vector< size_t > BasisOffset
 container to store the offsets of the basis functions for each center Due to potential reordering of ions, offsets can be in any order. More...
 
std::vector< std::unique_ptr< COT > > LOBasisSet
 container of the unique pointers to the Atomic Orbitals More...
 
- Public Attributes inherited from SoaBasisSetBase< ORBT >
int BasisSetSize
 size of the basis set More...
 

Private Attributes

ResourceHandle< SoaLocalizedBSetMultiWalkerMemmw_mem_handle_
 multi walker resource handle More...
 

Detailed Description

template<class COT, typename ORBT>
class qmcplusplus::SoaLocalizedBasisSet< COT, ORBT >

A localized basis set derived from SoaBasisSetBase<ORBT>

This class performs the evaluation of the basis functions and their derivatives for each of the N-particles in a configuration. The template parameter COT denotes Centered-Orbital-Type which provides a set of localized orbitals associated with a center. The template parameter ORBT denotes the orbital value return type

Definition at line 37 of file SoaLocalizedBasisSet.h.

Member Typedef Documentation

◆ BaseType

using BaseType = SoaBasisSetBase<ORBT>

Definition at line 41 of file SoaLocalizedBasisSet.h.

◆ OffloadMWVArray

◆ OffloadMWVGLArray

◆ PosType

using PosType = typename ParticleSet::PosType

Definition at line 47 of file SoaLocalizedBasisSet.h.

◆ RealType

using RealType = typename COT::RealType

Definition at line 40 of file SoaLocalizedBasisSet.h.

◆ ValueType

Definition at line 42 of file SoaLocalizedBasisSet.h.

◆ vgh_type

using vgh_type = typename BaseType::vgh_type

Definition at line 45 of file SoaLocalizedBasisSet.h.

◆ vghgh_type

using vghgh_type = typename BaseType::vghgh_type

Definition at line 46 of file SoaLocalizedBasisSet.h.

◆ vgl_type

using vgl_type = typename BaseType::vgl_type

Definition at line 44 of file SoaLocalizedBasisSet.h.

Constructor & Destructor Documentation

◆ SoaLocalizedBasisSet() [1/2]

SoaLocalizedBasisSet ( ParticleSet ions,
ParticleSet els 
)

constructor

Parameters
ionsionic system
elselectronic system

Definition at line 95 of file SoaLocalizedBasisSet.cpp.

References SoaLocalizedBasisSet< COT, ORBT >::BasisOffset, SoaBasisSetBase< ORBT >::BasisSetSize, ParticleSet::getSpeciesSet(), SpeciesSet::getTotalNum(), ParticleSet::getTotalNum(), SoaLocalizedBasisSet< COT, ORBT >::LOBasisSet, qmcplusplus::NEED_FULL_TABLE_ANYTIME, qmcplusplus::NEED_VP_FULL_TABLE_ON_HOST, SoaLocalizedBasisSet< COT, ORBT >::NumCenters, and SoaLocalizedBasisSet< COT, ORBT >::NumTargets.

96  : ions_(ions),
98  SuperTwist(0.0)
99 {
100  NumCenters = ions.getTotalNum();
101  NumTargets = els.getTotalNum();
102  LOBasisSet.resize(ions.getSpeciesSet().getTotalNum());
103  BasisOffset.resize(NumCenters + 1);
104  BasisSetSize = 0;
105 }
For distance tables of virtual particle (VP) sets constructed based on this table, whether full table is needed on host The corresponding DT of VP need to set MW_EVALUATE_RESULT_NO_TRANSFER_TO_HOST accordingly.
size_t NumCenters
number of centers, e.g., ions
PosType SuperTwist
Global Coordinate of Supertwist read from HDF5.
whether full table needs to be ready at anytime or not during PbyP Optimization can be implemented du...
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
size_t NumTargets
number of quantum particles
const ParticleSet & ions_
ion particle set
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ SoaLocalizedBasisSet() [2/2]

SoaLocalizedBasisSet ( const SoaLocalizedBasisSet< COT, ORBT > &  a)

copy constructor

Definition at line 108 of file SoaLocalizedBasisSet.cpp.

References SoaLocalizedBasisSet< COT, ORBT >::LOBasisSet.

109  : SoaBasisSetBase<ORBT>(a),
110  NumCenters(a.NumCenters),
111  NumTargets(a.NumTargets),
112  ions_(a.ions_),
113  myTableIndex(a.myTableIndex),
114  SuperTwist(a.SuperTwist),
115  BasisOffset(a.BasisOffset)
116 {
117  LOBasisSet.reserve(a.LOBasisSet.size());
118  for (auto& elem : a.LOBasisSet)
119  LOBasisSet.push_back(std::make_unique<COT>(*elem));
120 }
size_t NumCenters
number of centers, e.g., ions
PosType SuperTwist
Global Coordinate of Supertwist read from HDF5.
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
size_t NumTargets
number of quantum particles
const ParticleSet & ions_
ion particle set

Member Function Documentation

◆ acquireResource()

void acquireResource ( ResourceCollection collection,
const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basisset_list 
) const
override

acquire a shared resource from collection

Definition at line 48 of file SoaLocalizedBasisSet.cpp.

References ResourceCollection::lendResource().

51 {
52  auto& loc_basis_leader = basisset_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
53  assert(this == &loc_basis_leader);
54  loc_basis_leader.mw_mem_handle_ = collection.lendResource<SoaLocalizedBSetMultiWalkerMem>();
55  // need to cast to SoaLocalizedBasisSet to access LOBasisSet (atomic basis)
56  auto& basisset_leader = loc_basis_leader.LOBasisSet;
57  for (int i = 0; i < basisset_leader.size(); i++)
58  {
59  const auto one_species_basis_list(extractOneSpeciesBasisRefList(basisset_list, i));
60  basisset_leader[i]->acquireResource(collection, one_species_basis_list);
61  }
62 }
static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList(const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
helper function for extracting a list of atomic basis sets for a single species (indexed by id) from ...

◆ add()

void add ( int  icenter,
std::unique_ptr< COT >  aos 
)

add a new set of Centered Atomic Orbitals

Parameters
icenterthe index of the center
aosa set of Centered Atomic Orbitals

Definition at line 532 of file SoaLocalizedBasisSet.cpp.

533 {
534  LOBasisSet[icenter] = std::move(aos);
535 }
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals

◆ createResource()

void createResource ( ResourceCollection collection) const
overridevirtual

initialize a shared resource and hand it to collection

Reimplemented from SoaBasisSetBase< ORBT >.

Definition at line 41 of file SoaLocalizedBasisSet.cpp.

References ResourceCollection::addResource().

42 {
43  collection.addResource(std::make_unique<SoaLocalizedBSetMultiWalkerMem>());
44  for (int i = 0; i < LOBasisSet.size(); i++)
45  LOBasisSet[i]->createResource(collection);
46 }
void createResource(ResourceCollection &collection) const override
initialize a shared resource and hand it to collection
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals

◆ evaluateGradSourceV()

void evaluateGradSourceV ( const ParticleSet P,
int  iat,
const ParticleSet ions,
int  jion,
vgl_type vgl 
)
override

Definition at line 418 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), and DistanceTableAB::getTempDists().

423 {
424  //We need to zero out the temporary array vgl.
425  auto* restrict gx = vgl.data(1);
426  auto* restrict gy = vgl.data(2);
427  auto* restrict gz = vgl.data(3);
428 
429  for (int ib = 0; ib < BasisSetSize; ib++)
430  {
431  gx[ib] = 0;
432  gy[ib] = 0;
433  gz[ib] = 0;
434  }
435 
436  const auto& IonID(ions_.GroupID);
437  const auto& d_table = P.getDistTableAB(myTableIndex);
438  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
439  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
440 
441  const auto& coordR = P.activeR(iat);
442 
443  PosType Tv;
444  Tv[0] = (ions_.R[jion][0] - coordR[0]) - displ[jion][0];
445  Tv[1] = (ions_.R[jion][1] - coordR[1]) - displ[jion][1];
446  Tv[2] = (ions_.R[jion][2] - coordR[2]) - displ[jion][2];
447  //PosType Tv;
448  //Tv[0] = Tv[1] = Tv[2] = 0;
449  //Since LCAO's are written only in terms of (r-R), ionic derivatives only exist for the atomic center
450  //that we wish to take derivatives of. Moreover, we can obtain an ion derivative by multiplying an electron
451  //derivative by -1.0. Handling this sign is left to LCAOrbitalSet. For now, just note this is the electron VGL function.
452  LOBasisSet[IonID[jion]]->evaluateVGL(P.getLattice(), dist[jion], displ[jion], BasisOffset[jion], vgl, Tv);
453 }
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ evaluateGradSourceVGL()

void evaluateGradSourceVGL ( const ParticleSet P,
int  iat,
const ParticleSet ions,
int  jion,
vghgh_type vghgh 
)
override

Definition at line 456 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), DistanceTableAB::getTempDists(), and ParticleSet::GroupID.

461 {
462  //We need to zero out the temporary array vghgh.
463  auto* restrict gx = vghgh.data(1);
464  auto* restrict gy = vghgh.data(2);
465  auto* restrict gz = vghgh.data(3);
466 
467  auto* restrict hxx = vghgh.data(4);
468  auto* restrict hxy = vghgh.data(5);
469  auto* restrict hxz = vghgh.data(6);
470  auto* restrict hyy = vghgh.data(7);
471  auto* restrict hyz = vghgh.data(8);
472  auto* restrict hzz = vghgh.data(9);
473 
474  auto* restrict gxxx = vghgh.data(10);
475  auto* restrict gxxy = vghgh.data(11);
476  auto* restrict gxxz = vghgh.data(12);
477  auto* restrict gxyy = vghgh.data(13);
478  auto* restrict gxyz = vghgh.data(14);
479  auto* restrict gxzz = vghgh.data(15);
480  auto* restrict gyyy = vghgh.data(16);
481  auto* restrict gyyz = vghgh.data(17);
482  auto* restrict gyzz = vghgh.data(18);
483  auto* restrict gzzz = vghgh.data(19);
484 
485 
486  for (int ib = 0; ib < BasisSetSize; ib++)
487  {
488  gx[ib] = 0;
489  gy[ib] = 0;
490  gz[ib] = 0;
491 
492  hxx[ib] = 0;
493  hxy[ib] = 0;
494  hxz[ib] = 0;
495  hyy[ib] = 0;
496  hyz[ib] = 0;
497  hzz[ib] = 0;
498 
499  gxxx[ib] = 0;
500  gxxy[ib] = 0;
501  gxxz[ib] = 0;
502  gxyy[ib] = 0;
503  gxyz[ib] = 0;
504  gxzz[ib] = 0;
505  gyyy[ib] = 0;
506  gyyz[ib] = 0;
507  gyzz[ib] = 0;
508  gzzz[ib] = 0;
509  }
510 
511  // Since jion is indexed on the source ions not the ions_ the distinction between
512  // ions_ and ions is extremely important.
513  const auto& IonID(ions.GroupID);
514  const auto& d_table = P.getDistTableAB(myTableIndex);
515  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
516  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
517 
518  //Since LCAO's are written only in terms of (r-R), ionic derivatives only exist for the atomic center
519  //that we wish to take derivatives of. Moreover, we can obtain an ion derivative by multiplying an electron
520  //derivative by -1.0. Handling this sign is left to LCAOrbitalSet. For now, just note this is the electron VGL function.
521 
522  const auto& coordR = P.activeR(iat);
523 
524  PosType Tv;
525  Tv[0] = (ions_.R[jion][0] - coordR[0]) - displ[jion][0];
526  Tv[1] = (ions_.R[jion][1] - coordR[1]) - displ[jion][1];
527  Tv[2] = (ions_.R[jion][2] - coordR[2]) - displ[jion][2];
528  LOBasisSet[IonID[jion]]->evaluateVGHGH(P.getLattice(), dist[jion], displ[jion], BasisOffset[jion], vghgh, Tv);
529 }
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ evaluateV()

void evaluateV ( const ParticleSet P,
int  iat,
ORBT *restrict  vals 
)
overridevirtual

compute values for the iat-paricle move

Always uses getTempDists() and getTempDispls() Tv is a translation vector; In PBC, in order to reduce the number of images that need to be summed over when generating the AO the nearest image displacement, dr, is used. Tv corresponds to the translation that takes the 'general displacement' (displacement between ion position and electron position) to the nearest image displacement. We need to keep track of Tv because it must be add as a phase factor, i.e., exp(i*k*Tv).

Implements SoaBasisSetBase< ORBT >.

Definition at line 352 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), and DistanceTableAB::getTempDists().

353 {
354  const auto& IonID(ions_.GroupID);
355  const auto& coordR = P.activeR(iat);
356  const auto& d_table = P.getDistTableAB(myTableIndex);
357  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
358  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
359 
360  PosType Tv;
361  for (int c = 0; c < NumCenters; c++)
362  {
363  Tv[0] = (ions_.R[c][0] - coordR[0]) - displ[c][0];
364  Tv[1] = (ions_.R[c][1] - coordR[1]) - displ[c][1];
365  Tv[2] = (ions_.R[c][2] - coordR[2]) - displ[c][2];
366  LOBasisSet[IonID[c]]->evaluateV(P.getLattice(), dist[c], displ[c], vals + BasisOffset[c], Tv);
367  }
368 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set

◆ evaluateVGH()

void evaluateVGH ( const ParticleSet P,
int  iat,
vgh_type vgh 
)
override

compute VGH

Parameters
Pquantum particleset
iatactive particle
vglMatrix(10,BasisSetSize)
trialMoveif true, use getTempDists()/getTempDispls()

Definition at line 261 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), and DistanceTableAB::getTempDists().

262 {
263  const auto& IonID(ions_.GroupID);
264  const auto& coordR = P.activeR(iat);
265  const auto& d_table = P.getDistTableAB(myTableIndex);
266  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
267  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
268  PosType Tv;
269  for (int c = 0; c < NumCenters; c++)
270  {
271  Tv[0] = (ions_.R[c][0] - coordR[0]) - displ[c][0];
272  Tv[1] = (ions_.R[c][1] - coordR[1]) - displ[c][1];
273  Tv[2] = (ions_.R[c][2] - coordR[2]) - displ[c][2];
274  LOBasisSet[IonID[c]]->evaluateVGH(P.getLattice(), dist[c], displ[c], BasisOffset[c], vgh, Tv);
275  }
276 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set

◆ evaluateVGHGH()

void evaluateVGHGH ( const ParticleSet P,
int  iat,
vghgh_type vghgh 
)
override

compute VGHGH

Parameters
Pquantum particleset
iatactive particle
vghghMatrix(20,BasisSetSize)
trialMoveif true, use getTempDists()/getTempDispls()

Definition at line 279 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), and DistanceTableAB::getTempDists().

280 {
281  // APP_ABORT("SoaLocalizedBasisSet::evaluateVGH() not implemented\n");
282 
283  const auto& IonID(ions_.GroupID);
284  const auto& coordR = P.activeR(iat);
285  const auto& d_table = P.getDistTableAB(myTableIndex);
286  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
287  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
288  PosType Tv;
289  for (int c = 0; c < NumCenters; c++)
290  {
291  Tv[0] = (ions_.R[c][0] - coordR[0]) - displ[c][0];
292  Tv[1] = (ions_.R[c][1] - coordR[1]) - displ[c][1];
293  Tv[2] = (ions_.R[c][2] - coordR[2]) - displ[c][2];
294  LOBasisSet[IonID[c]]->evaluateVGHGH(P.getLattice(), dist[c], displ[c], BasisOffset[c], vghgh, Tv);
295  }
296 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set

◆ evaluateVGL()

void evaluateVGL ( const ParticleSet P,
int  iat,
vgl_type vgl 
)
override

compute VGL

Parameters
Pquantum particleset
iatactive particle
vglMatrix(5,BasisSetSize)
trialMoveif true, use getTempDists()/getTempDispls()

Definition at line 195 of file SoaLocalizedBasisSet.cpp.

References ParticleSet::activeR(), ParticleSet::getActivePtcl(), ParticleSet::getDistTableAB(), ParticleSet::getLattice(), and DistanceTableAB::getTempDists().

196 {
197  const auto& IonID(ions_.GroupID);
198  const auto& coordR = P.activeR(iat);
199  const auto& d_table = P.getDistTableAB(myTableIndex);
200  const auto& dist = (P.getActivePtcl() == iat) ? d_table.getTempDists() : d_table.getDistRow(iat);
201  const auto& displ = (P.getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
202 
203  PosType Tv;
204  for (int c = 0; c < NumCenters; c++)
205  {
206  Tv[0] = (ions_.R[c][0] - coordR[0]) - displ[c][0];
207  Tv[1] = (ions_.R[c][1] - coordR[1]) - displ[c][1];
208  Tv[2] = (ions_.R[c][2] - coordR[2]) - displ[c][2];
209  LOBasisSet[IonID[c]]->evaluateVGL(P.getLattice(), dist[c], displ[c], BasisOffset[c], vgl, Tv);
210  }
211 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
QMCTraits::PosType PosType
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set

◆ extractOneSpeciesBasisRefList()

RefVectorWithLeader< COT > extractOneSpeciesBasisRefList ( const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basisset_list,
int  id 
)
static

helper function for extracting a list of atomic basis sets for a single species (indexed by id) from a list of basis sets

Definition at line 80 of file SoaLocalizedBasisSet.cpp.

References SoaLocalizedBasisSet< COT, ORBT >::LOBasisSet.

83 {
84  auto& loc_basis_leader = basisset_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
85  RefVectorWithLeader<COT> one_species_basis_list(*loc_basis_leader.LOBasisSet[id]);
86  one_species_basis_list.reserve(basisset_list.size());
87  for (size_t iw = 0; iw < basisset_list.size(); iw++)
88  one_species_basis_list.push_back(
89  *basisset_list.template getCastedElement<SoaLocalizedBasisSet<COT, ORBT>>(iw).LOBasisSet[id]);
90  return one_species_basis_list;
91 }

◆ makeClone()

BaseType* makeClone ( ) const
inlineoverridevirtual

makeClone

Implements SoaBasisSetBase< ORBT >.

Definition at line 86 of file SoaLocalizedBasisSet.h.

86 { return new SoaLocalizedBasisSet<COT, ORBT>(*this); }

◆ mw_evaluateValue()

void mw_evaluateValue ( const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basis_list,
const RefVectorWithLeader< ParticleSet > &  P_list,
int  iat,
OffloadMWVArray v 
)
overridevirtual

compute V using packed array with all walkers

Parameters
basis_listlist of basis sets (one for each walker)
P_listlist of quantum particleset (one for each walker)
iatactive particle
vArray(n_walkers, BasisSetSize)

Implements SoaBasisSetBase< ORBT >.

Definition at line 371 of file SoaLocalizedBasisSet.cpp.

References RefVectorWithLeader< T >::getLeader(), and Array< T, D, ALLOC >::size().

375 {
376  assert(this == &basis_list.getLeader());
377  auto& basis_leader = basis_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
378  const auto& IonID(ions_.GroupID);
379  auto& pset_leader = P_list.getLeader();
380 
381  size_t Nw = P_list.size();
382  assert(vals.size(0) == Nw);
383  assert(vals.size(1) == BasisSetSize);
384 
385  auto& Tv_list = basis_leader.mw_mem_handle_.getResource().Tv_list;
386  auto& displ_list_tr = basis_leader.mw_mem_handle_.getResource().displ_list_tr;
387  Tv_list.resize(3 * NumCenters * Nw);
388  displ_list_tr.resize(3 * NumCenters * Nw);
389 
390  for (size_t iw = 0; iw < P_list.size(); iw++)
391  {
392  const auto& coordR = P_list[iw].activeR(iat);
393  const auto& d_table = P_list[iw].getDistTableAB(myTableIndex);
394  const auto& displ = (P_list[iw].getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
395 
396  for (int c = 0; c < NumCenters; c++)
397  for (size_t idim = 0; idim < 3; idim++)
398  {
399  Tv_list[idim + 3 * (iw + c * Nw)] = (ions_.R[c][idim] - coordR[idim]) - displ[c][idim];
400  displ_list_tr[idim + 3 * (iw + c * Nw)] = displ[c][idim];
401  }
402  }
403 #if defined(QMC_COMPLEX)
404  Tv_list.updateTo();
405 #endif
406  displ_list_tr.updateTo();
407 
408  for (int c = 0; c < NumCenters; c++)
409  {
410  auto one_species_basis_list = extractOneSpeciesBasisRefList(basis_list, IonID[c]);
411  LOBasisSet[IonID[c]]->mw_evaluateV(one_species_basis_list, pset_leader.getLattice(), vals, displ_list_tr, Tv_list,
412  Nw, BasisSetSize, c, BasisOffset[c], NumCenters);
413  }
414 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set
static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList(const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
helper function for extracting a list of atomic basis sets for a single species (indexed by id) from ...
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ mw_evaluateValueVPs()

void mw_evaluateValueVPs ( const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basis_list,
const RefVectorWithLeader< const VirtualParticleSet > &  vp_list,
OffloadMWVArray v 
)
overridevirtual

compute V using packed array with all walkers

Parameters
basis_listlist of basis sets (one for each walker)
vp_listlist of quantum virtual particleset (one for each walker)
vArray(n_walkers, BasisSetSize)

Implements SoaBasisSetBase< ORBT >.

Definition at line 300 of file SoaLocalizedBasisSet.cpp.

References RefVectorWithLeader< T >::getLeader(), VirtualParticleSet::mw_mem_handle_, and Array< T, D, ALLOC >::size().

303 {
304  assert(this == &basis_list.getLeader());
305  auto& basis_leader = basis_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
306 
307  const size_t nVPs = vp_basis_v.size(0);
308  assert(vp_basis_v.size(1) == BasisSetSize);
309  const auto& IonID(ions_.GroupID);
310 
311  auto& vps_leader = vp_list.getLeader();
312 
313 
314  const auto dt_list(vps_leader.extractDTRefList(vp_list, myTableIndex));
315  const auto coordR_list(vps_leader.extractVPCoords(vp_list));
316 
317  auto& Tv_list = basis_leader.mw_mem_handle_.getResource().Tv_list;
318  auto& displ_list_tr = basis_leader.mw_mem_handle_.getResource().displ_list_tr;
319  Tv_list.resize(3 * NumCenters * nVPs);
320  displ_list_tr.resize(3 * NumCenters * nVPs);
321 
322  // TODO: need one more level of indirection for offload?
323  // need to index into walkers/vps, but need walker num for distance table
324  size_t index = 0;
325  for (size_t iw = 0; iw < vp_list.size(); iw++)
326  for (int iat = 0; iat < vp_list[iw].getTotalNum(); iat++)
327  {
328  const auto& displ = dt_list[iw].getDisplRow(iat);
329  for (int c = 0; c < NumCenters; c++)
330  for (size_t idim = 0; idim < 3; idim++)
331  {
332  Tv_list[idim + 3 * (index + c * nVPs)] = (ions_.R[c][idim] - coordR_list[index][idim]) - displ[c][idim];
333  displ_list_tr[idim + 3 * (index + c * nVPs)] = displ[c][idim];
334  }
335  index++;
336  }
337 #if defined(QMC_COMPLEX)
338  Tv_list.updateTo();
339 #endif
340  displ_list_tr.updateTo();
341 
342  // TODO: group/sort centers by species?
343  for (int c = 0; c < NumCenters; c++)
344  {
345  auto one_species_basis_list = extractOneSpeciesBasisRefList(basis_list, IonID[c]);
346  LOBasisSet[IonID[c]]->mw_evaluateV(one_species_basis_list, vps_leader.getLattice(), vp_basis_v, displ_list_tr,
347  Tv_list, nVPs, BasisSetSize, c, BasisOffset[c], NumCenters);
348  }
349  // vp_basis_v.updateFrom();
350 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set
static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList(const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
helper function for extracting a list of atomic basis sets for a single species (indexed by id) from ...
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ mw_evaluateVGL()

void mw_evaluateVGL ( const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basis_list,
const RefVectorWithLeader< ParticleSet > &  P_list,
int  iat,
OffloadMWVGLArray vgl 
)
overridevirtual

compute VGL using packed array with all walkers

Parameters
basis_listlist of basis sets (one for each walker)
P_listlist of quantum particleset (one for each walker)
iatactive particle
vglArray(n_walkers, 5, BasisSetSize)

Implements SoaBasisSetBase< ORBT >.

Definition at line 214 of file SoaLocalizedBasisSet.cpp.

References RefVectorWithLeader< T >::getLeader(), and Array< T, D, ALLOC >::size().

218 {
219  assert(this == &basis_list.getLeader());
220  auto& basis_leader = basis_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
221  const auto& IonID(ions_.GroupID);
222  auto& pset_leader = P_list.getLeader();
223 
224  size_t Nw = P_list.size();
225  assert(vgl_v.size(0) == 5);
226  assert(vgl_v.size(1) == Nw);
227  assert(vgl_v.size(2) == BasisSetSize);
228 
229  auto& Tv_list = basis_leader.mw_mem_handle_.getResource().Tv_list;
230  auto& displ_list_tr = basis_leader.mw_mem_handle_.getResource().displ_list_tr;
231  Tv_list.resize(3 * NumCenters * Nw);
232  displ_list_tr.resize(3 * NumCenters * Nw);
233 
234  for (size_t iw = 0; iw < P_list.size(); iw++)
235  {
236  const auto& coordR = P_list[iw].activeR(iat);
237  const auto& d_table = P_list[iw].getDistTableAB(myTableIndex);
238  const auto& displ = (P_list[iw].getActivePtcl() == iat) ? d_table.getTempDispls() : d_table.getDisplRow(iat);
239  for (int c = 0; c < NumCenters; c++)
240  for (size_t idim = 0; idim < 3; idim++)
241  {
242  Tv_list[idim + 3 * (iw + c * Nw)] = (ions_.R[c][idim] - coordR[idim]) - displ[c][idim];
243  displ_list_tr[idim + 3 * (iw + c * Nw)] = displ[c][idim];
244  }
245  }
246 #if defined(QMC_COMPLEX)
247  Tv_list.updateTo();
248 #endif
249  displ_list_tr.updateTo();
250 
251  for (int c = 0; c < NumCenters; c++)
252  {
253  auto one_species_basis_list = extractOneSpeciesBasisRefList(basis_list, IonID[c]);
254  LOBasisSet[IonID[c]]->mw_evaluateVGL(one_species_basis_list, pset_leader.getLattice(), vgl_v, displ_list_tr,
255  Tv_list, Nw, BasisSetSize, c, BasisOffset[c], NumCenters);
256  }
257 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
ParticlePos R
Position.
Definition: ParticleSet.h:79
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const int myTableIndex
number of quantum particles
const ParticleSet & ions_
ion particle set
static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList(const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
helper function for extracting a list of atomic basis sets for a single species (indexed by id) from ...
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ queryOrbitalsForSType()

void queryOrbitalsForSType ( const std::vector< bool > &  corrCenter,
std::vector< bool > &  is_s_orbital 
) const
overridevirtual

Determine which orbitals are S-type.

Used by cusp correction.

Reimplemented from SoaBasisSetBase< ORBT >.

Definition at line 170 of file SoaLocalizedBasisSet.cpp.

172 {
173  const auto& IonID(ions_.GroupID);
174  for (int c = 0; c < NumCenters; c++)
175  {
176  int idx = BasisOffset[c];
177  int bss = LOBasisSet[IonID[c]]->getBasisSetSize();
178  std::vector<bool> local_is_s_orbital(bss);
179  LOBasisSet[IonID[c]]->queryOrbitalsForSType(local_is_s_orbital);
180  for (int k = 0; k < bss; k++)
181  {
182  if (corrCenter[c])
183  {
184  is_s_orbital[idx++] = local_is_s_orbital[k];
185  }
186  else
187  {
188  is_s_orbital[idx++] = false;
189  }
190  }
191  }
192 }
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const ParticleSet & ions_
ion particle set

◆ releaseResource()

void releaseResource ( ResourceCollection collection,
const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &  basisset_list 
) const
override

return a shared resource to collection

Definition at line 64 of file SoaLocalizedBasisSet.cpp.

References ResourceCollection::takebackResource().

67 {
68  auto& loc_basis_leader = basisset_list.template getCastedLeader<SoaLocalizedBasisSet<COT, ORBT>>();
69  assert(this == &loc_basis_leader);
70  collection.takebackResource(loc_basis_leader.mw_mem_handle_);
71  // need to cast to SoaLocalizedBasisSet to access LOBasisSet (atomic basis)
72  auto& basisset_leader = loc_basis_leader.LOBasisSet;
73  for (int i = 0; i < basisset_leader.size(); i++)
74  {
75  const auto one_species_basis_list(extractOneSpeciesBasisRefList(basisset_list, i));
76  basisset_leader[i]->releaseResource(collection, one_species_basis_list);
77  }
78 }
static RefVectorWithLeader< COT > extractOneSpeciesBasisRefList(const RefVectorWithLeader< SoaBasisSetBase< ORBT >> &basisset_list, int id)
helper function for extracting a list of atomic basis sets for a single species (indexed by id) from ...

◆ setBasisSetSize()

void setBasisSetSize ( int  nbs)
overridevirtual

set BasisSetSize and allocate mVGL container

Implements SoaBasisSetBase< ORBT >.

Definition at line 136 of file SoaLocalizedBasisSet.cpp.

137 {
138  const auto& IonID(ions_.GroupID);
139  if (BasisSetSize > 0 && nbs == BasisSetSize)
140  return;
141 
142  if (auto& mapping = ions_.get_map_storage_to_input(); mapping.empty())
143  {
144  //evaluate the total basis dimension and offset for each center
145  BasisOffset[0] = 0;
146  for (int c = 0; c < NumCenters; c++)
147  BasisOffset[c + 1] = BasisOffset[c] + LOBasisSet[IonID[c]]->getBasisSetSize();
149  }
150  else
151  {
152  // when particles are reordered due to grouping, AOs need to restore the input order to match MOs.
153  std::vector<int> map_input_to_storage(mapping.size());
154  for (int c = 0; c < NumCenters; c++)
155  map_input_to_storage[mapping[c]] = c;
156 
157  std::vector<size_t> basis_offset_input_order(BasisOffset.size(), 0);
158  for (int c = 0; c < NumCenters; c++)
159  basis_offset_input_order[c + 1] =
160  basis_offset_input_order[c] + LOBasisSet[IonID[map_input_to_storage[c]]]->getBasisSetSize();
161 
162  for (int c = 0; c < NumCenters; c++)
163  BasisOffset[c] = basis_offset_input_order[mapping[c]];
164 
165  BasisSetSize = basis_offset_input_order[NumCenters];
166  }
167 }
const std::vector< int > & get_map_storage_to_input() const
Definition: ParticleSet.h:564
size_t NumCenters
number of centers, e.g., ions
ParticleIndex GroupID
Species ID.
Definition: ParticleSet.h:77
std::vector< size_t > BasisOffset
container to store the offsets of the basis functions for each center Due to potential reordering of ...
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals
const ParticleSet & ions_
ion particle set
int BasisSetSize
size of the basis set
Definition: BasisSetBase.h:143

◆ setPBCParams()

void setPBCParams ( const TinyVector< int, 3 > &  PBCImages,
const TinyVector< double, 3 >  Sup_Twist,
const Vector< ValueType, OffloadPinnedAllocator< ValueType >> &  phase_factor,
const Array< RealType, 2, OffloadPinnedAllocator< RealType >> &  pbc_displacements 
)

set Number of periodic Images to evaluate the orbitals.

Set to 0 for non-PBC, and set manually in the input. Passes the pre-computed phase factor for evaluation of complex wavefunction. If WF is real Phase_factor is real and equals 1 if gamma or -1 if non-Gamma.

Definition at line 123 of file SoaLocalizedBasisSet.cpp.

128 {
129  for (int i = 0; i < LOBasisSet.size(); ++i)
130  LOBasisSet[i]->setPBCParams(PBCImages, Sup_Twist, phase_factor, pbc_displacements);
131 
132  SuperTwist = Sup_Twist;
133 }
void setPBCParams(const TinyVector< int, 3 > &PBCImages, const TinyVector< double, 3 > Sup_Twist, const Vector< ValueType, OffloadPinnedAllocator< ValueType >> &phase_factor, const Array< RealType, 2, OffloadPinnedAllocator< RealType >> &pbc_displacements)
set Number of periodic Images to evaluate the orbitals.
PosType SuperTwist
Global Coordinate of Supertwist read from HDF5.
std::vector< std::unique_ptr< COT > > LOBasisSet
container of the unique pointers to the Atomic Orbitals

Member Data Documentation

◆ BasisOffset

std::vector<size_t> BasisOffset

container to store the offsets of the basis functions for each center Due to potential reordering of ions, offsets can be in any order.

Definition at line 68 of file SoaLocalizedBasisSet.h.

Referenced by SoaLocalizedBasisSet< COT, ORBT >::SoaLocalizedBasisSet().

◆ ions_

const ParticleSet& ions_

ion particle set

Definition at line 58 of file SoaLocalizedBasisSet.h.

◆ LOBasisSet

std::vector<std::unique_ptr<COT> > LOBasisSet

container of the unique pointers to the Atomic Orbitals

size of LOBasisSet = number of unique centers

Definition at line 74 of file SoaLocalizedBasisSet.h.

Referenced by SoaLocalizedBasisSet< COT, ORBT >::extractOneSpeciesBasisRefList(), and SoaLocalizedBasisSet< COT, ORBT >::SoaLocalizedBasisSet().

◆ mw_mem_handle_

multi walker resource handle

Definition at line 213 of file SoaLocalizedBasisSet.h.

◆ myTableIndex

const int myTableIndex

number of quantum particles

Definition at line 60 of file SoaLocalizedBasisSet.h.

◆ NumCenters

size_t NumCenters

number of centers, e.g., ions

Definition at line 54 of file SoaLocalizedBasisSet.h.

Referenced by SoaLocalizedBasisSet< COT, ORBT >::SoaLocalizedBasisSet().

◆ NumTargets

size_t NumTargets

number of quantum particles

Definition at line 56 of file SoaLocalizedBasisSet.h.

Referenced by SoaLocalizedBasisSet< COT, ORBT >::SoaLocalizedBasisSet().

◆ SuperTwist

PosType SuperTwist

Global Coordinate of Supertwist read from HDF5.

Definition at line 62 of file SoaLocalizedBasisSet.h.


The documentation for this class was generated from the following files: