Add FermionWF in preparation with coupled simulations.

git-svn-id: https://subversion.assembla.com/svn/qmcdev/trunk@5949 e5b18d87-469d-4833-9cc0-8cdfa06e9491
This commit is contained in:
Jeongnim Kim 2013-08-30 17:06:57 +00:00
parent fc577cda9e
commit fe3f0968fb
4 changed files with 26 additions and 11 deletions

View File

@ -71,7 +71,7 @@ EinsplineSetBuilder::CheckLattice()
for (int j=0; j<OHMMS_DIM; j++)
diff+=std::abs(SuperLattice(i,j) - TargetPtcl.Lattice.R(i,j));
if(diff>MatchingTol)
if(diff>MatchingTol*10.)
{
ostringstream o;
o.setf(std::ios::scientific, std::ios::floatfield);

View File

@ -126,6 +126,7 @@ bool SlaterDetBuilder::put(xmlNodePtr cur)
abort();
}
spomap[spo_name] = spo;
spo->objectName=spo_name;
assert(spomap.find(spo_name) != spomap.end());
// slaterdet_0->add(spo,spo_name);
}
@ -323,12 +324,12 @@ bool SlaterDetBuilder::put(xmlNodePtr cur)
if(multiDet)
{
if(FastMSD)
targetPsi.addOrbital(multislaterdetfast_0,"MultiSlaterDeterminantFast");
targetPsi.addOrbital(multislaterdetfast_0,"MultiSlaterDeterminantFast",true);
else
targetPsi.addOrbital(multislaterdet_0,"MultiSlaterDeterminant");
targetPsi.addOrbital(multislaterdet_0,"MultiSlaterDeterminant",true);
}
else
targetPsi.addOrbital(slaterdet_0,"SlaterDet");
targetPsi.addOrbital(slaterdet_0,"SlaterDet",true);
delete myBasisSetFactory;
myBasisSetFactory=0;
return success;

View File

@ -22,7 +22,7 @@ namespace qmcplusplus
TrialWaveFunction::TrialWaveFunction(Communicate* c)
: MPIObjectBase(c)
, Ordered(true), NumPtcls(0), TotalDim(0), BufferCursor(0)
, PhaseValue(0.0),LogValue(0.0),OneOverM(1.0), PhaseDiff(0.0)
, PhaseValue(0.0),LogValue(0.0),OneOverM(1.0), PhaseDiff(0.0), FermionWF(0)
{
ClassName="TrialWaveFunction";
myName="psi0";
@ -73,13 +73,20 @@ void TrialWaveFunction::stopOptimization()
}
/** add an ObritalBase
*@param aterm a many-body wavefunction
*/
* @param aterm an OrbitalBase
* @param aname name of aterm
* @param fermion if true, set aterm to FermionWF
*/
void
//TrialWaveFunction::addOrbital(OrbitalBase* aterm)
TrialWaveFunction::addOrbital(OrbitalBase* aterm, const string& aname)
TrialWaveFunction::addOrbital(OrbitalBase* aterm, const string& aname, bool fermion)
{
Z.push_back(aterm);
if(fermion)
{
app_log() << " FermionWF=" << aname << endl;
FermionWF=dynamic_cast<FermionBase*>(aterm);
}
#if defined(QMC_CUDA)
char name1[64],name2[64],name3[64],name4[64], name5[64], name6[64];
sprintf(name1,"WaveFunction::%s_V",aname.c_str());

View File

@ -21,6 +21,7 @@
#include "Message/MPIObjectBase.h"
#include "QMCWaveFunctions/OrbitalBase.h"
#include "QMCWaveFunctions/FermionBase.h"
#include "QMCWaveFunctions/DiffOrbitalBase.h"
#include "Utilities/NewTimer.h"
/**@defgroup MBWfs Many-body wave function group
@ -170,7 +171,7 @@ public:
///Add an OrbitalBase
//void addOrbital(OrbitalBase* aterm);
void addOrbital(OrbitalBase* aterm, const string& aname);
void addOrbital(OrbitalBase* aterm, const string& aname, bool fermion=false);
///read from xmlNode
bool put(xmlNodePtr cur);
@ -324,7 +325,10 @@ public:
//OneOverM = 1.0/mass;
}
FermionBase* getFermionWF()
{
return FermionWF;
}
private:
@ -357,6 +361,9 @@ private:
///a list of OrbitalBases constituting many-body wave functions
vector<OrbitalBase*> Z;
///fermionic wavefunction
FermionBase* FermionWF;
///differential gradients
ParticleSet::ParticleGradient_t delta_G;