23 #ifndef QMCPLUSPLUS_EINSPLINE_SET_BUILDER_H 24 #define QMCPLUSPLUS_EINSPLINE_SET_BUILDER_H 31 #define PW_COEFF_NORM_TOLERANCE 1e-6 64 for (
int i = 0; i < 4; i++)
106 H5OrbSet(std::filesystem::path name,
int spinSet,
int numOrbs)
117 using PSetMap = std::map<std::string, const std::unique_ptr<ParticleSet>>;
129 std::vector<std::unique_ptr<std::vector<BandInfo>>>
FullBands;
187 std::vector<std::vector<TinyVector<int, 3>>>
Gvecs;
218 void OccupyBands(
int spin,
int sortBands,
int numOrbs,
bool skipChecks =
false);
228 std::vector<TinyVector<double, OHMMS_DIM>>
ion_pos;
236 lmax.resize(ncenters, -1);
242 cutoff.resize(ncenters, -1.0);
274 bool skipChecks =
false);
std::unique_ptr< SPOSet > createSPOSet(xmlNodePtr cur, SPOSetInputInfo &input_info) override
initialize with the existing SPOSet
bool TwistPair(PosType a, PosType b) const
bool operator()(const TinyVector< int, 4 > &a, const TinyVector< int, 4 > &b) const
int NumOrbs
number of orbitals that belong to this set
const PSetMap & ParticleSets
reference to the particleset pool
Tensor< double, OHMMS_DIM > GGt
Tensor< int, OHMMS_DIM > TileMatrix
void resize(int ncenters)
helper functions for EinsplineSetBuilder
class to read state range information from sposet input
std::vector< double > spline_radius
QTBase::RealType RealType
std::map< H5OrbSet, SPOSet *, H5OrbSet > SPOSetMap
std::vector< int > DistinctTwists
ParticleSet & TargetPtcl
quantum particle set
std::map< TinyVector< int, OHMMS_DIM >, int, Int3less > TwistMap
std::string parameterGroup
std::vector< TinyVector< double, OHMMS_DIM > > ion_pos
Define helper class to sort bands according to the band and twist and functions.
void OccupyBands_ESHDF(int spin, int sortBands, int numOrbs)
struct qmcplusplus::EinsplineSetBuilder::CenterInfo AtomicCentersInfo
TinyVector< int, 3 > Version
ParticleSet * SourcePtcl
ionic system
std::vector< int > Super2Prim
std::vector< double > non_overlapping_radius
void AnalyzeTwists2(const int twist_num_inp, const TinyVector< double, OHMMS_DIM > &twist_inp)
analyze twists of orbitals in h5 and determinine twist_num_
std::vector< int > spline_npoints
int SpinSet
index for the spin set
std::vector< std::unique_ptr< std::vector< BandInfo > > > FullBands
Helper vector for sorting bands.
std::vector< TinyVector< int, OHMMS_DIM > > UseTwists
std::vector< double > inner_cutoff
Wrapping information on parallelism.
bool HaveOrbDerivs
This is true if we have the orbital derivatives w.r.t. the ion positions.
Vector< TinyVector< double, OHMMS_DIM > > IonPos
Specialized paritlce class for atomistic simulations.
TinyVector< int, 3 > MeshSize
base class for the real SPOSet builder
Declaration of a base class of SPOSet Builders.
static constexpr double TWIST_NO_INPUT
twist_inp[i] <= -9999 to indicate no given input after parsing XML
void bcastSortBands(int splin, int N, bool root)
broadcast SortBands
~EinsplineSetBuilder() override
destructor
void BroadcastOrbitalInfo()
bool ReadOrbitalInfo(bool skipChecks=false)
H5OrbSet(std::filesystem::path name, int spinSet, int numOrbs)
bool operator()(const H5OrbSet &a, const H5OrbSet &b) const
true if a < b
std::map< std::string, const std::unique_ptr< ParticleSet > > PSetMap
std::string eigenstatesGroup
std::vector< bool > MakeTwoCopies
void OccupyBands(int spin, int sortBands, int numOrbs, bool skipChecks=false)
std::unique_ptr< BsplineReader > MixedSplineReader
reader to use BsplineReader
construct a name for spline SPO set
static constexpr int TWISTNUM_NO_INPUT
twistnum_inp == -9999 to indicate no given input after parsing XML
std::vector< double > cutoff
void set_metadata(int numOrbs, int twist_num_inp, const TinyVector< double, OHMMS_DIM > &twist_inp, bool skipChecks=false)
a specific but clean code path in createSPOSetFromXML, for PBC, double, ESHDF
std::filesystem::path FileName
name of the HDF5 file
bool ReadGvectors_ESHDF()
read gvectors for each twist
xmlNodePtr XMLRoot
root XML node with href, sort, tilematrix, twistnum, source, precision,truncate,version ...
Tensor< double, OHMMS_DIM > LatticeInv
std::filesystem::path H5FileName
Tensor< double, OHMMS_DIM > SuperLattice
bool operator()(const TinyVector< int, 3 > &a, const TinyVector< int, 3 > &b) const
std::vector< std::vector< TinyVector< int, 3 > > > Gvecs
std::vector< TinyVector< double, OHMMS_DIM > > primcell_kpoints
bool ReadOrbitalInfo_ESHDF(bool skipChecks=false)
std::vector< int > IncludeTwists
std::unique_ptr< SPOSet > createSPOSetFromXML(xmlNodePtr cur) override
initialize the Antisymmetric wave function for electrons
Tensor< double, OHMMS_DIM > RecipLattice
EinsplineSetBuilder(ParticleSet &p, const PSetMap &psets, Communicate *comm, xmlNodePtr cur)
constructor
std::vector< int > GroupID
Tensor< double, OHMMS_DIM > Lattice
bool use_real_splines_
if false, splines are conceptually complex valued
std::string OrbitalPath(int ti, int bi)