mirror of https://github.com/QMCPACK/qmcpack.git
Fix fast force bug. Improper inititalization of wrapper in QMCHamiltonian
This commit is contained in:
parent
0463182966
commit
a892addd8d
|
@ -1131,6 +1131,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF
|
||||||
if (!psi_wrapper_.isInitialized())
|
if (!psi_wrapper_.isInitialized())
|
||||||
{
|
{
|
||||||
psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_);
|
psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_);
|
||||||
|
psi_wrapper_.finalizeConstruction();
|
||||||
}
|
}
|
||||||
P.update();
|
P.update();
|
||||||
//resize everything;
|
//resize everything;
|
||||||
|
|
|
@ -40,7 +40,7 @@ public:
|
||||||
using ValueVector = SPOSet::ValueVector;
|
using ValueVector = SPOSet::ValueVector;
|
||||||
using GradVector = SPOSet::GradVector;
|
using GradVector = SPOSet::GradVector;
|
||||||
|
|
||||||
inline TWFFastDerivWrapper():is_initialized(false){};
|
inline TWFFastDerivWrapper():is_initialized_(false){};
|
||||||
/** @brief Add a particle group.
|
/** @brief Add a particle group.
|
||||||
*
|
*
|
||||||
* Here, a "group" corresponds to a subset of particles which are antisymmetric with
|
* Here, a "group" corresponds to a subset of particles which are antisymmetric with
|
||||||
|
@ -60,6 +60,13 @@ public:
|
||||||
jastrow_list_.push_back(j);
|
jastrow_list_.push_back(j);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//This function gets called after all the Jastrow and SPOSet objects have been registered.
|
||||||
|
//Not pretty, but plays nicest with the fact that TrialWavefunction handles the construction
|
||||||
|
//of the wrapper.
|
||||||
|
inline void finalizeConstruction()
|
||||||
|
{
|
||||||
|
is_initialized_=true;
|
||||||
|
}
|
||||||
/** @brief Takes particle set groupID and returns the TWF internal index for it.
|
/** @brief Takes particle set groupID and returns the TWF internal index for it.
|
||||||
*
|
*
|
||||||
* ParticleSet groups can be registered in whichever order. However, the internal indexing
|
* ParticleSet groups can be registered in whichever order. However, the internal indexing
|
||||||
|
@ -86,7 +93,7 @@ public:
|
||||||
inline IndexType numGroups() const { return spos_.size(); };
|
inline IndexType numGroups() const { return spos_.size(); };
|
||||||
SPOSet* getSPOSet(const IndexType sid) const { return spos_[sid]; };
|
SPOSet* getSPOSet(const IndexType sid) const { return spos_[sid]; };
|
||||||
inline IndexType numOrbitals(const IndexType sid) const { return spos_[sid]->size(); };
|
inline IndexType numOrbitals(const IndexType sid) const { return spos_[sid]->size(); };
|
||||||
inline bool isInitialized(){return is_initialized;};
|
inline bool isInitialized(){return is_initialized_;};
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -272,7 +279,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool is_initialized;
|
bool is_initialized_;
|
||||||
std::vector<SPOSet*> spos_;
|
std::vector<SPOSet*> spos_;
|
||||||
std::vector<IndexType> groups_;
|
std::vector<IndexType> groups_;
|
||||||
std::vector<ValueMatrix> psi_M_;
|
std::vector<ValueMatrix> psi_M_;
|
||||||
|
|
Loading…
Reference in New Issue