24 assert(wf_list.size() == p_list.size());
28 for (
size_t iw = 0; iw < wf_list.size(); iw++)
29 wf_list[iw].evaluateLog(p_list[iw]);
34 const std::vector<bool>& recompute)
const 36 assert(wf_list.size() == p_list.size());
40 for (
size_t iw = 0; iw < wf_list.size(); iw++)
42 wf_list[iw].recompute(p_list[iw]);
48 std::vector<PsiValue>& ratios,
51 assert(wf_list.size() == p_list.size());
56 const int num_wf = wf_list.size();
57 ratios.resize(num_wf);
58 for (
size_t iw = 0; iw < num_wf; iw++)
59 ratios[iw] = wf_list[iw].calcRatio(p_list[iw], iat, ct);
67 assert(wf_list.size() == p_list.size());
71 for (
size_t iw = 0; iw < wf_list.size(); iw++)
72 wf_list[iw].prepareGroup(p_list[iw], ig);
75 template<CoordsType CT>
81 assert(wf_list.size() == p_list.size());
86 const int num_wf = wf_list.size();
87 assert(grads.grads_positions.size() == wf_list.size());
88 for (
size_t iw = 0; iw < num_wf; iw++)
90 grads.grads_positions[iw] = wf_list[iw].evalGradWithSpin(p_list[iw], iat, grads.grads_spins[iw]);
92 grads.grads_positions[iw] = wf_list[iw].evalGrad(p_list[iw], iat);
96 template<CoordsType CT>
100 std::vector<PsiValue>& ratios,
103 assert(wf_list.size() == p_list.size());
108 const int num_wf = wf_list.size();
109 ratios.resize(num_wf);
110 assert(wf_list.size() == grads.grads_positions.size());
111 for (
size_t iw = 0; iw < num_wf; iw++)
114 wf_list[iw].calcRatioGradWithSpin(p_list[iw], iat, grads.grads_positions[iw], grads.grads_spins[iw]);
116 ratios[iw] = wf_list[iw].calcRatioGrad(p_list[iw], iat, grads.grads_positions[iw]);
123 const std::vector<bool>& isAccepted,
124 bool safe_to_delay)
const 126 assert(wf_list.size() == p_list.size());
130 for (
size_t iw = 0; iw < wf_list.size(); iw++)
132 wf_list[iw].acceptMove(p_list[iw], iat, safe_to_delay);
134 wf_list[iw].rejectMove(iat);
143 wf.completeUpdates();
148 bool fromscratch)
const 150 assert(wf_list.size() == p_list.size());
154 for (
size_t iw = 0; iw < wf_list.size(); iw++)
155 wf_list[iw].evaluateGL(p_list[iw], fromscratch);
160 const RefVector<std::vector<ValueType>>& ratios_list,
163 assert(wf_list.size() == vp_list.size());
164 assert(wf_list.size() == ratios_list.size());
168 for (
size_t iw = 0; iw < wf_list.size(); iw++)
169 wf_list[iw].evaluateRatios(vp_list[iw], ratios_list[iw], ct);
183 std::vector<PsiValue>& ratios,
185 template void TWFdispatcher::flex_calcRatioGrad<CoordsType::POS_SPIN>(
189 std::vector<PsiValue>& ratios,
void flex_evalGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, TWFGrads< CT > &grads) const
void flex_accept_rejectMove(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, const std::vector< bool > &isAccepted, bool safe_to_delay) const
helper functions for EinsplineSetBuilder
void flex_evaluateGL(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, bool fromscratch) const
static void mw_prepareGroup(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int ig)
batched version of prepareGroup
static void mw_calcRatioGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, TWFGrads< CT > &grads)
batched version of ratioGrad
TWFdispatcher(bool use_batch)
static void mw_accept_rejectMove(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, const std::vector< bool > &isAccepted, bool safe_to_delay=false)
void flex_evaluateLog(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list) const
void flex_prepareGroup(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int ig) const
static void mw_evaluateGL(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, bool fromscratch)
void flex_recompute(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, const std::vector< bool > &recompute) const
void flex_completeUpdates(const RefVectorWithLeader< TrialWaveFunction > &wf_list) const
static void mw_calcRatio(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, ComputeType ct=ComputeType::ALL)
batched version of calcRatio
void flex_evaluateRatios(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< const VirtualParticleSet > &vp_list, const RefVector< std::vector< ValueType >> &ratios_list, ComputeType ct) const
void flex_calcRatio(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, ComputeType ct=ComputeType::ALL) const
ComputeType
enum type for computing partial WaveFunctionComponents
static void mw_evalGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, TWFGrads< CT > &grads)
batched version of evalGrad
void flex_calcRatioGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, TWFGrads< CT > &grads) const
static void mw_completeUpdates(const RefVectorWithLeader< TrialWaveFunction > &wf_list)
Declaration of a TrialWaveFunction.
std::vector< std::reference_wrapper< T > > RefVector
static void mw_recompute(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, const std::vector< bool > &recompute)
batched version of recompute
Class to represent a many-body trial wave function.
static void mw_evaluateRatios(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< const VirtualParticleSet > &Vp_list, const RefVector< std::vector< ValueType >> &ratios_list, ComputeType ct=ComputeType::ALL)
batched version of evaluateRatios Note: unlike other mw_ static functions, *this is the batch leader ...
static void mw_evaluateLog(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list)
batched version of evaluateLog.