![]() |
QMCPACK
|
Per crowd Estimator for OneBodyDensityMatrices aka 1RDM DensityMatrices1B. More...
Classes | |
struct | OneBodyDensityMatrixTimers |
Public Types | |
enum | Sampling { VOLUME_BASED, METROPOLIS, NO_SAMPLING } |
using | Value = QMCTraits::ValueType |
using | FullPrecValue = QMCTraits::FullPrecValueType |
using | Real = RealAlias< Value > |
using | FullPrecReal = RealAlias< FullPrecValue > |
using | Grad = TinyVector< Value, OHMMS_DIM > |
using | Lattice = PtclOnLatticeTraits::ParticleLayout |
using | Position = QMCTraits::PosType |
using | Evaluator = OneBodyDensityMatricesInput::Evaluator |
using | Integrator = OneBodyDensityMatricesInput::Integrator |
using | SPOMap = SPOSet::SPOMap |
![]() | |
using | QMCT = QMCTraits |
using | FullPrecRealType = QMCT::FullPrecRealType |
using | MCPWalker = Walker< QMCTraits, PtclOnLatticeTraits > |
using | Data = std::vector< QMCT::RealType > |
Private Attributes | |
OneBodyDensityMatricesInput | input_ |
Lattice | lattice_ |
SpeciesSet | species_ |
CompositeSPOSet | basis_functions_ |
Vector< Value > | basis_values_ |
Vector< Value > | basis_norms_ |
Vector< Grad > | basis_gradients_ |
Vector< Value > | basis_laplacians_ |
Vector< Value > | basis_spin_gradients_ |
std::vector< Position > | rsamples_ |
std::vector< Real > | ssamples_ |
Vector< Real > | samples_weights_ |
int | basis_size_ |
std::vector< int > | species_sizes_ |
std::vector< std::string > | species_names_ |
size_t | samples_ |
More... | |
Sampling | sampling_ |
Sampling method, this derived values in input_. More... | |
Position | center_ |
If not defined in OBDMI taken from lattice_. More... | |
Position | rcorner_ |
with respect to center_ using lattice_; More... | |
Real | volume_ |
bool | periodic_ |
std::vector< Value > | psi_ratios_ |
, ' . More... | |
std::vector< Matrix< Value > > | Phi_NB_ |
row major per sample workspaces More... | |
std::vector< Matrix< Value > > | Psi_NM_ |
ratio per particle per sample size: particles * samples vector is over species each matrix row: particle col: sample More... | |
std::vector< Matrix< Value > > | Phi_Psi_NB_ |
std::vector< Matrix< Value > > | N_BB_ |
Matrix< Value > | Phi_MB_ |
basis_values_ at each r of rsamples_ row: sample col: basis_value size: samples * basis_size More... | |
int | nmoves_ = 0 |
More... | |
int | naccepted_ = 0 |
number of accepted samples More... | |
Real | acceptance_ratio_ = 0.0 |
running acceptance ratio over all samples More... | |
int | ind_dims_ [OHMMS_DIM] |
bool | warmed_up_ = false |
Real | metric_ = 1.0 |
}@ More... | |
Position | rpcur_ |
current position – As long Positions are TinyVectors they are intialized to zero vectors More... | |
Position | dpcur_ |
current drift More... | |
Real | rhocur_ = 0.0 |
current density More... | |
Real | spcur_ = 0.0 |
spin related variables More... | |
Real | dspcur_ = 0.0 |
const bool | is_spinor_ |
OneBodyDensityMatrixTimers | timers_ |
template<typename T > | |
class | testing::OneBodyDensityMatricesTests |
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. More... | |
OneBodyDensityMatrices (const OneBodyDensityMatrices &obdm, DataLocality dl) | |
Constructor used when spawing crowd clones needs to be public so std::make_unique can call it. More... | |
std::unique_ptr< OperatorEstBase > | spawnCrowdClone () const override |
void | accumulate (const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, const RefVector< QMCHamiltonian > &hams, RandomBase< FullPrecReal > &rng) override |
void | startBlock (int steps) override |
void | registerOperatorEstimator (hdf_archive &file) override |
create and tie OperatorEstimator's observable_helper hdf5 wrapper to stat.h5 file More... | |
OneBodyDensityMatrices (const OneBodyDensityMatrices &obdm)=default | |
Default copy constructor. More... | |
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. More... | |
size_t | calcFullDataSize (size_t basis_size, int num_species) |
void | normalizeBasis (ParticleSet &pset_target) |
void | report (const std::string &pad="") |
void | evaluateMatrix (ParticleSet &pset_target, TrialWaveFunction &psi_target, const MCPWalker &walker, RandomBase< FullPrecReal > &rng) |
void | generateSamples (const Real weight, ParticleSet &pset_target, RandomBase< FullPrecReal > &rng, int steps=0) |
Dispatch method to difference methods of generating samples. More... | |
void | generateUniformGrid (RandomBase< FullPrecReal > &rng) |
void | generateUniformSamples (RandomBase< FullPrecReal > &rng) |
void | generateDensitySamples (bool save, int steps, RandomBase< FullPrecReal > &rng, ParticleSet &pset_target) |
generate samples for density integration More... | |
void | generateDensitySamplesWithSpin (bool save, int steps, RandomBase< FullPrecReal > &rng, ParticleSet &pset_target) |
same as above, but with spin variables included More... | |
void | generateSampleRatios (ParticleSet &pset_target, TrialWaveFunction &psi_target, std::vector< Matrix< Value >> &Psi_nm) |
Position | diffuse (const Real sqt, RandomBase< FullPrecReal > &rng) |
produce a position difference vector from timestep More... | |
Real | diffuseSpin (const Real sqt, RandomBase< FullPrecReal > &rng) |
spin diffusion More... | |
void | calcDensity (const Position &r, Real &dens, ParticleSet &pset_target) |
calculate density based on r More... | |
void | calcDensityWithSpin (const Position &r, const Real &s, Real &dens, ParticleSet &pset_target) |
same as above, but with spin move More... | |
void | calcDensityDrift (const Position &r, Real &dens, Position &drift, ParticleSet &pset_target) |
calculate density and drift bashed on r More... | |
void | calcDensityDriftWithSpin (const Position &r, const Real &s, Real &dens, Position &drift, Real &sdrift, ParticleSet &pset_target) |
same as above, but with spin move More... | |
void | generateSampleBasis (Matrix< Value > &Phi_mb, ParticleSet &pset_target, TrialWaveFunction &psi_target) |
set Phi_mp to basis vaules per sample sideeffects: More... | |
void | generateParticleBasis (ParticleSet &pset_target, std::vector< Matrix< Value >> &phi_nb) |
set phi_nb to basis values per target particleset particle sideeffects: More... | |
void | updateBasis (const Position &r, ParticleSet &pset_target) |
basis set updates More... | |
void | updateBasisWithSpin (const Position &r, const Real &s, ParticleSet &pset_target) |
basis set updates with spin More... | |
void | updateBasisD012 (const Position &r, ParticleSet &pset_target) |
evaluates vgl on basis_functions_ for r sideeffects: More... | |
void | updateBasisD012WithSpin (const Position &r, const Real &s, ParticleSet &pset_target) |
same as above, but includes spin gradients More... | |
void | warmupSampling (ParticleSet &pset_target, RandomBase< FullPrecReal > &rng) |
does some warmup sampling i.e. More... | |
Additional Inherited Members | |
![]() | |
OperatorEstBase (DataLocality dl) | |
constructor More... | |
OperatorEstBase (const OperatorEstBase &oth) | |
Shallow copy constructor! This alows us to keep the default copy constructors for derived classes which is quite useful to the spawnCrowdClone design. More... | |
virtual | ~OperatorEstBase ()=default |
virtual destructor More... | |
virtual void | accumulate (const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, const RefVector< QMCHamiltonian > &hams, RandomBase< FullPrecRealType > &rng)=0 |
Accumulate whatever it is you are accumulating with respect to walkers. More... | |
virtual void | collect (const RefVector< OperatorEstBase > &oebs) |
Reduce estimator result data from crowds to rank. More... | |
virtual void | normalize (QMCT::RealType invToWgt) |
std::vector< QMCT::RealType > & | get_data () |
void | write (hdf_archive &file) |
Write to previously registered observable_helper hdf5 wrapper. More... | |
void | zero () |
zero data appropriately for the DataLocality More... | |
QMCT::FullPrecRealType | get_walkers_weight () const |
Return the total walker weight for this block. More... | |
const std::string & | get_my_name () const |
virtual void | registerListeners (QMCHamiltonian &ham_leader) |
Register 0-many listeners with a leading QMCHamiltonian instance i.e. More... | |
bool | isListenerRequired () |
DataLocality | get_data_locality () const |
![]() | |
DataLocality | data_locality_ |
locality for accumulation of estimator data. More... | |
std::string | my_name_ |
name of this object – only used for debugging and h5 output More... | |
QMCT::FullPrecRealType | walkers_weight_ |
std::vector< ObservableHelper > | h5desc_ |
Data | data_ |
bool | requires_listener_ = false |
Per crowd Estimator for OneBodyDensityMatrices aka 1RDM DensityMatrices1B.
most matrices are written to by incrementing a single vector index into their memory. This isn't compatible with aligned rows and ignores much less error prone accessing that Matrix supplys. Fix it.
functions favor output arguments or state updates over return values, simplify.
Definition at line 45 of file OneBodyDensityMatrices.h.
Definition at line 56 of file OneBodyDensityMatrices.h.
using FullPrecReal = RealAlias<FullPrecValue> |
Definition at line 51 of file OneBodyDensityMatrices.h.
Definition at line 49 of file OneBodyDensityMatrices.h.
using Grad = TinyVector<Value, OHMMS_DIM> |
Definition at line 52 of file OneBodyDensityMatrices.h.
Definition at line 57 of file OneBodyDensityMatrices.h.
Definition at line 53 of file OneBodyDensityMatrices.h.
using Position = QMCTraits::PosType |
Definition at line 54 of file OneBodyDensityMatrices.h.
Definition at line 50 of file OneBodyDensityMatrices.h.
using SPOMap = SPOSet::SPOMap |
Definition at line 58 of file OneBodyDensityMatrices.h.
using Value = QMCTraits::ValueType |
Definition at line 48 of file OneBodyDensityMatrices.h.
|
strong |
Enumerator | |
---|---|
VOLUME_BASED | |
METROPOLIS | |
NO_SAMPLING |
Definition at line 60 of file OneBodyDensityMatrices.h.
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.
Definition at line 30 of file OneBodyDensityMatrices.cpp.
References CompositeSPOSet::add(), OneBodyDensityMatrices::basis_functions_, OneBodyDensityMatrices::basis_gradients_, OneBodyDensityMatrices::basis_laplacians_, OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_spin_gradients_, OneBodyDensityMatrices::basis_values_, OneBodyDensityMatrices::calcFullDataSize(), CrystalLattice< T, D >::Center, OneBodyDensityMatrices::center_, qmcplusplus::crowd, OperatorEstBase::data_, OneBodyDensityMatricesInput::DENSITY, qmcplusplus::exp(), OneBodyDensityMatricesInput::get_basis_sets(), OneBodyDensityMatricesInput::get_center(), OneBodyDensityMatricesInput::get_center_defined(), OneBodyDensityMatricesInput::get_corner(), OneBodyDensityMatricesInput::get_corner_defined(), OneBodyDensityMatricesInput::get_evaluator(), OneBodyDensityMatricesInput::get_integrator(), OneBodyDensityMatricesInput::get_normalized(), OneBodyDensityMatricesInput::get_points(), OneBodyDensityMatricesInput::get_samples(), OneBodyDensityMatricesInput::get_scale(), OneBodyDensityMatricesInput::get_volume_normalized(), SpeciesSet::getAttribute(), SpeciesSet::hasAttribute(), OneBodyDensityMatrices::ind_dims_, OneBodyDensityMatrices::input_, OneBodyDensityMatrices::is_spinor_, OneBodyDensityMatrices::lattice_, qmcplusplus::log(), OneBodyDensityMatricesInput::MATRIX, OneBodyDensityMatrices::metric_, OneBodyDensityMatrices::METROPOLIS, OperatorEstBase::my_name_, OneBodyDensityMatrices::N_BB_, OneBodyDensityMatrices::normalizeBasis(), OHMMS_DIM, OneBodyDensityMatrices::periodic_, OneBodyDensityMatrices::Phi_MB_, OneBodyDensityMatrices::Phi_NB_, OneBodyDensityMatrices::Phi_Psi_NB_, qmcplusplus::pow(), qmcplusplus::pset_target, OneBodyDensityMatrices::Psi_NM_, OneBodyDensityMatrices::psi_ratios_, OneBodyDensityMatrices::rcorner_, CrystalLattice< T, D >::reset(), Matrix< T, Alloc >::resize(), Vector< T, Alloc >::resize(), OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_, OneBodyDensityMatrices::samples_weights_, OneBodyDensityMatrices::sampling_, SpeciesSet::size(), SPOSet::size(), OneBodyDensityMatrices::species_, OneBodyDensityMatrices::species_names_, OneBodyDensityMatrices::species_sizes_, SpeciesSet::speciesName, qmcplusplus::spomap, qmcplusplus::sqrt(), OneBodyDensityMatrices::ssamples_, qmcplusplus::SUPERCELL_OPEN, CrystalLattice< T, D >::SuperCellEnum, OneBodyDensityMatricesInput::UNIFORM, OneBodyDensityMatricesInput::UNIFORM_GRID, CrystalLattice< T, D >::Volume, OneBodyDensityMatrices::volume_, and OneBodyDensityMatrices::VOLUME_BASED.
OneBodyDensityMatrices | ( | const OneBodyDensityMatrices & | obdm, |
DataLocality | dl | ||
) |
Constructor used when spawing crowd clones needs to be public so std::make_unique can call it.
Do not use directly unless you've really thought it through.
Definition at line 174 of file OneBodyDensityMatrices.cpp.
References OperatorEstBase::data_locality_.
|
privatedefault |
Default copy constructor.
Instances of this estimator is assume to be thread scope, i.e. never called by more than one thread at a time. note the OperatorEstBase copy constructor does not copy or even allocate data_
|
override |
Definition at line 529 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::implAccumulate(), and qmcplusplus::hdf::walkers.
|
inlineprivate |
calculate density based on r
[in] | r | position |
[out] | dens | density |
called by generateDensitySamples to get trial dens. also called by test_derivatives. sideeffects:
Definition at line 457 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::abs(), OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, qmcplusplus::conj(), qmcplusplus::pset_target, and OneBodyDensityMatrices::updateBasis().
Referenced by OneBodyDensityMatrices::generateDensitySamples().
|
private |
calculate density and drift bashed on r
[in] | r | position |
[out] | dens | density |
[out] | drift | drift |
called by warmupSamples to get an initial drift and density. called by generateDensitySamples to get trial drift and trial dens. also called by test_derivatives. sideeffects:
Definition at line 484 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::abs(), OneBodyDensityMatrices::basis_gradients_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, qmcplusplus::conj(), OneBodyDensityMatricesInput::get_timestep(), OneBodyDensityMatrices::input_, OHMMS_DIM, qmcplusplus::pset_target, and OneBodyDensityMatrices::updateBasisD012().
Referenced by OneBodyDensityMatrices::generateDensitySamples(), and OneBodyDensityMatrices::warmupSampling().
|
private |
same as above, but with spin move
Definition at line 502 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::abs(), OneBodyDensityMatrices::basis_gradients_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_spin_gradients_, OneBodyDensityMatrices::basis_values_, qmcplusplus::conj(), OneBodyDensityMatricesInput::get_timestep(), OneBodyDensityMatrices::input_, OHMMS_DIM, qmcplusplus::pset_target, qmcplusplus::Units::time::s, and OneBodyDensityMatrices::updateBasisD012WithSpin().
Referenced by OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
inlineprivate |
same as above, but with spin move
Definition at line 469 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::abs(), OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, qmcplusplus::conj(), qmcplusplus::pset_target, qmcplusplus::Units::time::s, and OneBodyDensityMatrices::updateBasisWithSpin().
Referenced by OneBodyDensityMatrices::generateDensitySamplesWithSpin().
|
private |
Definition at line 198 of file OneBodyDensityMatrices.cpp.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
produce a position difference vector from timestep
Definition at line 441 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::assignGaussRand(), and OHMMS_DIM.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
spin diffusion
Definition at line 449 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::assignGaussRand().
Referenced by OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 550 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::OneBodyDensityMatrixTimers::accumulate_timer, OneBodyDensityMatrices::basis_size_, OperatorEstBase::data_, qmcplusplus::MatrixOperators::diag_product(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::generateSampleRatios(), OneBodyDensityMatrices::generateSamples(), qmcplusplus::imag(), OneBodyDensityMatrices::OneBodyDensityMatrixTimers::matrix_products_timer, OneBodyDensityMatrices::metric_, qmcplusplus::n, OneBodyDensityMatrices::N_BB_, OneBodyDensityMatrices::Phi_MB_, OneBodyDensityMatrices::Phi_NB_, OneBodyDensityMatrices::Phi_Psi_NB_, qmcplusplus::MatrixOperators::product(), qmcplusplus::MatrixOperators::product_AtB(), qmcplusplus::pset_target, OneBodyDensityMatrices::Psi_NM_, qmcplusplus::real(), qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_weights_, SpeciesSet::size(), OneBodyDensityMatrices::species_, OneBodyDensityMatrices::timers_, qmcplusplus::walker, and OneBodyDensityMatrices::warmupSampling().
Referenced by OneBodyDensityMatrices::implAccumulate(), and OneBodyDensityMatricesTests< T >::testEvaluateMatrix().
|
inlineprivate |
generate samples for density integration
[in] | save | if false throw out the samples |
[in] | steps | actually the number of samples which are basically steps. |
[in] | rng | random generator |
[in] | pset_target | will be returned to its initial state but is mutated. |
sideeffects:
Definition at line 311 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::acceptance_ratio_, qmcplusplus::app_log(), OneBodyDensityMatrices::calcDensity(), OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::diffuse(), qmcplusplus::dot(), OneBodyDensityMatrices::dpcur_, qmcplusplus::exp(), OneBodyDensityMatricesInput::get_timestep(), OneBodyDensityMatricesInput::get_use_drift(), OneBodyDensityMatricesInput::get_write_acceptance_ratio(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::naccepted_, OneBodyDensityMatrices::nmoves_, omp_get_thread_num(), qmcplusplus::pset_target, OneBodyDensityMatrices::rhocur_, OneBodyDensityMatrices::rpcur_, OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_weights_, and qmcplusplus::sqrt().
Referenced by OneBodyDensityMatrices::generateSamples().
|
inlineprivate |
same as above, but with spin variables included
Definition at line 370 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::acceptance_ratio_, qmcplusplus::app_log(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::calcDensityWithSpin(), OneBodyDensityMatrices::diffuse(), OneBodyDensityMatrices::diffuseSpin(), qmcplusplus::dot(), OneBodyDensityMatrices::dpcur_, OneBodyDensityMatrices::dspcur_, qmcplusplus::exp(), OneBodyDensityMatricesInput::get_timestep(), OneBodyDensityMatricesInput::get_use_drift(), OneBodyDensityMatricesInput::get_write_acceptance_ratio(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::naccepted_, OneBodyDensityMatrices::nmoves_, omp_get_thread_num(), qmcplusplus::pset_target, OneBodyDensityMatrices::rhocur_, OneBodyDensityMatrices::rpcur_, OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_weights_, OneBodyDensityMatrices::spcur_, qmcplusplus::sqrt(), and OneBodyDensityMatrices::ssamples_.
Referenced by OneBodyDensityMatrices::generateSamples().
|
private |
set phi_nb to basis values per target particleset particle sideeffects:
Definition at line 604 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, qmcplusplus::conj(), OneBodyDensityMatrices::OneBodyDensityMatrixTimers::gen_particle_basis_timer, OneBodyDensityMatrices::is_spinor_, qmcplusplus::n, qmcplusplus::pset_target, qmcplusplus::Units::time::s, SpeciesSet::size(), OneBodyDensityMatrices::species_, OneBodyDensityMatrices::species_sizes_, OneBodyDensityMatrices::timers_, OneBodyDensityMatrices::updateBasis(), and OneBodyDensityMatrices::updateBasisWithSpin().
Referenced by OneBodyDensityMatrices::evaluateMatrix().
|
private |
set Phi_mp to basis vaules per sample sideeffects:
Definition at line 624 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, OneBodyDensityMatrices::OneBodyDensityMatrixTimers::gen_sample_basis_timer, OneBodyDensityMatrices::is_spinor_, qmcplusplus::Units::distance::m, qmcplusplus::pset_target, OneBodyDensityMatrices::rsamples_, OneBodyDensityMatrices::samples_, OneBodyDensityMatrices::ssamples_, OneBodyDensityMatrices::timers_, OneBodyDensityMatrices::updateBasis(), and OneBodyDensityMatrices::updateBasisWithSpin().
Referenced by OneBodyDensityMatrices::evaluateMatrix().
|
private |
Definition at line 641 of file OneBodyDensityMatrices.cpp.
References TrialWaveFunction::calcRatio(), qmcplusplus::conj(), TrialWaveFunction::evaluateRatiosAlltoOne(), OneBodyDensityMatrices::OneBodyDensityMatrixTimers::gen_sample_ratios_timer, OneBodyDensityMatrices::is_spinor_, qmcplusplus::Units::distance::m, qmcplusplus::n, qmcplusplus::pset_target, OneBodyDensityMatrices::psi_ratios_, TrialWaveFunction::resetPhaseDiff(), OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_, SpeciesSet::size(), OneBodyDensityMatrices::species_, OneBodyDensityMatrices::species_sizes_, OneBodyDensityMatrices::ssamples_, and OneBodyDensityMatrices::timers_.
Referenced by OneBodyDensityMatrices::evaluateMatrix().
|
private |
Dispatch method to difference methods of generating samples.
dispatch determined by Integrator.
[in] | weight | of this walker's samples |
[in] | pset_target | will be returned to its initial state but is mutated. |
[in] | rng | random generator. templated for testing without dependency on app level rng. |
[in] | steps | If integrator_ = Integrator::DENSITY steps is a key parameter otherwise ignored. when set to 0 it is reset to samples_ internally |
sideeffects:
Definition at line 208 of file OneBodyDensityMatrices.cpp.
References qmcplusplus::app_log(), Vector< T, Alloc >::begin(), OneBodyDensityMatricesInput::DENSITY, Vector< T, Alloc >::end(), OneBodyDensityMatrices::OneBodyDensityMatrixTimers::gen_samples_timer, OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), OneBodyDensityMatricesInput::get_integrator(), OneBodyDensityMatricesInput::get_rstats(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::is_spinor_, OneBodyDensityMatrices::METROPOLIS, omptarget::min(), OHMMS_DIM, omp_get_thread_num(), qmcplusplus::pset_target, OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_, OneBodyDensityMatrices::samples_weights_, OneBodyDensityMatrices::sampling_, qmcplusplus::sqrt(), OneBodyDensityMatrices::timers_, OneBodyDensityMatricesInput::UNIFORM, and OneBodyDensityMatricesInput::UNIFORM_GRID.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), OneBodyDensityMatricesTests< T >::testGenerateSamples(), and OneBodyDensityMatrices::warmupSampling().
|
inlineprivate |
Definition at line 279 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatricesInput::get_points(), OneBodyDensityMatricesInput::get_scale(), OneBodyDensityMatrices::ind_dims_, OneBodyDensityMatrices::input_, OneBodyDensityMatrices::lattice_, OHMMS_DIM, OneBodyDensityMatrices::rcorner_, OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_, and CrystalLattice< T, D >::toCart().
Referenced by OneBodyDensityMatrices::generateSamples().
|
inlineprivate |
Definition at line 300 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatricesInput::get_scale(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::lattice_, OHMMS_DIM, OneBodyDensityMatrices::rcorner_, OneBodyDensityMatrices::rsamples_, qmcplusplus::Units::time::s, OneBodyDensityMatrices::samples_, and CrystalLattice< T, D >::toCart().
Referenced by OneBodyDensityMatrices::generateSamples().
|
private |
Unfortunate design RandomGenerator type aliasing and virtual inheritance requires this for testing.
Definition at line 538 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::evaluateMatrix(), qmcplusplus::hdf::walkers, and OperatorEstBase::walkers_weight_.
Referenced by OneBodyDensityMatrices::accumulate(), and OneBodyDensityMatricesTests< T >::testAccumulate().
|
inlineprivate |
Definition at line 751 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, Vector< T, Alloc >::begin(), qmcplusplus::conj(), Vector< T, Alloc >::end(), OneBodyDensityMatricesInput::get_points(), OneBodyDensityMatricesInput::get_scale(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::lattice_, OHMMS_DIM, qmcplusplus::pow(), qmcplusplus::pset_target, OneBodyDensityMatrices::rcorner_, qmcplusplus::real(), Vector< T, Alloc >::resize(), qmcplusplus::sqrt(), CrystalLattice< T, D >::toCart(), OneBodyDensityMatrices::updateBasis(), and OneBodyDensityMatrices::volume_.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices().
|
overridevirtual |
create and tie OperatorEstimator's observable_helper hdf5 wrapper to stat.h5 file
gid | hdf5 group to which the observables belong |
The default implementation does nothing. The derived classes which compute big data, e.g. density, should overwrite this function.
Reimplemented from OperatorEstBase.
Definition at line 786 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_size_, OperatorEstBase::h5desc_, OperatorEstBase::my_name_, qmcplusplus::oh, qmcplusplus::Units::time::s, ObservableHelper::set_dimensions(), SpeciesSet::size(), OneBodyDensityMatrices::species_, and SpeciesSet::speciesName.
Referenced by OneBodyDensityMatricesTests< T >::testRegisterAndWrite().
|
private |
|
overridevirtual |
Implements OperatorEstBase.
Definition at line 180 of file OneBodyDensityMatrices.cpp.
References OperatorEstBase::data_, OperatorEstBase::data_locality_, qmcplusplus::queue, and qmcplusplus::rank.
|
overridevirtual |
|
inlineprivate |
basis set updates
Definition at line 682 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_functions_, OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, CompositeSPOSet::evaluateValue(), and qmcplusplus::pset_target.
Referenced by OneBodyDensityMatrices::calcDensity(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), and OneBodyDensityMatrices::normalizeBasis().
|
inlineprivate |
evaluates vgl on basis_functions_ for r sideeffects:
Definition at line 702 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_functions_, OneBodyDensityMatrices::basis_gradients_, OneBodyDensityMatrices::basis_laplacians_, OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, CompositeSPOSet::evaluateVGL(), and qmcplusplus::pset_target.
Referenced by OneBodyDensityMatrices::calcDensityDrift().
|
inlineprivate |
same as above, but includes spin gradients
Definition at line 715 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_functions_, OneBodyDensityMatrices::basis_gradients_, OneBodyDensityMatrices::basis_laplacians_, OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_spin_gradients_, OneBodyDensityMatrices::basis_values_, CompositeSPOSet::evaluateVGL_spin(), qmcplusplus::pset_target, and qmcplusplus::Units::time::s.
Referenced by OneBodyDensityMatrices::calcDensityDriftWithSpin().
|
inlineprivate |
basis set updates with spin
Definition at line 692 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::basis_functions_, OneBodyDensityMatrices::basis_norms_, OneBodyDensityMatrices::basis_size_, OneBodyDensityMatrices::basis_values_, CompositeSPOSet::evaluateValue(), qmcplusplus::pset_target, and qmcplusplus::Units::time::s.
Referenced by OneBodyDensityMatrices::calcDensityWithSpin(), OneBodyDensityMatrices::generateParticleBasis(), and OneBodyDensityMatrices::generateSampleBasis().
|
private |
does some warmup sampling i.e.
samples but throws away the results Only when integrator_ = Integrator::DENSITY sets rpcur_ initial rpcur + one diffusion step sets initial rhocur_ and dpcur_ Then calls generateSamples with number of input warmup samples.
Definition at line 730 of file OneBodyDensityMatrices.cpp.
References OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::center_, OneBodyDensityMatrices::diffuse(), OneBodyDensityMatrices::diffuseSpin(), OneBodyDensityMatrices::dpcur_, OneBodyDensityMatrices::dspcur_, OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatricesInput::get_timestep(), OneBodyDensityMatricesInput::get_warmup_samples(), OneBodyDensityMatrices::input_, OneBodyDensityMatrices::is_spinor_, OneBodyDensityMatrices::METROPOLIS, qmcplusplus::pset_target, OneBodyDensityMatrices::rhocur_, OneBodyDensityMatrices::rpcur_, OneBodyDensityMatrices::sampling_, OneBodyDensityMatrices::spcur_, qmcplusplus::sqrt(), and OneBodyDensityMatrices::warmed_up_.
Referenced by OneBodyDensityMatrices::evaluateMatrix().
|
friend |
Definition at line 345 of file OneBodyDensityMatrices.h.
|
private |
running acceptance ratio over all samples
Definition at line 135 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), and OneBodyDensityMatrices::generateDensitySamplesWithSpin().
|
private |
Definition at line 88 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::updateBasis(), OneBodyDensityMatrices::updateBasisD012(), OneBodyDensityMatrices::updateBasisD012WithSpin(), and OneBodyDensityMatrices::updateBasisWithSpin().
Definition at line 91 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::updateBasisD012(), and OneBodyDensityMatrices::updateBasisD012WithSpin().
Definition at line 92 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::updateBasisD012(), and OneBodyDensityMatrices::updateBasisD012WithSpin().
Definition at line 90 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::normalizeBasis(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::updateBasis(), OneBodyDensityMatrices::updateBasisD012(), OneBodyDensityMatrices::updateBasisD012WithSpin(), and OneBodyDensityMatrices::updateBasisWithSpin().
|
private |
Definition at line 97 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::calcDensity(), OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::calcDensityWithSpin(), OneBodyDensityMatrices::evaluateMatrix(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::normalizeBasis(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::registerOperatorEstimator(), OneBodyDensityMatricesTests< T >::testRegisterAndWrite(), OneBodyDensityMatrices::updateBasis(), OneBodyDensityMatrices::updateBasisD012(), OneBodyDensityMatrices::updateBasisD012WithSpin(), and OneBodyDensityMatrices::updateBasisWithSpin().
Definition at line 93 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::OneBodyDensityMatrices(), and OneBodyDensityMatrices::updateBasisD012WithSpin().
Definition at line 89 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::calcDensity(), OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::calcDensityWithSpin(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::normalizeBasis(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatrices::updateBasis(), OneBodyDensityMatrices::updateBasisD012(), OneBodyDensityMatrices::updateBasisD012WithSpin(), and OneBodyDensityMatrices::updateBasisWithSpin().
|
private |
If not defined in OBDMI taken from lattice_.
Definition at line 80 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices(), and OneBodyDensityMatrices::warmupSampling().
|
private |
current drift
Definition at line 146 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 152 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 136 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateUniformGrid(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
Definition at line 68 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::calcDensityDrift(), OneBodyDensityMatrices::calcDensityDriftWithSpin(), OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), OneBodyDensityMatrices::normalizeBasis(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatricesTests< T >::testEvaluateMatrix(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 153 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::generateSampleRatios(), OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatricesTests< T >::testGenerateSamplesForSpinor(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 69 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), OneBodyDensityMatrices::normalizeBasis(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
}@
Definition at line 140 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
Definition at line 120 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
number of accepted samples
Definition at line 133 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), and OneBodyDensityMatrices::generateDensitySamplesWithSpin().
|
private |
number of moves
Definition at line 131 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatricesTests< T >::testGenerateSamples().
|
private |
Definition at line 84 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices().
basis_values_ at each r of rsamples_ row: sample col: basis_value size: samples * basis_size
Definition at line 124 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
row major per sample workspaces
conj(basis_values) for each particle size: samples * basis_size vector is over species each matrix row: particle column: basis_value
Definition at line 113 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
Definition at line 120 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
ratio per particle per sample size: particles * samples vector is over species each matrix row: particle col: sample
Definition at line 119 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
, ' .
per particle ratios size: particles
Definition at line 105 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateSampleRatios(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
with respect to center_ using lattice_;
Definition at line 82 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), OneBodyDensityMatrices::normalizeBasis(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
current density
Definition at line 148 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
current position – As long Positions are TinyVectors they are intialized to zero vectors
Definition at line 144 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 94 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::generateSampleRatios(), OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
samples_ are altered based on integrator_ so always have a simulation object copy.
Definition at line 76 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::generateSampleRatios(), OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::generateUniformGrid(), OneBodyDensityMatrices::generateUniformSamples(), OneBodyDensityMatrices::OneBodyDensityMatrices(), and OneBodyDensityMatricesTests< T >::testGenerateSamples().
Definition at line 96 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), OneBodyDensityMatrices::generateDensitySamples(), OneBodyDensityMatrices::generateDensitySamplesWithSpin(), OneBodyDensityMatrices::generateSamples(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
Sampling method, this derived values in input_.
Definition at line 78 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OneBodyDensityMatricesTests< T >::testCopyConstructor(), and OneBodyDensityMatrices::warmupSampling().
|
private |
spin related variables
Definition at line 151 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateDensitySamplesWithSpin(), OneBodyDensityMatricesTests< T >::testGenerateSamplesForSpinor(), and OneBodyDensityMatrices::warmupSampling().
|
private |
Definition at line 70 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleRatios(), OneBodyDensityMatrices::OneBodyDensityMatrices(), and OneBodyDensityMatrices::registerOperatorEstimator().
|
private |
Definition at line 99 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
Definition at line 98 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleRatios(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
|
private |
Definition at line 341 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::evaluateMatrix(), OneBodyDensityMatrices::generateParticleBasis(), OneBodyDensityMatrices::generateSampleBasis(), OneBodyDensityMatrices::generateSampleRatios(), and OneBodyDensityMatrices::generateSamples().
|
private |
Definition at line 83 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::normalizeBasis(), and OneBodyDensityMatrices::OneBodyDensityMatrices().
|
private |
Definition at line 137 of file OneBodyDensityMatrices.h.
Referenced by OneBodyDensityMatrices::warmupSampling().