diff --git a/src/QMCWaveFunctions/EinsplineSetBuilderCommon.cpp b/src/QMCWaveFunctions/EinsplineSetBuilderCommon.cpp index a30406476..45bbeafd4 100644 --- a/src/QMCWaveFunctions/EinsplineSetBuilderCommon.cpp +++ b/src/QMCWaveFunctions/EinsplineSetBuilderCommon.cpp @@ -71,7 +71,7 @@ EinsplineSetBuilder::CheckLattice() for (int j=0; jMatchingTol) + if(diff>MatchingTol*10.) { ostringstream o; o.setf(std::ios::scientific, std::ios::floatfield); diff --git a/src/QMCWaveFunctions/Fermion/SlaterDetBuilder.cpp b/src/QMCWaveFunctions/Fermion/SlaterDetBuilder.cpp index da9402cb4..bed3707a5 100644 --- a/src/QMCWaveFunctions/Fermion/SlaterDetBuilder.cpp +++ b/src/QMCWaveFunctions/Fermion/SlaterDetBuilder.cpp @@ -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; diff --git a/src/QMCWaveFunctions/TrialWaveFunction.cpp b/src/QMCWaveFunctions/TrialWaveFunction.cpp index bb15fff85..0112a87ea 100644 --- a/src/QMCWaveFunctions/TrialWaveFunction.cpp +++ b/src/QMCWaveFunctions/TrialWaveFunction.cpp @@ -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(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()); diff --git a/src/QMCWaveFunctions/TrialWaveFunction.h b/src/QMCWaveFunctions/TrialWaveFunction.h index c24672099..7affd368c 100644 --- a/src/QMCWaveFunctions/TrialWaveFunction.h +++ b/src/QMCWaveFunctions/TrialWaveFunction.h @@ -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 Z; + ///fermionic wavefunction + FermionBase* FermionWF; + ///differential gradients ParticleSet::ParticleGradient_t delta_G;