52 std::map<int, int> pair_map;
57 std::ostringstream os;
58 os <<
"gofr_" << elns.
getName() <<
"_" << i <<
"_" << j;
65 std::vector<std::string> slist, dlist;
67 for (
int k = 0; k < ntables; ++k)
69 dlist.push_back(elns.
getDistTable(k).get_origin().getName());
71 std::set<int> others_sorted;
72 for (
int i = 0; i < slist.size(); ++i)
75 while (k < dlist.size())
77 if (slist[i] == dlist[k])
79 others_sorted.insert(k + 1);
87 copy(others_sorted.begin(), others_sorted.end(),
other_ids.begin());
89 for (
int k = 0; k <
other_ids.size(); ++k)
92 app_log() <<
" GOFR for " << t.getName() <<
" starts at " << toff << std::endl;
94 const SpeciesSet& species(t.get_origin().getSpeciesSet());
95 int ng = species.
size();
96 for (
int i = 0; i < ng; ++i)
98 std::ostringstream os;
99 os <<
"gofr_" << t.getName() <<
"_" << species.speciesName[i];
112 return ns * (
ns - 1) / 2 - (
ns - jg) * (
ns - jg - 1) / 2 + ig;
114 return ns * (
ns - 1) / 2 - (
ns - ig) * (
ns - ig - 1) / 2 + jg;
121 for (
int iat = 1; iat < dii.centers(); ++iat)
123 const auto& dist = dii.getDistRow(iat);
125 for (
int j = 0; j < iat; ++j)
130 const int loc =
static_cast<int>(
DeltaInv * r);
137 for (
int k = 0; k <
other_ids.size(); ++k)
142 RealType overNI = 1.0 / d1.centers();
143 for (
int iat = 0; iat < d1.targets(); ++iat)
145 const auto& dist = d1.getDistRow(iat);
146 for (
int j = 0; j < d1.centers(); ++j)
151 int toff = (gid[j] + koff) *
NumBins;
152 int loc =
static_cast<int>(
DeltaInv * r);
163 std::vector<int> onedim(1,
NumBins);
168 auto& h5o = h5list.back();
169 h5o.set_dimensions(onedim, offset);
170 h5o.addProperty(const_cast<RealType&>(
Delta),
"delta", file);
171 h5o.addProperty(const_cast<RealType&>(
Dmax),
"cutoff", file);
181 collectables.
add(g.begin(), g.end());
213 std::string debug(
"no");
215 attrib.
add(nbins,
"num_bin");
218 attrib.
add(debug,
"debug");
253 const RealType ftpi = 4. / 3 * M_PI;
255 for (
int i = 0; i <
NumBins; i++)
280 const RealType npairs = (
m ==
n ? (nn * (nn - 1) / 2.) : (nn *
nm));
282 nid = rho * bin_volume;
310 app_log() <<
"PairCorrEstimator report" << std::endl;
318 app_log() <<
"end PairCorrEstimator report" << std::endl;
323 os <<
name_ <<
" dmax=" <<
Dmax << std::endl;
330 return std::make_unique<PairCorrEstimator>(*this);
std::unique_ptr< OperatorBase > makeClone(ParticleSet &qp, TrialWaveFunction &psi) final
size_type size() const
return the size of the data
const std::string & getName() const
return the name
helper functions for EinsplineSetBuilder
const DistanceTableAA & getDistTableAA(int table_ID) const
get a distance table by table_ID and dyanmic_cast to DistanceTableAA
size_t getTotalNum() const
Return_t evaluate(ParticleSet &P) override
Evaluate the local energy contribution of this component.
int my_index_
starting index of this object
bool put(xmlNodePtr cur)
assign attributes to the set
Abstract class to manage operations on pair data between two ParticleSets.
void setObservables(PropertySetType &plist) override
Set the values evaluated by this object to plist Default implementation is to assign Value which is u...
bool get(std::ostream &os) const override
write about the class
void resetTargetParticleSet(ParticleSet &P) override
Reset the data with the target ParticleSet.
std::vector< int > other_offsets
offset of the gofr's associated with others_id
int getNumDistTables() const
int first(int igroup) const
return the first index of a group i
bool put(xmlNodePtr cur) override
Read the input parameter.
Vectorized record engine for scalar properties.
Matrix< RealType > norm_factor
normalization factor
void resize(size_type n, size_type m)
Resize the container.
Attaches a unit to a Vector for IO.
int size() const
return the number of species
ParticleIndex GroupID
Species ID.
void copy(const Array< T1, 3 > &src, Array< T2, 3 > &dest)
const DistanceTableAB & getDistTableAB(int table_ID) const
get a distance table by table_ID and dyanmic_cast to DistanceTableAB
int groups() const
return the number of groups
MakeReturn< BinaryNode< FnPow, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t pow(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
std::string name_
name of this object
Specialized paritlce class for atomistic simulations.
PairCorrEstimator(ParticleSet &elns, std::string &sources)
constructor
MakeReturn< UnaryNode< FnCeil, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t ceil(const Vector< T1, C1 > &l)
unsigned parsewords(const char *inbuf, std::vector< std::string > &slist, const std::string &extra_tokens)
class to handle a set of attributes of an xmlNode
std::vector< std::string > gof_r_prefix
prefix of each gof_r
RealType DeltaInv
one of bin size
int last(int igroup) const
return the last index of a group i
void addObservables(PropertySetType &plist)
auto & getDistTable(int table_ID) const
get a distance table by table_ID
Buffer_t Collectables
observables in addition to those registered in Properties/PropertyList
std::vector< int > other_ids
table indexs for other type
void setParticlePropertyList(PropertySetType &plist, int offset) override
RealType Dmax
maximum distance
FullPrecRealType Return_t
type of return value of evaluate
Class to represent a many-body trial wave function.
void registerCollectables(std::vector< ObservableHelper > &h5list, hdf_archive &file) const override
static int gen_pair_id(const int ig, const int jg, const int ns)
generate the unique pair id from the group ids of particle i and j and the number of species ...
const auto & getLattice() const
int NumBins
number of bins
Custom container for set of attributes for a set of species.
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
whether full table needs to be ready at anytime or not after donePbyP Optimization can be implemented...
std::vector< RealType > n_vec
std::bitset< 8 > update_mode_
set the current update mode
RealType Volume
volume of the cell
void resize(int nbins)
resize the internal data