31 if (stream.fail() || stream.bad())
42 xmlNodePtr kids = cur->xmlChildrenNode;
45 std::string symm1_opt, symm2_opt, id1_opt, id2_opt, spin1_opt(
"no"), spin2_opt(
"no");
46 std::vector<RealType> oneBodyCoefs, twoBodyCoefs;
54 std::string kidsname = (
char*)kids->name;
55 std::vector<RealType>* coefs(NULL);
56 std::string* id_opt(NULL);
57 if (kidsname ==
"correlation")
61 attrib.
add(type_opt,
"type");
63 if (type_opt ==
"One-Body")
65 attrib.
add(symm1_opt,
"symmetry");
66 attrib.
add(kc1,
"kc");
67 attrib.
add(spin1_opt,
"spinDependent");
68 coefs = &oneBodyCoefs;
71 else if (type_opt ==
"Two-Body")
73 attrib.
add(symm2_opt,
"symmetry");
74 attrib.
add(kc2,
"kc");
75 attrib.
add(spin2_opt,
"spinDependent");
76 coefs = &twoBodyCoefs;
80 app_warning() <<
" Unrecognized kSpace type \"" << type_opt
81 <<
"\" in kSpaceJastrowBuilder::put(xmlNotPtr cur).\n";
86 xmlNodePtr xmlCoefs = kids->xmlChildrenNode;
87 while (xmlCoefs != NULL)
89 std::string cname((
const char*)xmlCoefs->name);
90 if (cname ==
"coefficients")
92 std::string type(
"0"), id(
"0");
94 cAttrib.
add(*id_opt,
"id");
95 cAttrib.
add(type,
"type");
96 cAttrib.
put(xmlCoefs);
99 app_error() <<
"Unknown coefficients type " 103 " in kSpaceJastrowBuilder.\n" 107 xmlNewProp(xmlCoefs, (
const xmlChar*)
"type", (
const xmlChar*)
"Array");
111 app_log() <<
" Read " << coefs->size() <<
" coefficients for type " << type_opt << std::endl;
113 xmlCoefs = xmlCoefs->next;
117 else if (kidsname !=
"text")
119 app_warning() <<
"Unrecognized section \"" << kidsname <<
"\" in kSpaceJastrowBuilder.\n";
124 std::map<std::string, kSpaceJastrow::SymmetryType>::iterator symm1 =
SymmMap.find(symm1_opt);
126 oneBodySymm = symm1->second;
127 std::map<std::string, kSpaceJastrow::SymmetryType>::iterator symm2 =
SymmMap.find(symm2_opt);
129 twoBodySymm = symm2->second;
130 auto jastrow = std::make_unique<kSpaceJastrow>(
sourcePtcl,
targetPtcl, oneBodySymm, kc1, id1_opt, spin1_opt ==
"yes",
131 twoBodySymm, kc2, id2_opt, spin2_opt ==
"yes");
132 jastrow->setCoefficients(oneBodyCoefs, twoBodyCoefs);
142 std::array<char, 32> fname;
148 fname_len = std::snprintf(fname.data(), fname.size(),
"Jk1.g%03d.dat", taskid);
150 fname_len = std::snprintf(fname.data(), fname.size(),
"Jk1.dat");
152 throw std::runtime_error(
"Error generating filename");
154 std::ofstream fout(std::string(fname.data(), fname_len));
155 fout <<
"# kx ky kz coeff_real coeff_imag" << std::endl;
161 fname_len = std::snprintf(fname.data(), fname.size(),
"Jk2.g%03d.dat", taskid);
163 fname_len = std::snprintf(fname.data(), fname.size(),
"Jk2.dat");
165 throw std::runtime_error(
"Error generating filename");
166 fout.open(std::string(fname.data(), fname_len));
167 fout <<
"# kx ky kz coeff_real coeff_imag" << std::endl;
std::ostream & app_warning()
helper functions for EinsplineSetBuilder
void printTwoBody(std::ostream &os)
bool put(xmlNodePtr cur)
assign attributes to the set
std::ostream & app_error()
const ParticleSet & sourcePtcl
int getGroupID() const
return the group id of the communicator
std::map< std::string, kSpaceJastrow::SymmetryType > SymmMap
ParticleSet & targetPtcl
reference to the particle set on which targetPsi is defined
bool putContent2(std::vector< T > &a, xmlNodePtr cur)
class to handle a set of attributes of an xmlNode
bool io_node
true, print out file
WaveFunctionComponent::RealType RealType
int mpi_groups
number of mpi groups
void printOneBody(std::ostream &os)
output jastrow coefficients
convert xmlNode contents into a std::string
void outputJastrow(kSpaceJastrow *jastrow)
bool is_manager() const
return true if the rank == 0
QMCState qmc_common
a unique QMCState during a run
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
std::unique_ptr< WaveFunctionComponent > buildComponent(xmlNodePtr cur) override
process a xml node at cur