本文整理汇总了C++中MCWalkerConfiguration::create方法的典型用法代码示例。如果您正苦于以下问题:C++ MCWalkerConfiguration::create方法的具体用法?C++ MCWalkerConfiguration::create怎么用?C++ MCWalkerConfiguration::create使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MCWalkerConfiguration
的用法示例。
在下文中一共展示了MCWalkerConfiguration::create方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createESParticleSet
ParticleSet* ParticleSetPool::createESParticleSet(xmlNodePtr cur, const string& target)
{
TinyVector<int,OHMMS_DIM> tilefactor;
Tensor<int,OHMMS_DIM> tilematrix(1,0,0,0,1,0,0,0,1);
double lr_cut=10;
string h5name;
string source("i");
string bc("p p p");
OhmmsAttributeSet attribs;
attribs.add(h5name, "href");
attribs.add(tilefactor, "tile");
attribs.add(tilematrix, "tilematrix");
attribs.add(source, "source");
attribs.add(bc, "bconds");
attribs.add(lr_cut, "LR_dim_cutoff");
attribs.put(cur);
ParticleSet* ions=getParticleSet(source);
if(ions==0)
{
ions=new MCWalkerConfiguration;
ions->setName(source);
}
//set the boundary condition
ions->Lattice.LR_dim_cutoff=lr_cut;
std::istringstream is(bc);
char c;
int idim=0;
while(!is.eof() && idim<OHMMS_DIM)
{
if(is>>c) ions->Lattice.BoxBConds[idim++]=(c=='p');
}
//initialize ions from hdf5
hid_t h5=-1;
if(myComm->rank()==0)
h5 = H5Fopen(h5name.c_str(),H5F_ACC_RDONLY,H5P_DEFAULT);
ESHDFIonsParser ap(*ions,h5,myComm);
ap.put(cur);
ap.expand(tilematrix);
if(h5>-1) H5Fclose(h5);
//failed to initialize the ions
if(ions->getTotalNum() == 0) return 0;
typedef ParticleSet::SingleParticleIndex_t SingleParticleIndex_t;
vector<SingleParticleIndex_t> grid(OHMMS_DIM,SingleParticleIndex_t(1));
ions->Lattice.reset();
ions->Lattice.makeGrid(grid);
if(SimulationCell==0)
{
SimulationCell = new ParticleSet::ParticleLayout_t(ions->Lattice);
}
//create the electrons
MCWalkerConfiguration* qp = new MCWalkerConfiguration;
qp->setName(target);
qp->Lattice.copy(ions->Lattice);
//qp->Lattice.reset();
//qp->Lattice.makeGrid(grid);
app_log() << " Simulation cell radius = " << qp->Lattice.SimulationCellRadius << endl;
app_log() << " Wigner-Seitz radius = " << qp->Lattice.WignerSeitzRadius << endl;
SimulationCell->print(app_log());
myPool[target]=qp;
myPool[source]=ions;
//addParticleSet(qp);
//addParticleSet(ions);
{//get the number of electrons per spin
vector<int> num_spin;
xmlNodePtr cur1=cur->children;
while(cur1!=NULL)
{
string cname1((const char*)cur1->name);
if(cname1 == OrbitalBuilderBase::sd_tag)
{
num_spin.clear();
xmlNodePtr cur2=cur1->children;
while(cur2!=NULL)
{
string cname2((const char*)cur2->name);
if(cname2 == OrbitalBuilderBase::det_tag)
{
int n=0;
OhmmsAttributeSet a;
a.add(n,"size");
a.put(cur2);
if(num_spin.size()<2) num_spin.push_back(n);
}
cur2=cur2->next;
}
}
cur1=cur1->next;
}
//.........这里部分代码省略.........