12 #ifndef QMCPLUSPLUS_ONE_BODY_DENSITY_MATRICES_H 13 #define QMCPLUSPLUS_ONE_BODY_DENSITY_MATRICES_H 209 void report(
const std::string& pad =
"");
a class that defines a supercell in D-dimensional Euclean space.
void generateSampleRatios(ParticleSet &pset_target, TrialWaveFunction &psi_target, std::vector< Matrix< Value >> &Psi_nm)
std::vector< Real > ssamples_
std::vector< std::string > species_names_
Real acceptance_ratio_
running acceptance ratio over all samples
NewTimer & gen_sample_basis_timer
void updateBasisD012(const Position &r, ParticleSet &pset_target)
evaluates vgl on basis_functions_ for r sideeffects:
helper functions for EinsplineSetBuilder
RealAlias< FullPrecValue > FullPrecReal
Real spcur_
spin related variables
Position center_
If not defined in OBDMI taken from lattice_.
Per crowd Estimator for OneBodyDensityMatrices aka 1RDM DensityMatrices1B.
OneBodyDensityMatrixTimers timers_
QMCTraits::ValueType Value
void accumulate(const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, const RefVector< QMCHamiltonian > &hams, RandomBase< FullPrecReal > &rng) override
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > ParticleLayout
void calcDensity(const Position &r, Real &dens, ParticleSet &pset_target)
calculate density based on r
Vector< Value > basis_spin_gradients_
NewTimer & gen_particle_basis_timer
NewTimer & accumulate_timer
std::unique_ptr< OperatorEstBase > spawnCrowdClone() const override
Timer accumulates time and call counts.
Position rcorner_
with respect to center_ using lattice_;
std::vector< Matrix< Value > > Phi_NB_
row major per sample workspaces
size_t calcFullDataSize(size_t basis_size, int num_species)
void generateSampleBasis(Matrix< Value > &Phi_mb, ParticleSet &pset_target, TrialWaveFunction &psi_target)
set Phi_mp to basis vaules per sample sideeffects:
void updateBasisWithSpin(const Position &r, const Real &s, ParticleSet &pset_target)
basis set updates with spin
void calcDensityDrift(const Position &r, Real &dens, Position &drift, ParticleSet &pset_target)
calculate density and drift bashed on r
Matrix< Value > Phi_MB_
basis_values_ at each r of rsamples_ row: sample col: basis_value size: samples * basis_size ...
void normalizeBasis(ParticleSet &pset_target)
void generateDensitySamplesWithSpin(bool save, int steps, RandomBase< FullPrecReal > &rng, ParticleSet &pset_target)
same as above, but with spin variables included
OneBodyDensityMatrixTimers(const std::string &prefix)
Vector< Value > basis_laplacians_
void generateSamples(const Real weight, ParticleSet &pset_target, RandomBase< FullPrecReal > &rng, int steps=0)
Dispatch method to difference methods of generating samples.
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > lattice
void evaluateMatrix(ParticleSet &pset_target, TrialWaveFunction &psi_target, const MCPWalker &walker, RandomBase< FullPrecReal > &rng)
Specialized paritlce class for atomistic simulations.
std::vector< Position > rsamples_
Native representation for DensityMatrices1B Estimator's inputs.
void generateDensitySamples(bool save, int steps, RandomBase< FullPrecReal > &rng, ParticleSet &pset_target)
generate samples for density integration
QTFull::ValueType FullPrecValueType
void warmupSampling(ParticleSet &pset_target, RandomBase< FullPrecReal > &rng)
does some warmup sampling i.e.
QTBase::ValueType ValueType
NewTimer & createGlobalTimer(const std::string &myname, timer_levels mylevel)
A minimally functional wrapper for the since c++11 <random>
void report(const std::string &pad="")
std::vector< int > species_sizes_
An abstract class for gridded estimators.
Position diffuse(const Real sqt, RandomBase< FullPrecReal > &rng)
produce a position difference vector from timestep
OneBodyDensityMatricesInput input_
void generateParticleBasis(ParticleSet &pset_target, std::vector< Matrix< Value >> &phi_nb)
set phi_nb to basis values per target particleset particle sideeffects:
OneBodyDensityMatricesInput obdmi(node)
void generateUniformGrid(RandomBase< FullPrecReal > &rng)
Vector< Real > samples_weights_
void calcDensityDriftWithSpin(const Position &r, const Real &s, Real &dens, Position &drift, Real &sdrift, ParticleSet &pset_target)
same as above, but with spin move
void calcDensityWithSpin(const Position &r, const Real &s, Real &dens, ParticleSet &pset_target)
same as above, but with spin move
void implAccumulate(const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, RandomBase< FullPrecReal > &rng)
Unfortunate design RandomGenerator type aliasing and virtual inheritance requires this for testing...
Vector< Grad > basis_gradients_
Sampling sampling_
Sampling method, this derived values in input_.
Vector< Value > basis_values_
std::vector< std::reference_wrapper< T > > RefVector
void updateBasis(const Position &r, ParticleSet &pset_target)
basis set updates
Class to represent a many-body trial wave function.
NewTimer & gen_sample_ratios_timer
typename RealAlias_impl< T >::value_type RealAlias
If you have a function templated on a value that can be real or complex and you need to get the base ...
std::map< std::string, const std::unique_ptr< const SPOSet > > SPOMap
Real diffuseSpin(const Real sqt, RandomBase< FullPrecReal > &rng)
spin diffusion
CompositeSPOSet basis_functions_
std::vector< Matrix< Value > > Phi_Psi_NB_
NewTimer & matrix_products_timer
DataLocality
data locality with respect to walker buffer
NewTimer & gen_samples_timer
Custom container for set of attributes for a set of species.
std::vector< Matrix< Value > > N_BB_
Vector< Value > basis_norms_
Position rpcur_
current position – As long Positions are TinyVectors they are intialized to zero vectors ...
void registerOperatorEstimator(hdf_archive &file) override
create and tie OperatorEstimator's observable_helper hdf5 wrapper to stat.h5 file ...
int naccepted_
number of accepted samples
OneBodyDensityMatrices(OneBodyDensityMatricesInput &&obdmi, const Lattice &lattice, const SpeciesSet &species, const SPOMap &spomap, const ParticleSet &pset_target)
Standard Constructor Call this to make a new OBDM this is what you should be calling.
void startBlock(int steps) override
Real rhocur_
current density
A container class to represent a walker.
void generateUniformSamples(RandomBase< FullPrecReal > &rng)
void updateBasisD012WithSpin(const Position &r, const Real &s, ParticleSet &pset_target)
same as above, but includes spin gradients
Position dpcur_
current drift
std::vector< Value > psi_ratios_
, ' .
QMCTraits::FullPrecValueType FullPrecValue
std::vector< Matrix< Value > > Psi_NM_
ratio per particle per sample size: particles * samples vector is over species each matrix row: parti...