30 #if !defined(QMC_COMPLEX) 51 template<
typename T,
typename ORBT,
int ROT,
int SH>
56 template<
typename T,
typename ORBT>
66 template<
typename T,
typename ORBT>
76 template<
typename T,
typename ORBT>
86 template<
typename T,
typename ORBT>
96 template<
typename T,
typename ORBT>
106 template<
typename T,
typename ORBT>
116 inline bool is_same(
const xmlChar* a,
const char* b) {
return !strcmp((
const char*)a, b); }
126 doCuspCorrection(false)
131 std::string cuspC(
"no");
133 aAttrib.
add(cuspC,
"cuspCorrection");
146 processChildren(cur, [&](
const std::string& cname,
const xmlNodePtr element) {
147 if (cname ==
"basisset")
150 std::string basisset_name(basisset_name_input.empty() ?
"LCAOBSet" : basisset_name_input);
153 std::ostringstream err_msg;
154 err_msg <<
"Cannot create basisset " << basisset_name <<
" which already exists." << std::endl;
155 throw std::runtime_error(err_msg.str());
167 app_warning() <<
"!!!!!!! Deprecated input style: missing basisset element. " 168 <<
"LCAO needs an explicit basisset XML element. " <<
"Fallback on loading an implicit one." 174 throw std::runtime_error(
"No basisset found in the XML input!");
185 std::string transformOpt;
187 aAttrib.
add(keyOpt,
"keyword");
188 aAttrib.
add(keyOpt,
"key");
189 aAttrib.
add(transformOpt,
"transform");
192 int radialOrbType = -1;
193 if (transformOpt ==
"yes" || keyOpt ==
"NMO")
202 return radialOrbType;
210 xmlNodePtr cur1 = cur->xmlChildrenNode;
211 while (cur1 != NULL && ylm < 0)
213 if (
is_same(cur1->name,
"atomicBasisSet"))
217 att.
add(sph,
"angular");
219 ylm = (sph ==
"cartesian") ? 0 : 1;
226 PRE.
error(
"Missing angular attribute of atomicBasisSet.",
true);
229 if (radialOrbType < 0)
231 app_warning() <<
"Radial orbital type cannot be determined based on the attributes of basisset line. " 232 <<
"Trying the parent element." << std::endl;
236 if (radialOrbType < 0)
237 PRE.
error(
"Unknown radial function for LCAO orbitals. Specify keyword=\"NMO/GTO/STO\" .",
true);
241 switch (radialOrbType)
244 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiQuintic," << ylm <<
">" << std::endl;
246 myBasisSet = createBasisSet<0, 1>(cur);
248 myBasisSet = createBasisSet<0, 0>(cur);
251 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiGTO," << ylm <<
">" << std::endl;
253 myBasisSet = createBasisSet<1, 1>(cur);
255 myBasisSet = createBasisSet<1, 0>(cur);
258 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiSTO," << ylm <<
">" << std::endl;
260 myBasisSet = createBasisSet<2, 1>(cur);
262 myBasisSet = createBasisSet<2, 0>(cur);
265 PRE.
error(
"Cannot construct SoaAtomicBasisSet<ROT,YLM>.",
true);
269 return std::unique_ptr<BasisSet_t>(myBasisSet);
281 PRE.
error(
"Could not open H5 file",
true);
283 hin.
push(
"basisset",
false);
286 std::string ElemID0 =
"atomicBasisSet0";
288 hin.
push(ElemID0.c_str(),
false);
291 PRE.
error(
"Could not find name of basisset group in H5; Probably Corrupt H5 file",
true);
292 ylm = (sph ==
"cartesian") ? 0 : 1;
298 PRE.
error(
"Missing angular attribute of atomicBasisSet.",
true);
301 if (radialOrbType < 0)
302 PRE.
error(
"Unknown radial function for LCAO orbitals. Specify keyword=\"NMO/GTO/STO\" .",
true);
306 switch (radialOrbType)
309 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiQuintic," << ylm <<
">" << std::endl;
311 myBasisSet = createBasisSetH5<0, 1>();
313 myBasisSet = createBasisSetH5<0, 0>();
316 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiGTO," << ylm <<
">" << std::endl;
318 myBasisSet = createBasisSetH5<1, 1>();
320 myBasisSet = createBasisSetH5<1, 0>();
323 app_log() <<
" LCAO: SoaAtomicBasisSet<MultiSTO," << ylm <<
">" << std::endl;
324 myBasisSet = createBasisSetH5<2, 1>();
327 PRE.
error(
"Cannot construct SoaAtomicBasisSet<ROT,YLM>.",
true);
330 return std::unique_ptr<BasisSet_t>(myBasisSet);
334 template<
int I,
int J>
345 std::vector<std::string> ao_built_centers;
348 cur = cur->xmlChildrenNode;
351 std::string cname((
const char*)(cur->name));
353 if (cname ==
"atomicBasisSet")
355 std::string elementType;
358 att.
add(elementType,
"elementType");
361 if (elementType.empty())
362 PRE.
error(
"Missing elementType attribute of atomicBasisSet.",
true);
364 auto it = std::find(ao_built_centers.begin(), ao_built_centers.end(), elementType);
365 if (it == ao_built_centers.end())
374 mBasisSet->add(activeCenter, std::move(aoBasis));
376 ao_built_centers.push_back(elementType);
381 mBasisSet->setBasisSetSize(-1);
387 template<
int I,
int J>
398 std::vector<std::string> ao_built_centers;
401 std::string basiset_name;
404 app_log() <<
"Reading BasisSet from HDF5 file:" <<
h5_path << std::endl;
410 PRE.
error(
"Could not open H5 file",
true);
412 hin.
push(
"basisset",
false);
414 hin.
read(Nb_Elements,
"NbElements");
419 PRE.
error(
"Missing elementType attribute of atomicBasisSet.",
true);
421 for (
int i = 0; i < Nb_Elements; i++)
423 std::string elementType, dataset;
424 std::stringstream tempElem;
425 std::string ElemID0 =
"atomicBasisSet", ElemType;
426 tempElem << ElemID0 << i;
427 ElemType = tempElem.str();
431 hin.
push(ElemType.c_str(),
false);
433 if (!hin.
readEntry(basiset_name,
"name"))
434 PRE.
error(
"Could not find name of basisset group in H5; Probably Corrupt H5 file",
true);
435 if (!hin.
readEntry(elementType,
"elementType"))
436 PRE.
error(
"Could not read elementType in H5; Probably Corrupt H5 file",
true);
441 auto it = std::find(ao_built_centers.begin(), ao_built_centers.end(), elementType);
442 if (it == ao_built_centers.end())
451 mBasisSet->add(activeCenter, std::move(aoBasis));
453 ao_built_centers.push_back(elementType);
465 mBasisSet->setBasisSetSize(-1);
474 std::string spo_name(
""), cusp_file(
""),
optimize(
"no");
475 std::string basisset_name(
"LCAOBSet");
478 spoAttrib.
add(spo_name,
"name");
479 spoAttrib.
add(spo_name,
"id");
480 spoAttrib.
add(cusp_file,
"cuspInfo");
481 spoAttrib.
add(basisset_name,
"basisset");
482 spoAttrib.
add(norbs,
"size");
489 bool identity =
true;
490 processChildren(cur, [&](
const std::string& cname,
const xmlNodePtr element) {
491 if (cname.find(
"coeff") < cname.size() || cname ==
"parameter" || cname ==
"Var")
495 std::unique_ptr<BasisSet_t> myBasisSet;
502 norbs = myBasisSet->getBasisSetSize();
504 std::unique_ptr<SPOSet> sposet;
507 #if defined(QMC_COMPLEX) 509 "LCAOrbitalBuilder::createSPOSetFromXML cusp correction is not supported on complex LCAO.");
511 app_summary() <<
" Using cusp correction." << std::endl;
513 app_warning() <<
" LCAO with cusp correction doesn't support OpenMP offload. Running on CPU." << std::endl;
514 auto lcwc = std::make_unique<LCAOrbitalSetWithCorrection>(spo_name, std::move(myBasisSet), norbs, identity,
518 sposet = std::move(lcwc);
524 app_summary() <<
" Running OpenMP offload code path." << std::endl;
527 auto lcos = std::make_unique<LCAOrbitalSet>(spo_name, std::move(myBasisSet), norbs, identity, useOffload);
530 sposet = std::move(lcos);
533 #if !defined(QMC_COMPLEX) 552 if (cusp_file.empty())
553 cusp_file = spo_name +
".cuspInfo.xml";
557 app_log() <<
" Cusp correction file " << cusp_file << (
file_exists ?
" exits." :
" doesn't exist.") << std::endl;
564 valid =
readCuspInfo(cusp_file, spo_name, orbital_set_size, info);
569 for (
int orb_idx = 0; orb_idx < orbital_set_size; orb_idx++)
570 for (
int center_idx = 0; center_idx < num_centers; center_idx++)
578 saveCusp(cusp_file, info, spo_name);
585 sposet->finalizeConstruction();
596 #define FunctionName \ 597 printf("Calling FunctionName from %s\n", __FUNCTION__); \ 600 ReportEngine PRE(
"LCAOrbitalBuilder",
"put(xmlNodePtr)");
603 std::string debugc(
"no");
604 double orbital_mix_magnitude = 0.0;
607 aAttrib.
add(debugc,
"debug");
608 aAttrib.
add(orbital_mix_magnitude,
"orbital_mix_magnitude");
610 xmlNodePtr occ_ptr = NULL;
611 xmlNodePtr coeff_ptr = NULL;
612 cur = cur->xmlChildrenNode;
615 std::string cname((
const char*)(cur->name));
616 if (cname ==
"occupation")
620 else if (cname.find(
"coeff") < cname.size() || cname ==
"parameter" || cname ==
"Var")
626 if (coeff_ptr == NULL)
628 app_log() <<
" Using Identity for the LCOrbitalSet " << std::endl;
641 APP_ABORT(
"LCAOrbitalBuilder::putFromH5 missing or incorrect path to H5 file.");
645 hin.
push(
"PBC",
false);
648 catch (
const std::exception&
e)
655 hin.
read(PBC,
"PBC");
670 app_log() <<
" Single-particle orbital coefficients dims=" << spo.
C->rows() <<
" x " << spo.
C->cols()
682 aAttrib.
add(norbs,
"size");
684 aAttrib.
put(coeff_ptr);
688 APP_ABORT(
"LCAOrbitalBuilder::putFromXML missing or incorrect size");
692 std::vector<ValueType> Ctemp;
694 Ctemp.resize(norbs * BasisSetSize);
697 std::vector<ValueType>::iterator cit(Ctemp.begin());
700 if (
Occ[
n] > std::numeric_limits<RealType>::epsilon())
702 std::copy(cit, cit + BasisSetSize, (*spo.
C)[i]);
721 aAttrib.
add(setVal,
"spindataset");
724 aAttrib.
put(coeff_ptr);
729 APP_ABORT(
"LCAOrbitalBuilder::putFromH5 missing or incorrect path to H5 file.");
732 std::array<char, 72> name;
736 int name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/Super_Twist/eigenset_", setVal);
738 throw std::runtime_error(
"Error generating name");
739 std::string setname(name.data(), name_len);
742 name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/KPTS_0/eigenset_", setVal);
744 throw std::runtime_error(
"Error generating name");
745 setname = std::string(name.data(), name_len);
746 hin.
read(Ctemp, setname);
752 std::ostringstream err_msg;
753 err_msg <<
"Basis set size " << spo.
getBasisSetSize() <<
" mismatched the number of MO coefficients columns " 754 << Ctemp.
cols() <<
" from h5." << std::endl;
759 if (Ctemp.
rows() < norbs)
761 std::ostringstream err_msg;
762 err_msg <<
"Need " << norbs <<
" orbitals. Insufficient rows of MO coefficients " << Ctemp.
rows() <<
" from h5." 789 ReportEngine PRE(
"LCAOrbitalBuilder",
"LCAOrbitalBuilder::putPBCFromH5");
793 bool MultiDet =
false;
797 aAttrib.
add(setVal,
"spindataset");
800 aAttrib.
put(coeff_ptr);
803 xmlNodePtr curtemp = coeff_ptr;
805 std::string xmlTag(
"determinantset");
806 std::string MSDTag(
"sposet");
807 std::string SDTag(
"determinant");
808 std::string EndTag(
"qmcsystem");
813 std::stringstream ss;
814 curtemp = curtemp->parent;
817 if (curname == MSDTag)
819 if (curname == SDTag)
822 }
while ((xmlTag != curname) && (curname != EndTag) && curname !=
"sposet_collection");
823 if (curname == EndTag)
826 "Could not find in wf file the \"sposet\" or \"determinant\" tags. Please verify input or contact developers");
830 aAttrib.
put(curtemp);
835 APP_ABORT(
"LCAOrbitalBuilder::putFromH5 missing or incorrect path to H5 file.");
836 hin.
push(
"parameters");
840 std::string setname(
"/Super_Twist/Coord");
841 hin.
read(SuperTwistH5, setname);
845 app_log() <<
"Super Twist in XML : " <<
SuperTwist[0] <<
" In H5:" << SuperTwistH5[0] << std::endl;
851 APP_ABORT(
"Requested Super Twist in XML and Super Twist in HDF5 do not Match!!! Aborting.");
871 myComm->comm.broadcast_n(spo.
C->data(), spo.
C->size());
882 APP_ABORT(
"LCAOrbitalBuilder::putOccupation detected ZERO BasisSetSize");
889 std::vector<int> occ_in;
890 std::string occ_mode(
"table");
902 if (occ_mode ==
"excited")
905 for (
int k = 0; k < occ_in.size(); k++)
908 Occ[-occ_in[k] - 1] = 0.0;
910 Occ[occ_in[k] - 1] = 1.0;
913 else if (occ_mode ==
"table")
921 const std::string& setname,
924 hin.
read(Creal, setname);
930 Matrix<std::complex<RealType>>& Ctemp,
936 std::array<char, 72> name;
945 if (MultiDet ==
false)
946 name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/Super_Twist/eigenset_", setVal);
948 name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/Super_Twist/eigenset_unsorted_", setVal);
950 throw std::runtime_error(
"Error generating name");
952 std::string setname(name.data(), name_len);
968 Ctemp.resize(Creal.
rows(), Creal.
cols());
969 for (
int i = 0; i < Ctemp.rows(); i++)
970 for (
int j = 0; j < Ctemp.cols(); j++)
971 Ctemp[i][j] = std::complex<RealType>(Creal[i][j], Ccmplx[i][j]);
985 std::string setname(
"This Wavefunction is Complex and you are using the real version of QMCPACK. " 986 "Please re-run this job with the Complex build of QMCPACK.");
990 std::array<char, 72> name;
993 hin.
read(PBC,
"/PBC/PBC");
995 name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/Super_Twist/eigenset_unsorted_", setVal);
997 name_len = std::snprintf(name.data(), name.size(),
"%s%d",
"/Super_Twist/eigenset_", setVal);
999 throw std::runtime_error(
"Error generating name");
1015 if (
h5_path !=
"" && !usesOpenBC)
1023 hin.
push(
"Cell",
false);
1028 for (
int i = 0; i < 3; i++)
1029 for (
int j = 0; j < 3; j++)
1032 else if (!usesOpenBC)
1034 APP_ABORT(
"Attempting to run PBC LCAO with no HDF5 support. Behaviour is unknown. Safer to exit");
1040 const int NbImages = Nx * Ny * Nz;
1041 LocPeriodicImagePhaseFactors.resize(NbImages);
1042 LocPeriodicImageDisplacements.resize(NbImages, 3);
1043 for (
size_t ix = 0; ix < Nx; ix++)
1044 for (
size_t iy = 0; iy < Ny; iy++)
1045 for (
size_t iz = 0; iz < Nz; iz++)
1047 const size_t i = iz + Nz * (iy + Ny * ix);
1048 int TransX = ((ix % 2) * 2 - 1) * ((ix + 1) / 2);
1049 int TransY = ((iy % 2) * 2 - 1) * ((iy + 1) / 2);
1050 int TransZ = ((iz % 2) * 2 - 1) * ((iz + 1) / 2);
1051 LocPeriodicImagePhaseFactors[i] = 1.0;
1052 for (
size_t idim = 0; idim < 3; idim++)
1053 LocPeriodicImageDisplacements(i, idim) =
1068 if (
h5_path !=
"" && !usesOpenBC)
1076 hin.
push(
"Cell",
false);
1081 for (
int i = 0; i < 3; i++)
1082 for (
int j = 0; j < 3; j++)
1085 else if (!usesOpenBC)
1087 APP_ABORT(
"Attempting to run PBC LCAO with no HDF5 support. Behaviour is unknown. Safer to exit");
1091 int TransX, TransY, TransZ;
1096 const int NbImages = Nx * Ny * Nz;
1097 LocPeriodicImagePhaseFactors.resize(NbImages);
1098 LocPeriodicImageDisplacements.resize(NbImages, 3);
1099 for (
size_t ix = 0; ix < Nx; ix++)
1100 for (
size_t iy = 0; iy < Ny; iy++)
1101 for (
size_t iz = 0; iz < Nz; iz++)
1103 const size_t i = iz + Nz * (iy + Ny * ix);
1104 int TransX = ((ix % 2) * 2 - 1) * ((ix + 1) / 2);
1105 int TransY = ((iy % 2) * 2 - 1) * ((iy + 1) / 2);
1106 int TransZ = ((iz % 2) * 2 - 1) * ((iz + 1) / 2);
1109 for (
size_t idim = 0; idim < 3; idim++)
1112 LocPeriodicImageDisplacements(i, idim) = Val[idim];
1118 LocPeriodicImagePhaseFactors[i] = std::complex<RealType>(c,
s);
a class that defines a supercell in D-dimensional Euclean space.
void resize(size_type n, Type_t val=Type_t())
Resize the container.
multivalue implementation for OneDimQuintic Real valued only calling any eval method with r >= r_max ...
bool loadMO(LCAOrbitalSet &spo, xmlNodePtr cur)
Parse the xml file for information on the Dirac determinants.
bool file_exists(const std::string &name)
ParticleSet & targetPtcl
target ParticleSet
Vector< ValueType, OffloadPinnedAllocator< ValueType > > PeriodicImagePhaseFactors
Periodic Image Phase Factors. Correspond to the phase from the PBCImages. Computed only once...
std::ostream & app_warning()
bool open(const std::filesystem::path &fname, unsigned flags=H5F_ACC_RDWR)
open a file
helper functions for EinsplineSetBuilder
A localized basis set derived from SoaBasisSetBase<ORBT>
int rank() const
return the rank
int getBasisSetSize() const
return the size of the basis set
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
size_t getTotalNum() const
std::ostream & app_summary()
bool put(xmlNodePtr cur)
assign attributes to the set
void close()
close all the open groups and file
bool putPBCFromH5(LCAOrbitalSet &spo, xmlNodePtr coeff_ptr)
read data from a hdf5 file
std::string useGPU
Captured gpu input string.
void LoadFullCoefsFromH5(hdf_archive &hin, int setVal, PosType &SuperTwist, Matrix< std::complex< RealType >> &Ctemp, bool MultiDet)
class to add cusp correction to LCAOrbitalSet.
Vector< RealType > Occ
occupation number
std::unique_ptr< BasisSet_t > loadBasisSetFromXML(xmlNodePtr cur, xmlNodePtr parent)
load a basis set from XML input
bool is_same(const xmlChar *a, const char *b)
void resize(size_type n, size_type m)
Resize the container.
void saveCusp(const std::string &filename, const Matrix< CuspCorrectionParameters > &info, const std::string &id)
save cusp correction info to a file.
SoaSphericalTensor that evaluates the Real Spherical Harmonics.
void broadcastCuspInfo(CuspCorrectionParameters ¶m, Communicate &Comm, int root)
Broadcast cusp correction parameters.
void applyCuspCorrection(const Matrix< CuspCorrectionParameters > &info, ParticleSet &targetPtcl, ParticleSet &sourcePtcl, LCAOrbitalSet &lcao, SoaCuspCorrection &cusp, const std::string &id)
generic functor that computes a set of 1D functors
void copy(const Array< T1, 3 > &src, Array< T2, 3 > &dest)
bool readCuspInfo(const std::string &cuspInfoFile, const std::string &objectName, int OrbitalSetSize, Matrix< CuspCorrectionParameters > &info)
Read cusp correction parameters from XML file.
std::enable_if_t< IsComplex_t< T >::value, bool > IsComplex
Wrapping information on parallelism.
PosType SuperTwist
Coordinates Super Twist.
Specialized paritlce class for atomistic simulations.
base class for the real SPOSet builder
std::map< std::string, std::unique_ptr< BasisSet_t > > basisset_map_
localized basis set map
int determineRadialOrbType(xmlNodePtr cur) const
determine radial orbital type based on "keyword" and "transform" attributes
Array< RealType, 2, OffloadPinnedAllocator< RealType > > PeriodicImageDisplacements
ParticleSet & sourcePtcl
source ParticleSet
Final class and should not be derived.
Communicate * myComm
pointer to Communicate
class to handle a set of attributes of an xmlNode
BasisSet_t * createBasisSetH5()
declaration of ProgressReportEngine
void generateCuspInfo(Matrix< CuspCorrectionParameters > &info, const ParticleSet &targetPtcl, const ParticleSet &sourcePtcl, const LCAOrbitalSet &lcao, const std::string &id, Communicate &Comm)
std::shared_ptr< OffloadValueMatrix > C
pointer to matrix containing the coefficients
LCAOrbitalBuilder(ParticleSet &els, ParticleSet &ions, Communicate *comm, xmlNodePtr cur)
constructor
int getOrbitalSetSize() const
return the size of the orbitals
std::unique_ptr< SPOSet > createSPOSetFromXML(xmlNodePtr cur) override
create an sposet from xml (legacy)
std::string ClassName
class Name
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
bool putOccupation(LCAOrbitalSet &spo, xmlNodePtr occ_ptr)
static PlatformKind selectPlatform(std::string_view value)
Tensor< double, 3 > Lattice
Store Lattice parameters from HDF5 to use in PeriodicImagePhaseFactors.
OMPallocator is an allocator with fused device and dualspace allocator functionality.
std::string getXMLAttributeValue(const xmlNodePtr cur, const std::string_view name)
get the value string for attribute name if name is unfound in cur you get an empty string back this i...
std::string h5_path
Path to HDF5 Wavefunction.
SpeciesSet & getSpeciesSet()
retrun the SpeciesSet of this particle set
void push(const std::string &gname, bool createit=true)
push a group to the group stack
bool putContent(T &a, xmlNodePtr cur)
replaces a's value with the first "element" in the "string" returned by XMLNodeString{cur}.
BasisSet_t * createBasisSet(xmlNodePtr cur)
create basis set
bool putFromXML(LCAOrbitalSet &spo, xmlNodePtr coeff_ptr)
void readRealMatrixFromH5(hdf_archive &hin, const std::string &setname, Matrix< LCAOrbitalBuilder::RealType > &Creal) const
read matrix from h5 file
bool putFromH5(LCAOrbitalSet &spo, xmlNodePtr coeff_ptr)
read data from a hdf5 file
void processChildren(const xmlNodePtr cur, const F &functor)
process through all the children of an XML element F is a lambda or functor void F/[](const std::stri...
std::unique_ptr< COT > createAOSet(xmlNodePtr cur)
TinyVector< int, 3 > PBCImages
Number of periodic Images for Orbital evaluation.
void error(const std::string &msg, bool fatal=false)
traits for a localized basis set; used by createBasisSet
void sincos(T a, T *restrict s, T *restrict c)
sincos function wrapper
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)
void read(T &data, const std::string &aname)
read the data from the group aname and check status runtime error is issued on I/O error ...
std::unique_ptr< BasisSet_t > loadBasisSetFromH5(xmlNodePtr parent)
load a basis set from h5 file
class to handle linear combinations of basis orbitals used to evaluate the Dirac determinants.
int findSpecies(const std::string &name) const
if the input species is not found, add a new species
std::unique_ptr< COT > createAOSetH5(hdf_archive &hin)
void barrier_and_abort(const std::string &msg) const
bool readEntry(T &data, const std::string &aname)
read the data from the group aname and return status use read() for inbuilt error checking ...
~LCAOrbitalBuilder() override
A D-dimensional Array class based on PETE.
A derived class from BasisSetBase.
bool doCuspCorrection
Enable cusp correction.
CartesianTensor according to Gamess order.
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
SoaBasisSetBase< ValueType > basis_type
bool putH5(hdf_archive &hin)
void EvalPeriodicImagePhaseFactors(PosType SuperTwist, Vector< RealType, OffloadPinnedAllocator< RealType >> &LocPeriodicImagePhaseFactors, Array< RealType, 2, OffloadPinnedAllocator< RealType >> &LocPeriodicImageDisplacements)
Periodic Image Phase Factors computation to be determined.
const std::vector< std::string > candidate_values
Assume that coeffs.D1 and the LogLightGrid r_values.size() are equal Therefore r must be < r_max...