Debug with LiH: walker move OK; pbyp NO.

This commit is contained in:
jnkim 2017-09-22 16:06:21 -07:00
parent b2de302094
commit af30a0833c
4 changed files with 16 additions and 6 deletions

View File

@ -149,14 +149,15 @@ namespace qmcplusplus
OhmmsAttributeSet coeffAttrib;
coeffAttrib.add (algorithm, "algorithm");
coeffAttrib.put(cur);
app_log() << "Creating LCOrbitalSet with the input coefficients" << std::endl;
if(xyzBasisSet!=nullptr)
{
app_log() << "Creating LCAOrbitalSet<XYZBasisT> " << std::endl;
lcos= new LCAOrbitalSet<XYZBasisT>(xyzBasisSet,ReportLevel);
//take care of the cusp condition
}
if(ylmBasisSet!=nullptr)
{
app_log() << "Creating LCAOrbitalSet<YLMBasisT> " << std::endl;
lcos= new LCAOrbitalSet<YlmBasisT>(ylmBasisSet,ReportLevel);
//take care of the cusp condition
}

View File

@ -183,10 +183,12 @@ namespace qmcplusplus
#endif
}
/* implement using gemm algorithm */
void evaluate_notranspose(const ParticleSet& P, int first, int last,
ValueMatrix_t& logdet, GradMatrix_t& dlogdet, ValueMatrix_t& d2logdet)
{
const bool curpos=false;
const bool curpos=false; //hint that the full distance table used
//#pramga omp for nowait
for(size_t i=0, iat=first; iat<last; i++,iat++)
{
myBasisSet->evaluateVGL(P,iat,Temp,curpos);
@ -202,6 +204,12 @@ namespace qmcplusplus
dlogdet[i][j][2]=gz[j];
}
simd::copy_n(Tempv.data(4),OrbitalSetSize,d2logdet[i]);
#if 0
for(int j=0; j<OrbitalSetSize; ++j)
{
printf("%d %.6f %.6f %.6f %.6f %.6f\n",j, logdet[i][j], dlogdet[i][j][0],dlogdet[i][j][1],dlogdet[i][j][2],d2logdet[i][j]);
}
#endif
}
}

View File

@ -130,7 +130,9 @@ struct SoaLocalizedBasisSet //: public BasisSetBase<typename COT::value_type>
const value_type* restrict dist = (newp)? d_table->Temp_r.data(): d_table->Distances[iat];
const auto& displ= (newp)? d_table->Temp_dr: d_table->Displacements[iat];
for(int c=0; c<NumCenters; c++)
{
LOBasisSet[IonID[c]]->evaluateVGL(dist[c],displ[c],BasisOffset[c],vgl);
}
}
/** compute values for the iat-paricle move

View File

@ -112,7 +112,8 @@ namespace qmcplusplus
{
CONSTEXPR T cone(1);
CONSTEXPR T ctwo(2);
const T x=dr[0], y=dr[1], z=dr[2];
//SIGN Change!!
const T x=-dr[0], y=-dr[1], z=-dr[2];
Ylm.evaluateVGL(x,y,z);
const size_t nl_max=Rnl.size();
@ -156,10 +157,8 @@ namespace qmcplusplus
inline void
evaluateV(const T r, const PosType& dr, T* restrict psi) const
{
CONSTEXPR T cone(1);
CONSTEXPR T ctwo(2);
T ylm_v[Ylm.size()];
Ylm.evaluateV(dr[0],dr[1],dr[2],ylm_v);
Ylm.evaluateV(-dr[0],-dr[1],-dr[2],ylm_v);
const int nl_max=Rnl.size();
T phi_r[nl_max];