23 using QMCT = QMCTraits;
30 const std::string
name_{
"Talker"};
41 for (
int iw = 0; iw <
walkers_; ++iw)
45 listener.report(iw,
name_, vec_part);
51 TEST_CASE(
"PerParticleHamiltonianLogger_sum",
"[estimators]")
53 std::string_view xml{R
"XML( 54 <PerParticleHamiltonianLogger to_stdout="false"/> 65 if (std::filesystem::exists(
"rank_0_per_particle_log.dat"))
66 std::filesystem::remove(
"rank_0_per_particle_log.dat");
75 for (
int ic = 0; ic < ncrowds; ++ic)
83 std::vector<OperatorEstBase::MCPWalker>
walkers;
84 for (
int iw = 0; iw < nwalkers; ++iw)
85 walkers.emplace_back(iw, iw, 2);
87 std::vector<ParticleSet> psets;
88 for (
int iw = 0; iw < nwalkers; ++iw)
90 psets.emplace_back(simulation_cell);
97 std::vector<TrialWaveFunction> wfns;
98 std::vector<QMCHamiltonian> hams;
100 auto ref_walkers = makeRefVector<OperatorEstBase::MCPWalker>(
walkers);
101 auto ref_psets = makeRefVector<ParticleSet>(psets);
102 auto ref_wfns = makeRefVector<TrialWaveFunction>(wfns);
103 auto ref_hams = makeRefVector<QMCHamiltonian>(hams);
105 std::vector<MultiWalkerTalker> multi_walker_talkers{{
"Talker1", nwalkers},
106 {
"Talker2", nwalkers},
107 {
"Talker3", nwalkers}};
108 for (
auto& crowd_oeb : crowd_loggers)
109 for (
auto& mwt : multi_walker_talkers)
113 mwt.registerVector(listener);
119 for (
auto& mwt : multi_walker_talkers)
126 for (
auto& crowd_oeb : crowd_loggers)
129 using Walker =
typename decltype(ref_walkers)::value_type::type;
131 walker.setWalkerID(walker_id++);
132 crowd_oeb->accumulate(ref_walkers, ref_psets, ref_wfns, ref_hams, rng);
136 rank_logger.
collect(crowd_loggers_refs);
139 CHECK(std::filesystem::exists(
"rank_0_per_particle_log.dat"));
class that handles xmlDoc
helper functions for EinsplineSetBuilder
QTBase::RealType RealType
if(!okay) throw std xmlNodePtr node
UPtr< OperatorEstBase > spawnCrowdClone() const override
TEST_CASE("complex_helper", "[type_traits]")
An object of this type is a listener expecting a callback to the report function with a vector of val...
std::vector< std::unique_ptr< T > > UPtrVector
static RefVector< T > convertUPtrToRefVector(const UPtrVector< T > &ptr_list)
convert a vector of std::unique_ptrs<T> to a refvector<T>
void registerVector(ListenerVector< Real > &listener_vector)
Specialized paritlce class for atomistic simulations.
REQUIRE(std::filesystem::exists(filename))
A minimally functional wrapper for the since c++11 <random>
std::vector< ListenerVector< Real > > listener_vectors_
std::vector< std::reference_wrapper< T > > RefVector
bool get_to_stdout() const
bool parseFromString(const std::string_view data)
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))
void collect(const RefVector< OperatorEstBase > &type_erased_operator_estimators) override
Reduce estimator result data from crowds to rank.
MultiWalkerTalker(const std::string &name, int walkers)
A container class to represent a walker.
void startBlock(int steps) override