From e4ab0511876a2c0d0332f33f25d7bf040cbdbf73 Mon Sep 17 00:00:00 2001 From: rcclay Date: Wed, 31 Aug 2022 10:41:39 -0600 Subject: [PATCH 01/24] Add function to compute fast derivatives to QMCHamiltonian --- src/QMCHamiltonians/QMCHamiltonian.cpp | 171 +++++++++++++++++++++++++ src/QMCHamiltonians/QMCHamiltonian.h | 29 +++++ 2 files changed, 200 insertions(+) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index 59a4cb7e1..2eede73eb 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1121,4 +1121,175 @@ RefVectorWithLeader QMCHamiltonian::extract_HC_list(const RefVecto return HC_list; } +QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicFast(ParticleSet& P, + ParticleSet& ions, + TrialWaveFunction& psi_in, + ParticleSet::ParticlePos& dEdR, + ParticleSet::ParticlePos& wf_grad) +{ + // ScopedTimer evaluatederivtimer(*timer_manager.createTimer("NEW::evaluateIonDerivsFast")); + // if (!psi_wrapper_.initialized) + { + psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_); + } + //resize everything; + int ngroups = psi_wrapper_.numGroups(); + + { + // ScopedTimer resizetimer(*timer_manager.createTimer("NEW::Resize")); + M_.resize(ngroups); + M_gs_.resize(ngroups); + X_.resize(ngroups); + B_.resize(ngroups); + B_gs_.resize(ngroups); + Minv_.resize(ngroups); + + for (int gid = 0; gid < ngroups; gid++) + { + const int sid = psi_wrapper_.getTWFGroupIndex(gid); + const int norbs = psi_wrapper_.numOrbitals(sid); + const int first = P.first(gid); + const int last = P.last(gid); + const int nptcls = last-first; + + M_[sid].resize(nptcls, norbs); + B_[sid].resize(nptcls, norbs); + + M_gs_[sid].resize(nptcls, nptcls); + Minv_[sid].resize(nptcls, nptcls); + B_gs_[sid].resize(nptcls, nptcls); + X_[sid].resize(nptcls, nptcls); + } + + dM_.resize(OHMMS_DIM); + dM_gs_.resize(OHMMS_DIM); + dB_.resize(OHMMS_DIM); + dB_gs_.resize(OHMMS_DIM); + + for (int idim = 0; idim < OHMMS_DIM; idim++) + { + dM_[idim].resize(ngroups); + dB_[idim].resize(ngroups); + dM_gs_[idim].resize(ngroups); + dB_gs_[idim].resize(ngroups); + + for (int gid = 0; gid < ngroups; gid++) + { + const int sid = psi_wrapper_.getTWFGroupIndex(gid); + const int norbs = psi_wrapper_.numOrbitals(sid); + const int first = P.first(gid); + const int last = P.last(gid); + const int nptcls = last-first; + + dM_[idim][sid].resize(nptcls, norbs); + dB_[idim][sid].resize(nptcls, norbs); + dM_gs_[idim][sid].resize(nptcls, nptcls); + dB_gs_[idim][sid].resize(nptcls, nptcls); + } + } + psi_wrapper_.wipeMatrices(M_); + psi_wrapper_.wipeMatrices(M_gs_); + psi_wrapper_.wipeMatrices(X_); + psi_wrapper_.wipeMatrices(B_); + psi_wrapper_.wipeMatrices(Minv_); + psi_wrapper_.wipeMatrices(B_gs_); + + for (int idim = 0; idim < OHMMS_DIM; idim++) + { + psi_wrapper_.wipeMatrices(dM_[idim]); + psi_wrapper_.wipeMatrices(dM_gs_[idim]); + psi_wrapper_.wipeMatrices(dB_[idim]); + psi_wrapper_.wipeMatrices(dB_gs_[idim]); + } + } + ParticleSet::ParticleGradient wfgradraw_(ions.getTotalNum()); + ParticleSet::ParticleGradient pulay_(ions.getTotalNum()); + ParticleSet::ParticleGradient hf_(ions.getTotalNum()); + ParticleSet::ParticleGradient dedr_complex(ions.getTotalNum()); + ParticleSet::ParticlePos pulayterms_(ions.getTotalNum()); + ParticleSet::ParticlePos hfdiag_(ions.getTotalNum()); + wfgradraw_ = 0.0; + RealType localEnergy = 0.0; + + { + // ScopedTimer getmtimer(*timer_manager.createTimer("NEW::getM")); + psi_wrapper_.getM(P, M_); + } + { + // ScopedTimer invertmtimer(*timer_manager.createTimer("NEW::InvertMTimer")); + psi_wrapper_.getGSMatrices(M_, M_gs_); + psi_wrapper_.invertMatrices(M_gs_, Minv_); + } + //Build B-matrices. Only for non-diagonal observables right now. + for (int i = 0; i < H.size(); ++i) + { + if (H[i]->is_nondiag) + { + // ScopedTimer bmattimer(*timer_manager.createTimer("NEW::Btimer")); + H[i]->evaluateOneBodyOpMatrix(P, psi_wrapper_, B_); + } + else + { + // ScopedTimer othertimer(*timer_manager.createTimer("NEW::Other_Timer")); + localEnergy += H[i]->evaluateWithIonDerivsDeterministic(P, ions, psi_in, hfdiag_, pulayterms_); + } + } + + ValueType nondiag_cont = 0.0; + RealType nondiag_cont_re = 0.0; + + psi_wrapper_.getGSMatrices(B_, B_gs_); + nondiag_cont = psi_wrapper_.trAB(Minv_, B_gs_); + convertToReal(nondiag_cont, nondiag_cont_re); + localEnergy += nondiag_cont_re; + + { + // ScopedTimer buildXtimer(*timer_manager.createTimer("NEW::buildX")); + psi_wrapper_.buildX(Minv_, B_gs_, X_); + } + //And now we compute the 3N force derivatives. 3 at a time for each atom. + for (int iat = 0; iat < ions.getTotalNum(); iat++) + { + for (int idim = 0; idim < OHMMS_DIM; idim++) + { + psi_wrapper_.wipeMatrices(dM_[idim]); + psi_wrapper_.wipeMatrices(dM_gs_[idim]); + psi_wrapper_.wipeMatrices(dB_[idim]); + psi_wrapper_.wipeMatrices(dB_gs_[idim]); + } + + { + // ScopedTimer dmtimer(*timer_manager.createTimer("NEW::dM_timer")); + //ion derivative of slater matrix. + psi_wrapper_.getIonGradM(P, ions, iat, dM_); + } + for (int i = 0; i < H.size(); ++i) + { + if (H[i]->is_nondiag) + { + // ScopedTimer dBtimer(*timer_manager.createTimer("NEW::dB_timer")); + H[i]->evaluateOneBodyOpMatrixForceDeriv(P, ions, psi_wrapper_, iat, dB_); + } + } + + for (int idim = 0; idim < OHMMS_DIM; idim++) + { + // ScopedTimer computederivtimer(*timer_manager.createTimer("NEW::compute_deriv")); + psi_wrapper_.getGSMatrices(dB_[idim], dB_gs_[idim]); + psi_wrapper_.getGSMatrices(dM_[idim], dM_gs_[idim]); + + ValueType fval = 0.0; + fval = psi_wrapper_.computeGSDerivative(Minv_, X_, dM_gs_[idim], dB_gs_[idim]); + dedr_complex[iat][idim] = fval; + + ValueType wfcomp = 0.0; + wfcomp = psi_wrapper_.trAB(Minv_, dM_gs_[idim]); + wfgradraw_[iat][idim] = wfcomp; + } + convertToReal(dedr_complex[iat], dEdR[iat]); + convertToReal(wfgradraw_[iat], wf_grad[iat]); + } + dEdR += hfdiag_; + return localEnergy; +} } // namespace qmcplusplus diff --git a/src/QMCHamiltonians/QMCHamiltonian.h b/src/QMCHamiltonians/QMCHamiltonian.h index 9b59d8284..c2206caee 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.h +++ b/src/QMCHamiltonians/QMCHamiltonian.h @@ -24,6 +24,7 @@ #include "Configuration.h" #include "QMCDrivers/WalkerProperties.h" #include "QMCHamiltonians/OperatorBase.h" +#include "QMCWaveFunctions/TWFFastDerivWrapper.h" #if !defined(REMOVE_TRACEMANAGER) #include "Estimators/TraceManager.h" #endif @@ -54,6 +55,7 @@ public: using BufferType = OperatorBase::BufferType; using Walker_t = OperatorBase::Walker_t; using WP = WalkerProperties::Indexes; + using ValueMatrix = SPOSet::ValueMatrix; enum { DIM = OHMMS_DIM @@ -284,6 +286,20 @@ public: RecordArray& dlogpsi, RecordArray& dhpsioverpsi); + /** evaluate local energy and derivatives w.r.t ionic coordinates, but deterministically. + * @param P target particle set (electrons) + * @param ions source particle set (ions) + * @param psi Trial wave function + * @param hf_terms Re [(dH)Psi]/Psi + * @param pulay_terms Re [(H-E_L)dPsi]/Psi + * @param wf_grad Re (dPsi/Psi) + * @return Local Energy. + */ + FullPrecRealType evaluateIonDerivsDeterministicFast(ParticleSet& P, + ParticleSet& ions, + TrialWaveFunction& psi, + ParticleSet::ParticlePos& dedr, + ParticleSet::ParticlePos& wf_grad); /** Evaluate the electron gradient of the local energy. * @param psi Trial Wave Function @@ -466,6 +482,19 @@ private: // helper function for extracting a list of Hamiltonian components from a list of QMCHamiltonian::H. static RefVectorWithLeader extract_HC_list(const RefVectorWithLeader& ham_list, int id); + //This is for fast derivative evaluation. + TWFFastDerivWrapper psi_wrapper_; + std::vector X_; //Working arrays for derivatives + std::vector Minv_; //Working array for derivatives. + std::vector B_; + std::vector B_gs_; + std::vector M_; + std::vector M_gs_; + + std::vector> dM_; + std::vector> dM_gs_; + std::vector> dB_; + std::vector> dB_gs_; #if !defined(REMOVE_TRACEMANAGER) ///traces variables TraceRequest request; From 1cbb4497489ba797be917c8fcb967837310d9bd7 Mon Sep 17 00:00:00 2001 From: rcclay Date: Wed, 31 Aug 2022 11:27:00 -0600 Subject: [PATCH 02/24] Use existing API to determine if operator is diagonal in real space --- src/QMCHamiltonians/QMCHamiltonian.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index 2eede73eb..fe46c2569 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1223,7 +1223,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF //Build B-matrices. Only for non-diagonal observables right now. for (int i = 0; i < H.size(); ++i) { - if (H[i]->is_nondiag) + if (H[i]->dependsOnWaveFunction()) { // ScopedTimer bmattimer(*timer_manager.createTimer("NEW::Btimer")); H[i]->evaluateOneBodyOpMatrix(P, psi_wrapper_, B_); @@ -1265,7 +1265,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF } for (int i = 0; i < H.size(); ++i) { - if (H[i]->is_nondiag) + if (H[i]->dependsOnWaveFunction()) { // ScopedTimer dBtimer(*timer_manager.createTimer("NEW::dB_timer")); H[i]->evaluateOneBodyOpMatrixForceDeriv(P, ions, psi_wrapper_, iat, dB_); From 3045c723d7bd39dbd36fad54bfdaba0d7feb8347 Mon Sep 17 00:00:00 2001 From: rcclay Date: Wed, 31 Aug 2022 14:26:31 -0600 Subject: [PATCH 03/24] Add state query for whether TWFFastWrapper has already been inititalized --- src/QMCHamiltonians/QMCHamiltonian.cpp | 2 +- src/QMCWaveFunctions/TWFFastDerivWrapper.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index fe46c2569..890de72d8 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1128,7 +1128,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF ParticleSet::ParticlePos& wf_grad) { // ScopedTimer evaluatederivtimer(*timer_manager.createTimer("NEW::evaluateIonDerivsFast")); - // if (!psi_wrapper_.initialized) + if (!psi_wrapper_.isInitialized()) { psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_); } diff --git a/src/QMCWaveFunctions/TWFFastDerivWrapper.h b/src/QMCWaveFunctions/TWFFastDerivWrapper.h index a26dc0be8..a56d53165 100644 --- a/src/QMCWaveFunctions/TWFFastDerivWrapper.h +++ b/src/QMCWaveFunctions/TWFFastDerivWrapper.h @@ -40,7 +40,7 @@ public: using ValueVector = SPOSet::ValueVector; using GradVector = SPOSet::GradVector; - + inline TWFFastDerivWrapper():is_initialized(false){}; /** @brief Add a particle group. * * Here, a "group" corresponds to a subset of particles which are antisymmetric with @@ -86,6 +86,7 @@ public: inline IndexType numGroups() const { return spos_.size(); }; SPOSet* getSPOSet(const IndexType sid) const { return spos_[sid]; }; inline IndexType numOrbitals(const IndexType sid) const { return spos_[sid]->size(); }; + inline bool isInitialized(){return is_initialized;}; /** @} */ ////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -271,6 +272,7 @@ public: private: + bool is_initialized; std::vector spos_; std::vector groups_; std::vector psi_M_; From b70308f1d357bde848b17e01106cd6f5f0ced845 Mon Sep 17 00:00:00 2001 From: rcclay Date: Mon, 19 Sep 2022 11:09:37 -0600 Subject: [PATCH 04/24] Initial but broken implementation of fast force --- src/QMCHamiltonians/ACForce.cpp | 10 +++++++++- src/QMCHamiltonians/ACForce.h | 2 +- src/QMCHamiltonians/QMCHamiltonian.cpp | 10 +++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/QMCHamiltonians/ACForce.cpp b/src/QMCHamiltonians/ACForce.cpp index 314208cf3..fb33e77d6 100644 --- a/src/QMCHamiltonians/ACForce.cpp +++ b/src/QMCHamiltonians/ACForce.cpp @@ -26,6 +26,7 @@ ACForce::ACForce(ParticleSet& source, ParticleSet& target, TrialWaveFunction& ps ham_(H), first_force_index_(-1), useSpaceWarp_(false), + fastDerivatives_(false), swt_(target, source) { setName("ACForce"); @@ -54,14 +55,17 @@ bool ACForce::put(xmlNodePtr cur) { std::string useSpaceWarpString("no"); std::string ionionforce("yes"); + std::string fasteval("no"); RealType swpow(4); OhmmsAttributeSet attr; attr.add(useSpaceWarpString, "spacewarp"); //"yes" or "no" attr.add(swpow, "swpow"); //Real number" attr.add(delta_, "delta"); //Real number" + attr.add(fasteval,"fast_derivatives"); attr.put(cur); useSpaceWarp_ = (useSpaceWarpString == "yes") || (useSpaceWarpString == "true"); + fastDerivatives_ = (fasteval == "yes") || (fasteval == "true"); swt_.setPow(swpow); if (useSpaceWarp_) @@ -92,7 +96,10 @@ ACForce::Return_t ACForce::evaluate(ParticleSet& P) sw_grad_ = 0; //This function returns d/dR of the sum of all observables in the physical hamiltonian. //Note that the sign will be flipped based on definition of force = -d/dR. - value_ = ham_.evaluateIonDerivs(P, ions_, psi_, hf_force_, pulay_force_, wf_grad_); + if(fastDerivatives_) + value_ = ham_.evaluateIonDerivsDeterministicFast(P, ions_, psi_, hf_force_, wf_grad_); + else + value_ = ham_.evaluateIonDerivsDeterministic(P, ions_, psi_, hf_force_, pulay_force_, wf_grad_); if (useSpaceWarp_) { @@ -103,6 +110,7 @@ ACForce::Return_t ACForce::evaluate(ParticleSet& P) ham_.evaluateElecGrad(P, psi_, el_grad, delta_); swt_.computeSWT(P, ions_, el_grad, P.G, sw_pulay_, sw_grad_); } + app_log()<<" VALUE="<size(); }; - inline bool isInitialized(){return is_initialized;}; + inline bool isInitialized(){return is_initialized_;}; /** @} */ ////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -272,7 +279,7 @@ public: private: - bool is_initialized; + bool is_initialized_; std::vector spos_; std::vector groups_; std::vector psi_M_; From d718fe544df9f7944a9a61bdce1aee60ebada310 Mon Sep 17 00:00:00 2001 From: rcclay Date: Thu, 22 Sep 2022 11:09:30 -0600 Subject: [PATCH 06/24] Forgot to add jastrow contribution to WFGrad. Fixed --- src/QMCHamiltonians/QMCHamiltonian.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index c0d1ba5a5..487499c3f 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1237,18 +1237,11 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF } } - app_log()<<"B[0] = "<size(); }; - inline bool isInitialized(){return is_initialized_;}; + inline bool isInitialized() { return is_initialized_; }; /** @} */ ////////////////////////////////////////////////////////////////////////////////////////////////////////// From 25e54749b683114800485a1b81eac8ca0d3cd0ab Mon Sep 17 00:00:00 2001 From: rcclay Date: Thu, 22 Sep 2022 14:11:50 -0600 Subject: [PATCH 10/24] Add timers to subcomponent computation --- src/QMCHamiltonians/QMCHamiltonian.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index a5fab024f..5bc2a79b2 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1127,7 +1127,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF ParticleSet::ParticlePos& dEdR, ParticleSet::ParticlePos& wf_grad) { - // ScopedTimer evaluatederivtimer(*timer_manager.createTimer("NEW::evaluateIonDerivsFast")); + ScopedTimer evaluatederivtimer(*timer_manager.createTimer("FastDeriv::evaluateIonDerivsFast")); if (!psi_wrapper_.isInitialized()) { psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_); @@ -1214,7 +1214,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF RealType localEnergy = 0.0; { - // ScopedTimer getmtimer(*timer_manager.createTimer("NEW::getM")); + ScopedTimer getmtimer(*timer_manager.createTimer("FastDeriv::getM")); psi_wrapper_.getM(P, M_); } { @@ -1227,7 +1227,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF { if (H[i]->dependsOnWaveFunction()) { - // ScopedTimer bmattimer(*timer_manager.createTimer("NEW::Btimer")); + ScopedTimer bmattimer(*timer_manager.createTimer("FastDeriv::B")); H[i]->evaluateOneBodyOpMatrix(P, psi_wrapper_, B_); } else @@ -1246,7 +1246,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF localEnergy += nondiag_cont_re; { - // ScopedTimer buildXtimer(*timer_manager.createTimer("NEW::buildX")); + ScopedTimer buildXtimer(*timer_manager.createTimer("FastDeriv::buildX")); psi_wrapper_.buildX(Minv_, B_gs_, X_); } //And now we compute the 3N force derivatives. 3 at a time for each atom. @@ -1266,7 +1266,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF } { - // ScopedTimer dmtimer(*timer_manager.createTimer("NEW::dM_timer")); + ScopedTimer dmtimer(*timer_manager.createTimer("FastDeriv::dM")); //ion derivative of slater matrix. psi_wrapper_.getIonGradM(P, ions, iat, dM_); } @@ -1274,14 +1274,14 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF { if (H[i]->dependsOnWaveFunction()) { - // ScopedTimer dBtimer(*timer_manager.createTimer("NEW::dB_timer")); + ScopedTimer dBtimer(*timer_manager.createTimer("FastDeriv::dB")); H[i]->evaluateOneBodyOpMatrixForceDeriv(P, ions, psi_wrapper_, iat, dB_); } } for (int idim = 0; idim < OHMMS_DIM; idim++) { - // ScopedTimer computederivtimer(*timer_manager.createTimer("NEW::compute_deriv")); + ScopedTimer computederivtimer(*timer_manager.createTimer("FastDeriv::compute_deriv")); psi_wrapper_.getGSMatrices(dB_[idim], dB_gs_[idim]); psi_wrapper_.getGSMatrices(dM_[idim], dM_gs_[idim]); From fc481a3f1a33d36c6feda7c1be82865d74e524c9 Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 11:32:30 -0600 Subject: [PATCH 11/24] Add initital integration test directory and reference files --- tests/estimator/CMakeLists.txt | 7 + tests/estimator/acforce/C.ccECP.xml | 1 + tests/estimator/acforce/N.ccECP.xml | 1 + tests/estimator/acforce/check_forces.py | 8 + tests/estimator/acforce/qmc-ref/vmc.fast.out | 493 ++++++++++++++++ .../acforce/qmc-ref/vmc.fast.s000.scalar.dat | 6 + .../estimator/acforce/qmc-ref/vmc.legacy.out | 493 ++++++++++++++++ .../qmc-ref/vmc.legacy.s000.scalar.dat | 6 + tests/estimator/acforce/vmc.fast.in.xml | 540 ++++++++++++++++++ tests/estimator/acforce/vmc.legacy.in.xml | 540 ++++++++++++++++++ 10 files changed, 2095 insertions(+) create mode 120000 tests/estimator/acforce/C.ccECP.xml create mode 120000 tests/estimator/acforce/N.ccECP.xml create mode 100755 tests/estimator/acforce/check_forces.py create mode 100644 tests/estimator/acforce/qmc-ref/vmc.fast.out create mode 100644 tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat create mode 100644 tests/estimator/acforce/qmc-ref/vmc.legacy.out create mode 100644 tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat create mode 100644 tests/estimator/acforce/vmc.fast.in.xml create mode 100644 tests/estimator/acforce/vmc.legacy.in.xml diff --git a/tests/estimator/CMakeLists.txt b/tests/estimator/CMakeLists.txt index 5a7989d2e..f413ff0bf 100644 --- a/tests/estimator/CMakeLists.txt +++ b/tests/estimator/CMakeLists.txt @@ -76,4 +76,11 @@ if(add_test) 16 check_collectables_h5dat.py dat-h5_allp) + simple_run_and_check( + estimator-acforce-legacy + "${qmcpack_SOURCE_DIR}/tests/estimator/acforce" + vmc.legacy.in.xml + 1 + 16 + check_forces.py) endif() diff --git a/tests/estimator/acforce/C.ccECP.xml b/tests/estimator/acforce/C.ccECP.xml new file mode 120000 index 000000000..6bac78b1c --- /dev/null +++ b/tests/estimator/acforce/C.ccECP.xml @@ -0,0 +1 @@ +../../pseudopotentials_for_tests/C.ccECP.xml \ No newline at end of file diff --git a/tests/estimator/acforce/N.ccECP.xml b/tests/estimator/acforce/N.ccECP.xml new file mode 120000 index 000000000..ae2ff4c5f --- /dev/null +++ b/tests/estimator/acforce/N.ccECP.xml @@ -0,0 +1 @@ +../../pseudopotentials_for_tests/N.ccECP.xml \ No newline at end of file diff --git a/tests/estimator/acforce/check_forces.py b/tests/estimator/acforce/check_forces.py new file mode 100755 index 000000000..6a888b116 --- /dev/null +++ b/tests/estimator/acforce/check_forces.py @@ -0,0 +1,8 @@ +#! /usr/bin/env python3 + +from sys import exit +import numpy as np + +if __name__ == "__main__": + + exit(0) diff --git a/tests/estimator/acforce/qmc-ref/vmc.fast.out b/tests/estimator/acforce/qmc-ref/vmc.fast.out new file mode 100644 index 000000000..51533df90 --- /dev/null +++ b/tests/estimator/acforce/qmc-ref/vmc.fast.out @@ -0,0 +1,493 @@ + Input file(s): vmc.fast.in.xml + +===================================================== + QMCPACK 3.14.9 + + (c) Copyright 2003- QMCPACK developers + + Please cite: + J. Kim et al. J. Phys. Cond. Mat. 30 195901 (2018) + https://doi.org/10.1088/1361-648X/aab9c3 + + Git branch: fast_force_switch + Last git commit: f1c13c8554c868d9c092e27bb5dc9b3f8fea4189-dirty + Last git commit date: Thu Sep 22 11:57:56 2022 -0600 + Last git commit subject: Clang format +===================================================== + Global options + + Total number of MPI ranks = 1 + Number of MPI groups = 1 + MPI group ID = 0 + Number of ranks in group = 1 + MPI ranks per node = 1 + OMP 1st level threads = 1 + OMP nested threading disabled or only 1 thread on the 2nd level + + Precision used in this calculation, see definitions in the manual: + Base precision = double + Full precision = double + + CPU only build + Timer build option is enabled. Current timer level is coarse + +================================================= +--- Memory usage report : when QMCPACK starts --- +================================================= +Available memory on node 0, free + buffers : 2600209 MiB +Memory footprint by rank 0 on node 0 : 13 MiB +================================================= + + Input XML = vmc.fast.in.xml + + Project = vmc.fast + date = 2022-09-23 10:37:55 MDT + host = cee-compute007 + + + Random Number + ------------- + Offset for the random number seeds from input file (mod 1024): 1 + + Range of prime numbers to use as seeds over processors and threads = 5-7 + + + Lattice + ------- + Lattice is not specified for the Open BC. Add a huge box. + Simulation cell radius = 5000000000.000000 bohr + Wigner-Seitz cell radius = 5000000000.000000 bohr + + + Particle Set + ------------ + Name: ion0 Offload : no + + All the species have the same mass 1.000000 + Particle set size: 2 Groups : 2 + + + Particle Set + ------------ + Name: e Offload : no + + All the species have the same mass 1.000000 + Particle set size: 9 Groups : 2 + + + Many-body wavefunction + ------------------- + Name: psi0 Tasking: no + +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +WARNING Radial orbital type cannot be determined based on the attributes of basisset line. Trying the parent element. + LCAO: SoaAtomicBasisSet + AO BasisSet for C + Angular momentum expanded in cartesian functions x^lx y^ly z^lz according to Gamess +Using log grid with default values: ri = 0.000001 rf = 100.000000 npts = 1001 + R(n,l,m,s) 0 0 0 0 + R(n,l,m,s) 1 0 0 0 + R(n,l,m,s) 2 1 0 0 + R(n,l,m,s) 3 1 0 0 + R(n,l,m,s) 4 2 0 0 +Expanding Ylm (angular function) according to Gamess using cartesian gaussians +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 6 cartesian gaussian orbitals for l= 2 + Setting cutoff radius 12.705741 + + Maximum Angular Momentum = 2 + Number of Radial functors = 5 + Basis size = 14 + + AO BasisSet for N + Angular momentum expanded in cartesian functions x^lx y^ly z^lz according to Gamess +Using log grid with default values: ri = 0.000001 rf = 100.000000 npts = 1001 + R(n,l,m,s) 0 0 0 0 + R(n,l,m,s) 1 0 0 0 + R(n,l,m,s) 2 1 0 0 + R(n,l,m,s) 3 1 0 0 + R(n,l,m,s) 4 2 0 0 +Expanding Ylm (angular function) according to Gamess using cartesian gaussians +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 6 cartesian gaussian orbitals for l= 2 + Setting cutoff radius 10.568175 + + Maximum Angular Momentum = 2 + Number of Radial functors = 5 + Basis size = 14 + + Created SPOSet builder named 'LCAOBSet' of type molecularorbital +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +Creating SPOSet in SlaterDetBuilder::put(xmlNodePtr cur). + + Single particle orbitals (SPO) + ------------------------------ + Name: spo-up Type: LCAO Builder class name: LCAOrbitalBuilder + +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +Creating SPOSet in SlaterDetBuilder::put(xmlNodePtr cur). + + Single particle orbitals (SPO) + ------------------------------ + Name: spo-dn Type: LCAO Builder class name: LCAOrbitalBuilder + + + Single Slater determinant + ------------------------- + + Determinant + ----------- + Name: det_up Spin group: 0 SPO name: spo-up + + Setting delay_rank to default value 1 + Using rank-1 Sherman-Morrison Fahy update (SM1) + Running on CPU. + + + Determinant + ----------- + Name: det_down Spin group: 1 SPO name: spo-dn + + Setting delay_rank to default value 1 + Using rank-1 Sherman-Morrison Fahy update (SM1) + Running on CPU. + + Added a fermionic WaveFunctionComponent SlaterDet + + Jastrow + ------- + Name: J2 Type: Two-Body Function: Bspline + + Radial function for species: u - u + Number of parameters: 10 + Cusp: -0.250000 + Cutoff radius: 10.000000 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + uu_0 (3.376320e-01,0.000000e+00) 1 1 ON 0 + uu_1 (1.624732e-01,0.000000e+00) 1 1 ON 1 + uu_2 (4.351991e-02,0.000000e+00) 1 1 ON 2 + uu_3 (-4.035807e-02,0.000000e+00) 1 1 ON 3 + uu_4 (-9.603443e-02,0.000000e+00) 1 1 ON 4 + uu_5 (-1.304825e-01,0.000000e+00) 1 1 ON 5 + uu_6 (-1.519115e-01,0.000000e+00) 1 1 ON 6 + uu_7 (-1.581844e-01,0.000000e+00) 1 1 ON 7 + uu_8 (-1.434888e-01,0.000000e+00) 1 1 ON 8 + uu_9 (-8.433161e-02,0.000000e+00) 1 1 ON 9 + + Radial function for species: u - d + Number of parameters: 10 + Cusp: -0.5 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + ud_0 (5.214319e-01,0.000000e+00) 1 1 ON 0 + ud_1 (2.176056e-01,0.000000e+00) 1 1 ON 1 + ud_2 (5.294951e-02,0.000000e+00) 1 1 ON 2 + ud_3 (-5.134927e-02,0.000000e+00) 1 1 ON 3 + ud_4 (-1.203809e-01,0.000000e+00) 1 1 ON 4 + ud_5 (-1.636808e-01,0.000000e+00) 1 1 ON 5 + ud_6 (-1.874756e-01,0.000000e+00) 1 1 ON 6 + ud_7 (-1.933985e-01,0.000000e+00) 1 1 ON 7 + ud_8 (-1.696532e-01,0.000000e+00) 1 1 ON 8 + ud_9 (-1.025787e-01,0.000000e+00) 1 1 ON 9 + + + Jastrow + ------- + Name: J1 Type: One-Body Function: Bspline + + Radial function for element: C - e + Number of parameters: 10 + Cusp: 0 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + eC_0 (-6.838408e-01,0.000000e+00) 1 1 ON 0 + eC_1 (-5.121351e-01,0.000000e+00) 1 1 ON 1 + eC_2 (-2.169132e-01,0.000000e+00) 1 1 ON 2 + eC_3 (2.112267e-02,0.000000e+00) 1 1 ON 3 + eC_4 (1.632960e-01,0.000000e+00) 1 1 ON 4 + eC_5 (2.996529e-01,0.000000e+00) 1 1 ON 5 + eC_6 (3.618872e-01,0.000000e+00) 1 1 ON 6 + eC_7 (3.632020e-01,0.000000e+00) 1 1 ON 7 + eC_8 (1.806446e-01,0.000000e+00) 1 1 ON 8 + eC_9 (2.469864e-02,0.000000e+00) 1 1 ON 9 + + Radial function for element: N - e + Number of parameters: 10 + Cusp: 0 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + eN_0 (-1.130653e+00,0.000000e+00) 1 1 ON 0 + eN_1 (-8.410557e-01,0.000000e+00) 1 1 ON 1 + eN_2 (-3.885257e-01,0.000000e+00) 1 1 ON 2 + eN_3 (-2.958499e-02,0.000000e+00) 1 1 ON 3 + eN_4 (1.927348e-01,0.000000e+00) 1 1 ON 4 + eN_5 (3.788962e-01,0.000000e+00) 1 1 ON 5 + eN_6 (5.181950e-01,0.000000e+00) 1 1 ON 6 + eN_7 (6.060955e-01,0.000000e+00) 1 1 ON 7 + eN_8 (4.846685e-01,0.000000e+00) 1 1 ON 8 + eN_9 (1.689172e-01,0.000000e+00) 1 1 ON 9 + + Adding psi0 TrialWaveFunction to the pool + + Hamiltonian and observables + --------------------------- + Name: h0 + + QMCHamiltonian::addOperator Kinetic to H, physical Hamiltonian + + Coulomb Potential + ----------------- + Name: ElecElec Type: AA PBC: no + + QMCHamiltonian::addOperator ElecElec to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type coulomb named ElecElec + + Coulomb Potential + ----------------- + Name: IonIon Type: AA PBC: no + + QMCHamiltonian::addOperator IonIon to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type coulomb named IonIon + + Pseudo Potential + ---------------- + Name: PseudoPot Wavefunction : psi0 + + + Adding pseudopotential for C + Linear grid ri=0 rf=10 npts = 10001 + ECPComponentBuilder::buildSemiLocalAndLocal +WARNING Nrule was not determined from qmcpack input or pseudopotential file. Setting sensible default. + Assuming Hartree unit + l-local setting found in pseudopotential file and used. + Number of angular momentum channels 2 + Maximum angular momentum channel (Lmax) 1 + Creating a Linear Grid Rmax=1.405 + Using global grid with delta = 0.001 + Making L=1 a local potential with a radial cutoff of 9.999 + Quadrature Nrule: 4 + Non-local pseudopotential parameters + Maximum angular momentum = 0 + Number of non-local channels = 1 + l(0)=0 + Cutoff radius = 1.405 + Number of spherical integration grid points = 12 + Spherical grid and weights: + 1 0 0 0.08333333333 + -1 1.224646799e-16 0 0.08333333333 + 0.4472135955 0.894427191 0 0.08333333333 + -0.4472135955 0.7236067977 0.5257311121 0.08333333333 + 0.4472135955 0.2763932023 0.8506508084 0.08333333333 + -0.4472135955 -0.2763932023 0.8506508084 0.08333333333 + 0.4472135955 -0.7236067977 0.5257311121 0.08333333333 + -0.4472135955 -0.894427191 1.095357397e-16 0.08333333333 + 0.4472135955 -0.7236067977 -0.5257311121 0.08333333333 + -0.4472135955 -0.2763932023 -0.8506508084 0.08333333333 + 0.4472135955 0.2763932023 -0.8506508084 0.08333333333 + -0.4472135955 0.7236067977 -0.5257311121 0.08333333333 + Maximum cutoff radius 1.405 + + Adding pseudopotential for N + Linear grid ri=0 rf=10 npts = 10001 + ECPComponentBuilder::buildSemiLocalAndLocal +WARNING Nrule was not determined from qmcpack input or pseudopotential file. Setting sensible default. + Assuming Hartree unit + l-local setting found in pseudopotential file and used. + Number of angular momentum channels 2 + Maximum angular momentum channel (Lmax) 1 + Creating a Linear Grid Rmax=1.325 + Using global grid with delta = 0.001 + Making L=1 a local potential with a radial cutoff of 9.999 + Quadrature Nrule: 4 + Non-local pseudopotential parameters + Maximum angular momentum = 0 + Number of non-local channels = 1 + l(0)=0 + Cutoff radius = 1.325 + Number of spherical integration grid points = 12 + Spherical grid and weights: + 1 0 0 0.08333333333 + -1 1.224646799e-16 0 0.08333333333 + 0.4472135955 0.894427191 0 0.08333333333 + -0.4472135955 0.7236067977 0.5257311121 0.08333333333 + 0.4472135955 0.2763932023 0.8506508084 0.08333333333 + -0.4472135955 -0.2763932023 0.8506508084 0.08333333333 + 0.4472135955 -0.7236067977 0.5257311121 0.08333333333 + -0.4472135955 -0.894427191 1.095357397e-16 0.08333333333 + 0.4472135955 -0.7236067977 -0.5257311121 0.08333333333 + -0.4472135955 -0.2763932023 -0.8506508084 0.08333333333 + 0.4472135955 0.2763932023 -0.8506508084 0.08333333333 + -0.4472135955 0.7236067977 -0.5257311121 0.08333333333 + Maximum cutoff radius 1.325 + QMCHamiltonian::addOperator LocalECP to H, physical Hamiltonian + + Using NonLocalECP potential + Maximum grid on a sphere for NonLocalECPotential: 12 + QMCHamiltonian::addOperator NonLocalECP to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type pseudo named PseudoPot +HamFac forceBase mode acforce +Adding Assaraf-Caffarel total force. +ACForce is not using space warp + QMCHamiltonian::addOperator ac to auxH +QMCHamiltonian::addOperatorType added type Force named ac + + QMCHamiltonian::add2WalkerProperty added + 29 to P::PropertyList + 0 to P::Collectables + starting Index of the observables in P::PropertyList = 9 +ParticleSetPool::randomize 0 ParticleSets. + Initialization Execution time = 0.133 secs +========================================================= + Summary of QMC systems +========================================================= +ParticleSetPool has: + + ParticleSet 'e' contains 9 particles : u(5) d(4) + + u -5.5936725000e-01 -2.6942464000e-01 1.4459603000e-01 + u 1.9146719000e-01 1.4028798300e+00 6.3931251000e-01 + u 1.1480591500e+00 -5.2057335000e-01 3.4962110700e+00 + u 2.8293870000e-01 -1.0273952000e-01 1.7070210000e-02 + u 6.0626935000e-01 -2.5538121000e-01 1.7575074000e+00 + d -4.7405939000e-01 5.9523171000e-01 -5.9778601000e-01 + d 3.1506610000e-02 -2.7343474000e-01 5.6279442000e-01 + d -1.3264802500e+00 9.7022600000e-03 2.2694424200e+00 + d 2.4294428600e+00 6.4884151000e-01 1.8750528800e+00 + + Distance table for dissimilar particles (A-B): + source: ion0 target: e + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + Distance table for similar particles (A-A): + source/target: e + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + + ParticleSet 'ion0' contains 2 particles : C(1) N(1) + + C 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 + N 0.0000000000e+00 0.0000000000e+00 2.0786985865e+00 + + Distance table for similar particles (A-A): + source/target: ion0 + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + + Hamiltonian h0 + Kinetic Kinetic energy + ElecElec CoulombAB source=e + + IonIon CoulombAA source/target ion0 + + LocalECP LocalECPotential: ion0 + NonLocalECP NonLocalECPotential: ion0 + + +========================================================= + Start VMC + File Root vmc.fast.s000 append = no +========================================================= +Resetting walkers + Adding 1 walkers to 0 existing sets + Total number of walkers: 1.0000000000e+00 + Total weight: 1.0000000000e+00 + Resetting Properties of the walkers 1 x 38 + + + qmc_counter=0 my_counter=0 + time step = 5.0000000000e-01 + blocks = 5 + steps = 1 + substeps = 5 + current = 0 + target samples = 0.0000000000e+00 + walkers/mpi = 1 + + stepsbetweensamples = 6 +5 +10 +100 +100 +0 +0.0000000000e+00 +360000 +360000 +0 +6 +0 +6 +0.0000000000e+00 +0.0000000000e+00 +1.0000000000e+00 +1 +6 +0 +0 +5 +5 +5.0000000000e-01 +5.0000000000e-01 +5.0000000000e-01 +yes +yes +1 +10 +10 + DumpConfig==true Configurations are dumped to config.h5 with a period of 5 blocks + Walker Samples are dumped every 6 steps. + + Set drift_modifier UNR parameter a = 1.0000000000e+00 + Adding a default LocalEnergyEstimator for the MainEstimator + Initial partition of walkers 0 1 + + Using Particle by Particle moves + Walker moves with drift + Total Sample Size =0 + Walker distribution on root = 0 1 + Using Locality Approximation +======================================================================== +--- Memory usage report : Memory Usage after the buffer registration --- +======================================================================== +Available memory on node 0, free + buffers : 2600196 MiB +Memory footprint by rank 0 on node 0 : 26 MiB +======================================================================== + Anonymous Buffer size per walker : 21632 Bytes. +MEMORY increase 0 MB VMC::resetRun +==================================================== + SimpleFixedNodeBranch::finalize after a VMC block + QMC counter = 0 + time step = 0.5 + reference energy = -15.3393 + reference variance = 0.0830525 +==================================================== + QMC Execution time = 2.0937e-01 secs + Total Execution time = 2.1131e-01 secs + +========================================================= + A new xml input file : vmc.fast.s000.cont.xml + +Use --enable-timers= command line option to increase or decrease level of timing information +Stack timer profile +Timer Inclusive_time Exclusive_time Calls Time_per_call +Total 0.3444 0.0001 1 0.344390331 + Startup 0.1331 0.1331 1 0.133069978 + VMC 0.2112 0.2112 1 0.211201571 + +QMCPACK execution completed successfully diff --git a/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat b/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat new file mode 100644 index 000000000..00c9994b1 --- /dev/null +++ b/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat @@ -0,0 +1,6 @@ +# index LocalEnergy LocalEnergy_sq LocalPotential Kinetic ElecElec IonIon LocalECP NonLocalECP ACForce_hf_0_0 ACForce_pulay_0_0 ACForce_Ewfgrad_0_0 ACForce_wfgrad_0_0 ACForce_hf_0_1 ACForce_pulay_0_1 ACForce_Ewfgrad_0_1 ACForce_wfgrad_0_1 ACForce_hf_0_2 ACForce_pulay_0_2 ACForce_Ewfgrad_0_2 ACForce_wfgrad_0_2 ACForce_hf_1_0 ACForce_pulay_1_0 ACForce_Ewfgrad_1_0 ACForce_wfgrad_1_0 ACForce_hf_1_1 ACForce_pulay_1_1 ACForce_Ewfgrad_1_1 ACForce_wfgrad_1_1 ACForce_hf_1_2 ACForce_pulay_1_2 ACForce_Ewfgrad_1_2 ACForce_wfgrad_1_2 BlockWeight BlockCPU AcceptRatio + 0 -1.4836902952e+01 2.2013368922e+02 -3.2156560497e+01 1.7319657545e+01 1.7501125762e+01 9.6214045316e+00 -6.2063924065e+01 2.7848332737e+00 -1.8309220651e+00 0.0000000000e+00 1.0427362748e+01 -7.0279914757e-01 -7.4059666462e-01 0.0000000000e+00 1.0662220173e+01 -7.1862842316e-01 2.8328613635e+00 0.0000000000e+00 6.2616543213e+01 -4.2203243772e+00 3.3389428544e-01 0.0000000000e+00 5.2541311044e+01 -3.5412586584e+00 -4.3933829927e-01 0.0000000000e+00 -3.5693282376e+00 2.4057097691e-01 -4.1273812624e+00 0.0000000000e+00 -4.5071202432e+01 3.0377769927e+00 1.0000000000e+00 1.2992395088e-02 7.3333333333e-01 + 1 -1.5438462206e+01 2.3834611528e+02 -2.7836458180e+01 1.2397995974e+01 1.7123551070e+01 9.6214045316e+00 -5.7243378256e+01 2.6619644749e+00 3.9498574390e-01 0.0000000000e+00 1.3641854152e+01 -8.8362778430e-01 4.7687920238e-01 0.0000000000e+00 1.2484077166e+01 -8.0863475905e-01 3.6864210949e+00 0.0000000000e+00 4.3391770159e+01 -2.8106277413e+00 5.7366394698e-01 0.0000000000e+00 -2.8675124627e+01 1.8573821826e+00 -1.2363230486e+00 0.0000000000e+00 1.4246118370e+00 -9.2276796613e-02 -4.7540461210e+00 0.0000000000e+00 2.6198080248e+01 -1.6969358670e+00 1.0000000000e+00 1.1379147880e-02 6.6666666667e-01 + 2 -1.5699850051e+01 2.4648529164e+02 -2.6502157767e+01 1.0802307715e+01 1.8163007231e+01 9.6214045316e+00 -5.4526138219e+01 2.3956868952e-01 -3.6576009071e-01 0.0000000000e+00 -2.0294448222e+01 1.2926523601e+00 -3.7820525124e-01 0.0000000000e+00 7.2685907554e+00 -4.6297198582e-01 4.6379215653e+00 0.0000000000e+00 5.7600204359e+01 -3.6688378660e+00 1.1368549634e+00 0.0000000000e+00 -4.3823356145e+01 2.7913232293e+00 1.7709632526e+00 0.0000000000e+00 -3.1905262766e+01 2.0322017510e+00 -4.4359313380e+00 0.0000000000e+00 -1.3333116187e+00 8.4925118033e-02 1.0000000000e+00 1.1481985915e-02 6.2222222222e-01 + 3 -1.5465777453e+01 2.3919027223e+02 -2.1882984778e+01 6.4172073251e+00 1.5256923757e+01 9.6214045316e+00 -4.6768085543e+01 6.7724759006e-03 -2.3798411821e-01 0.0000000000e+00 1.3184820941e+01 -8.5251588425e-01 -6.7233750366e-01 0.0000000000e+00 2.1649221942e+01 -1.3998146558e+00 4.0374264990e+00 0.0000000000e+00 2.8623279129e+01 -1.8507494509e+00 1.4662074476e-01 0.0000000000e+00 -1.2113379471e+01 7.8323766833e-01 -4.3915781816e-01 0.0000000000e+00 -1.7976743545e+01 1.1623562798e+00 -4.3313333030e+00 0.0000000000e+00 2.9583993905e+00 -1.9128682017e-01 1.0000000000e+00 1.3052660041e-02 5.7777777778e-01 + 4 -1.5255432404e+01 2.3272821783e+02 -2.0496825103e+01 5.2413926990e+00 1.4453947187e+01 9.6214045316e+00 -4.4617678857e+01 4.5502035961e-02 2.0969686650e-01 0.0000000000e+00 -9.9727579759e+00 6.5371847298e-01 5.2581997846e-02 0.0000000000e+00 -2.8703596641e+01 1.8815328128e+00 3.9297738709e+00 0.0000000000e+00 2.5153320432e+01 -1.6488107165e+00 -2.3636645125e-01 0.0000000000e+00 -2.5164938221e+01 1.6495722674e+00 -5.4540713166e-01 0.0000000000e+00 -1.0444315228e+01 6.8462924890e-01 -3.9919395009e+00 0.0000000000e+00 -1.4368419828e+01 9.4185595320e-01 1.0000000000e+00 8.2929348573e-03 6.6666666667e-01 diff --git a/tests/estimator/acforce/qmc-ref/vmc.legacy.out b/tests/estimator/acforce/qmc-ref/vmc.legacy.out new file mode 100644 index 000000000..6ce43b37c --- /dev/null +++ b/tests/estimator/acforce/qmc-ref/vmc.legacy.out @@ -0,0 +1,493 @@ + Input file(s): vmc.legacy.in.xml + +===================================================== + QMCPACK 3.14.9 + + (c) Copyright 2003- QMCPACK developers + + Please cite: + J. Kim et al. J. Phys. Cond. Mat. 30 195901 (2018) + https://doi.org/10.1088/1361-648X/aab9c3 + + Git branch: fast_force_switch + Last git commit: f1c13c8554c868d9c092e27bb5dc9b3f8fea4189-dirty + Last git commit date: Thu Sep 22 11:57:56 2022 -0600 + Last git commit subject: Clang format +===================================================== + Global options + + Total number of MPI ranks = 1 + Number of MPI groups = 1 + MPI group ID = 0 + Number of ranks in group = 1 + MPI ranks per node = 1 + OMP 1st level threads = 1 + OMP nested threading disabled or only 1 thread on the 2nd level + + Precision used in this calculation, see definitions in the manual: + Base precision = double + Full precision = double + + CPU only build + Timer build option is enabled. Current timer level is coarse + +================================================= +--- Memory usage report : when QMCPACK starts --- +================================================= +Available memory on node 0, free + buffers : 2600177 MiB +Memory footprint by rank 0 on node 0 : 13 MiB +================================================= + + Input XML = vmc.legacy.in.xml + + Project = vmc.legacy + date = 2022-09-23 10:38:03 MDT + host = cee-compute007 + + + Random Number + ------------- + Offset for the random number seeds from input file (mod 1024): 1 + + Range of prime numbers to use as seeds over processors and threads = 5-7 + + + Lattice + ------- + Lattice is not specified for the Open BC. Add a huge box. + Simulation cell radius = 5000000000.000000 bohr + Wigner-Seitz cell radius = 5000000000.000000 bohr + + + Particle Set + ------------ + Name: ion0 Offload : no + + All the species have the same mass 1.000000 + Particle set size: 2 Groups : 2 + + + Particle Set + ------------ + Name: e Offload : no + + All the species have the same mass 1.000000 + Particle set size: 9 Groups : 2 + + + Many-body wavefunction + ------------------- + Name: psi0 Tasking: no + +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +WARNING Radial orbital type cannot be determined based on the attributes of basisset line. Trying the parent element. + LCAO: SoaAtomicBasisSet + AO BasisSet for C + Angular momentum expanded in cartesian functions x^lx y^ly z^lz according to Gamess +Using log grid with default values: ri = 0.000001 rf = 100.000000 npts = 1001 + R(n,l,m,s) 0 0 0 0 + R(n,l,m,s) 1 0 0 0 + R(n,l,m,s) 2 1 0 0 + R(n,l,m,s) 3 1 0 0 + R(n,l,m,s) 4 2 0 0 +Expanding Ylm (angular function) according to Gamess using cartesian gaussians +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 6 cartesian gaussian orbitals for l= 2 + Setting cutoff radius 12.705741 + + Maximum Angular Momentum = 2 + Number of Radial functors = 5 + Basis size = 14 + + AO BasisSet for N + Angular momentum expanded in cartesian functions x^lx y^ly z^lz according to Gamess +Using log grid with default values: ri = 0.000001 rf = 100.000000 npts = 1001 + R(n,l,m,s) 0 0 0 0 + R(n,l,m,s) 1 0 0 0 + R(n,l,m,s) 2 1 0 0 + R(n,l,m,s) 3 1 0 0 + R(n,l,m,s) 4 2 0 0 +Expanding Ylm (angular function) according to Gamess using cartesian gaussians +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 1 cartesian gaussian orbitals for l= 0 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 3 cartesian gaussian orbitals for l= 1 +Adding 6 cartesian gaussian orbitals for l= 2 + Setting cutoff radius 10.568175 + + Maximum Angular Momentum = 2 + Number of Radial functors = 5 + Basis size = 14 + + Created SPOSet builder named 'LCAOBSet' of type molecularorbital +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +Creating SPOSet in SlaterDetBuilder::put(xmlNodePtr cur). + + Single particle orbitals (SPO) + ------------------------------ + Name: spo-up Type: LCAO Builder class name: LCAOrbitalBuilder + +WARNING !!!!!!! Deprecated input style: creating SPO set inside determinantset. Support for this usage will soon be removed. SPO sets should be built outside using sposet_collection. +Creating SPOSet in SlaterDetBuilder::put(xmlNodePtr cur). + + Single particle orbitals (SPO) + ------------------------------ + Name: spo-dn Type: LCAO Builder class name: LCAOrbitalBuilder + + + Single Slater determinant + ------------------------- + + Determinant + ----------- + Name: det_up Spin group: 0 SPO name: spo-up + + Setting delay_rank to default value 1 + Using rank-1 Sherman-Morrison Fahy update (SM1) + Running on CPU. + + + Determinant + ----------- + Name: det_down Spin group: 1 SPO name: spo-dn + + Setting delay_rank to default value 1 + Using rank-1 Sherman-Morrison Fahy update (SM1) + Running on CPU. + + Added a fermionic WaveFunctionComponent SlaterDet + + Jastrow + ------- + Name: J2 Type: Two-Body Function: Bspline + + Radial function for species: u - u + Number of parameters: 10 + Cusp: -0.250000 + Cutoff radius: 10.000000 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + uu_0 (3.376320e-01,0.000000e+00) 1 1 ON 0 + uu_1 (1.624732e-01,0.000000e+00) 1 1 ON 1 + uu_2 (4.351991e-02,0.000000e+00) 1 1 ON 2 + uu_3 (-4.035807e-02,0.000000e+00) 1 1 ON 3 + uu_4 (-9.603443e-02,0.000000e+00) 1 1 ON 4 + uu_5 (-1.304825e-01,0.000000e+00) 1 1 ON 5 + uu_6 (-1.519115e-01,0.000000e+00) 1 1 ON 6 + uu_7 (-1.581844e-01,0.000000e+00) 1 1 ON 7 + uu_8 (-1.434888e-01,0.000000e+00) 1 1 ON 8 + uu_9 (-8.433161e-02,0.000000e+00) 1 1 ON 9 + + Radial function for species: u - d + Number of parameters: 10 + Cusp: -0.5 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + ud_0 (5.214319e-01,0.000000e+00) 1 1 ON 0 + ud_1 (2.176056e-01,0.000000e+00) 1 1 ON 1 + ud_2 (5.294951e-02,0.000000e+00) 1 1 ON 2 + ud_3 (-5.134927e-02,0.000000e+00) 1 1 ON 3 + ud_4 (-1.203809e-01,0.000000e+00) 1 1 ON 4 + ud_5 (-1.636808e-01,0.000000e+00) 1 1 ON 5 + ud_6 (-1.874756e-01,0.000000e+00) 1 1 ON 6 + ud_7 (-1.933985e-01,0.000000e+00) 1 1 ON 7 + ud_8 (-1.696532e-01,0.000000e+00) 1 1 ON 8 + ud_9 (-1.025787e-01,0.000000e+00) 1 1 ON 9 + + + Jastrow + ------- + Name: J1 Type: One-Body Function: Bspline + + Radial function for element: C - e + Number of parameters: 10 + Cusp: 0 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + eC_0 (-6.838408e-01,0.000000e+00) 1 1 ON 0 + eC_1 (-5.121351e-01,0.000000e+00) 1 1 ON 1 + eC_2 (-2.169132e-01,0.000000e+00) 1 1 ON 2 + eC_3 (2.112267e-02,0.000000e+00) 1 1 ON 3 + eC_4 (1.632960e-01,0.000000e+00) 1 1 ON 4 + eC_5 (2.996529e-01,0.000000e+00) 1 1 ON 5 + eC_6 (3.618872e-01,0.000000e+00) 1 1 ON 6 + eC_7 (3.632020e-01,0.000000e+00) 1 1 ON 7 + eC_8 (1.806446e-01,0.000000e+00) 1 1 ON 8 + eC_9 (2.469864e-02,0.000000e+00) 1 1 ON 9 + + Radial function for element: N - e + Number of parameters: 10 + Cusp: 0 + Cutoff radius: 10 + + Name Value Type Recompute Use Index + ---- ---------------------------- ---- --------- --- ----- + eN_0 (-1.130653e+00,0.000000e+00) 1 1 ON 0 + eN_1 (-8.410557e-01,0.000000e+00) 1 1 ON 1 + eN_2 (-3.885257e-01,0.000000e+00) 1 1 ON 2 + eN_3 (-2.958499e-02,0.000000e+00) 1 1 ON 3 + eN_4 (1.927348e-01,0.000000e+00) 1 1 ON 4 + eN_5 (3.788962e-01,0.000000e+00) 1 1 ON 5 + eN_6 (5.181950e-01,0.000000e+00) 1 1 ON 6 + eN_7 (6.060955e-01,0.000000e+00) 1 1 ON 7 + eN_8 (4.846685e-01,0.000000e+00) 1 1 ON 8 + eN_9 (1.689172e-01,0.000000e+00) 1 1 ON 9 + + Adding psi0 TrialWaveFunction to the pool + + Hamiltonian and observables + --------------------------- + Name: h0 + + QMCHamiltonian::addOperator Kinetic to H, physical Hamiltonian + + Coulomb Potential + ----------------- + Name: ElecElec Type: AA PBC: no + + QMCHamiltonian::addOperator ElecElec to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type coulomb named ElecElec + + Coulomb Potential + ----------------- + Name: IonIon Type: AA PBC: no + + QMCHamiltonian::addOperator IonIon to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type coulomb named IonIon + + Pseudo Potential + ---------------- + Name: PseudoPot Wavefunction : psi0 + + + Adding pseudopotential for C + Linear grid ri=0 rf=10 npts = 10001 + ECPComponentBuilder::buildSemiLocalAndLocal +WARNING Nrule was not determined from qmcpack input or pseudopotential file. Setting sensible default. + Assuming Hartree unit + l-local setting found in pseudopotential file and used. + Number of angular momentum channels 2 + Maximum angular momentum channel (Lmax) 1 + Creating a Linear Grid Rmax=1.405 + Using global grid with delta = 0.001 + Making L=1 a local potential with a radial cutoff of 9.999 + Quadrature Nrule: 4 + Non-local pseudopotential parameters + Maximum angular momentum = 0 + Number of non-local channels = 1 + l(0)=0 + Cutoff radius = 1.405 + Number of spherical integration grid points = 12 + Spherical grid and weights: + 1 0 0 0.08333333333 + -1 1.224646799e-16 0 0.08333333333 + 0.4472135955 0.894427191 0 0.08333333333 + -0.4472135955 0.7236067977 0.5257311121 0.08333333333 + 0.4472135955 0.2763932023 0.8506508084 0.08333333333 + -0.4472135955 -0.2763932023 0.8506508084 0.08333333333 + 0.4472135955 -0.7236067977 0.5257311121 0.08333333333 + -0.4472135955 -0.894427191 1.095357397e-16 0.08333333333 + 0.4472135955 -0.7236067977 -0.5257311121 0.08333333333 + -0.4472135955 -0.2763932023 -0.8506508084 0.08333333333 + 0.4472135955 0.2763932023 -0.8506508084 0.08333333333 + -0.4472135955 0.7236067977 -0.5257311121 0.08333333333 + Maximum cutoff radius 1.405 + + Adding pseudopotential for N + Linear grid ri=0 rf=10 npts = 10001 + ECPComponentBuilder::buildSemiLocalAndLocal +WARNING Nrule was not determined from qmcpack input or pseudopotential file. Setting sensible default. + Assuming Hartree unit + l-local setting found in pseudopotential file and used. + Number of angular momentum channels 2 + Maximum angular momentum channel (Lmax) 1 + Creating a Linear Grid Rmax=1.325 + Using global grid with delta = 0.001 + Making L=1 a local potential with a radial cutoff of 9.999 + Quadrature Nrule: 4 + Non-local pseudopotential parameters + Maximum angular momentum = 0 + Number of non-local channels = 1 + l(0)=0 + Cutoff radius = 1.325 + Number of spherical integration grid points = 12 + Spherical grid and weights: + 1 0 0 0.08333333333 + -1 1.224646799e-16 0 0.08333333333 + 0.4472135955 0.894427191 0 0.08333333333 + -0.4472135955 0.7236067977 0.5257311121 0.08333333333 + 0.4472135955 0.2763932023 0.8506508084 0.08333333333 + -0.4472135955 -0.2763932023 0.8506508084 0.08333333333 + 0.4472135955 -0.7236067977 0.5257311121 0.08333333333 + -0.4472135955 -0.894427191 1.095357397e-16 0.08333333333 + 0.4472135955 -0.7236067977 -0.5257311121 0.08333333333 + -0.4472135955 -0.2763932023 -0.8506508084 0.08333333333 + 0.4472135955 0.2763932023 -0.8506508084 0.08333333333 + -0.4472135955 0.7236067977 -0.5257311121 0.08333333333 + Maximum cutoff radius 1.325 + QMCHamiltonian::addOperator LocalECP to H, physical Hamiltonian + + Using NonLocalECP potential + Maximum grid on a sphere for NonLocalECPotential: 12 + QMCHamiltonian::addOperator NonLocalECP to H, physical Hamiltonian +QMCHamiltonian::addOperatorType added type pseudo named PseudoPot +HamFac forceBase mode acforce +Adding Assaraf-Caffarel total force. +ACForce is not using space warp + QMCHamiltonian::addOperator ac to auxH +QMCHamiltonian::addOperatorType added type Force named ac + + QMCHamiltonian::add2WalkerProperty added + 29 to P::PropertyList + 0 to P::Collectables + starting Index of the observables in P::PropertyList = 9 +ParticleSetPool::randomize 0 ParticleSets. + Initialization Execution time = 0.06014 secs +========================================================= + Summary of QMC systems +========================================================= +ParticleSetPool has: + + ParticleSet 'e' contains 9 particles : u(5) d(4) + + u -5.5936725000e-01 -2.6942464000e-01 1.4459603000e-01 + u 1.9146719000e-01 1.4028798300e+00 6.3931251000e-01 + u 1.1480591500e+00 -5.2057335000e-01 3.4962110700e+00 + u 2.8293870000e-01 -1.0273952000e-01 1.7070210000e-02 + u 6.0626935000e-01 -2.5538121000e-01 1.7575074000e+00 + d -4.7405939000e-01 5.9523171000e-01 -5.9778601000e-01 + d 3.1506610000e-02 -2.7343474000e-01 5.6279442000e-01 + d -1.3264802500e+00 9.7022600000e-03 2.2694424200e+00 + d 2.4294428600e+00 6.4884151000e-01 1.8750528800e+00 + + Distance table for dissimilar particles (A-B): + source: ion0 target: e + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + Distance table for similar particles (A-A): + source/target: e + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + + ParticleSet 'ion0' contains 2 particles : C(1) N(1) + + C 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 + N 0.0000000000e+00 0.0000000000e+00 2.0786985865e+00 + + Distance table for similar particles (A-A): + source/target: ion0 + Using structure-of-arrays (SoA) data layout + Distance computations use open boundary conditions in 3D. + + + Hamiltonian h0 + Kinetic Kinetic energy + ElecElec CoulombAB source=e + + IonIon CoulombAA source/target ion0 + + LocalECP LocalECPotential: ion0 + NonLocalECP NonLocalECPotential: ion0 + + +========================================================= + Start VMC + File Root vmc.legacy.s000 append = no +========================================================= +Resetting walkers + Adding 1 walkers to 0 existing sets + Total number of walkers: 1.0000000000e+00 + Total weight: 1.0000000000e+00 + Resetting Properties of the walkers 1 x 38 + + + qmc_counter=0 my_counter=0 + time step = 5.0000000000e-01 + blocks = 5 + steps = 1 + substeps = 5 + current = 0 + target samples = 0.0000000000e+00 + walkers/mpi = 1 + + stepsbetweensamples = 6 +5 +10 +100 +100 +0 +0.0000000000e+00 +360000 +360000 +0 +6 +0 +6 +0.0000000000e+00 +0.0000000000e+00 +1.0000000000e+00 +1 +6 +0 +0 +5 +5 +5.0000000000e-01 +5.0000000000e-01 +5.0000000000e-01 +yes +yes +1 +10 +10 + DumpConfig==true Configurations are dumped to config.h5 with a period of 5 blocks + Walker Samples are dumped every 6 steps. + + Set drift_modifier UNR parameter a = 1.0000000000e+00 + Adding a default LocalEnergyEstimator for the MainEstimator + Initial partition of walkers 0 1 + + Using Particle by Particle moves + Walker moves with drift + Total Sample Size =0 + Walker distribution on root = 0 1 + Using Locality Approximation +======================================================================== +--- Memory usage report : Memory Usage after the buffer registration --- +======================================================================== +Available memory on node 0, free + buffers : 2600170 MiB +Memory footprint by rank 0 on node 0 : 24 MiB +======================================================================== + Anonymous Buffer size per walker : 21632 Bytes. +MEMORY increase 0 MB VMC::resetRun +==================================================== + SimpleFixedNodeBranch::finalize after a VMC block + QMC counter = 0 + time step = 0.5 + reference energy = -15.3393 + reference variance = 0.0830525 +==================================================== + QMC Execution time = 6.6903e-01 secs + Total Execution time = 6.7148e-01 secs + +========================================================= + A new xml input file : vmc.legacy.s000.cont.xml + +Use --enable-timers= command line option to increase or decrease level of timing information +Stack timer profile +Timer Inclusive_time Exclusive_time Calls Time_per_call +Total 0.7317 0.0001 1 0.731687285 + Startup 0.0602 0.0602 1 0.060193879 + VMC 0.6714 0.6714 1 0.671352092 + +QMCPACK execution completed successfully diff --git a/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat b/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat new file mode 100644 index 000000000..3aadb1d8c --- /dev/null +++ b/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat @@ -0,0 +1,6 @@ +# index LocalEnergy LocalEnergy_sq LocalPotential Kinetic ElecElec IonIon LocalECP NonLocalECP ACForce_hf_0_0 ACForce_pulay_0_0 ACForce_Ewfgrad_0_0 ACForce_wfgrad_0_0 ACForce_hf_0_1 ACForce_pulay_0_1 ACForce_Ewfgrad_0_1 ACForce_wfgrad_0_1 ACForce_hf_0_2 ACForce_pulay_0_2 ACForce_Ewfgrad_0_2 ACForce_wfgrad_0_2 ACForce_hf_1_0 ACForce_pulay_1_0 ACForce_Ewfgrad_1_0 ACForce_wfgrad_1_0 ACForce_hf_1_1 ACForce_pulay_1_1 ACForce_Ewfgrad_1_1 ACForce_wfgrad_1_1 ACForce_hf_1_2 ACForce_pulay_1_2 ACForce_Ewfgrad_1_2 ACForce_wfgrad_1_2 BlockWeight BlockCPU AcceptRatio + 0 -1.4836902952e+01 2.2013368922e+02 -3.2156560497e+01 1.7319657545e+01 1.7501125762e+01 9.6214045316e+00 -6.2063924065e+01 2.7848332737e+00 1.0744199250e+00 -2.9053419901e+00 1.0427362748e+01 -7.0279914757e-01 1.7068277879e+01 -1.7808874544e+01 1.0662220173e+01 -7.1862842316e-01 2.7105373685e+01 -2.4272512321e+01 6.2616543213e+01 -4.2203243772e+00 3.2166254247e+00 -2.8827311393e+00 5.2541311044e+01 -3.5412586584e+00 9.8723731763e-01 -1.4265756169e+00 -3.5693282376e+00 2.4057097691e-01 -6.9059687944e+00 2.7785875320e+00 -4.5071202432e+01 3.0377769927e+00 1.0000000000e+00 1.7744869925e-02 7.3333333333e-01 + 1 -1.5438462206e+01 2.3834611528e+02 -2.7836458180e+01 1.2397995974e+01 1.7123551070e+01 9.6214045316e+00 -5.7243378256e+01 2.6619644749e+00 3.1053134339e+00 -2.7103276900e+00 1.3641854152e+01 -8.8362778430e-01 -8.0970505513e-01 1.2865842575e+00 1.2484077166e+01 -8.0863475905e-01 3.9253422762e+00 -2.3892118125e-01 4.3391770159e+01 -2.8106277413e+00 -8.9344917822e+00 9.5081557291e+00 -2.8675124627e+01 1.8573821826e+00 -9.4564163383e+00 8.2200932897e+00 1.4246118370e+00 -9.2276796613e-02 4.2234325147e+00 -8.9774786357e+00 2.6198080248e+01 -1.6969358670e+00 1.0000000000e+00 1.5046700137e-02 6.6666666667e-01 + 2 -1.5699850051e+01 2.4648529164e+02 -2.6502157767e+01 1.0802307715e+01 1.8163007231e+01 9.6214045316e+00 -5.4526138219e+01 2.3956868952e-01 -1.1676323945e+00 8.0187230376e-01 -2.0294448222e+01 1.2926523601e+00 -1.1204720508e+00 7.4226679956e-01 7.2685907554e+00 -4.6297198582e-01 6.8989293736e+00 -2.2610078083e+00 5.7600204359e+01 -3.6688378660e+00 -8.2791977270e+00 9.4160526904e+00 -4.3823356145e+01 2.7913232293e+00 1.7320478922e+00 3.8915360395e-02 -3.1905262766e+01 2.0322017510e+00 1.7764382764e-02 -4.4536957207e+00 -1.3333116187e+00 8.4925118033e-02 1.0000000000e+00 1.4950377168e-02 6.2222222222e-01 + 3 -1.5465777453e+01 2.3919027223e+02 -2.1882984778e+01 6.4172073251e+00 1.5256923757e+01 9.6214045316e+00 -4.6768085543e+01 6.7724759006e-03 2.0542355031e+00 -2.2922196213e+00 1.3184820941e+01 -8.5251588425e-01 1.3732326976e-01 -8.0966077342e-01 2.1649221942e+01 -1.3998146558e+00 5.4603910405e+00 -1.4229645414e+00 2.8623279129e+01 -1.8507494509e+00 -2.7203917167e+00 2.8670124615e+00 -1.2113379471e+01 7.8323766833e-01 -4.3039743856e+00 3.8648165675e+00 -1.7976743545e+01 1.1623562798e+00 -4.4685334508e+00 1.3720014779e-01 2.9583993905e+00 -1.9128682017e-01 1.0000000000e+00 1.7588061048e-02 5.7777777778e-01 + 4 -1.5255432404e+01 2.3272821783e+02 -2.0496825103e+01 5.2413926990e+00 1.4453947187e+01 9.6214045316e+00 -4.4617678857e+01 4.5502035961e-02 -2.7533345531e+00 2.9630314196e+00 -9.9727579759e+00 6.5371847298e-01 -3.2207348654e+00 3.2733168632e+00 -2.8703596641e+01 1.8815328128e+00 2.6657640806e+00 1.2640097903e+00 2.5153320432e+01 -1.6488107165e+00 2.0265666841e+00 -2.2629331354e+00 -2.5164938221e+01 1.6495722674e+00 2.1286291745e+00 -2.6740363061e+00 -1.0444315228e+01 6.8462924890e-01 -4.8332255835e+00 8.4128608261e-01 -1.4368419828e+01 9.4185595320e-01 1.0000000000e+00 9.8440230358e-03 6.6666666667e-01 diff --git a/tests/estimator/acforce/vmc.fast.in.xml b/tests/estimator/acforce/vmc.fast.in.xml new file mode 100644 index 000000000..f1052c75f --- /dev/null +++ b/tests/estimator/acforce/vmc.fast.in.xml @@ -0,0 +1,540 @@ + + + + + + + + + + n n n + + + + + 4 + 2 + 6 + + + 5 + 3 + 7 + + + 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 + 0.0000000000e+00 0.0000000000e+00 2.0786985865e+00 + + + C N + + + + + -1 + +-0.55936725 -0.26942464 0.14459603 +0.19146719 1.40287983 0.63931251 +1.14805915 -0.52057335 3.49621107 +0.28293870 -0.10273952 0.01707021 +0.60626935 -0.25538121 1.75750740 + + + + -1 + +-0.47405939 0.59523171 -0.59778601 +0.03150661 -0.27343474 0.56279442 +-1.32648025 0.00970226 2.26944242 +2.42944286 0.64884151 1.87505288 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5.92498000000000e-01 -7.11710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 3.50367000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -5.87140000000000e-02 + -1.34610000000000e-02 -1.34610000000000e-02 2.69230000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.44664000000000e-01 -3.36583000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.88003000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.97031000000000e-01 -9.95900000000000e-03 -9.95900000000000e-03 + 1.99180000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.99991000000000e-01 7.76660000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -1.58300000000000e-01 0.00000000000000e+00 0.00000000000000e+00 4.57610000000000e-02 + 2.66600000000000e-03 2.66600000000000e-03 -5.33200000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.35597000000000e-01 2.38923000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 7.01343000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -9.85890000000000e-02 1.29900000000000e-02 1.29900000000000e-02 + -2.59790000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -2.98220000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -2.98220000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 + -6.00737000000000e-01 -1.78800000000000e-03 0.00000000000000e+00 0.00000000000000e+00 + 7.96054000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -8.73480000000000e-02 + 8.24500000000000e-03 8.24500000000000e-03 -1.64900000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.24165000000000e-01 -2.52179000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -3.29025000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.10489000000000e-01 -6.90100000000000e-03 -6.90100000000000e-03 + 1.38030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.17259000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.17259000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 + -1.70834000000000e-01 4.05664000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.71497000000000e-01 0.00000000000000e+00 0.00000000000000e+00 2.60599100000000e+00 + -8.57300000000000e-03 -8.57300000000000e-03 1.71460000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.04255000000000e-01 -3.94997000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 9.32750000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 1.22845500000000e+00 3.67740000000000e-02 3.67740000000000e-02 + -7.35480000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.56684000000000e-01 1.96048200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.13794600000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.03479200000000e+00 + -2.34070000000000e-02 -2.34070000000000e-02 4.68140000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.17650000000000e-02 -8.28252000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.20113000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 9.34297000000000e-01 3.67020000000000e-02 3.67020000000000e-02 + -7.34030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -3.29710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -3.29710000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 0.00000000000000e+00 + 7.60343000000000e-01 -2.22498200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.16250000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -9.62944000000000e-01 + 2.10069000000000e-01 2.10069000000000e-01 -4.20137000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.50143900000000e+00 3.33505500000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.50582000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.72778000000000e-01 -1.11917000000000e-01 -1.11917000000000e-01 + 2.23835000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.04581100000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 2.04581100000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 + -4.06811000000000e-01 1.32296500000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.05813000000000e-01 0.00000000000000e+00 0.00000000000000e+00 1.31054200000000e+00 + -2.89339000000000e-01 -2.89339000000000e-01 5.78677000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.93427000000000e-01 -9.11598000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.05799400000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.17032800000000e+00 8.93150000000000e-02 8.93150000000000e-02 + -1.78631000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 9.37656000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.98033000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 8.12034000000000e-01 -8.12034000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 1.71501000000000e-01 -1.71501000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 3.23917000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 3.23917000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 + -1.23186600000000e+00 -2.64528900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -7.52440000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -2.16974100000000e+00 + 2.43136000000000e-01 2.43136000000000e-01 -4.86272000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -9.09028000000000e-01 5.07976000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.53290000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 -1.77011200000000e+00 2.88692000000000e-01 2.88692000000000e-01 + -5.77385000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.14138000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.00572900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 3.58654000000000e-01 -3.58654000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -8.70987000000000e-01 8.70987000000000e-01 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.56970000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.56970000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 0.00000000000000e+00 + 2.91660000000000e-02 -1.36489300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.08017800000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.10172000000000e+00 + -5.83438000000000e-01 -5.83438000000000e-01 1.16687700000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.17932900000000e+00 3.96220800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.57976600000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.96401900000000e+00 -9.21400000000000e-03 -9.21400000000000e-03 + 1.84270000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.25915700000000e+00 -1.36543900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.06573900000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.12930300000000e+00 + 2.87518000000000e-01 2.87518000000000e-01 -5.75036000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.67489000000000e-01 5.23199800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.62549000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -2.49566300000000e+00 -6.28613000000000e-01 -6.28613000000000e-01 + 1.25722600000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + + + + + + 5.92498000000000e-01 -7.11710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 3.50367000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -5.87140000000000e-02 + -1.34610000000000e-02 -1.34610000000000e-02 2.69230000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.44664000000000e-01 -3.36583000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.88003000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.97031000000000e-01 -9.95900000000000e-03 -9.95900000000000e-03 + 1.99180000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.99991000000000e-01 7.76660000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -1.58300000000000e-01 0.00000000000000e+00 0.00000000000000e+00 4.57610000000000e-02 + 2.66600000000000e-03 2.66600000000000e-03 -5.33200000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.35597000000000e-01 2.38923000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 7.01343000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -9.85890000000000e-02 1.29900000000000e-02 1.29900000000000e-02 + -2.59790000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -2.98220000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -2.98220000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 + -6.00737000000000e-01 -1.78800000000000e-03 0.00000000000000e+00 0.00000000000000e+00 + 7.96054000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -8.73480000000000e-02 + 8.24500000000000e-03 8.24500000000000e-03 -1.64900000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.24165000000000e-01 -2.52179000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -3.29025000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.10489000000000e-01 -6.90100000000000e-03 -6.90100000000000e-03 + 1.38030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.17259000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.17259000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 + -1.70834000000000e-01 4.05664000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.71497000000000e-01 0.00000000000000e+00 0.00000000000000e+00 2.60599100000000e+00 + -8.57300000000000e-03 -8.57300000000000e-03 1.71460000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.04255000000000e-01 -3.94997000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 9.32750000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 1.22845500000000e+00 3.67740000000000e-02 3.67740000000000e-02 + -7.35480000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.56684000000000e-01 1.96048200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.13794600000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.03479200000000e+00 + -2.34070000000000e-02 -2.34070000000000e-02 4.68140000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.17650000000000e-02 -8.28252000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.20113000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 9.34297000000000e-01 3.67020000000000e-02 3.67020000000000e-02 + -7.34030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -3.29710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -3.29710000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 0.00000000000000e+00 + 7.60343000000000e-01 -2.22498200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.16250000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -9.62944000000000e-01 + 2.10069000000000e-01 2.10069000000000e-01 -4.20137000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.50143900000000e+00 3.33505500000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.50582000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.72778000000000e-01 -1.11917000000000e-01 -1.11917000000000e-01 + 2.23835000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.04581100000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 2.04581100000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 + -4.06811000000000e-01 1.32296500000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.05813000000000e-01 0.00000000000000e+00 0.00000000000000e+00 1.31054200000000e+00 + -2.89339000000000e-01 -2.89339000000000e-01 5.78677000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.93427000000000e-01 -9.11598000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.05799400000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.17032800000000e+00 8.93150000000000e-02 8.93150000000000e-02 + -1.78631000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 9.37656000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.98033000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 8.12034000000000e-01 -8.12034000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 1.71501000000000e-01 -1.71501000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 3.23917000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 3.23917000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 + -1.23186600000000e+00 -2.64528900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -7.52440000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -2.16974100000000e+00 + 2.43136000000000e-01 2.43136000000000e-01 -4.86272000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -9.09028000000000e-01 5.07976000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.53290000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 -1.77011200000000e+00 2.88692000000000e-01 2.88692000000000e-01 + -5.77385000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.14138000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.00572900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 3.58654000000000e-01 -3.58654000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -8.70987000000000e-01 8.70987000000000e-01 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.56970000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.56970000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 0.00000000000000e+00 + 2.91660000000000e-02 -1.36489300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.08017800000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.10172000000000e+00 + -5.83438000000000e-01 -5.83438000000000e-01 1.16687700000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.17932900000000e+00 3.96220800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.57976600000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.96401900000000e+00 -9.21400000000000e-03 -9.21400000000000e-03 + 1.84270000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.25915700000000e+00 -1.36543900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.06573900000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.12930300000000e+00 + 2.87518000000000e-01 2.87518000000000e-01 -5.75036000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.67489000000000e-01 5.23199800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.62549000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -2.49566300000000e+00 -6.28613000000000e-01 -6.28613000000000e-01 + 1.25722600000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + + + + + + + + + + 0.3376320207 0.1624731594 0.04351990586 -0.04035806887 -0.09603443292 -0.1304825426 -0.1519114572 -0.158184365 -0.1434888111 -0.08433161461 + + + 0.5214318759 0.2176056361 0.05294951173 -0.05134926588 -0.1203808646 -0.1636807787 -0.187475585 -0.19339853 -0.1696531859 -0.1025787372 + + + + + -0.6838408439 -0.5121350596 -0.2169132254 0.02112267216 0.163296011 0.2996529156 0.361887233 0.3632019981 0.1806446108 0.02469864308 + + + -1.130652813 -0.8410557035 -0.3885256601 -0.02958499233 0.1927347766 0.3788961811 0.518195013 0.6060955141 0.4846685151 0.1689171729 + + + + + + + + + + + + + + + 1 + 10 + 5 + 1 + 5 + 0.5 + yes + + diff --git a/tests/estimator/acforce/vmc.legacy.in.xml b/tests/estimator/acforce/vmc.legacy.in.xml new file mode 100644 index 000000000..587d2cacd --- /dev/null +++ b/tests/estimator/acforce/vmc.legacy.in.xml @@ -0,0 +1,540 @@ + + + + + + + + + + n n n + + + + + 4 + 2 + 6 + + + 5 + 3 + 7 + + + 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 + 0.0000000000e+00 0.0000000000e+00 2.0786985865e+00 + + + C N + + + + + -1 + +-0.55936725 -0.26942464 0.14459603 +0.19146719 1.40287983 0.63931251 +1.14805915 -0.52057335 3.49621107 +0.28293870 -0.10273952 0.01707021 +0.60626935 -0.25538121 1.75750740 + + + + -1 + +-0.47405939 0.59523171 -0.59778601 +0.03150661 -0.27343474 0.56279442 +-1.32648025 0.00970226 2.26944242 +2.42944286 0.64884151 1.87505288 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5.92498000000000e-01 -7.11710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 3.50367000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -5.87140000000000e-02 + -1.34610000000000e-02 -1.34610000000000e-02 2.69230000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.44664000000000e-01 -3.36583000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.88003000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.97031000000000e-01 -9.95900000000000e-03 -9.95900000000000e-03 + 1.99180000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.99991000000000e-01 7.76660000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -1.58300000000000e-01 0.00000000000000e+00 0.00000000000000e+00 4.57610000000000e-02 + 2.66600000000000e-03 2.66600000000000e-03 -5.33200000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.35597000000000e-01 2.38923000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 7.01343000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -9.85890000000000e-02 1.29900000000000e-02 1.29900000000000e-02 + -2.59790000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -2.98220000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -2.98220000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 + -6.00737000000000e-01 -1.78800000000000e-03 0.00000000000000e+00 0.00000000000000e+00 + 7.96054000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -8.73480000000000e-02 + 8.24500000000000e-03 8.24500000000000e-03 -1.64900000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.24165000000000e-01 -2.52179000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -3.29025000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.10489000000000e-01 -6.90100000000000e-03 -6.90100000000000e-03 + 1.38030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.17259000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.17259000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 + -1.70834000000000e-01 4.05664000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.71497000000000e-01 0.00000000000000e+00 0.00000000000000e+00 2.60599100000000e+00 + -8.57300000000000e-03 -8.57300000000000e-03 1.71460000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.04255000000000e-01 -3.94997000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 9.32750000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 1.22845500000000e+00 3.67740000000000e-02 3.67740000000000e-02 + -7.35480000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.56684000000000e-01 1.96048200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.13794600000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.03479200000000e+00 + -2.34070000000000e-02 -2.34070000000000e-02 4.68140000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.17650000000000e-02 -8.28252000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.20113000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 9.34297000000000e-01 3.67020000000000e-02 3.67020000000000e-02 + -7.34030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -3.29710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -3.29710000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 0.00000000000000e+00 + 7.60343000000000e-01 -2.22498200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.16250000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -9.62944000000000e-01 + 2.10069000000000e-01 2.10069000000000e-01 -4.20137000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.50143900000000e+00 3.33505500000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.50582000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.72778000000000e-01 -1.11917000000000e-01 -1.11917000000000e-01 + 2.23835000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.04581100000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 2.04581100000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 + -4.06811000000000e-01 1.32296500000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.05813000000000e-01 0.00000000000000e+00 0.00000000000000e+00 1.31054200000000e+00 + -2.89339000000000e-01 -2.89339000000000e-01 5.78677000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.93427000000000e-01 -9.11598000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.05799400000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.17032800000000e+00 8.93150000000000e-02 8.93150000000000e-02 + -1.78631000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 9.37656000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.98033000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 8.12034000000000e-01 -8.12034000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 1.71501000000000e-01 -1.71501000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 3.23917000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 3.23917000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 + -1.23186600000000e+00 -2.64528900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -7.52440000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -2.16974100000000e+00 + 2.43136000000000e-01 2.43136000000000e-01 -4.86272000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -9.09028000000000e-01 5.07976000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.53290000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 -1.77011200000000e+00 2.88692000000000e-01 2.88692000000000e-01 + -5.77385000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.14138000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.00572900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 3.58654000000000e-01 -3.58654000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -8.70987000000000e-01 8.70987000000000e-01 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.56970000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.56970000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 0.00000000000000e+00 + 2.91660000000000e-02 -1.36489300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.08017800000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.10172000000000e+00 + -5.83438000000000e-01 -5.83438000000000e-01 1.16687700000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.17932900000000e+00 3.96220800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.57976600000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.96401900000000e+00 -9.21400000000000e-03 -9.21400000000000e-03 + 1.84270000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.25915700000000e+00 -1.36543900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.06573900000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.12930300000000e+00 + 2.87518000000000e-01 2.87518000000000e-01 -5.75036000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.67489000000000e-01 5.23199800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.62549000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -2.49566300000000e+00 -6.28613000000000e-01 -6.28613000000000e-01 + 1.25722600000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + + + + + + 5.92498000000000e-01 -7.11710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 3.50367000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -5.87140000000000e-02 + -1.34610000000000e-02 -1.34610000000000e-02 2.69230000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.44664000000000e-01 -3.36583000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.88003000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.97031000000000e-01 -9.95900000000000e-03 -9.95900000000000e-03 + 1.99180000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.99991000000000e-01 7.76660000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -1.58300000000000e-01 0.00000000000000e+00 0.00000000000000e+00 4.57610000000000e-02 + 2.66600000000000e-03 2.66600000000000e-03 -5.33200000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.35597000000000e-01 2.38923000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 7.01343000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -9.85890000000000e-02 1.29900000000000e-02 1.29900000000000e-02 + -2.59790000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -2.98220000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 6.23277000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82620000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 4.49590000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 6.46770000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -2.98220000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.27340000000000e-02 + -6.00737000000000e-01 -1.78800000000000e-03 0.00000000000000e+00 0.00000000000000e+00 + 7.96054000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -8.73480000000000e-02 + 8.24500000000000e-03 8.24500000000000e-03 -1.64900000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.24165000000000e-01 -2.52179000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -3.29025000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 1.10489000000000e-01 -6.90100000000000e-03 -6.90100000000000e-03 + 1.38030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.17259000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.84313000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 5.18909000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.04770000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -5.74573000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.17259000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -7.93700000000000e-03 + -1.70834000000000e-01 4.05664000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.71497000000000e-01 0.00000000000000e+00 0.00000000000000e+00 2.60599100000000e+00 + -8.57300000000000e-03 -8.57300000000000e-03 1.71460000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.04255000000000e-01 -3.94997000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 9.32750000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 1.22845500000000e+00 3.67740000000000e-02 3.67740000000000e-02 + -7.35480000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.56684000000000e-01 1.96048200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.13794600000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.03479200000000e+00 + -2.34070000000000e-02 -2.34070000000000e-02 4.68140000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.17650000000000e-02 -8.28252000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -2.20113000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 9.34297000000000e-01 3.67020000000000e-02 3.67020000000000e-02 + -7.34030000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + -3.29710000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 -1.44840800000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.74791100000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.81880000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.11740000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -3.29710000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 8.91080000000000e-02 0.00000000000000e+00 + 7.60343000000000e-01 -2.22498200000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.16250000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -9.62944000000000e-01 + 2.10069000000000e-01 2.10069000000000e-01 -4.20137000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.50143900000000e+00 3.33505500000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.50582000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 5.72778000000000e-01 -1.11917000000000e-01 -1.11917000000000e-01 + 2.23835000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.04581100000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.15867000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -7.82817000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -3.50302000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.33141300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 2.04581100000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 2.46600000000000e-03 + -4.06811000000000e-01 1.32296500000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.05813000000000e-01 0.00000000000000e+00 0.00000000000000e+00 1.31054200000000e+00 + -2.89339000000000e-01 -2.89339000000000e-01 5.78677000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.93427000000000e-01 -9.11598000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.05799400000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.17032800000000e+00 8.93150000000000e-02 8.93150000000000e-02 + -1.78631000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 9.37656000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.98033000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 8.12034000000000e-01 -8.12034000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -0.00000000000000e+00 1.71501000000000e-01 -1.71501000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 3.23917000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -5.56170000000000e-02 + 0.00000000000000e+00 0.00000000000000e+00 2.43833000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.72786000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -8.58703000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 3.23917000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.61159000000000e-01 + -1.23186600000000e+00 -2.64528900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -7.52440000000000e-02 0.00000000000000e+00 0.00000000000000e+00 -2.16974100000000e+00 + 2.43136000000000e-01 2.43136000000000e-01 -4.86272000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -9.09028000000000e-01 5.07976000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.53290000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 -1.77011200000000e+00 2.88692000000000e-01 2.88692000000000e-01 + -5.77385000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.14138000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.00572900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 3.58654000000000e-01 -3.58654000000000e-01 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -8.70987000000000e-01 8.70987000000000e-01 + -0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 + -4.56970000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 7.68428000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -1.58670000000000e-02 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 9.23262000000000e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.96636000000000e-01 0.00000000000000e+00 0.00000000000000e+00 -4.56970000000000e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.27958400000000e+00 0.00000000000000e+00 + 2.91660000000000e-02 -1.36489300000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 1.08017800000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.10172000000000e+00 + -5.83438000000000e-01 -5.83438000000000e-01 1.16687700000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -3.17932900000000e+00 3.96220800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.57976600000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 -1.96401900000000e+00 -9.21400000000000e-03 -9.21400000000000e-03 + 1.84270000000000e-02 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -4.25915700000000e+00 -1.36543900000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.06573900000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.12930300000000e+00 + 2.87518000000000e-01 2.87518000000000e-01 -5.75036000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.67489000000000e-01 5.23199800000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -7.62549000000000e-01 0.00000000000000e+00 + 0.00000000000000e+00 -2.49566300000000e+00 -6.28613000000000e-01 -6.28613000000000e-01 + 1.25722600000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + + + + + + + + + + 0.3376320207 0.1624731594 0.04351990586 -0.04035806887 -0.09603443292 -0.1304825426 -0.1519114572 -0.158184365 -0.1434888111 -0.08433161461 + + + 0.5214318759 0.2176056361 0.05294951173 -0.05134926588 -0.1203808646 -0.1636807787 -0.187475585 -0.19339853 -0.1696531859 -0.1025787372 + + + + + -0.6838408439 -0.5121350596 -0.2169132254 0.02112267216 0.163296011 0.2996529156 0.361887233 0.3632019981 0.1806446108 0.02469864308 + + + -1.130652813 -0.8410557035 -0.3885256601 -0.02958499233 0.1927347766 0.3788961811 0.518195013 0.6060955141 0.4846685151 0.1689171729 + + + + + + + + + + + + + + + 1 + 10 + 5 + 1 + 5 + 0.5 + yes + + From 10836c8c1d480f4a13173f542e15cdbe44590a07 Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 13:29:08 -0600 Subject: [PATCH 12/24] Integration tests added for legacy and fast force estimators --- tests/estimator/CMakeLists.txt | 7 ++ tests/estimator/acforce/check_forces.py | 114 +++++++++++++++++- .../acforce/qmc-ref/vmc.fast.s000.scalar.dat | 10 +- .../qmc-ref/vmc.legacy.s000.scalar.dat | 10 +- tests/estimator/acforce/vmc.fast.in.xml | 2 +- tests/estimator/acforce/vmc.legacy.in.xml | 2 +- 6 files changed, 130 insertions(+), 15 deletions(-) diff --git a/tests/estimator/CMakeLists.txt b/tests/estimator/CMakeLists.txt index f413ff0bf..20cccafb2 100644 --- a/tests/estimator/CMakeLists.txt +++ b/tests/estimator/CMakeLists.txt @@ -83,4 +83,11 @@ if(add_test) 1 16 check_forces.py) + simple_run_and_check( + estimator-acforce-fast + "${qmcpack_SOURCE_DIR}/tests/estimator/acforce" + vmc.fast.in.xml + 1 + 16 + check_forces.py vmc.fast.s000.scalar.dat) endif() diff --git a/tests/estimator/acforce/check_forces.py b/tests/estimator/acforce/check_forces.py index 6a888b116..2f4446131 100755 --- a/tests/estimator/acforce/check_forces.py +++ b/tests/estimator/acforce/check_forces.py @@ -1,8 +1,116 @@ #! /usr/bin/env python3 -from sys import exit +import sys import numpy as np +import math + +reference_key = { "Index" : 0, + "LocalEnergy" : 1, + "LocalPotential" : 3, + "Kinetic" : 4, + "NonLocalECP" : 8, + "ACForce_hf_0_0" : 9, + "ACForce_pulay_0_0" : 10, + "ACForce_Ewfgrad_0_0" : 11, + "ACForce_wfgrad_0_0" : 12, + "ACForce_hf_0_1" : 13, + "ACForce_pulay_0_1" : 14, + "ACForce_Ewfgrad_0_1" : 15, + "ACForce_wfgrad_0_1" : 16, + "ACForce_hf_0_2" : 17, + "ACForce_pulay_0_2" : 18, + "ACForce_Ewfgrad_0_2" : 19, + "ACForce_wfgrad_0_2" : 20, + "ACForce_hf_1_0" : 21, + "ACForce_pulay_1_0" : 22, + "ACForce_Ewfgrad_1_0" : 23, + "ACForce_wfgrad_1_0" : 24, + "ACForce_hf_1_1" : 25, + "ACForce_pulay_1_1" : 26, + "ACForce_Ewfgrad_1_1" : 27, + "ACForce_wfgrad_1_1" : 28, + "ACForce_hf_1_2" : 29, + "ACForce_pulay_1_2" : 30, + "ACForce_Ewfgrad_1_2" : 31, + "ACForce_wfgrad_1_2" : 32 } + +reference_vals = { "LocalEnergy" : -1.5586292800e+01, + "LocalPotential" : -2.8321193825e+01, + "Kinetic" : 1.2734901025e+01, + "NonLocalECP" : 1.8497959759e+00, + "ACForce_0_0" : 4.9434111234e-01, + "ACForce_Ewfgrad_0_0" : -4.2095283359e+00, + "ACForce_wfgrad_0_0" : 3.0004600095e-01, + "ACForce_0_1" : 3.5819786542e-01, + "ACForce_Ewfgrad_0_1" : 2.3852191199e+00, + "ACForce_wfgrad_0_1" : -1.8114010291e-01, + "ACForce_0_2" : 5.2292922210e+00, + "ACForce_Ewfgrad_0_2" : 2.4541551533e+01, + "ACForce_wfgrad_0_2" : -1.5614748618e+00, + "ACForce_1_0" : 1.1896691601e+00, + "ACForce_Ewfgrad_1_0" : -8.1704406106e+00, + "ACForce_wfgrad_1_0" : 3.3676305176e-01, + "ACForce_1_1" : 4.7617264236e+00, + "ACForce_Ewfgrad_1_1" : -1.7346902278e+01, + "ACForce_wfgrad_1_1" : 8.3752812817e-01, + "ACForce_1_2" : -4.1298777683e-02, + "ACForce_Ewfgrad_1_2" : -4.6648162310e+01, + "ACForce_wfgrad_1_2" : 2.6949237554e+00, +} + +#zero indexed. +def grab_data_line(fname,stepnum): + f=open(fname,'r') + f.readline() #get rid of the header. + for line in f: + sl=line.split() + if int(sl[0])==stepnum: + myarray=list(map(float,sl)) + return np.array(myarray) + return -1 + if __name__ == "__main__": - - exit(0) + #CN molecule, so Natoms = 2 + natom=2 + #3D system, so. + ndim=3 + + relative_tol=1e-5 + + result=grab_data_line("vmc.s000.scalar.dat",4) + all_pass=True + if not math.isclose(reference_vals["LocalEnergy"],result[reference_key["LocalEnergy"]],rel_tol=relative_tol): + print("Error. LocalEnergy Ref = ",reference_vals["LocalEnergy"], " Val = ",result[reference_key["LocalEnergy"]]) + all_pass=False + if not math.isclose(reference_vals["Kinetic"],result[reference_key["Kinetic"]],rel_tol=relative_tol): + print("Error. Kinetic Ref = ",reference_vals["Kinetic"], " Val = ",result[reference_key["Kinetic"]]) + all_pass=False + if not math.isclose(reference_vals["NonLocalECP"],result[reference_key["NonLocalECP"]],rel_tol=relative_tol): + print("Error. NonLocalECP Ref = ",reference_vals["NonLocalECP"], " Val = ",result[reference_key["NonLocalECP"]]) + all_pass=False + + for iat in range(0,natom): + for idim in range(0,ndim): + totforce = result[reference_key["ACForce_hf_%d_%d"%(iat,idim)]] + result[reference_key["ACForce_pulay_%d_%d"%(iat,idim)]] + if not math.isclose(reference_vals["ACForce_%d_%d"%(iat,idim)], totforce, rel_tol=relative_tol): + all_pass=False + ref=reference_vals["ACForce_%d_%d"%(iat,idim)] + val=totforce + print("Error. ACForce_%d_%d Ref = "%(iat,idim),ref," Val = ",val) + if not math.isclose(reference_vals["ACForce_Ewfgrad_%d_%d"%(iat,idim)],result[reference_key["ACForce_Ewfgrad_%d_%d"%(iat,idim)]], rel_tol=relative_tol): + all_pass=False + ref=reference_vals["ACForce_Ewfgrad_%d_%d"%(iat,idim)] + val=result[reference_key["ACForce_Ewfgrad_%d_%d"%(iat,idim)]] + print("Error. ACForce_Ewfgrad_%d_%d Ref = "%(iat,idim),ref," Val = ",val) + if not math.isclose(reference_vals["ACForce_wfgrad_%d_%d"%(iat,idim)],result[reference_key["ACForce_wfgrad_%d_%d"%(iat,idim)]], rel_tol=relative_tol): + all_pass=False + ref=reference_vals["ACForce_wfgrad_%d_%d"%(iat,idim)] + val=result[reference_key["ACForce_wfgrad_%d_%d"%(iat,idim)]] + print("Error. ACForce_wfgrad_%d_%d Ref = "%(iat,idim),ref," Val = ",val) + + + if(all_pass): + exit(0) + else: + exit(1) diff --git a/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat b/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat index 00c9994b1..25614c06b 100644 --- a/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat +++ b/tests/estimator/acforce/qmc-ref/vmc.fast.s000.scalar.dat @@ -1,6 +1,6 @@ # index LocalEnergy LocalEnergy_sq LocalPotential Kinetic ElecElec IonIon LocalECP NonLocalECP ACForce_hf_0_0 ACForce_pulay_0_0 ACForce_Ewfgrad_0_0 ACForce_wfgrad_0_0 ACForce_hf_0_1 ACForce_pulay_0_1 ACForce_Ewfgrad_0_1 ACForce_wfgrad_0_1 ACForce_hf_0_2 ACForce_pulay_0_2 ACForce_Ewfgrad_0_2 ACForce_wfgrad_0_2 ACForce_hf_1_0 ACForce_pulay_1_0 ACForce_Ewfgrad_1_0 ACForce_wfgrad_1_0 ACForce_hf_1_1 ACForce_pulay_1_1 ACForce_Ewfgrad_1_1 ACForce_wfgrad_1_1 ACForce_hf_1_2 ACForce_pulay_1_2 ACForce_Ewfgrad_1_2 ACForce_wfgrad_1_2 BlockWeight BlockCPU AcceptRatio - 0 -1.4836902952e+01 2.2013368922e+02 -3.2156560497e+01 1.7319657545e+01 1.7501125762e+01 9.6214045316e+00 -6.2063924065e+01 2.7848332737e+00 -1.8309220651e+00 0.0000000000e+00 1.0427362748e+01 -7.0279914757e-01 -7.4059666462e-01 0.0000000000e+00 1.0662220173e+01 -7.1862842316e-01 2.8328613635e+00 0.0000000000e+00 6.2616543213e+01 -4.2203243772e+00 3.3389428544e-01 0.0000000000e+00 5.2541311044e+01 -3.5412586584e+00 -4.3933829927e-01 0.0000000000e+00 -3.5693282376e+00 2.4057097691e-01 -4.1273812624e+00 0.0000000000e+00 -4.5071202432e+01 3.0377769927e+00 1.0000000000e+00 1.2992395088e-02 7.3333333333e-01 - 1 -1.5438462206e+01 2.3834611528e+02 -2.7836458180e+01 1.2397995974e+01 1.7123551070e+01 9.6214045316e+00 -5.7243378256e+01 2.6619644749e+00 3.9498574390e-01 0.0000000000e+00 1.3641854152e+01 -8.8362778430e-01 4.7687920238e-01 0.0000000000e+00 1.2484077166e+01 -8.0863475905e-01 3.6864210949e+00 0.0000000000e+00 4.3391770159e+01 -2.8106277413e+00 5.7366394698e-01 0.0000000000e+00 -2.8675124627e+01 1.8573821826e+00 -1.2363230486e+00 0.0000000000e+00 1.4246118370e+00 -9.2276796613e-02 -4.7540461210e+00 0.0000000000e+00 2.6198080248e+01 -1.6969358670e+00 1.0000000000e+00 1.1379147880e-02 6.6666666667e-01 - 2 -1.5699850051e+01 2.4648529164e+02 -2.6502157767e+01 1.0802307715e+01 1.8163007231e+01 9.6214045316e+00 -5.4526138219e+01 2.3956868952e-01 -3.6576009071e-01 0.0000000000e+00 -2.0294448222e+01 1.2926523601e+00 -3.7820525124e-01 0.0000000000e+00 7.2685907554e+00 -4.6297198582e-01 4.6379215653e+00 0.0000000000e+00 5.7600204359e+01 -3.6688378660e+00 1.1368549634e+00 0.0000000000e+00 -4.3823356145e+01 2.7913232293e+00 1.7709632526e+00 0.0000000000e+00 -3.1905262766e+01 2.0322017510e+00 -4.4359313380e+00 0.0000000000e+00 -1.3333116187e+00 8.4925118033e-02 1.0000000000e+00 1.1481985915e-02 6.2222222222e-01 - 3 -1.5465777453e+01 2.3919027223e+02 -2.1882984778e+01 6.4172073251e+00 1.5256923757e+01 9.6214045316e+00 -4.6768085543e+01 6.7724759006e-03 -2.3798411821e-01 0.0000000000e+00 1.3184820941e+01 -8.5251588425e-01 -6.7233750366e-01 0.0000000000e+00 2.1649221942e+01 -1.3998146558e+00 4.0374264990e+00 0.0000000000e+00 2.8623279129e+01 -1.8507494509e+00 1.4662074476e-01 0.0000000000e+00 -1.2113379471e+01 7.8323766833e-01 -4.3915781816e-01 0.0000000000e+00 -1.7976743545e+01 1.1623562798e+00 -4.3313333030e+00 0.0000000000e+00 2.9583993905e+00 -1.9128682017e-01 1.0000000000e+00 1.3052660041e-02 5.7777777778e-01 - 4 -1.5255432404e+01 2.3272821783e+02 -2.0496825103e+01 5.2413926990e+00 1.4453947187e+01 9.6214045316e+00 -4.4617678857e+01 4.5502035961e-02 2.0969686650e-01 0.0000000000e+00 -9.9727579759e+00 6.5371847298e-01 5.2581997846e-02 0.0000000000e+00 -2.8703596641e+01 1.8815328128e+00 3.9297738709e+00 0.0000000000e+00 2.5153320432e+01 -1.6488107165e+00 -2.3636645125e-01 0.0000000000e+00 -2.5164938221e+01 1.6495722674e+00 -5.4540713166e-01 0.0000000000e+00 -1.0444315228e+01 6.8462924890e-01 -3.9919395009e+00 0.0000000000e+00 -1.4368419828e+01 9.4185595320e-01 1.0000000000e+00 8.2929348573e-03 6.6666666667e-01 + 0 -1.5155477093e+01 2.2983482894e+02 -2.7111026254e+01 1.1955549161e+01 1.7446609016e+01 9.6214045316e+00 -5.5173927905e+01 9.9488810319e-01 1.4153607454e-01 0.0000000000e+00 4.1082674997e+00 -2.8394474151e-01 2.5065112408e-01 0.0000000000e+00 -7.2965325084e+00 4.8026393924e-01 4.1577371827e+00 0.0000000000e+00 1.7243276678e+01 -1.1419320679e+00 4.8700801960e-01 0.0000000000e+00 -2.2720824287e+00 1.3124129282e-01 -7.2288444979e-02 0.0000000000e+00 -2.1099084202e+00 1.4078928443e-01 -4.7345085045e+00 0.0000000000e+00 -3.1700792133e+01 2.1043683244e+00 1.6000000000e+01 9.4253033007e-02 6.7638888889e-01 + 1 -1.5340579369e+01 2.3559238132e+02 -3.0177148719e+01 1.4836569350e+01 1.8710273633e+01 9.6214045316e+00 -6.0434600773e+01 1.9257738891e+00 -4.6882208952e-01 0.0000000000e+00 2.0669210044e-02 -8.4574797717e-03 3.4820135435e-01 0.0000000000e+00 -4.3988113164e+00 2.9072253816e-01 4.5182326796e+00 0.0000000000e+00 3.0288444714e+01 -1.9549044401e+00 8.7561865691e-01 0.0000000000e+00 4.9204233286e+00 -3.1541359365e-01 -5.7791354697e-01 0.0000000000e+00 -6.5241838005e+00 4.0195707999e-01 -3.5742406465e+00 0.0000000000e+00 -3.1512032735e+01 2.0406716829e+00 1.6000000000e+01 1.2502985743e-01 6.6111111111e-01 + 2 -1.5423955255e+01 2.3805111524e+02 -2.5583020504e+01 1.0159065249e+01 1.8041091036e+01 9.6214045316e+00 -5.4764712542e+01 1.5191964697e+00 2.7468545361e-02 0.0000000000e+00 1.8358841317e+00 -1.2306379607e-01 3.9551844965e-01 0.0000000000e+00 1.7878916835e+00 -1.4863705334e-01 4.3815884725e+00 0.0000000000e+00 3.0463857404e+01 -1.9800735850e+00 5.1397183631e-01 0.0000000000e+00 -2.5944596067e+00 1.5411072684e-01 -2.9400231390e-01 0.0000000000e+00 2.1668096657e+00 -1.6875249194e-01 -4.7958270206e+00 0.0000000000e+00 -2.9663519719e+01 1.9310902981e+00 1.6000000000e+01 9.2817166369e-02 6.4583333333e-01 + 3 -1.5330816816e+01 2.3533679315e+02 -2.6749050792e+01 1.1418233976e+01 1.9314507192e+01 9.6214045316e+00 -5.8430002514e+01 2.7450399992e+00 4.9192501919e-01 0.0000000000e+00 3.0847435862e+00 -2.1721794682e-01 -8.8078346145e-02 0.0000000000e+00 1.8855396467e+00 -1.0890603203e-01 3.2085976636e+00 0.0000000000e+00 3.2630871763e+01 -2.1103226654e+00 -1.2944442602e-01 0.0000000000e+00 2.5184557468e+00 -1.8286156069e-01 -2.0979873885e-01 0.0000000000e+00 8.1968700649e+00 -5.1973226705e-01 -4.1526210322e+00 0.0000000000e+00 -2.9878733976e+01 1.9431287624e+00 1.6000000000e+01 9.2730369579e-02 6.3194444444e-01 + 4 -1.5586292800e+01 2.4463979614e+02 -2.8321193825e+01 1.2734901025e+01 1.8173940566e+01 9.6214045316e+00 -5.7966334898e+01 1.8497959759e+00 4.9434111234e-01 0.0000000000e+00 -4.2095283359e+00 3.0004600095e-01 3.5819786542e-01 0.0000000000e+00 2.3852191199e+00 -1.8114010291e-01 5.2292922210e+00 0.0000000000e+00 2.4541551533e+01 -1.5614748618e+00 1.1896691601e+00 0.0000000000e+00 -8.1704406106e+00 3.3676305176e-01 4.7617264236e+00 0.0000000000e+00 -1.7346902278e+01 8.3752812817e-01 -4.1298777683e-02 0.0000000000e+00 -4.6648162310e+01 2.6949237554e+00 1.6000000000e+01 1.0619918371e-01 6.5833333333e-01 diff --git a/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat b/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat index 3aadb1d8c..7e2ff4587 100644 --- a/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat +++ b/tests/estimator/acforce/qmc-ref/vmc.legacy.s000.scalar.dat @@ -1,6 +1,6 @@ # index LocalEnergy LocalEnergy_sq LocalPotential Kinetic ElecElec IonIon LocalECP NonLocalECP ACForce_hf_0_0 ACForce_pulay_0_0 ACForce_Ewfgrad_0_0 ACForce_wfgrad_0_0 ACForce_hf_0_1 ACForce_pulay_0_1 ACForce_Ewfgrad_0_1 ACForce_wfgrad_0_1 ACForce_hf_0_2 ACForce_pulay_0_2 ACForce_Ewfgrad_0_2 ACForce_wfgrad_0_2 ACForce_hf_1_0 ACForce_pulay_1_0 ACForce_Ewfgrad_1_0 ACForce_wfgrad_1_0 ACForce_hf_1_1 ACForce_pulay_1_1 ACForce_Ewfgrad_1_1 ACForce_wfgrad_1_1 ACForce_hf_1_2 ACForce_pulay_1_2 ACForce_Ewfgrad_1_2 ACForce_wfgrad_1_2 BlockWeight BlockCPU AcceptRatio - 0 -1.4836902952e+01 2.2013368922e+02 -3.2156560497e+01 1.7319657545e+01 1.7501125762e+01 9.6214045316e+00 -6.2063924065e+01 2.7848332737e+00 1.0744199250e+00 -2.9053419901e+00 1.0427362748e+01 -7.0279914757e-01 1.7068277879e+01 -1.7808874544e+01 1.0662220173e+01 -7.1862842316e-01 2.7105373685e+01 -2.4272512321e+01 6.2616543213e+01 -4.2203243772e+00 3.2166254247e+00 -2.8827311393e+00 5.2541311044e+01 -3.5412586584e+00 9.8723731763e-01 -1.4265756169e+00 -3.5693282376e+00 2.4057097691e-01 -6.9059687944e+00 2.7785875320e+00 -4.5071202432e+01 3.0377769927e+00 1.0000000000e+00 1.7744869925e-02 7.3333333333e-01 - 1 -1.5438462206e+01 2.3834611528e+02 -2.7836458180e+01 1.2397995974e+01 1.7123551070e+01 9.6214045316e+00 -5.7243378256e+01 2.6619644749e+00 3.1053134339e+00 -2.7103276900e+00 1.3641854152e+01 -8.8362778430e-01 -8.0970505513e-01 1.2865842575e+00 1.2484077166e+01 -8.0863475905e-01 3.9253422762e+00 -2.3892118125e-01 4.3391770159e+01 -2.8106277413e+00 -8.9344917822e+00 9.5081557291e+00 -2.8675124627e+01 1.8573821826e+00 -9.4564163383e+00 8.2200932897e+00 1.4246118370e+00 -9.2276796613e-02 4.2234325147e+00 -8.9774786357e+00 2.6198080248e+01 -1.6969358670e+00 1.0000000000e+00 1.5046700137e-02 6.6666666667e-01 - 2 -1.5699850051e+01 2.4648529164e+02 -2.6502157767e+01 1.0802307715e+01 1.8163007231e+01 9.6214045316e+00 -5.4526138219e+01 2.3956868952e-01 -1.1676323945e+00 8.0187230376e-01 -2.0294448222e+01 1.2926523601e+00 -1.1204720508e+00 7.4226679956e-01 7.2685907554e+00 -4.6297198582e-01 6.8989293736e+00 -2.2610078083e+00 5.7600204359e+01 -3.6688378660e+00 -8.2791977270e+00 9.4160526904e+00 -4.3823356145e+01 2.7913232293e+00 1.7320478922e+00 3.8915360395e-02 -3.1905262766e+01 2.0322017510e+00 1.7764382764e-02 -4.4536957207e+00 -1.3333116187e+00 8.4925118033e-02 1.0000000000e+00 1.4950377168e-02 6.2222222222e-01 - 3 -1.5465777453e+01 2.3919027223e+02 -2.1882984778e+01 6.4172073251e+00 1.5256923757e+01 9.6214045316e+00 -4.6768085543e+01 6.7724759006e-03 2.0542355031e+00 -2.2922196213e+00 1.3184820941e+01 -8.5251588425e-01 1.3732326976e-01 -8.0966077342e-01 2.1649221942e+01 -1.3998146558e+00 5.4603910405e+00 -1.4229645414e+00 2.8623279129e+01 -1.8507494509e+00 -2.7203917167e+00 2.8670124615e+00 -1.2113379471e+01 7.8323766833e-01 -4.3039743856e+00 3.8648165675e+00 -1.7976743545e+01 1.1623562798e+00 -4.4685334508e+00 1.3720014779e-01 2.9583993905e+00 -1.9128682017e-01 1.0000000000e+00 1.7588061048e-02 5.7777777778e-01 - 4 -1.5255432404e+01 2.3272821783e+02 -2.0496825103e+01 5.2413926990e+00 1.4453947187e+01 9.6214045316e+00 -4.4617678857e+01 4.5502035961e-02 -2.7533345531e+00 2.9630314196e+00 -9.9727579759e+00 6.5371847298e-01 -3.2207348654e+00 3.2733168632e+00 -2.8703596641e+01 1.8815328128e+00 2.6657640806e+00 1.2640097903e+00 2.5153320432e+01 -1.6488107165e+00 2.0265666841e+00 -2.2629331354e+00 -2.5164938221e+01 1.6495722674e+00 2.1286291745e+00 -2.6740363061e+00 -1.0444315228e+01 6.8462924890e-01 -4.8332255835e+00 8.4128608261e-01 -1.4368419828e+01 9.4185595320e-01 1.0000000000e+00 9.8440230358e-03 6.6666666667e-01 + 0 -1.5155477093e+01 2.2983482894e+02 -2.7111026254e+01 1.1955549161e+01 1.7446609016e+01 9.6214045316e+00 -5.5173927905e+01 9.9488810319e-01 4.4924591520e-01 -3.0770984066e-01 4.1082674997e+00 -2.8394474151e-01 -5.6577788476e-01 8.1642900884e-01 -7.2965325084e+00 4.8026393924e-01 3.9562596246e+00 2.0147755810e-01 1.7243276678e+01 -1.1419320679e+00 -5.5236139270e+00 6.0106219466e+00 -2.2720824287e+00 1.3124129282e-01 -4.9654040975e+00 4.8931156525e+00 -2.1099084202e+00 1.4078928443e-01 -6.1159646599e+00 1.3814561554e+00 -3.1700792133e+01 2.1043683244e+00 1.6000000000e+01 1.2708397917e-01 6.7638888889e-01 + 1 -1.5340579369e+01 2.3559238132e+02 -3.0177148719e+01 1.4836569350e+01 1.8710273633e+01 9.6214045316e+00 -6.0434600773e+01 1.9257738891e+00 -1.4159843601e+00 9.4716227062e-01 2.0669210043e-02 -8.4574797716e-03 -8.4104231962e-01 1.1892436740e+00 -4.3988113164e+00 2.9072253816e-01 8.7267119530e+00 -4.2084792734e+00 3.0288444714e+01 -1.9549044401e+00 1.2832580544e+00 -4.0763939752e-01 4.9204233286e+00 -3.1541359365e-01 -8.8274826566e+00 8.2495691097e+00 -6.5241838005e+00 4.0195707999e-01 -1.4511115919e+01 1.0936875273e+01 -3.1512032735e+01 2.0406716829e+00 1.6000000000e+01 1.5487041765e-01 6.6111111111e-01 + 2 -1.5423955255e+01 2.3805111524e+02 -2.5583020504e+01 1.0159065249e+01 1.8041091036e+01 9.6214045316e+00 -5.4764712542e+01 1.5191964697e+00 -1.0550753957e+00 1.0825439410e+00 1.8358841317e+00 -1.2306379607e-01 1.1843577145e+00 -7.8883926485e-01 1.7878916835e+00 -1.4863705334e-01 7.3529044356e+00 -2.9713159631e+00 3.0463857404e+01 -1.9800735850e+00 -1.4586276201e+00 1.9725994564e+00 -2.5944596067e+00 1.5411072684e-01 -1.4614714642e+00 1.1674691503e+00 2.1668096657e+00 -1.6875249194e-01 -3.6876357286e+00 -1.1081912920e+00 -2.9663519719e+01 1.9310902981e+00 1.6000000000e+01 1.3368736036e-01 6.4583333333e-01 + 3 -1.5330816816e+01 2.3533679315e+02 -2.6749050792e+01 1.1418233976e+01 1.9314507192e+01 9.6214045316e+00 -5.8430002514e+01 2.7450399992e+00 -9.4501426609e-02 5.8642644580e-01 3.0847435862e+00 -2.1721794682e-01 5.2270594931e-01 -6.1078429546e-01 1.8855396467e+00 -1.0890603203e-01 5.8862823547e+00 -2.6776846912e+00 3.2630871763e+01 -2.1103226654e+00 1.7498851941e-01 -3.0443294543e-01 2.5184557468e+00 -1.8286156069e-01 2.0730261033e-01 -4.1710134918e-01 8.1968700649e+00 -5.1973226705e-01 -4.2778413828e+00 1.2522035055e-01 -2.9878733976e+01 1.9431287624e+00 1.6000000000e+01 1.3821257984e-01 6.3194444444e-01 + 4 -1.5586292800e+01 2.4463979614e+02 -2.8321193825e+01 1.2734901025e+01 1.8173940566e+01 9.6214045316e+00 -5.7966334898e+01 1.8497959759e+00 -1.3468632149e+00 1.8412043272e+00 -4.2095283359e+00 3.0004600095e-01 -9.3567447483e-01 1.2938723402e+00 2.3852191199e+00 -1.8114010291e-01 4.2645773115e+00 9.6471490951e-01 2.4541551533e+01 -1.5614748618e+00 -3.3293300897e+01 3.4482970057e+01 -8.1704406106e+00 3.3676305176e-01 -3.8871860506e+01 4.3633586930e+01 -1.7346902278e+01 8.3752812817e-01 -5.1155491051e+01 5.1114192274e+01 -4.6648162310e+01 2.6949237554e+00 1.6000000000e+01 1.4613772093e-01 6.5833333333e-01 diff --git a/tests/estimator/acforce/vmc.fast.in.xml b/tests/estimator/acforce/vmc.fast.in.xml index f1052c75f..c76b9ba5c 100644 --- a/tests/estimator/acforce/vmc.fast.in.xml +++ b/tests/estimator/acforce/vmc.fast.in.xml @@ -1,6 +1,6 @@ - + diff --git a/tests/estimator/acforce/vmc.legacy.in.xml b/tests/estimator/acforce/vmc.legacy.in.xml index 587d2cacd..56d569d18 100644 --- a/tests/estimator/acforce/vmc.legacy.in.xml +++ b/tests/estimator/acforce/vmc.legacy.in.xml @@ -1,6 +1,6 @@ - + From a7f6fb5751112f672405b01ca3cb520b0b95e5f2 Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 13:36:14 -0600 Subject: [PATCH 13/24] Add comments to checker script --- tests/estimator/acforce/check_forces.py | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/estimator/acforce/check_forces.py b/tests/estimator/acforce/check_forces.py index 2f4446131..f728b1f91 100755 --- a/tests/estimator/acforce/check_forces.py +++ b/tests/estimator/acforce/check_forces.py @@ -4,7 +4,28 @@ import sys import numpy as np import math - +#Ray Clay: +# This integration test is based on the same initial system as was used for the unit tests in +# src/QMCHamiltonians/tests/test_ion_derivs.cpp. +# +#The way this tests works is we run 16 MPI processes, and we propagate +#for 5 VMC steps. We fix the seed to make this test deterministic. +# We do this with the legacy force estimator and the fast force estimator and compare +# the energies and various force subcomponents for both code paths. Everything should +# be identical except for the timings* +# +# *The legacy force driver makes a distinction between Hellman-Feynman and Zero Variance terms, +# whereas the fast force only works with dE/dR = Hellman-Feynman + ZV. To use the same set of reference +# values for both, we compare ACForce = ACForce_hf(Hellman-Feynman) + ACForce_pulay(ZV term). For the fast +# force algorithm, ACForce_pulay=0.0. +# +# Correctness of the values is assessed by: +# 1.) cross comparison between fast and legacy code paths, +# 2.) Dropping the VMC timestep to 0.0 and comparing the energy and force components against the unit test values. +# +# The following reference values are taken from the final step of the VMC. +# +# reference_key = { "Index" : 0, "LocalEnergy" : 1, "LocalPotential" : 3, @@ -76,10 +97,13 @@ if __name__ == "__main__": #3D system, so. ndim=3 + #We compare floating point values, so this needs to be included. relative_tol=1e-5 + #Grab the last line of the VMC run. result=grab_data_line("vmc.s000.scalar.dat",4) all_pass=True + if not math.isclose(reference_vals["LocalEnergy"],result[reference_key["LocalEnergy"]],rel_tol=relative_tol): print("Error. LocalEnergy Ref = ",reference_vals["LocalEnergy"], " Val = ",result[reference_key["LocalEnergy"]]) all_pass=False From d9ee0e63e90f90389fe1801e0a11d7374ce71b3d Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 13:54:07 -0600 Subject: [PATCH 14/24] Move construction of wrapper to ACForce from QMCHamiltonian --- src/QMCHamiltonians/ACForce.cpp | 3 +- src/QMCHamiltonians/ACForce.h | 2 + src/QMCHamiltonians/QMCHamiltonian.cpp | 72 ++++++++++++-------------- src/QMCHamiltonians/QMCHamiltonian.h | 3 +- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/QMCHamiltonians/ACForce.cpp b/src/QMCHamiltonians/ACForce.cpp index 318b00c76..a79539d60 100644 --- a/src/QMCHamiltonians/ACForce.cpp +++ b/src/QMCHamiltonians/ACForce.cpp @@ -37,6 +37,7 @@ ACForce::ACForce(ParticleSet& source, ParticleSet& target, TrialWaveFunction& ps wf_grad_.resize(nIons); sw_pulay_.resize(nIons); sw_grad_.resize(nIons); + psi_in.initializeTWFFastDerivWrapper(elns_, psi_wrapper_); }; std::unique_ptr ACForce::makeClone(ParticleSet& qp, TrialWaveFunction& psi) @@ -100,7 +101,7 @@ ACForce::Return_t ACForce::evaluate(ParticleSet& P) //This function returns d/dR of the sum of all observables in the physical hamiltonian. //Note that the sign will be flipped based on definition of force = -d/dR. if(fastDerivatives_) - value_ = ham_.evaluateIonDerivsDeterministicFast(P, ions_, psi_, hf_force_, wf_grad_); + value_ = ham_.evaluateIonDerivsDeterministicFast(P, ions_, psi_,psi_wrapper_, hf_force_, wf_grad_); else value_ = ham_.evaluateIonDerivsDeterministic(P, ions_, psi_, hf_force_, pulay_force_, wf_grad_); diff --git a/src/QMCHamiltonians/ACForce.h b/src/QMCHamiltonians/ACForce.h index 6e6e7828a..fe870448a 100644 --- a/src/QMCHamiltonians/ACForce.h +++ b/src/QMCHamiltonians/ACForce.h @@ -89,6 +89,8 @@ private: bool useSpaceWarp_; bool fastDerivatives_; + + TWFFastDerivWrapper psi_wrapper_; ///The space warp transformation class. SpaceWarpTransformation swt_; }; diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index 5bc2a79b2..727730349 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1124,18 +1124,14 @@ RefVectorWithLeader QMCHamiltonian::extract_HC_list(const RefVecto QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicFast(ParticleSet& P, ParticleSet& ions, TrialWaveFunction& psi_in, + TWFFastDerivWrapper& psi_wrapper_in, ParticleSet::ParticlePos& dEdR, ParticleSet::ParticlePos& wf_grad) { ScopedTimer evaluatederivtimer(*timer_manager.createTimer("FastDeriv::evaluateIonDerivsFast")); - if (!psi_wrapper_.isInitialized()) - { - psi_in.initializeTWFFastDerivWrapper(P, psi_wrapper_); - psi_wrapper_.finalizeConstruction(); - } P.update(); //resize everything; - int ngroups = psi_wrapper_.numGroups(); + int ngroups = psi_wrapper_in.numGroups(); { // ScopedTimer resizetimer(*timer_manager.createTimer("NEW::Resize")); @@ -1148,8 +1144,8 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF for (int gid = 0; gid < ngroups; gid++) { - const int sid = psi_wrapper_.getTWFGroupIndex(gid); - const int norbs = psi_wrapper_.numOrbitals(sid); + const int sid = psi_wrapper_in.getTWFGroupIndex(gid); + const int norbs = psi_wrapper_in.numOrbitals(sid); const int first = P.first(gid); const int last = P.last(gid); const int nptcls = last - first; @@ -1177,8 +1173,8 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF for (int gid = 0; gid < ngroups; gid++) { - const int sid = psi_wrapper_.getTWFGroupIndex(gid); - const int norbs = psi_wrapper_.numOrbitals(sid); + const int sid = psi_wrapper_in.getTWFGroupIndex(gid); + const int norbs = psi_wrapper_in.numOrbitals(sid); const int first = P.first(gid); const int last = P.last(gid); const int nptcls = last - first; @@ -1189,19 +1185,19 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF dB_gs_[idim][sid].resize(nptcls, nptcls); } } - psi_wrapper_.wipeMatrices(M_); - psi_wrapper_.wipeMatrices(M_gs_); - psi_wrapper_.wipeMatrices(X_); - psi_wrapper_.wipeMatrices(B_); - psi_wrapper_.wipeMatrices(Minv_); - psi_wrapper_.wipeMatrices(B_gs_); + psi_wrapper_in.wipeMatrices(M_); + psi_wrapper_in.wipeMatrices(M_gs_); + psi_wrapper_in.wipeMatrices(X_); + psi_wrapper_in.wipeMatrices(B_); + psi_wrapper_in.wipeMatrices(Minv_); + psi_wrapper_in.wipeMatrices(B_gs_); for (int idim = 0; idim < OHMMS_DIM; idim++) { - psi_wrapper_.wipeMatrices(dM_[idim]); - psi_wrapper_.wipeMatrices(dM_gs_[idim]); - psi_wrapper_.wipeMatrices(dB_[idim]); - psi_wrapper_.wipeMatrices(dB_gs_[idim]); + psi_wrapper_in.wipeMatrices(dM_[idim]); + psi_wrapper_in.wipeMatrices(dM_gs_[idim]); + psi_wrapper_in.wipeMatrices(dB_[idim]); + psi_wrapper_in.wipeMatrices(dB_gs_[idim]); } } ParticleSet::ParticleGradient wfgradraw_(ions.getTotalNum()); @@ -1215,12 +1211,12 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF { ScopedTimer getmtimer(*timer_manager.createTimer("FastDeriv::getM")); - psi_wrapper_.getM(P, M_); + psi_wrapper_in.getM(P, M_); } { // ScopedTimer invertmtimer(*timer_manager.createTimer("NEW::InvertMTimer")); - psi_wrapper_.getGSMatrices(M_, M_gs_); - psi_wrapper_.invertMatrices(M_gs_, Minv_); + psi_wrapper_in.getGSMatrices(M_, M_gs_); + psi_wrapper_in.invertMatrices(M_gs_, Minv_); } //Build B-matrices. Only for non-diagonal observables right now. for (int i = 0; i < H.size(); ++i) @@ -1228,7 +1224,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF if (H[i]->dependsOnWaveFunction()) { ScopedTimer bmattimer(*timer_manager.createTimer("FastDeriv::B")); - H[i]->evaluateOneBodyOpMatrix(P, psi_wrapper_, B_); + H[i]->evaluateOneBodyOpMatrix(P, psi_wrapper_in, B_); } else { @@ -1240,14 +1236,14 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF ValueType nondiag_cont = 0.0; RealType nondiag_cont_re = 0.0; - psi_wrapper_.getGSMatrices(B_, B_gs_); - nondiag_cont = psi_wrapper_.trAB(Minv_, B_gs_); + psi_wrapper_in.getGSMatrices(B_, B_gs_); + nondiag_cont = psi_wrapper_in.trAB(Minv_, B_gs_); convertToReal(nondiag_cont, nondiag_cont_re); localEnergy += nondiag_cont_re; { ScopedTimer buildXtimer(*timer_manager.createTimer("FastDeriv::buildX")); - psi_wrapper_.buildX(Minv_, B_gs_, X_); + psi_wrapper_in.buildX(Minv_, B_gs_, X_); } //And now we compute the 3N force derivatives. 3 at a time for each atom. for (int iat = 0; iat < ions.getTotalNum(); iat++) @@ -1256,41 +1252,41 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF //One from the Jastrow. Jastrow is easy, so we evaluate it here, then add on the //determinantal piece at the end of this block. - wfgradraw_[iat] = psi_wrapper_.evaluateJastrowGradSource(P, ions, iat); + wfgradraw_[iat] = psi_wrapper_in.evaluateJastrowGradSource(P, ions, iat); for (int idim = 0; idim < OHMMS_DIM; idim++) { - psi_wrapper_.wipeMatrices(dM_[idim]); - psi_wrapper_.wipeMatrices(dM_gs_[idim]); - psi_wrapper_.wipeMatrices(dB_[idim]); - psi_wrapper_.wipeMatrices(dB_gs_[idim]); + psi_wrapper_in.wipeMatrices(dM_[idim]); + psi_wrapper_in.wipeMatrices(dM_gs_[idim]); + psi_wrapper_in.wipeMatrices(dB_[idim]); + psi_wrapper_in.wipeMatrices(dB_gs_[idim]); } { ScopedTimer dmtimer(*timer_manager.createTimer("FastDeriv::dM")); //ion derivative of slater matrix. - psi_wrapper_.getIonGradM(P, ions, iat, dM_); + psi_wrapper_in.getIonGradM(P, ions, iat, dM_); } for (int i = 0; i < H.size(); ++i) { if (H[i]->dependsOnWaveFunction()) { ScopedTimer dBtimer(*timer_manager.createTimer("FastDeriv::dB")); - H[i]->evaluateOneBodyOpMatrixForceDeriv(P, ions, psi_wrapper_, iat, dB_); + H[i]->evaluateOneBodyOpMatrixForceDeriv(P, ions, psi_wrapper_in, iat, dB_); } } for (int idim = 0; idim < OHMMS_DIM; idim++) { ScopedTimer computederivtimer(*timer_manager.createTimer("FastDeriv::compute_deriv")); - psi_wrapper_.getGSMatrices(dB_[idim], dB_gs_[idim]); - psi_wrapper_.getGSMatrices(dM_[idim], dM_gs_[idim]); + psi_wrapper_in.getGSMatrices(dB_[idim], dB_gs_[idim]); + psi_wrapper_in.getGSMatrices(dM_[idim], dM_gs_[idim]); ValueType fval = 0.0; - fval = psi_wrapper_.computeGSDerivative(Minv_, X_, dM_gs_[idim], dB_gs_[idim]); + fval = psi_wrapper_in.computeGSDerivative(Minv_, X_, dM_gs_[idim], dB_gs_[idim]); dedr_complex[iat][idim] = fval; ValueType wfcomp = 0.0; - wfcomp = psi_wrapper_.trAB(Minv_, dM_gs_[idim]); + wfcomp = psi_wrapper_in.trAB(Minv_, dM_gs_[idim]); wfgradraw_[iat][idim] += wfcomp; //The determinantal piece of the WF grad. } convertToReal(dedr_complex[iat], dEdR[iat]); diff --git a/src/QMCHamiltonians/QMCHamiltonian.h b/src/QMCHamiltonians/QMCHamiltonian.h index c2206caee..0a774ba26 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.h +++ b/src/QMCHamiltonians/QMCHamiltonian.h @@ -297,7 +297,8 @@ public: */ FullPrecRealType evaluateIonDerivsDeterministicFast(ParticleSet& P, ParticleSet& ions, - TrialWaveFunction& psi, + TrialWaveFunction& psi_in, + TWFFastDerivWrapper& psi_wrapper, ParticleSet::ParticlePos& dedr, ParticleSet::ParticlePos& wf_grad); From 41d7781b5a89a6ffc486ce58985395df9b20813c Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 13:56:09 -0600 Subject: [PATCH 15/24] make const ngroups --- src/QMCHamiltonians/QMCHamiltonian.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index 727730349..9cd97dd3c 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1131,7 +1131,7 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF ScopedTimer evaluatederivtimer(*timer_manager.createTimer("FastDeriv::evaluateIonDerivsFast")); P.update(); //resize everything; - int ngroups = psi_wrapper_in.numGroups(); + const int ngroups = psi_wrapper_in.numGroups(); { // ScopedTimer resizetimer(*timer_manager.createTimer("NEW::Resize")); From ebe862bcf4523836f87e1d599f3f7df34d2e560c Mon Sep 17 00:00:00 2001 From: rcclay Date: Fri, 23 Sep 2022 14:49:36 -0600 Subject: [PATCH 16/24] Let attr.add handle string to bool conversion --- src/QMCHamiltonians/ACForce.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/QMCHamiltonians/ACForce.cpp b/src/QMCHamiltonians/ACForce.cpp index a79539d60..e6d97883c 100644 --- a/src/QMCHamiltonians/ACForce.cpp +++ b/src/QMCHamiltonians/ACForce.cpp @@ -57,19 +57,19 @@ std::unique_ptr ACForce::makeClone(ParticleSet& qp, TrialWaveFunct bool ACForce::put(xmlNodePtr cur) { - std::string useSpaceWarpString("no"); std::string ionionforce("yes"); - std::string fasteval("no"); RealType swpow(4); OhmmsAttributeSet attr; - attr.add(useSpaceWarpString, "spacewarp"); //"yes" or "no" + attr.add(useSpaceWarp_, "spacewarp",{false}); //"yes" or "no" attr.add(swpow, "swpow"); //Real number" attr.add(delta_, "delta"); //Real number" - attr.add(fasteval,"fast_derivatives"); + attr.add(fastDerivatives_,"fast_derivatives",{false}); attr.put(cur); - useSpaceWarp_ = (useSpaceWarpString == "yes") || (useSpaceWarpString == "true"); - fastDerivatives_ = (fasteval == "yes") || (fasteval == "true"); + if (fastDerivatives_) + app_log()<< "ACForce is using the fast force algorithm\n"; + else + app_log()<< "ACForce is using the default algorithm\n"; swt_.setPow(swpow); if (useSpaceWarp_) From 798a1a49437cf0e4341b2582713fd2d91bde9868 Mon Sep 17 00:00:00 2001 From: Clay Date: Mon, 26 Sep 2022 13:24:54 -0600 Subject: [PATCH 17/24] Add documentation --- docs/bibs/hamiltonianobservable.bib | 26 +++++ docs/hamiltonianobservable.rst | 165 ++++++++++++++++++++++++++-- 2 files changed, 181 insertions(+), 10 deletions(-) diff --git a/docs/bibs/hamiltonianobservable.bib b/docs/bibs/hamiltonianobservable.bib index c89aa3d31..1191b82ce 100644 --- a/docs/bibs/hamiltonianobservable.bib +++ b/docs/bibs/hamiltonianobservable.bib @@ -76,3 +76,29 @@ numpages = {8}, publisher = {American Physical Society} } + +@article{Filippi2016, + author = {Filippi,Claudia and Assaraf,Roland and Moroni,Saverio }, + title = {Simple formalism for efficient derivatives and multi-determinant expansions in quantum Monte Carlo}, + journal = {The Journal of Chemical Physics}, + volume = {144}, + number = {19}, + pages = {194105}, + year = {2016}, + doi = {10.1063/1.4948778}, + URL = {https://doi.org/10.1063/1.4948778}, + eprint = { https://doi.org/10.1063/1.4948778 } +} + +@article{Tiihonen2021, + author = {Tiihonen,Juha and Clay,Raymond C. and Krogel,Jaron T. }, + title = {Toward quantum Monte Carlo forces on heavier ions: Scaling properties}, + journal = {The Journal of Chemical Physics}, + volume = {154}, + number = {20}, + pages = {204111}, + year = {2021}, + doi = {10.1063/5.0052266}, + URL = { https://doi.org/10.1063/5.0052266 }, + eprint = { https://doi.org/10.1063/5.0052266} +} diff --git a/docs/hamiltonianobservable.rst b/docs/hamiltonianobservable.rst index 614212fa9..1c5f9437f 100644 --- a/docs/hamiltonianobservable.rst +++ b/docs/hamiltonianobservable.rst @@ -403,6 +403,7 @@ Additional information: + Details of ```` input elements are shown in the following. It is possible to include (or construct) a full pseudopotential directly in the input file without providing an external file via ``href``. The full @@ -551,7 +552,7 @@ section (e.g., during VMC only). +------------------+------------------+-----------------------------------------------------------+ | | chiesa | Chiesa-Ceperley-Martin-Holzmann kinetic energy correction | +------------------+------------------+-----------------------------------------------------------+ - | | Force | Family of "force" estimators (see :ref:`force-est`) | + | | Force | Family of "force" estimators (see :ref:`ccz-force-est`) | +------------------+------------------+-----------------------------------------------------------+ | | ForwardWalking | Forward walking values for existing estimators | +------------------+------------------+-----------------------------------------------------------+ @@ -1788,15 +1789,16 @@ time step. -.. _force-est: - -"Force" estimators ------------------- - -QMCPACK supports force estimation by use of the Chiesa-Ceperly-Zhang -(CCZ) estimator. Currently, open and periodic boundary conditions are -supported but for all-electron calculations only. +.. _ccz-force-est: +Chiesa-Ceperley-Zhang Force Estimators +-------------------------------------- +All force estimators implemented in QMCPACK are invoked with ``type="Force"``. +The ``mode`` determines the specific estimator to be used. Currently, +QMCPACK supports Chiesa-Ceperley-Zhang (CCZ) all-electron and +Assaraf-Caffarel Zero-Variance Zero-Bias (AC) force estimators. We'll discuss +the CCZ estimator in this section, and the AC estimator in the following section. + Without loss of generality, the CCZ estimator for the z-component of the force on an ion centered at the origin is given by the following expression: @@ -1821,7 +1823,12 @@ and the s-wave filtered estimator. Specifically, Here, :math:`m` is the weighting exponent, :math:`f_z(r)` is the unfiltered radial force density for the z force component, and :math:`\tilde{f}_z(r)` is the smoothed polynomial function for the same -force density. The reader is invited to refer to the original paper for +force density. + +Currently, open and periodic boundary conditions are +supported but for all-electron calculations only. + +The reader is invited to refer to the original paper for a more thorough explanation of the methodology, but with the notation in hand, QMCPACK takes the following parameters. @@ -1902,6 +1909,144 @@ The following is an example use case. +.. _ac-force-est: + +Assaraf-Caffarel Force Estimators +--------------------------------- +***WARNING: The following estimator formally has infinite variance. You MUST do something +to mitigate this in postprocessing or during the run before publishing.*** + + +QMCPACK has an implementation of force estimation using the Assaraf-Caffarel +Zero-Variance Zero-Bias method :cite:`Tiihonen2021`. This has the desirable +property that as the trial wave function and trial wave function derivative +become exact, the estimator itself becomes an exact estimate of the force +and the variance of the estimator goes to ero--much like the local energy. +In practice, the estimator is usually significantly more accurate and has much +lower variance than the bare Hellman-Feynman estimator. + +Currently, this is the only recommended way +to estimate forces for systems with non-local pseudopotentials. + + +The zero-variance, zero-bias force estimator is given by the following +expression: + +.. math:: + :label: eq 46 + + \mathbf{F}^{ZVZB}_I = \mathbf{F}^{ZV}_I+\mathbf{F}^{ZB}_I = -\nabla_I E_L(\mathbf{R}) - 2 \left( E_L(\mathbf{R})-\langle E_L \rangle \right) \nabla_I \ln \Psi_T \:. + +The first term is the zero-variance force estimator, given by the following. + +.. math:: + :label: eq 47 + + \mathbf{F}^{ZV}_I = -\nabla_I E_L(\mathbf{R}) = \frac{-\left(\nabla_I \hat{H}\right) \Psi_T}{\Psi_T} - \frac{\left(\hat{H} - E_L\right)\nabla_I \Psi_T}{\Psi_T}\:. + +The first term is the bare "Hellman-Feynman" term (denoted "hf" in output), and the second is +a fluctuation cancelling zero-variance term (called "pulay" in output). This splitting allows the +user to investigate the individual contributions to the force estimator, but we recommend always +adding "hf" and "pulay" terms unless there is a compelling reason to do otherwise. + + +The second term is the "zero-bias" term: + +.. math:: + :label: eq 48 + + \mathbf{F}^{ZB}_I = - 2 \left( E_L(\mathbf{R})-\langle E_L \rangle \right) \nabla_I \ln \Psi_T \:. + +Because knowledge of :math:`\langle E_L \rangle` is needed to compute the zero-bias term, QMCPACK returns +:math:`E_L(\mathbf{R}) \ln \Psi_T` (called "Ewfngrad" in output), and :math:`\ln \Psi_T` +(called "wfngrad" in output), which in conjunction with the local energy, allows one to construct the +zero-bias term in post-processing. + +There is an initial implementation of space-warp variance reduction that is accessible to the +end-user, subject to the caveat that evaluation of these terms is currently slow (derivatives of local +energy are computed with finite differences, rather than analytically). If the space-warp option +is enabled, the following term is added to the zero-variance force estimator: + +.. math:: + :label: eq 49 + + \mathbf{F}^{ZV-SW}_I = - \sum_{i=1}^{N_e} \omega_I(\mathbf{r}_i) \nabla_i E_L \:. + +The variance reduction with this term is observed to be rather large. A faster, more efficient +implementation of this term will be available in a future QMCPACK release. + +The following term is added to the wave function gradient: + +.. math:: + :label: eq 50 + + [\nabla_I \ln \Psi_T ]_{SW} = \sum_{i=1}^{N_e} \omega_I(\mathbf{r}_i) \nabla_i \ln \Psi_T + \frac{1}{2} \nabla_i\omega_I(\mathbf{r}_i) \:. + +Currently, there is only one choice for damping function :math:`\omega_I(\mathbf{r})`. This is given by: + +.. math:: + :label: eq 51 + + \omega_I(\mathbf{r}) = \frac{F(|\mathbf{r}-\mathbf{R}_I|)}{\sum_I F(|\mathbf{r}-\mathbf{R}_I|)} \:. + +We use :math:`F(r)=r^{-4}` for the real space damping. + +Finally, the estimator provides two methods to evaluate the necessary derivatives of the wave function and Hamiltonian. +The first is a straightforward analytic differentiation of all required terms. While mathematically transparent, +this algorithm has poor scaling with system size. The second utilizes the fast-derivative algorithm of Assaraf, Moroni, +and Filippi :cite:`Filippi2016`, which has a smaller computational prefactor and at least an O(N) speed-up over the legacy implementation. +Both of these methods are accessible with appropraite flags. + +``estimator type=Force`` element: + + +------------------+----------------------+ + | parent elements: | ``hamiltonian, qmc`` | + +------------------+----------------------+ + | child elements: | none | + +------------------+----------------------+ + + attributes: + + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + | **Name** | **Datatype** | **Values** | **Default** | **Description** | + +================================+==============+=================+=============+==============================================================+ + | ``mode``:math:`^o` | text | acforce | | Required to use ACForce estimator | + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + | ``type``:math:`^r` | text | Force | | Must be "Force" | + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + | ``name``:math:`^o` | text | *Anything* | ForceBase | Unique name for this estimator | + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + | ``spacewarp``:math:`^o` | text | yes/no | no | Add space-warp variance reduction terms | + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + | ``fast_derivatives``:math:`^o` | text | yes/no | no | Use Filippi fast derivative algorithm | + +--------------------------------+--------------+-----------------+-------------+--------------------------------------------------------------+ + + +Additional information: + +- **Naming Convention**: The unique identifier ``name`` is appended + with a term label ( ``hf``, ``pulay``, ``Ewfngrad``, or ``wfgrad``) + ``name_term_X_Y`` in the ``scalar.dat`` file, where ``X`` is the ion + ID number and ``Y`` is the component ID (an integer with x=0, y=1, + z=2). All force components for all ions are computed and dumped to + the ``scalar.dat`` file. + +- **Note**: The fast force algorithm returns the total derivative of the + local energy, and does not make the split between "Hellman-Feynman" and + zero-variance terms like the legacy force implementation does. As such, + expect ``name_pulay_X_Y`` to be zero if ``fast_derivatives="yes"``. + However, this will be identical to the sum of Hellman-Feynman and + zero-variance terms in the legacy implementation. + + +The following is an example use case. + +:: + + + + + .. _stress-est: Stress estimators From 94235c0f789ca10a14bdb29cf886beb1cae6522b Mon Sep 17 00:00:00 2001 From: rcclay Date: Mon, 26 Sep 2022 13:28:58 -0600 Subject: [PATCH 18/24] Remove TWFFastDerivWrapper for state API's --- src/QMCWaveFunctions/TWFFastDerivWrapper.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/QMCWaveFunctions/TWFFastDerivWrapper.h b/src/QMCWaveFunctions/TWFFastDerivWrapper.h index 385adfbc5..f9306042d 100644 --- a/src/QMCWaveFunctions/TWFFastDerivWrapper.h +++ b/src/QMCWaveFunctions/TWFFastDerivWrapper.h @@ -57,10 +57,6 @@ public: void addGroup(const ParticleSet& P, const IndexType groupid, SPOSet* spo); inline void addJastrow(WaveFunctionComponent* j) { jastrow_list_.push_back(j); }; - //This function gets called after all the Jastrow and SPOSet objects have been registered. - //Not pretty, but plays nicest with the fact that TrialWavefunction handles the construction - //of the wrapper. - inline void finalizeConstruction() { is_initialized_ = true; } /** @brief Takes particle set groupID and returns the TWF internal index for it. * * ParticleSet groups can be registered in whichever order. However, the internal indexing @@ -87,7 +83,6 @@ public: inline IndexType numGroups() const { return spos_.size(); }; SPOSet* getSPOSet(const IndexType sid) const { return spos_[sid]; }; inline IndexType numOrbitals(const IndexType sid) const { return spos_[sid]->size(); }; - inline bool isInitialized() { return is_initialized_; }; /** @} */ ////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -273,7 +268,6 @@ public: private: - bool is_initialized_; std::vector spos_; std::vector groups_; std::vector psi_M_; From aa00384d33c2e83e7a54e0483c1f6bd356b7e530 Mon Sep 17 00:00:00 2001 From: rcclay Date: Mon, 26 Sep 2022 13:32:55 -0600 Subject: [PATCH 19/24] Clang format --- src/QMCHamiltonians/ACForce.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/QMCHamiltonians/ACForce.cpp b/src/QMCHamiltonians/ACForce.cpp index e6d97883c..0c061157d 100644 --- a/src/QMCHamiltonians/ACForce.cpp +++ b/src/QMCHamiltonians/ACForce.cpp @@ -49,9 +49,9 @@ std::unique_ptr ACForce::makeClone(ParticleSet& qp, TrialWaveFunct std::unique_ptr ACForce::makeClone(ParticleSet& qp, TrialWaveFunction& psi_in, QMCHamiltonian& ham_in) { std::unique_ptr myclone = std::make_unique(ions_, qp, psi_in, ham_in); - myclone->fastDerivatives_=fastDerivatives_; - myclone->useSpaceWarp_=useSpaceWarp_; - myclone->first_force_index_=first_force_index_; + myclone->fastDerivatives_ = fastDerivatives_; + myclone->useSpaceWarp_ = useSpaceWarp_; + myclone->first_force_index_ = first_force_index_; return myclone; } @@ -60,16 +60,16 @@ bool ACForce::put(xmlNodePtr cur) std::string ionionforce("yes"); RealType swpow(4); OhmmsAttributeSet attr; - attr.add(useSpaceWarp_, "spacewarp",{false}); //"yes" or "no" - attr.add(swpow, "swpow"); //Real number" - attr.add(delta_, "delta"); //Real number" - attr.add(fastDerivatives_,"fast_derivatives",{false}); + attr.add(useSpaceWarp_, "spacewarp", {false}); //"yes" or "no" + attr.add(swpow, "swpow"); //Real number" + attr.add(delta_, "delta"); //Real number" + attr.add(fastDerivatives_, "fast_derivatives", {false}); attr.put(cur); if (fastDerivatives_) - app_log()<< "ACForce is using the fast force algorithm\n"; + app_log() << "ACForce is using the fast force algorithm\n"; else - app_log()<< "ACForce is using the default algorithm\n"; + app_log() << "ACForce is using the default algorithm\n"; swt_.setPow(swpow); if (useSpaceWarp_) @@ -100,8 +100,8 @@ ACForce::Return_t ACForce::evaluate(ParticleSet& P) sw_grad_ = 0; //This function returns d/dR of the sum of all observables in the physical hamiltonian. //Note that the sign will be flipped based on definition of force = -d/dR. - if(fastDerivatives_) - value_ = ham_.evaluateIonDerivsDeterministicFast(P, ions_, psi_,psi_wrapper_, hf_force_, wf_grad_); + if (fastDerivatives_) + value_ = ham_.evaluateIonDerivsDeterministicFast(P, ions_, psi_, psi_wrapper_, hf_force_, wf_grad_); else value_ = ham_.evaluateIonDerivsDeterministic(P, ions_, psi_, hf_force_, pulay_force_, wf_grad_); From 28cc255a9c8c47b4276f99bc44fb2458fc05e6d4 Mon Sep 17 00:00:00 2001 From: rcclay Date: Mon, 26 Sep 2022 14:29:27 -0600 Subject: [PATCH 20/24] Forgot to eliminate state variable --- src/QMCWaveFunctions/TWFFastDerivWrapper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/QMCWaveFunctions/TWFFastDerivWrapper.h b/src/QMCWaveFunctions/TWFFastDerivWrapper.h index f9306042d..de1f2818e 100644 --- a/src/QMCWaveFunctions/TWFFastDerivWrapper.h +++ b/src/QMCWaveFunctions/TWFFastDerivWrapper.h @@ -40,7 +40,7 @@ public: using ValueVector = SPOSet::ValueVector; using GradVector = SPOSet::GradVector; - inline TWFFastDerivWrapper() : is_initialized_(false){}; + inline TWFFastDerivWrapper(){}; /** @brief Add a particle group. * * Here, a "group" corresponds to a subset of particles which are antisymmetric with From b30ba26977d0f837ab1f8ff721f8d487a951a6a8 Mon Sep 17 00:00:00 2001 From: rcclay Date: Mon, 26 Sep 2022 14:31:20 -0600 Subject: [PATCH 21/24] Add a line to test QMCHamiltonian API --- src/QMCHamiltonians/tests/test_ion_derivs.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/QMCHamiltonians/tests/test_ion_derivs.cpp b/src/QMCHamiltonians/tests/test_ion_derivs.cpp index f461e6ada..ea6c5fa5e 100644 --- a/src/QMCHamiltonians/tests/test_ion_derivs.cpp +++ b/src/QMCHamiltonians/tests/test_ion_derivs.cpp @@ -1238,6 +1238,10 @@ TEST_CASE("Eloc_Derivatives:proto_sd_wj", "[hamiltonian]") CHECK(fnlpp[1][1] == Approx(1.1362118534918864)); CHECK(fnlpp[1][2] == Approx(-4.5825638607333019)); #endif + //This is to test the fast force API in QMCHamiltonian. + ParticleSet::ParticlePos dedr(ions.getTotalNum()); + ParticleSet::ParticlePos dpsidr(ions.getTotalNum()); + ham.evaluateIonDerivsDeterministicFast(elec,ions,*psi,twf,dedr,dpsidr); } /*TEST_CASE("Eloc_Derivatives:slater_wj", "[hamiltonian]") { From 669a61e85f9c4c99096d491ea9f9fbc1cba478f6 Mon Sep 17 00:00:00 2001 From: rcclay Date: Tue, 27 Sep 2022 18:45:57 -0600 Subject: [PATCH 22/24] Remove temporary arrays from QMCHamiltonian. Also twf_deriv_wrapper_ --- src/QMCHamiltonians/QMCHamiltonian.cpp | 12 ++++++++++++ src/QMCHamiltonians/QMCHamiltonian.h | 13 ------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/QMCHamiltonians/QMCHamiltonian.cpp b/src/QMCHamiltonians/QMCHamiltonian.cpp index 9cd97dd3c..ff3908e88 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.cpp +++ b/src/QMCHamiltonians/QMCHamiltonian.cpp @@ -1133,6 +1133,18 @@ QMCHamiltonian::FullPrecRealType QMCHamiltonian::evaluateIonDerivsDeterministicF //resize everything; const int ngroups = psi_wrapper_in.numGroups(); + std::vector X_; //Working arrays for derivatives + std::vector Minv_; //Working array for derivatives. + std::vector B_; + std::vector B_gs_; + std::vector M_; + std::vector M_gs_; + + std::vector> dM_; + std::vector> dM_gs_; + std::vector> dB_; + std::vector> dB_gs_; + { // ScopedTimer resizetimer(*timer_manager.createTimer("NEW::Resize")); M_.resize(ngroups); diff --git a/src/QMCHamiltonians/QMCHamiltonian.h b/src/QMCHamiltonians/QMCHamiltonian.h index 0a774ba26..7a984fe8c 100644 --- a/src/QMCHamiltonians/QMCHamiltonian.h +++ b/src/QMCHamiltonians/QMCHamiltonian.h @@ -483,19 +483,6 @@ private: // helper function for extracting a list of Hamiltonian components from a list of QMCHamiltonian::H. static RefVectorWithLeader extract_HC_list(const RefVectorWithLeader& ham_list, int id); - //This is for fast derivative evaluation. - TWFFastDerivWrapper psi_wrapper_; - std::vector X_; //Working arrays for derivatives - std::vector Minv_; //Working array for derivatives. - std::vector B_; - std::vector B_gs_; - std::vector M_; - std::vector M_gs_; - - std::vector> dM_; - std::vector> dM_gs_; - std::vector> dB_; - std::vector> dB_gs_; #if !defined(REMOVE_TRACEMANAGER) ///traces variables TraceRequest request; From cd140b82c95848318d2c8aef793611e40d5741ac Mon Sep 17 00:00:00 2001 From: rcclay Date: Tue, 27 Sep 2022 18:56:32 -0600 Subject: [PATCH 23/24] Fix constructor --- src/QMCWaveFunctions/TWFFastDerivWrapper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/QMCWaveFunctions/TWFFastDerivWrapper.h b/src/QMCWaveFunctions/TWFFastDerivWrapper.h index de1f2818e..661b8c331 100644 --- a/src/QMCWaveFunctions/TWFFastDerivWrapper.h +++ b/src/QMCWaveFunctions/TWFFastDerivWrapper.h @@ -40,7 +40,7 @@ public: using ValueVector = SPOSet::ValueVector; using GradVector = SPOSet::GradVector; - inline TWFFastDerivWrapper(){}; + TWFFastDerivWrapper() = default; /** @brief Add a particle group. * * Here, a "group" corresponds to a subset of particles which are antisymmetric with From aa4dc5cd49a72836ebe27eeb88ba55ef3cead6e0 Mon Sep 17 00:00:00 2001 From: rcclay Date: Wed, 28 Sep 2022 15:47:09 -0600 Subject: [PATCH 24/24] Increase coverage --- src/QMCHamiltonians/tests/test_force.cpp | 49 ++++++++++++++++-------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/QMCHamiltonians/tests/test_force.cpp b/src/QMCHamiltonians/tests/test_force.cpp index cae12658f..8169d04ba 100644 --- a/src/QMCHamiltonians/tests/test_force.cpp +++ b/src/QMCHamiltonians/tests/test_force.cpp @@ -457,31 +457,50 @@ TEST_CASE("AC Force", "[hamiltonian]") TrialWaveFunction psi; QMCHamiltonian qmcHamiltonian; - ACForce force(ions, elec, psi, qmcHamiltonian); - - const std::string acforceXML = R"( + //This is redundant code, but necessary to avoid adding API's to + //modify internal state. Avoid constructor+put() complexities for now. + //Revisit in future. + // + //Old algorithm is the legacy force path, new is the fast force derivative path. + ACForce force_old(ions, elec, psi, qmcHamiltonian); + ACForce force_new(ions, elec, psi, qmcHamiltonian); + const std::string acforceXMLold = R"( )"; - Libxml2Document doc; - bool okay = doc.parseFromString(acforceXML); - REQUIRE(okay); + const std::string acforceXMLnew = R"( + + + + )"; - xmlNodePtr root = doc.getRoot(); - xmlNodePtr h1 = xmlFirstElementChild(root); + Libxml2Document olddoc; + Libxml2Document newdoc; + bool oldokay = olddoc.parseFromString(acforceXMLold); + REQUIRE(oldokay); + bool newokay = newdoc.parseFromString(acforceXMLnew); + REQUIRE(newokay); - force.put(h1); - const auto v = force.evaluate(elec); - force.resetTargetParticleSet(elec); // does nothing? + xmlNodePtr oldroot = olddoc.getRoot(); + xmlNodePtr oldh1 = xmlFirstElementChild(oldroot); + xmlNodePtr newroot = newdoc.getRoot(); + xmlNodePtr newh1 = xmlFirstElementChild(newroot); - REQUIRE(v == Approx(0)); - REQUIRE(force.get(std::cout) == true); + force_old.put(oldh1); + force_new.put(newh1); + const auto vold = force_old.evaluate(elec); + const auto vnew = force_new.evaluate(elec); + force_old.resetTargetParticleSet(elec); // does nothing? - force.add2Hamiltonian(elec, psi, qmcHamiltonian); + REQUIRE(vold == Approx(0)); + REQUIRE(vnew == Approx(0)); + REQUIRE(force_old.get(std::cout) == true); - auto clone = force.makeClone(elec, psi, qmcHamiltonian); + force_old.add2Hamiltonian(elec, psi, qmcHamiltonian); + + auto clone = force_old.makeClone(elec, psi, qmcHamiltonian); REQUIRE(clone); }