本文整理汇总了C++中ParticleSet::addPropertyHistory方法的典型用法代码示例。如果您正苦于以下问题:C++ ParticleSet::addPropertyHistory方法的具体用法?C++ ParticleSet::addPropertyHistory怎么用?C++ ParticleSet::addPropertyHistory使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParticleSet
的用法示例。
在下文中一共展示了ParticleSet::addPropertyHistory方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: putSpecial
bool TrialDMCCorrection::putSpecial(xmlNodePtr cur, QMCHamiltonian& h, ParticleSet& P )
{
FirstHamiltonian = h.startIndex();
nObservables=0;
nValues=0;
resum=100000;
int blockSeries(0);
int blockFreq(0);
OhmmsAttributeSet attrib;
attrib.add(resum,"resum");
attrib.add(blockSeries,"max");
attrib.add(blockFreq,"frequency");
attrib.put(cur);
// app_log()<<" Forward walking block size is "<< blockT<<"*Tau"<<endl;
// P.phLength=0;
bool FIRST=true;
CountIndex = P.addPropertyHistory(1);
P.PropertyHistory[CountIndex][0]=0;
xmlNodePtr tcur = cur->children;
while(tcur != NULL) {
string cname((const char*)tcur->name);
// app_log()<<cname<<endl;
if(cname == "Observable")
{
string tagName("none");
int Hindex(-100);
// int blockSeries(0);
// int blockFreq(0);
OhmmsAttributeSet Tattrib;
Tattrib.add(tagName,"name");
// Tattrib.add(blockSeries,"max");
// Tattrib.add(blockFreq,"frequency");
Tattrib.put(tcur);
int numProps = P.PropertyList.Names.size();
// Hindex = P.PropertyList.add(tagName);
Hindex = h.getObservable(tagName)+NUMPROPERTIES;
if(tagName=="LocalPotential") {
Hindex=LOCALPOTENTIAL ;
tagName="LocPot";
} else if (Hindex==(NUMPROPERTIES-1)){
app_log()<<"Not a valid H element("<<Hindex<<") Valid names are:";
for (int jk=0;jk<h.sizeOfObservables();jk++) app_log()<<" "<<h.getObservableName(jk);
app_log()<<endl;
exit(-1);
}
/*
if ((Hindex==-100)){
app_log()<<" Hamiltonian Element "<<tagName<<" does not exist!! "<<Hindex<<endl;
assert(Hindex>=0);
}*/
Names.push_back(tagName);
Hindices.push_back( Hindex);
app_log()<<" Hamiltonian Element "<<tagName<<" was found at "<< Hindex<<endl;
int numT=blockSeries/blockFreq ;
nObservables+=1;
nValues+=numT;
app_log()<<" "<<numT<<" values will be calculated every "<<blockFreq<<"*tau H^-1"<<endl;
vector<int> pms(3);
pms[0]=blockFreq;
pms[1]=numT;
pms[2]=blockSeries+2;
walkerLengths.push_back(pms);
int maxWsize=blockSeries+2;
int pindx = P.addPropertyHistory(maxWsize);
// summed values.
P.addPropertyHistory(numT);
// number of times accumulated. For resum
Pindices.push_back(pindx);
// app_log()<<"pindex "<<pindx<<endl;
}
tcur = tcur->next;
}
app_log()<<"Total number of observables calculated:"<<nObservables<<endl;
app_log()<<"Total number of values calculated:"<<nValues<<endl;
Values.resize(nValues,0.0);
EValues.resize(nValues,0.0);
FWValues.resize(nValues,0.0);
return true;
}
示例2: putSpecial
bool ForwardWalking::putSpecial(xmlNodePtr cur, QMCHamiltonian& h, ParticleSet& P)
{
FirstHamiltonian = h.startIndex();
nObservables=0;
nValues=0;
blockT=1;
// OhmmsAttributeSet attrib;
// attrib.add(blockT,"blockSize");
// attrib.put(cur);
xmlNodePtr tcur = cur->children;
while(tcur != NULL) {
string cname((const char*)tcur->name);
if(cname == "Observable")
{
string tagName("none");
int Hindex(-100);
int blockSeries(0);
int blockFreq(0);
OhmmsAttributeSet Tattrib;
Tattrib.add(tagName,"name");
Tattrib.add(blockSeries,"max");
Tattrib.add(blockFreq,"frequency");
Tattrib.put(tcur);
if (tagName.find("*")==string::npos)
{
//Single Observable case
int numProps = P.PropertyList.Names.size();
Hindex = h.getObservable(tagName)+NUMPROPERTIES;
if(tagName=="LocalPotential") {
Hindex=LOCALPOTENTIAL ;
tagName="LocPot";
}
else if(tagName=="LocalEnergy") {
Hindex=LOCALENERGY ;
tagName="LocEn";
}
else if (Hindex==(NUMPROPERTIES-1)){
app_log()<<"Not a valid H element("<<Hindex<<") Valid names are:";
for (int jk=0;jk<h.sizeOfObservables();jk++) app_log()<<" "<<h.getObservableName(jk);
app_log()<<endl;
exit(-1);
}
Names.push_back(tagName);
Hindices.push_back( Hindex);
app_log()<<" Hamiltonian Element "<<tagName<<" was found at "<< Hindex<<endl;
int numT=blockSeries/blockFreq ;
nObservables+=1;
nValues+=numT;
app_log()<<" "<<numT<<" values will be calculated every "<<blockFreq<<"*tau H^-1"<<endl;
vector<int> pms(3);
pms[0]=blockFreq;
pms[1]=numT;
pms[2]=blockSeries+2;
walkerLengths.push_back(pms);
int maxWsize=blockSeries+2;
int pindx = P.addPropertyHistory(maxWsize);
// summed values.
// P.addPropertyHistory(numT);
Pindices.push_back(pindx);
}
else
{
bool FOUNDH(false);
// Multiple observables for this tag
int found=tagName.rfind("*");
tagName.replace (found,1,"");
int numProps = P.PropertyList.Names.size();
for(int j=0;j<h.sizeOfObservables();j++)
{
string Hname = h.getObservableName(j);
if (Hname.find(tagName) != string::npos)
{
// vector<int> Parameters;
// if(blockSeries==0)
// putContent(Parameters,tcur);
// else
// for( int pl=blockFreq;pl<=blockSeries;pl+=blockFreq) Parameters.push_back(pl);
FOUNDH=true;
app_log()<<" Hamiltonian Element "<<Hname<<" was found at "<< j<<endl;
Names.push_back(Hname);
Hindex = j+NUMPROPERTIES;
Hindices.push_back( Hindex);
int numT=blockSeries/blockFreq ;
nObservables+=1;
nValues+=numT;
app_log()<<" "<<numT<<" values will be calculated every "<<blockFreq<<"*tau H^-1"<<endl;
vector<int> pms(3);
pms[0]=blockFreq;
pms[1]=numT;
pms[2]=blockSeries+2;
walkerLengths.push_back(pms);
//.........这里部分代码省略.........