62 if (
abs(kx - kp.
kx) > 1
e-7)
66 else if (
abs(ky - kp.
ky) > 1
e-7)
70 else if (
abs(kz - kp.
kz) > 1
e-7)
92 return wrapped(i - size, size);
99 vector<double> occupancies;
102 for (
int i = 0; i < occupancies.size(); i++)
104 result += occupancies[i];
112 nocc = getOccupation(nd);
113 int stateCounter = 0;
114 vector<double> eigvals;
121 stringstream statess;
122 statess <<
"state_" << stateCounter;
123 outfile_.push(statess.str());
128 eigvals.push_back(-5000.0 + stateCounter);
131 readInEigFcn(eigFcnNode, cont);
133 array<int, 2> psig_dims{cont.
fullSize, 2};
136 for (
int i = 0; i < cont.
fullSize; i++)
138 temp.push_back(cont.
kspace[i][0]);
139 temp.push_back(cont.
kspace[i][1]);
142 outfile_.writeSlabReshaped(temp, psig_dims,
"psi_g");
148 outfile_.write(stateCounter,
"number_of_states");
149 outfile_.write(eigvals,
"eigenvalues");
157 if (encoding !=
"text")
159 cerr <<
"Don't yet know how to handle encoding of wavefunction values other than text" << endl;
163 vector<double> values;
166 if (type ==
"complex")
169 for (
int ix = 0; ix < cont.
getNx(); ix++)
171 for (
int iy = 0; iy < cont.
getNy(); iy++)
173 for (
int iz = 0; iz < cont.
getNz(); iz++)
176 cont.
rspace[index][0] = values[2 * qbx] * fixnorm;
177 cont.
rspace[index][1] = values[2 * qbx + 1] * fixnorm;
183 else if (type ==
"double")
186 for (
int ix = 0; ix < cont.
getNx(); ix++)
188 for (
int iy = 0; iy < cont.
getNy(); iy++)
190 for (
int iz = 0; iz < cont.
getNz(); iz++)
193 cont.
rspace[index][0] = values[qbx] * fixnorm;
194 cont.
rspace[index][1] = 0.0;
208 vector<int>
version{major, minor, sub};
210 outfile_.push(
"application");
211 string str = appName;
212 outfile_.write(str,
"code");
213 outfile_.write(
version,
"version");
221 outfile_.write(
version,
"version");
227 outfile_.push(
"creator");
228 string tmp_str =
"convertpw4qmc";
229 outfile_.write(tmp_str,
"program_name");
230 outfile_.write(
version,
"version");
236 string tmp_str =
"ES-HDF";
237 outfile_.write(tmp_str,
"format");
242 const string appName =
"qbox";
244 string desString = description.
getValue();
245 int versionStart = desString.find(
"qbox-");
247 string versionStr = desString.substr(versionStart);
249 const int firstDotIdx = versionStr.find_first_of(
'.');
250 const int secondDotIdx = versionStr.find_last_of(
'.');
251 const int major = stoi(versionStr.substr(0, firstDotIdx));
252 const int minor = stoi(versionStr.substr(firstDotIdx + 1, secondDotIdx - firstDotIdx - 1));
253 const int sub = stoi(versionStr.substr(secondDotIdx + 1));
255 writeApplication(appName, major, minor, sub);
263 stringstream numerals;
265 for (
int i = 0; i < str.size(); ++i)
267 string blah = str.substr(i, 1);
268 if (stringstream(blah) >> temp)
281 const string appName =
"espresso";
283 const string versionStr = creatorNode.
getAttribute(
"VERSION");
286 const int firstDotIdx = versionStr.find_first_of(
'.');
287 const int secondDotIdx = versionStr.find_last_of(
'.');
288 const int major = getIntsOnly(versionStr.substr(0, firstDotIdx));
289 if (firstDotIdx == secondDotIdx)
291 minor = getIntsOnly(versionStr.substr(firstDotIdx + 1));
295 minor = getIntsOnly(versionStr.substr(firstDotIdx + 1, secondDotIdx - firstDotIdx - 1));
296 sub = getIntsOnly(versionStr.substr(secondDotIdx + 1));
298 writeApplication(appName, major, minor, sub);
317 ptvs.push_back(temp);
321 array<int, 2>
dims{3, 3};
322 outfile_.push(
"supercell");
323 outfile_.writeSlabReshaped(ptvs,
dims,
"primitive_vectors");
342 ptvs.push_back(temp);
346 array<int, 2>
dims{3, 3};
347 outfile_.push(
"supercell");
348 outfile_.writeSlabReshaped(ptvs,
dims,
"primitive_vectors");
357 outfile_.push(
"atoms");
359 map<string, int> species_name_to_int;
372 species_name_to_int[sp_name] = species_num;
377 gname <<
"species_" << species_num;
378 outfile_.push(gname.str());
379 outfile_.write(sp_name,
"name");
380 outfile_.write(mass,
"mass");
385 outfile_.write(species_num,
"number_of_species");
387 const XmlNode& atomic_positions_xml =
390 std::vector<int> species_ids;
391 std::vector<double> positions;
398 species_ids.push_back(species_name_to_int[at_node_xml.
getAttribute(
"name")]);
403 array<int, 2>
dims{at_num, 3};
404 outfile_.writeSlabReshaped(positions,
dims,
"positions");
405 outfile_.write(species_ids,
"species_ids");
406 outfile_.write(at_num,
"number_of_atoms");
417 outfile_.push(
"atoms");
419 map<string, int> SpeciesNameToInt;
431 SpeciesNameToInt[spName] = speciesNum;
442 gname <<
"species_" << speciesNum;
443 outfile_.push(gname.str());
444 outfile_.write(atomic_number,
"atomic_number");
445 outfile_.write(mass,
"mass");
446 outfile_.write(val_charge,
"valence_charge");
447 outfile_.write(name,
"name");
448 string tmp_str =
"unknown";
449 outfile_.write(tmp_str,
"pseudopotential");
454 outfile_.write(speciesNum,
"number_of_species");
457 std::vector<int> species_ids;
458 std::vector<double> positions;
465 species_ids.push_back(SpeciesNameToInt[atNode.
getAttribute(
"species")]);
470 array<int, 2>
dims{at_num, 3};
471 outfile_.writeSlabReshaped(positions,
dims,
"positions");
472 outfile_.write(species_ids,
"species_ids");
473 outfile_.write(at_num,
"number_of_atoms");
480 bool result = file.
open(fname);
483 cout <<
"could not find " << fname <<
", make sure espresso is" << endl;
484 cout <<
"compiled with hdf support and you do not explicitly set" << endl;
485 cout <<
"wf_collect=.false. in your input" << endl;
510 const string dens_fname = dir_name +
"charge-density.hdf5";
511 hdf_archive densfile = openHdfFileForRead(dens_fname);
513 vector<int> readDims;
514 densfile.
getShape<
int>(
"MillerIndices", readDims);
516 array<int, 2> shape{readDims[0], readDims[1]};
520 densfile.
read(dens,
"rhotot_g");
522 vector<double> diffdens;
525 densfile.
read(diffdens,
"rhodiff_g");
529 outfile_.push(
"density");
530 array<int, 2>
dims{num_dens_gvecs, 3};
531 outfile_.writeSlabReshaped(gvecs,
dims,
"gvectors");
533 vector<int> grid{nr1, nr2, nr3};
534 outfile_.write(grid,
"mesh");
535 outfile_.write(num_dens_gvecs,
"number_of_gvectors");
537 array<int, 2> dims_dens{num_dens_gvecs, 2};
540 outfile_.push(
"spin_0");
541 outfile_.writeSlabReshaped(dens, dims_dens,
"density_g");
547 vector<double> working(2 * num_dens_gvecs);
548 for (
int i = 0; i < num_dens_gvecs * 2; i++)
550 working[i] = (dens[i] + diffdens[i]) / 2.0;
552 outfile_.push(
"spin_0");
553 outfile_.writeSlabReshaped(working, dims_dens,
"density_g");
557 for (
int i = 0; i < num_dens_gvecs * 2; i++)
559 working[i] = (dens[i] - diffdens[i]) / 2.0;
561 outfile_.push(
"spin_1");
562 outfile_.writeSlabReshaped(working, dims_dens,
"density_g");
569 const vector<double>& ptvs,
570 vector<vector<double>>& eigenvals,
571 vector<vector<double>>& occupations,
572 vector<KPoint>& kpts,
573 vector<double>& weights,
579 if (child_xml.
getName() ==
"ks_energies")
583 vector<double> kpt_vec;
591 kpt.
kx = kpt_vec[0] * ptvs[0] + kpt_vec[1] * ptvs[1] + kpt_vec[2] * ptvs[2];
592 kpt.
ky = kpt_vec[0] * ptvs[3] + kpt_vec[1] * ptvs[4] + kpt_vec[2] * ptvs[5];
593 kpt.
kz = kpt_vec[0] * ptvs[6] + kpt_vec[1] * ptvs[7] + kpt_vec[2] * ptvs[8];
599 eigenvals.push_back(eigs);
600 occupations.push_back(occs);
602 weights.push_back(weight);
603 ngvecs.push_back(ngvec);
609 vector<double>& weights,
618 double nup_flt = 0.0;
619 double ndn_flt = 0.0;
621 for (
int i = 0; i < weights.size(); i++)
626 for (
int j = 0; j < occupations[i].size(); j++)
628 sum += occupations[i][j];
630 nup_flt += sum * weights[i];
633 else if (spinpol == 0)
636 for (
int j = 0; j < occupations[i].size(); j++)
638 sum += occupations[i][j];
640 nup_flt += sum * weights[i] / 2.0;
641 ndn_flt += sum * weights[i] / 2.0;
647 for (
int j = 0; j < occupations[i].size() / 2; j++)
649 sum_up += occupations[i][j];
650 sum_dn += occupations[i][j + occupations[i].size() / 2];
652 nup_flt += sum_up * weights[i];
653 ndn_flt += sum_dn * weights[i];
656 nup =
static_cast<int>(round(nup_flt));
657 ndn =
static_cast<int>(round(ndn_flt));
668 const double det = rlv[0] * (rlv[4] * rlv[8] - rlv[5] * rlv[7]) - rlv[1] * (rlv[3] * rlv[8] - rlv[5] * rlv[6]) +
669 rlv[2] * (rlv[3] * rlv[7] - rlv[4] * rlv[6]);
670 const double invdet = 1.0 /
det;
672 ptv.push_back(invdet * (rlv[4] * rlv[8] - rlv[5] * rlv[7]));
673 ptv.push_back(invdet * (rlv[5] * rlv[6] - rlv[3] * rlv[8]));
674 ptv.push_back(invdet * (rlv[3] * rlv[7] - rlv[4] * rlv[6]));
675 ptv.push_back(invdet * (rlv[2] * rlv[7] - rlv[1] * rlv[8]));
676 ptv.push_back(invdet * (rlv[0] * rlv[8] - rlv[2] * rlv[6]));
677 ptv.push_back(invdet * (rlv[1] * rlv[6] - rlv[0] * rlv[7]));
678 ptv.push_back(invdet * (rlv[1] * rlv[5] - rlv[2] * rlv[4]));
679 ptv.push_back(invdet * (rlv[2] * rlv[3] - rlv[0] * rlv[5]));
680 ptv.push_back(invdet * (rlv[0] * rlv[4] - rlv[1] * rlv[3]));
690 ss << dir_name <<
"wfcup" << (kpt_num + 1) <<
".hdf5";
692 ss << dir_name <<
"wfc" << (kpt_num + 1) <<
".hdf5";
695 vector<int> readShape;
696 wfc_file.
getShape<
int>(
"MillerIndices", readShape);
698 array<int, 2> shape{readShape[0], readShape[1]};
702 for (
int i = 0; i < readShape[0]; i++)
705 for (
int d = 0; d < readShape[1]; d++)
706 gv.push_back(gvecs[i * readShape[1] + d]);
707 mopair_t p(gv, std::complex<double>(0, 0));
714 const std::string& dir_name,
716 const std::vector<double>& eigenvalues,
723 ss <<
"kpoint_" << kpt_num;
724 outfile_.push(ss.str());
725 outfile_.write(weight,
"weight");
727 vector<double> kpt_vector{kpt.
kx, kpt.
ky, kpt.
kz};
728 outfile_.write(kpt_vector,
"reduced_k");
737 ss << dir_name <<
"wfcup" << (kpt_num + 1) <<
".hdf5";
743 ss << dir_name <<
"wfc" << (kpt_num + 1) <<
".hdf5";
747 vector<int> readShape;
748 wfc_file.
getShape<
int>(
"MillerIndices", readShape);
750 array<int, 2> shape{readShape[0], readShape[1]};
754 vector<vector<int>> gvs;
755 for (
int i = 0; i < readShape[0]; i++)
758 for (
int d = 0; d < readShape[1]; d++)
759 g.push_back(gvecs[i * readShape[1] + d]);
770 ss0 << dir_name <<
"wfcup" << (kpt_num + 1) <<
".hdf5";
771 spin_0_file.
open(ss0.str());
773 ss1 << dir_name <<
"wfcdw" << (kpt_num + 1) <<
".hdf5";
774 spin_1_file.
open(ss1.str());
779 ss0 << dir_name <<
"wfc" << (kpt_num + 1) <<
".hdf5";
780 spin_0_file.
open(ss0.str());
784 vector<double> upcoefs;
785 vector<double> dncoefs;
790 upcoefs.resize(ng * 2);
793 upcoefs.resize(ng * 4);
794 dncoefs.resize(ng * 2);
799 upcoefs.resize(ng * 2);
800 dncoefs.resize(ng * 2);
803 vector<momap_t> states_up;
804 vector<momap_t> states_dn;
805 int states_to_loop = eigenvalues.size();
808 for (
int state = 0; state < states_to_loop; state++)
811 for (
int i = 0; i < upcoefs.size(); i++)
813 for (
int i = 0; i < dncoefs.size(); i++)
817 array<int, 2> read_from{state, -1};
833 for (
int i = 0; i < ng; i++)
835 complex<double> c(upcoefs[i * 2], upcoefs[i * 2 + 1]);
840 moup.insert(moref.begin(), moref.end());
841 states_up.push_back(moup);
846 for (
int i = 0; i < ng * 2; i++)
847 dncoefs[i] = upcoefs[i + 2 * ng];
849 for (
int i = 0; i < ng; i++)
851 complex<double> c(upcoefs[i * 2], upcoefs[i * 2 + 1]);
854 c = complex<double>(dncoefs[i * 2], dncoefs[i * 2 + 1]);
859 moup.insert(moref.begin(), moref.end());
860 modn.insert(moref.begin(), moref.end());
861 states_up.push_back(moup);
862 states_dn.push_back(modn);
868 for (
int i = 0; i < ng; i++)
870 complex<double> c(upcoefs[i * 2], upcoefs[i * 2 + 1]);
873 c = complex<double>(dncoefs[i * 2], dncoefs[i * 2 + 1]);
877 moup.insert(moref.begin(), moref.end());
878 modn.insert(moref.begin(), moref.end());
879 states_up.push_back(moup);
880 states_dn.push_back(modn);
890 int nallgvs = moref.size();
891 int dim = moref.begin()->first.size();
892 array<int, 2> shape{nallgvs, dim};
893 for (
auto& v : moref)
895 for (
int d = 0; d < dim; d++)
896 allgvs.push_back(v.first[d]);
898 outfile_.writeSlabReshaped(allgvs, shape,
"gvectors");
899 outfile_.write(nallgvs,
"number_of_gvectors");
902 for (
int state = 0; state < states_up.size(); state++)
905 ss <<
"state_" << state;
906 outfile_.push(
"spin_0");
907 outfile_.push(ss.str());
909 for (
auto& v : states_up[state])
911 c.push_back(v.second.real());
912 c.push_back(v.second.imag());
914 array<int, 2>
dims{
static_cast<int>(states_up[state].size()), 2};
915 outfile_.writeSlabReshaped(c,
dims,
"psi_g");
918 if (noncol == 1 || spinpol == 1)
920 outfile_.push(
"spin_1");
921 outfile_.push(ss.str());
923 for (
auto& v : states_dn[state])
925 c.push_back(v.second.real());
926 c.push_back(v.second.imag());
928 array<int, 2>
dims{
static_cast<int>(states_dn[state].size()), 2};
929 outfile_.writeSlabReshaped(c,
dims,
"psi_g");
936 vector<double> eigval = eigenvalues;
939 outfile_.push(
"spin_0");
940 int int_eig_sz =
static_cast<int>(eigenvalues.size());
941 outfile_.write(int_eig_sz,
"number_of_states");
942 outfile_.write(eigval,
"eigenvalues");
946 outfile_.push(
"spin_1");
947 outfile_.write(int_eig_sz,
"number_of_states");
948 outfile_.write(eigval,
"eigenvalues");
954 int totstates = eigenvalues.size();
955 int upstates = totstates / 2;
956 int dnstates = totstates / 2;
958 vector<double> upeig;
959 vector<double> dneig;
960 for (
int i = 0; i < upstates; i++)
962 upeig.push_back(eigenvalues[i]);
963 dneig.push_back(eigenvalues[i + upstates]);
966 outfile_.push(
"spin_0");
967 outfile_.write(upstates,
"number_of_states");
968 outfile_.write(upeig,
"eigenvalues");
971 outfile_.push(
"spin_1");
972 outfile_.write(dnstates,
"number_of_states");
973 outfile_.write(dneig,
"eigenvalues");
983 outfile_.push(
"electrons");
989 const XmlNode& band_structure_xml = output_xml.
getChild(
"band_structure");
992 string lsda_string_bool = lsda_xml.
getValue();
994 string noncolin_string_bool = noncolin_xml.
getValue();
995 if (lsda_string_bool ==
"true")
997 if (noncolin_string_bool ==
"true")
1001 handleDensity(qeXml, dir_name, spinpol);
1004 vector<double> ptv = getPtvs(qeXml);
1005 vector<vector<double>> eigenvals;
1006 vector<vector<double>> occupations;
1007 vector<KPoint> kpts;
1008 vector<double> weights;
1010 processKPts(band_structure_xml, ptv, eigenvals, occupations, kpts, weights, ngvecs);
1013 int int_kpt_sz =
static_cast<int>(kpts.size());
1014 outfile_.write(int_kpt_sz,
"number_of_kpoints");
1015 outfile_.write(noncol,
"has_spinors");
1022 outfile_.write(nspins,
"number_of_spins");
1028 getNumElectrons(occupations, weights, nup, ndn, spinpol, noncol);
1030 nels.push_back(nup);
1031 nels.push_back(ndn);
1032 outfile_.write(nels,
"number_of_electrons");
1036 for (
int i = 0; i < kpts.size(); i++)
1037 readKptGvecs(i, dir_name, spinpol, moref);
1039 for (
int i = 0; i < kpts.size(); i++)
1040 handleKpt(i, dir_name, kpts[i], eigenvals[i], weights[i], spinpol, noncol, moref);
1058 vector<KPoint> kpts;
1059 map<KPoint, const XmlNode*> kptToUpNode;
1060 map<KPoint, const XmlNode*> kptToDnNode;
1086 for (
int j = 0; j < kpts.size(); j++)
1095 kpts.push_back(kpt);
1098 if (species ==
"up")
1100 kptToUpNode[kpt] = std::addressof(sdNode);
1104 kptToDnNode[kpt] = std::addressof(sdNode);
1108 outfile_.push(
"electrons");
1109 if (kpts.size() > 1)
1111 std::cout <<
"Warning: Due to limitations of the current tool, extreme care" << std::endl;
1112 std::cout <<
"is required if tiling to a supercell from qbox calculations with" << std::endl;
1113 std::cout <<
"multiple k-points. Specifically spo eigenvalues are not properly" << std::endl;
1114 std::cout <<
"included, so improper choice of orbitals may result." << std::endl;
1116 const int int_kpts_sz =
static_cast<int>(kpts.size());
1117 outfile_.write(int_kpts_sz,
"number_of_kpoints");
1118 outfile_.write(nspin,
"number_of_spins");
1120 double avgNup = 0.0;
1121 double avgNdn = 0.0;
1123 for (
int i = 0; i < kpts.size(); i++)
1125 stringstream kptElemName;
1126 kptElemName <<
"kpoint_" << i;
1127 outfile_.push(kptElemName.str());
1129 vector<double> kvector;
1130 kvector.push_back(kpts[i].kx);
1131 kvector.push_back(kpts[i].ky);
1132 kvector.push_back(kpts[i].kz);
1135 outfile_.write(kvector,
"reduced_k");
1136 const double dbl_weight = 1.0 /
static_cast<double>(kpts.size());
1137 outfile_.write(dbl_weight,
"weight");
1143 vector<int> gvectors;
1144 for (
int ix = 0; ix < nx; ix++)
1146 for (
int iy = 0; iy < ny; iy++)
1148 for (
int iz = 0; iz < nz; iz++)
1150 gvectors.push_back(wrapped(ix, nx));
1151 gvectors.push_back(wrapped(iy, ny));
1152 gvectors.push_back(wrapped(iz, nz));
1157 array<int, 2>
dims{nx * ny * nz, 3};
1158 outfile_.writeSlabReshaped(gvectors,
dims,
"gvectors");
1159 const int int_tot_num = nx * ny * nz;
1160 outfile_.write(int_tot_num,
"number_of_gvectors");
1171 outfile_.push(
"spin_0");
1172 const XmlNode* upnd = kptToUpNode[kpts[i]];
1173 handleSpinGroup(upnd, nup, fftCont);
1178 outfile_.push(
"spin_1");
1179 const XmlNode* dnnd = kptToDnNode[kpts[i]];
1180 handleSpinGroup(dnnd, ndn, fftCont);
1188 avgNup += nup /
static_cast<double>(kpts.size());
1189 avgNdn += ndn /
static_cast<double>(kpts.size());
1193 nels.push_back(static_cast<int>(
std::floor(avgNup + 0.1)));
1194 nels.push_back(static_cast<int>(
std::floor(avgNdn + 0.1)));
1195 outfile_.write(nels,
"number_of_electrons");
double getOccupation(const XmlNode *nd) const
bool open(const std::filesystem::path &fname, unsigned flags=H5F_ACC_RDWR)
open a file
bool operator==(const KPoint &kp) const
helper functions for EinsplineSetBuilder
Tensor< T, D >::Type_t det(const Tensor< T, D > &a)
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
void processKPts(const XmlNode &band_structure_xml, const std::vector< double > &ptvs, std::vector< std::vector< double >> &eigenvals, std::vector< std::vector< double >> &occupations, std::vector< KPoint > &kpts, std::vector< double > &weights, std::vector< int > &ngvecs)
void handleDensity(const XmlNode &qeXml, const std::string &dir_name, int spinpol)
void close()
close all the open groups and file
std::vector< double > getPtvs(const XmlNode &qeXml)
int getIntsOnly(const std::string &str) const
void readKptGvecs(int kpt_num, const std::string &dir_name, int spinpol, momap_t &morefmap)
void readSlabReshaped(T &data, const std::array< IT, RANK > &shape, const std::string &aname)
read file dataset with a specific shape into a container and check status
qmcplusplus::hdf_archive openHdfFileForRead(const std::string &fname)
std::string getName() const
void readSlabSelection(T &data, const std::array< IT, RANK > &readSpec, const std::string &aname)
read a portion of the data from the group aname and check status runtime error is issued on I/O error...
bool getShape(const std::string &aname, std::vector< int > &sizes_out)
read the shape of multidimensional filespace from the group aname this function can be used to query ...
void fixKsNorm(double factor)
bool operator<(const KPoint &kp) const
void getValue(T &result) const
void handleSpinGroup(const XmlNode *nd, double &nocc, FftContainer &cont)
std::map< std::vector< int >, std::complex< double > > momap_t
void writeQEElectrons(const XmlNode &qeXml, const std::string &dir_name)
void writeQEAtoms(const XmlNode &qeXml)
void readInEigFcn(const XmlNode &nd, FftContainer &cont)
KPoint(double x, double y, double z)
void handleKpt(int kpt_num, const std::string &dir_name, KPoint &kpt, const std::vector< double > &eigenvalues, double weight, int spinpol, int noncol, const momap_t &moref)
KPoint & operator=(const KPoint &kp)
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
void writeQboxBoilerPlate(const XmlNode &qboxSample)
int getQboxIndex(int x, int y, int z) const
void getNumElectrons(std::vector< std::vector< double >> &occupations, std::vector< double > &weights, int &nup, int &ndn, int spinpol, int ncol)
void writeQEBoilerPlate(const XmlNode &qeXml)
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 ...
EshdfFile(const EshdfFile &f)
XmlNode & getChild(const std::string &name)
void writeApplication(const std::string &appName, int major, int minor, int sub)
int wrapped(int i, int size) const
std::pair< std::vector< int >, std::complex< double > > mopair_t
int getNumChildren() const
void writeQboxElectrons(const XmlNode &qboxSample)
int getAttributeIndex(const std::string &name, int strict=0) const
void writeQboxAtoms(const XmlNode &qboxSample)
void getAttribute(const std::string &name, T &result) const
void writeQESupercell(const XmlNode &qeXml)
void writeQboxSupercell(const XmlNode &qboxSample)
MakeReturn< UnaryNode< FnFloor, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t floor(const Vector< T1, C1 > &l)