diff --git a/src/Particle/VirtualParticleSet.cpp b/src/Particle/VirtualParticleSet.cpp index b8fafc88ad..c34a601ffb 100644 --- a/src/Particle/VirtualParticleSet.cpp +++ b/src/Particle/VirtualParticleSet.cpp @@ -100,6 +100,7 @@ void VirtualParticleSet::releaseResource(ResourceCollection& collection, /// move virtual particles to new postions and update distance tables void VirtualParticleSet::makeMoves(int jel, const PosType& ref_pos, + const RealType ref_spin, const std::vector& deltaV, bool sphere, int iat) @@ -112,7 +113,35 @@ void VirtualParticleSet::makeMoves(int jel, refSourcePtcl = iat; assert(R.size() == deltaV.size()); for (size_t ivp = 0; ivp < R.size(); ivp++) - R[ivp] = ref_pos + deltaV[ivp]; + { + R[ivp] = ref_pos + deltaV[ivp]; + spins[ivp] = ref_spin; //no spin deltas in this API + } + update(); +} + +/// move virtual particles to new postions and update distance tables +void VirtualParticleSet::makeMovesWithSpin(int jel, + const PosType& ref_pos, + const RealType ref_spin, + const std::vector& deltaV, + const std::vector& deltaS, + bool sphere, + int iat) +{ + if (sphere && iat < 0) + throw std::runtime_error( + "VirtualParticleSet::makeMovesWithSpin is invoked incorrectly, the flag sphere=true requires iat specified!"); + onSphere = sphere; + refPtcl = jel; + refSourcePtcl = iat; + assert(R.size() == deltaV.size()); + assert(spins.size() == deltaS.size()); + for (size_t ivp = 0; ivp < R.size(); ivp++) + { + R[ivp] = ref_pos + deltaV[ivp]; + spins[ivp] = ref_spin + deltaS[ivp]; + } update(); } diff --git a/src/Particle/VirtualParticleSet.h b/src/Particle/VirtualParticleSet.h index a431b8340b..49b26c9bee 100644 --- a/src/Particle/VirtualParticleSet.h +++ b/src/Particle/VirtualParticleSet.h @@ -76,16 +76,35 @@ class VirtualParticleSet : public ParticleSet /** move virtual particles to new postions and update distance tables * @param jel reference particle that all the VP moves from * @param ref_pos reference particle position + * @param ref_spin reference particle spin * @param deltaV Position delta for virtual moves. * @param sphere set true if VP are on a sphere around the reference source particle * @param iat reference source particle */ void makeMoves(int jel, const PosType& ref_pos, + const RealType ref_spin, const std::vector& deltaV, bool sphere = false, int iat = -1); + /** move virtual particles to new postions and update distance tables + * @param jel reference particle that all the VP moves from + * @param ref_pos reference particle position + * @param ref_spin reference particle spin + * @param deltaV Position delta for virtual moves. + * @param deltaS Spin delta for virtual moves. + * @param sphere set true if VP are on a sphere around the reference source particle + * @param iat reference source particle + */ + void makeMovesWithSpin(int jel, + const PosType& ref_pos, + const RealType ref_spin, + const std::vector& deltaV, + const std::vector& deltaS, + bool sphere = false, + int iat = -1); + static void mw_makeMoves(const RefVectorWithLeader& vp_list, const RefVector>& deltaV_list, const RefVector>& joblist, diff --git a/src/QMCHamiltonians/ECPotentialBuilder.cpp b/src/QMCHamiltonians/ECPotentialBuilder.cpp index efab963a88..a4755bc3d3 100644 --- a/src/QMCHamiltonians/ECPotentialBuilder.cpp +++ b/src/QMCHamiltonians/ECPotentialBuilder.cpp @@ -144,12 +144,7 @@ bool ECPotentialBuilder::put(xmlNodePtr cur) { nknot_max = std::max(nknot_max, nonLocalPot[i]->getNknot()); if (NLPP_algo == "batched") - { - if( !targetPtcl.isSpinor()) - nonLocalPot[i]->initVirtualParticle(targetPtcl); - else - throw std::runtime_error("Batched NLPP evaluation not validated with spinors. Use algorithm=\"non-batched\" in pseudopotential block."); - } + nonLocalPot[i]->initVirtualParticle(targetPtcl); apot->addComponent(i, std::move(nonLocalPot[i])); } } @@ -181,12 +176,16 @@ bool ECPotentialBuilder::put(xmlNodePtr cur) { nknot_max = std::max(nknot_max, soPot[i]->getNknot()); sknot_max = std::max(sknot_max, soPot[i]->getSknot()); + if (NLPP_algo == "batched") + soPot[i]->initVirtualParticle(targetPtcl); apot->addComponent(i, std::move(soPot[i])); } } app_log() << "\n Using SOECP potential \n" << " Maximum grid on a sphere for SOECPotential: " << nknot_max << std::endl; app_log() << " Maximum grid for Simpson's rule for spin integral: " << sknot_max << std::endl; + if (NLPP_algo == "batched") + app_log() << " Using batched ratio computing in SOECP potential" << std::endl; if (physicalSO == "yes") targetH.addOperator(std::move(apot), "SOECP"); //default is physical operator @@ -218,7 +217,7 @@ void ECPotentialBuilder::useXmlFormat(xmlNodePtr cur) std::string href("none"); std::string ionName("none"); std::string format("xml"); - int nrule = -1; + int nrule = -1; int llocal = -1; //RealType rc(2.0);//use 2 Bohr OhmmsAttributeSet hAttrib; diff --git a/src/QMCHamiltonians/NonLocalECPComponent.cpp b/src/QMCHamiltonians/NonLocalECPComponent.cpp index 0b05ae0a7e..de76a2813f 100644 --- a/src/QMCHamiltonians/NonLocalECPComponent.cpp +++ b/src/QMCHamiltonians/NonLocalECPComponent.cpp @@ -135,7 +135,7 @@ NonLocalECPComponent::RealType NonLocalECPComponent::evaluateOne(ParticleSet& W, if (VP) { // Compute ratios with VP - VP->makeMoves(iel, W.R[iel], deltaV, true, iat); + VP->makeMoves(iel, W.R[iel], W.spins[iel], deltaV, true, iat); if (use_DLA) psi.evaluateRatios(*VP, psiratio, TrialWaveFunction::ComputeType::FERMIONIC); else @@ -310,7 +310,7 @@ NonLocalECPComponent::RealType NonLocalECPComponent::evaluateOneWithForces(Parti { APP_ABORT("NonLocalECPComponent::evaluateOneWithForces(...): Forces not implemented with virtual particle moves\n"); // Compute ratios with VP - VP->makeMoves(iel, W.R[iel], deltaV, true, iat); + VP->makeMoves(iel, W.R[iel], W.spins[iel], deltaV, true, iat); psi.evaluateRatios(*VP, psiratio); } else @@ -460,7 +460,7 @@ NonLocalECPComponent::RealType NonLocalECPComponent::evaluateOneWithForces(Parti { APP_ABORT("NonLocalECPComponent::evaluateOneWithForces(...): Forces not implemented with virtual particle moves\n"); // Compute ratios with VP - VP->makeMoves(iel, W.R[iel], deltaV, true, iat); + VP->makeMoves(iel, W.R[iel], W.spins[iel], deltaV, true, iat); psi.evaluateRatios(*VP, psiratio); } else @@ -802,7 +802,6 @@ void NonLocalECPComponent::evaluateOneBodyOpMatrixdRContribution(ParticleSet& W, for (int j = 0; j < nknot; j++) { - RealType zz = dot(dr, rrotsgrid_m[j]) * rinv; PosType uminusrvec = rrotsgrid_m[j] - zz * dr * rinv; diff --git a/src/QMCHamiltonians/NonLocalECPotential.deriv.cpp b/src/QMCHamiltonians/NonLocalECPotential.deriv.cpp index 420050366d..15bb203fe5 100644 --- a/src/QMCHamiltonians/NonLocalECPotential.deriv.cpp +++ b/src/QMCHamiltonians/NonLocalECPotential.deriv.cpp @@ -81,7 +81,7 @@ NonLocalECPComponent::RealType NonLocalECPComponent::evaluateValueAndDerivatives if (VP) { // Compute ratios with VP - VP->makeMoves(iel, W.R[iel], deltaV, true, iat); + VP->makeMoves(iel, W.R[iel], W.spins[iel], deltaV, true, iat); psi.evaluateDerivRatios(*VP, optvars, psiratio, dratio); } else diff --git a/src/QMCHamiltonians/SOECPComponent.cpp b/src/QMCHamiltonians/SOECPComponent.cpp index f25f2f1a65..237caf7417 100644 --- a/src/QMCHamiltonians/SOECPComponent.cpp +++ b/src/QMCHamiltonians/SOECPComponent.cpp @@ -17,16 +17,33 @@ namespace qmcplusplus { -SOECPComponent::SOECPComponent() : lmax(0), nchannel(0), nknot(0), sknot(0), Rmax(-1) {} +SOECPComponent::SOECPComponent() : lmax(0), nchannel(0), nknot(0), sknot(0), Rmax(-1), VP(nullptr) {} SOECPComponent::~SOECPComponent() { for (int i = 0; i < sopp_m.size(); i++) delete sopp_m[i]; + if (VP) + delete VP; } void SOECPComponent::print(std::ostream& os) {} +void SOECPComponent::initVirtualParticle(const ParticleSet& qp) +{ + assert(VP == nullptr); + outputManager.pause(); + VP = new VirtualParticleSet(qp, nknot); + outputManager.resume(); +} + +void SOECPComponent::deleteVirtualParticle() +{ + if (VP) + delete VP; + VP = nullptr; +} + void SOECPComponent::add(int l, RadialPotentialType* pp) { angpp_m.push_back(l); @@ -38,6 +55,8 @@ SOECPComponent* SOECPComponent::makeClone(const ParticleSet& qp) SOECPComponent* myclone = new SOECPComponent(*this); for (int i = 0; i < sopp_m.size(); i++) myclone->sopp_m[i] = sopp_m[i]->makeClone(); + if (VP) + myclone->VP = new VirtualParticleSet(qp, nknot); return myclone; } @@ -45,6 +64,7 @@ void SOECPComponent::resize_warrays(int n, int m, int s) { psiratio.resize(n); deltaV.resize(n); + deltaS.resize(n); vrad.resize(m); rrotsgrid_m.resize(n); nchannel = sopp_m.size(); @@ -108,18 +128,34 @@ SOECPComponent::ComplexType SOECPComponent::getAngularIntegral(RealType sold, TrialWaveFunction& Psi, int iel, RealType r, - const PosType& dr) + const PosType& dr, + int iat) { - //quadrature sum for angular integral - constexpr RealType fourpi = 2.0 * TWOPI; - for (int j = 0; j < nknot; j++) + buildQuadraturePointDeltas(r, dr, deltaV, snew - sold, deltaS); + + if (VP) { - deltaV[j] = r * rrotsgrid_m[j] - dr; - W.makeMoveWithSpin(iel, deltaV[j], snew - sold); - psiratio[j] = Psi.calcRatio(W, iel) * sgridweight_m[j] * fourpi; - W.rejectMove(iel); - Psi.resetPhaseDiff(); + VP->makeMovesWithSpin(iel, W.R[iel], W.spins[iel], deltaV, deltaS, true, iat); + Psi.evaluateRatios(*VP, psiratio); } + else + { + //quadrature sum for angular integral + for (int j = 0; j < nknot; j++) + { + W.makeMoveWithSpin(iel, deltaV[j], deltaS[j]); + psiratio[j] = Psi.calcRatio(W, iel); + W.rejectMove(iel); + Psi.resetPhaseDiff(); + } + } + + //Need to add appropriate weight to psiratio + std::transform(psiratio.begin(), psiratio.end(), sgridweight_m.begin(), psiratio.begin(), + [](auto& psi, auto& weight) { + RealType fourpi = 2.0 * TWOPI; + return psi * weight * fourpi; + }); ComplexType angint(0.0); for (int j = 0; j < nknot; j++) @@ -176,22 +212,35 @@ SOECPComponent::RealType SOECPComponent::evaluateOne(ParticleSet& W, for (int is = 1; is <= sknot - 1; is += 2) { RealType snew = smin + is * dS; - ComplexType angint = getAngularIntegral(sold, snew, W, Psi, iel, r, dr); + ComplexType angint = getAngularIntegral(sold, snew, W, Psi, iel, r, dr, iat); sint += RealType(4. / 3.) * dS * angint; } for (int is = 2; is <= sknot - 2; is += 2) { RealType snew = smin + is * dS; - ComplexType angint = getAngularIntegral(sold, snew, W, Psi, iel, r, dr); + ComplexType angint = getAngularIntegral(sold, snew, W, Psi, iel, r, dr, iat); sint += RealType(2. / 3.) * dS * angint; } - sint += RealType(1. / 3.) * dS * getAngularIntegral(sold, smin, W, Psi, iel, r, dr); - sint += RealType(1. / 3.) * dS * getAngularIntegral(sold, smax, W, Psi, iel, r, dr); + sint += RealType(1. / 3.) * dS * getAngularIntegral(sold, smin, W, Psi, iel, r, dr, iat); + sint += RealType(1. / 3.) * dS * getAngularIntegral(sold, smax, W, Psi, iel, r, dr, iat); RealType pairpot = std::real(sint) / TWOPI; return pairpot; } +void SOECPComponent::buildQuadraturePointDeltas(RealType r, + const PosType& dr, + std::vector& deltaV, + RealType ds, + std::vector& deltaS) const +{ + for (int j = 0; j < nknot; j++) + { + deltaV[j] = r * rrotsgrid_m[j] - dr; + deltaS[j] = ds; + } +} + void SOECPComponent::randomize_grid(RandomGenerator& myRNG) { RealType phi(TWOPI * myRNG()), psi(TWOPI * myRNG()), cth(myRNG() - 0.5); diff --git a/src/QMCHamiltonians/SOECPComponent.h b/src/QMCHamiltonians/SOECPComponent.h index c29e7ba4d1..658f45a681 100644 --- a/src/QMCHamiltonians/SOECPComponent.h +++ b/src/QMCHamiltonians/SOECPComponent.h @@ -60,15 +60,24 @@ class SOECPComponent : public QMCTraits TrialWaveFunction& Psi, int iel, RealType r, - const PosType& dr); + const PosType& dr, + int iat); std::vector deltaV; + std::vector deltaS; SpherGridType sgridxyz_m; SpherGridType rrotsgrid_m; std::vector psiratio; std::vector vrad; std::vector sgridweight_m; + VirtualParticleSet* VP; + + void buildQuadraturePointDeltas(RealType r, + const PosType& dr, + std::vector& deltaV, + RealType ds, + std::vector& deltaS) const; public: SOECPComponent(); @@ -116,7 +125,8 @@ class SOECPComponent : public QMCTraits void print(std::ostream& os); - //void initVirtualParticle(const ParticleSet& qp){}; + void initVirtualParticle(const ParticleSet& qp); + void deleteVirtualParticle(); inline void setRmax(int rmax) { Rmax = rmax; } inline RealType getRmax() const { return Rmax; } diff --git a/src/QMCHamiltonians/tests/test_ecp.cpp b/src/QMCHamiltonians/tests/test_ecp.cpp index ca0a84ece6..7b66c92d0e 100644 --- a/src/QMCHamiltonians/tests/test_ecp.cpp +++ b/src/QMCHamiltonians/tests/test_ecp.cpp @@ -536,21 +536,28 @@ TEST_CASE("Evaluate_soecp", "[hamiltonian]") //Need to set up temporary data for this configuration in trial wavefunction. Needed for ratios. double logpsi = psi.evaluateLog(elec); - RealType Value1(0.0); - for (int jel = 0; jel < elec.getTotalNum(); jel++) - { - const auto& dist = myTable.getDistRow(jel); - const auto& displ = myTable.getDisplRow(jel); - for (int iat = 0; iat < ions.getTotalNum(); iat++) + auto test_evaluateOne = [&]() { + RealType Value1(0.0); + for (int jel = 0; jel < elec.getTotalNum(); jel++) { - if (sopp != nullptr && dist[iat] < sopp->getRmax()) - { - Value1 += sopp->evaluateOne(elec, iat, psi, jel, dist[iat], RealType(-1) * displ[iat]); - } + const auto& dist = myTable.getDistRow(jel); + const auto& displ = myTable.getDisplRow(jel); + for (int iat = 0; iat < ions.getTotalNum(); iat++) + if (sopp != nullptr && dist[iat] < sopp->getRmax()) + Value1 += sopp->evaluateOne(elec, iat, psi, jel, dist[iat], RealType(-1) * displ[iat]); } + REQUIRE(Value1 == Approx(-0.3214176962)); + }; + + { + //test with VPs + sopp->initVirtualParticle(elec); + test_evaluateOne(); + sopp->deleteVirtualParticle(); + //test without VPs + test_evaluateOne(); } - REQUIRE(Value1 == Approx(-0.3214176962)); } #endif diff --git a/src/QMCWaveFunctions/tests/test_DiracDeterminant.cpp b/src/QMCWaveFunctions/tests/test_DiracDeterminant.cpp index f30014ada7..7fcb642481 100644 --- a/src/QMCWaveFunctions/tests/test_DiracDeterminant.cpp +++ b/src/QMCWaveFunctions/tests/test_DiracDeterminant.cpp @@ -123,7 +123,7 @@ void test_DiracDeterminant_first(const DetMatInvertor inverter_kind) std::vector ratios2(2); newpos2[0] = newpos - elec.R[1]; newpos2[1] = PosType(0.2, 0.5, 0.3) - elec.R[1]; - VP.makeMoves(1, elec.R[1], newpos2); + VP.makeMoves(1, elec.R[1], elec.spins[1], newpos2); ddb.evaluateRatios(VP, ratios2); CHECK(std::real(ratios2[0]) == Approx(0.4880285278)); diff --git a/src/QMCWaveFunctions/tests/test_DiracDeterminantBatched.cpp b/src/QMCWaveFunctions/tests/test_DiracDeterminantBatched.cpp index 796644022f..214b4e081b 100644 --- a/src/QMCWaveFunctions/tests/test_DiracDeterminantBatched.cpp +++ b/src/QMCWaveFunctions/tests/test_DiracDeterminantBatched.cpp @@ -109,7 +109,7 @@ void test_DiracDeterminantBatched_first() std::vector ratios2(2); newpos2[0] = newpos - elec.R[1]; newpos2[1] = PosType(0.2, 0.5, 0.3) - elec.R[1]; - VP.makeMoves(1, elec.R[1], newpos2); + VP.makeMoves(1, elec.R[1], elec.spins[1], newpos2); ddb.evaluateRatios(VP, ratios2); CHECK(std::real(ratios2[0]) == Approx(0.4880285278)); @@ -817,7 +817,7 @@ void test_DiracDeterminantBatched_spinor_update(const int delay_rank, DetMatInve TEST_CASE("DiracDeterminantBatched_spinor_update", "[wavefunction][fermion]") { -/* Uncomment when MatrixDelayedUpdateCUDA::mw_evalGradWithSpin is implemented + /* Uncomment when MatrixDelayedUpdateCUDA::mw_evalGradWithSpin is implemented #if defined(ENABLE_OFFLOAD) && defined(ENABLE_CUDA) test_DiracDeterminantBatched_spinor_update< MatrixDelayedUpdateCUDA>(1, DetMatInvertor::ACCEL); diff --git a/src/QMCWaveFunctions/tests/test_J2_bspline.cpp b/src/QMCWaveFunctions/tests/test_J2_bspline.cpp index 953a510bf3..d9d8b6dd33 100644 --- a/src/QMCWaveFunctions/tests/test_J2_bspline.cpp +++ b/src/QMCWaveFunctions/tests/test_J2_bspline.cpp @@ -239,7 +239,7 @@ TEST_CASE("BSpline builder Jastrow J2", "[wavefunction]") std::vector ratios2(2); newpos2[0] = newpos - elec_.R[1]; newpos2[1] = PosType(0.2, 0.5, 0.3) - elec_.R[1]; - VP.makeMoves(1, elec_.R[1], newpos2); + VP.makeMoves(1, elec_.R[1], elec_.spins[1], newpos2); j2->evaluateRatios(VP, ratios2); REQUIRE(std::real(ratios2[0]) == Approx(0.9871985577)); diff --git a/src/QMCWaveFunctions/tests/test_MO.cpp b/src/QMCWaveFunctions/tests/test_MO.cpp index 030b8697e9..b18ada950f 100644 --- a/src/QMCWaveFunctions/tests/test_MO.cpp +++ b/src/QMCWaveFunctions/tests/test_MO.cpp @@ -263,7 +263,7 @@ void test_Ne(bool transform) std::vector ratios2(2); newpos2[0] = disp; newpos2[1] = -disp; - VP.makeMoves(0, elec.R[0], newpos2); + VP.makeMoves(0, elec.R[0], elec.spins[0], newpos2); sposet->evaluateDetRatios(VP, phi, phiinv, ratios2); CHECK(ratios2[0] == Approx(-0.504163137)); // values[0] * phiinv[0] CHECK(ratios2[1] == Approx(-0.504163137)); // symmetric move diff --git a/src/QMCWaveFunctions/tests/test_multi_slater_determinant.cpp b/src/QMCWaveFunctions/tests/test_multi_slater_determinant.cpp index 15449a26b3..b2a91ec88b 100644 --- a/src/QMCWaveFunctions/tests/test_multi_slater_determinant.cpp +++ b/src/QMCWaveFunctions/tests/test_multi_slater_determinant.cpp @@ -98,7 +98,7 @@ void test_LiH_msd(const std::string& spo_xml_string, twf.evaluateLog(elec_); app_log() << "twf.evaluateLog logpsi " << std::setprecision(16) << twf.getLogPsi() << " " << twf.getPhase() - << std::endl; + << std::endl; CHECK(std::complex(twf.getLogPsi(), twf.getPhase()) == LogComplexApprox(std::complex(-7.646027846242066, 3.141592653589793))); CHECK(elec_.G[0][0] == ValueApprox(-2.181896934)); @@ -174,7 +174,7 @@ void test_LiH_msd(const std::string& spo_xml_string, std::vector ratios2(2); newpos2[0] = newpos - elec_.R[1]; newpos2[1] = PosType(0.2, 0.5, 0.3) - elec_.R[1]; - VP.makeMoves(1, elec_.R[1], newpos2); + VP.makeMoves(1, elec_.R[1], elec_.spins[1], newpos2); twf.evaluateRatios(VP, ratios2); CHECK(std::real(ratios2[0]) == Approx(-0.8544310407)); @@ -205,7 +205,7 @@ void test_LiH_msd(const std::string& spo_xml_string, twf.evaluateLog(elec_); app_log() << "twf.evaluateLog logpsi " << std::setprecision(16) << twf.getLogPsi() << " " << twf.getPhase() - << std::endl; + << std::endl; CHECK(std::complex(twf.getLogPsi(), twf.getPhase()) == LogComplexApprox(std::complex(-7.803347327300154, 0.0))); CHECK(elec_.G[0][0] == ValueApprox(1.63020975849953)); @@ -244,9 +244,9 @@ void test_LiH_msd(const std::string& spo_xml_string, ParticleSet::mw_update(p_ref_list); TrialWaveFunction::mw_evaluateLog(wf_ref_list, p_ref_list); app_log() << "before YYY [0] getLogPsi getPhase " << std::setprecision(16) << wf_ref_list[0].getLogPsi() << " " - << wf_ref_list[0].getPhase() << std::endl; + << wf_ref_list[0].getPhase() << std::endl; app_log() << "before YYY [1] getLogPsi getPhase " << std::setprecision(16) << wf_ref_list[1].getLogPsi() << " " - << wf_ref_list[1].getPhase() << std::endl; + << wf_ref_list[1].getPhase() << std::endl; CHECK(std::complex(wf_ref_list[0].getLogPsi(), wf_ref_list[0].getPhase()) == LogComplexApprox(std::complex(-7.803347327300153, 0.0))); CHECK(std::complex(wf_ref_list[1].getLogPsi(), wf_ref_list[1].getPhase()) == @@ -450,7 +450,7 @@ void test_Bi_msd(const std::string& spo_xml_string, //Reference values from QWalk with SOC app_log() << "twf.evaluateLog logpsi " << std::setprecision(16) << twf.getLogPsi() << " " << twf.getPhase() - << std::endl; + << std::endl; CHECK(std::complex(twf.getLogPsi(), twf.getPhase()) == LogComplexApprox(std::complex(-9.653087, 3.311467))); diff --git a/src/QMCWaveFunctions/tests/test_polynomial_eeI_jastrow.cpp b/src/QMCWaveFunctions/tests/test_polynomial_eeI_jastrow.cpp index 49def8719c..d8db89537a 100644 --- a/src/QMCWaveFunctions/tests/test_polynomial_eeI_jastrow.cpp +++ b/src/QMCWaveFunctions/tests/test_polynomial_eeI_jastrow.cpp @@ -188,7 +188,7 @@ void test_J3_polynomial3D(const DynamicCoordinateKind kind_selected) std::vector ratios2(2); newpos2[0] = newpos - elec_.R[1]; newpos2[1] = PosType(0.2, 0.5, 0.3) - elec_.R[1]; - VP.makeMoves(1, elec_.R[1], newpos2); + VP.makeMoves(1, elec_.R[1], elec_.spins[1], newpos2); j3->evaluateRatios(VP, ratios2); REQUIRE(std::real(ratios2[0]) == Approx(1.0357541137)); diff --git a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-long.in.xml b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-long.in.xml index 7e95d35b86..299bd9dc6d 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-long.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-long.in.xml @@ -58,7 +58,7 @@ - + diff --git a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-short.in.xml b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-short.in.xml index 0cc230be60..a88d8a6487 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-short.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-dmc-short.in.xml @@ -58,7 +58,7 @@ - + diff --git a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-long.in.xml b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-long.in.xml index 4be15f911f..c2ee05e1f4 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-long.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-long.in.xml @@ -58,7 +58,7 @@ - + diff --git a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-short.in.xml b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-short.in.xml index 5c7378acf1..42f231e67e 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-short.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/Mo-vmc-short.in.xml @@ -58,7 +58,7 @@ - + diff --git a/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc-dmc.in.xml b/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc-dmc.in.xml index 8390de48e8..d698f8014e 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc-dmc.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc-dmc.in.xml @@ -58,7 +58,7 @@ - + diff --git a/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc.in.xml b/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc.in.xml index 37afa759ed..69276847c0 100644 --- a/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc.in.xml +++ b/tests/solids/bccMo_2x1x1_SOREP/det_Mo-vmc.in.xml @@ -58,7 +58,7 @@ - +