当前位置: 首页>>代码示例>>C++>>正文


C++ ParticleSet::addPropertyHistory方法代码示例

本文整理汇总了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;
  }
开发者ID:digideskio,项目名称:qmcpack,代码行数:86,代码来源:trialDMCcorrection.cpp

示例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);
//.........这里部分代码省略.........
开发者ID:digideskio,项目名称:qmcpack,代码行数:101,代码来源:ForwardWalking.cpp


注:本文中的ParticleSet::addPropertyHistory方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。