23 my_name_ =
"PerParticleHamiltonianLogger";
41 const std::lock_guard<std::mutex> lock(
write_lock);
42 for (
auto& [component, values] : cl_values)
45 for (
int iw = 0; iw < values.size(); ++iw)
50 for (
auto& [component, values] : cl_values)
52 std::cout << component <<
'\n';
53 for (
int iw = 0; iw < values.size(); ++iw)
54 std::cout <<
" walker: " << walker_ids[iw] <<
" " <<
NativePrint(values[iw]) <<
'\n';
80 std::size_t data_size =
data_.size();
83 auto spawn = std::make_unique<PerParticleHamiltonianLogger>(*
this, spawn_data_locality);
84 spawn->get_data().resize(data_size, 0.0);
91 return [&local_values](
const int walker_index,
const std::string& name,
const Vector<Real>& inputV) {
92 if (walker_index >= local_values[name].size())
93 local_values[name].resize(walker_index + 1);
94 local_values[name][walker_index] = inputV;
std::unordered_map< std::string, std::vector< Vector< Real > >> CrowdLogValues
The operator<< functions provide output for data structures that can be used to directly initialize t...
helper functions for EinsplineSetBuilder
UPtr< OperatorEstBase > spawnCrowdClone() const override
Collection of Local Energy Operators.
An object of this type is a listener expecting a callback to the report function with a vector of val...
static void mw_registerLocalEnergyListener(QMCHamiltonian &ham_leader, ListenerVector< RealType > listener)
PerParticleHamiltonianLogger *const rank_estimator_
This wrapper is to allow us to leave the user facing operator<< for classes alone.
PerParticleHamiltonianLogger(PerParticleHamiltonianLoggerInput &&input, int rank)
DataLocality data_locality_
locality for accumulation of estimator data.
const std::string & get_name() const
ListenerVector< Real >::ReportingFunction getLogger()
return lambda function to register as listener the purpose of this function is to factor out the prod...
An abstract class for gridded estimators.
std::vector< std::reference_wrapper< T > > RefVector
std::function< void(const int walker_index, const std::string &name, const Vector< T > &values)> ReportingFunction
"Callback" function type for an operator to report a vector of values to a listener ...
bool get_to_stdout() const
DataLocality
data locality with respect to walker buffer
void collect(const RefVector< OperatorEstBase > &type_erased_operator_estimators) override
Reduce estimator result data from crowds to rank.
std::fstream rank_fstream_
void write(CrowdLogValues &values, const std::vector< long > &walkers_ids)
PerParticleHamiltonianLoggerInput input_
A container class to represent a walker.
void registerListeners(QMCHamiltonian &ham_leader) override
Register 0-many listeners with a leading QMCHamiltonian instance i.e.
void accumulate(const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, const RefVector< QMCHamiltonian > &hams, RandomBase< FullPrecRealType > &rng) override
Accumulate whatever it is you are accumulating with respect to walkers.
std::string my_name_
name of this object – only used for debugging and h5 output
std::vector< long > walker_ids_
void startBlock(int steps) override