QMCPACK
Hdispatcher.cpp
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2021 QMCPACK developers.
6 //
7 // File developed by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
8 //
9 // File created by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
10 //////////////////////////////////////////////////////////////////////////////////////
11 
12 
13 #include "Hdispatcher.h"
14 #include <cassert>
15 #include "QMCHamiltonian.h"
16 
17 namespace qmcplusplus
18 {
19 Hdispatcher::Hdispatcher(bool use_batch) : use_batch_(use_batch) {}
20 
21 
22 std::vector<QMCHamiltonian::FullPrecRealType> Hdispatcher::flex_evaluate(
25  const RefVectorWithLeader<ParticleSet>& p_list) const
26 {
27  assert(ham_list.size() == p_list.size());
28  if (use_batch_)
29  return QMCHamiltonian::mw_evaluate(ham_list, wf_list, p_list);
30  else
31  {
32  std::vector<FullPrecRealType> local_energies(ham_list.size());
33  for (size_t iw = 0; iw < ham_list.size(); iw++)
34  local_energies[iw] = ham_list[iw].evaluate(p_list[iw]);
35  return local_energies;
36  }
37 }
38 
39 std::vector<QMCHamiltonian::FullPrecRealType> Hdispatcher::flex_evaluateWithToperator(
42  const RefVectorWithLeader<ParticleSet>& p_list) const
43 {
44  assert(ham_list.size() == p_list.size());
45  if (use_batch_)
46  return QMCHamiltonian::mw_evaluateWithToperator(ham_list, wf_list, p_list);
47  else
48  {
49  std::vector<FullPrecRealType> local_energies(ham_list.size());
50  for (size_t iw = 0; iw < ham_list.size(); iw++)
51  local_energies[iw] = ham_list[iw].evaluateWithToperator(p_list[iw]);
52  return local_energies;
53  }
54 }
55 
58  const RefVectorWithLeader<ParticleSet>& p_list) const
59 {
60  assert(ham_list.size() == p_list.size());
61  if (use_batch_)
62  return QMCHamiltonian::mw_makeNonLocalMoves(ham_list, wf_list, p_list);
63  else
64  {
65  std::vector<int> num_accepts(ham_list.size());
66  for (size_t iw = 0; iw < ham_list.size(); iw++)
67  num_accepts[iw] = ham_list[iw].makeNonLocalMoves(p_list[iw]);
68  return num_accepts;
69  }
70 }
71 
72 } // namespace qmcplusplus
std::vector< FullPrecRealType > flex_evaluate(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list) const
Definition: Hdispatcher.cpp:22
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
static std::vector< QMCHamiltonian::FullPrecRealType > mw_evaluateWithToperator(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list)
batched version of evaluate Local energy with Toperators updated.
std::vector< FullPrecRealType > flex_evaluateWithToperator(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list) const
Definition: Hdispatcher.cpp:39
std::vector< int > flex_makeNonLocalMoves(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list) const
Definition: Hdispatcher.cpp:56
static std::vector< QMCHamiltonian::FullPrecRealType > mw_evaluate(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list)
batched version of evaluate for LocalEnergy
Hdispatcher(bool use_batch)
Definition: Hdispatcher.cpp:19
static std::vector< int > mw_makeNonLocalMoves(const RefVectorWithLeader< QMCHamiltonian > &ham_list, const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list)
void evaluate(Matrix< T, Alloc > &lhs, const Op &op, const Expression< RHS > &rhs)
Definition: OhmmsMatrix.h:514
Declaration of QMCHamiltonian.