41 const std::string& check_sponame,
43 int check_basisset_size,
44 int test_nlpp_algorithm_batched,
55 ions_.setName(
"ion0");
58 ions_.R[0] = {0.0, 0.0, 0.0};
59 ions_.R[1] = {0.0, 0.0, 3.0139239693};
61 int LiIdx =
ispecies.addSpecies(
"Li");
67 elec_.
R[0] = {0.5, 0.5, 0.5};
68 elec_.
R[1] = {0.1, 0.1, 1.1};
69 elec_.
R[2] = {-0.5, -0.5, -0.5};
70 elec_.
R[3] = {-0.1, -0.1, 1.5};
76 tspecies(massIdx, upIdx) = 1.0;
77 tspecies(massIdx, downIdx) = 1.0;
89 auto twf_ptr = wf_factory.buildTWF(ein_xml, runtime_options);
91 auto& spo =
dynamic_cast<const LCAOrbitalSet&
>(twf_ptr->getSPOSet(check_sponame));
92 CHECK(spo.getOrbitalSetSize() == check_spo_size);
93 CHECK(spo.getBasisSetSize() == check_basisset_size);
99 auto msd_refvec =
twf.findMSD();
100 CHECK(msd_refvec.size() == 1);
103 twf.setMassTerm(elec_);
104 twf.evaluateLog(elec_);
106 app_log() <<
"twf.evaluateLog logpsi " << std::setprecision(16) <<
twf.getLogPsi() <<
" " <<
twf.getPhase()
108 CHECK(std::complex<double>(
twf.getLogPsi(),
twf.getPhase()) ==
109 LogComplexApprox(std::complex<double>(-7.646027846242066, 3.141592653589793)));
110 CHECK(elec_.
G[0][0] == ValueApprox(-2.181896934));
111 CHECK(elec_.
G[1][1] == ValueApprox(0.120821033));
112 CHECK(elec_.
G[2][2] == ValueApprox(1.2765987657));
113 CHECK(elec_.
L[0] == ValueApprox(-15.460736911));
114 CHECK(elec_.
L[3] == ValueApprox(-0.328013327566));
117 msd.calcIndividualDetRatios(individual_det_ratios);
118 CHECK(individual_det_ratios[0] == ValueApprox(-1.4357837882));
119 CHECK(individual_det_ratios[3] == ValueApprox(-0.013650987));
121 twf.prepareGroup(elec_, 0);
122 auto grad_old =
twf.evalGrad(elec_, 1);
123 app_log() <<
"twf.evalGrad grad_old " << std::setprecision(16) << grad_old << std::endl;
124 CHECK(grad_old[0] == ValueApprox(0.1204183219));
125 CHECK(grad_old[1] == ValueApprox(0.120821033));
126 CHECK(grad_old[2] == ValueApprox(2.05904174));
132 auto ratio =
twf.calcRatioGrad(elec_, 1, grad_new);
133 app_log() <<
"twf.calcRatioGrad ratio " << ratio <<
" grad_new " << grad_new << std::endl;
134 CHECK(ratio == ValueApprox(1.374307585));
135 CHECK(grad_new[0] == ValueApprox(0.05732804333));
136 CHECK(grad_new[1] == ValueApprox(0.05747775029));
137 CHECK(grad_new[2] == ValueApprox(1.126889742));
139 ratio =
twf.calcRatio(elec_, 1);
140 app_log() <<
"twf.calcRatio ratio " << ratio << std::endl;
141 CHECK(ratio == ValueApprox(1.374307585));
145 twf.checkInVariables(active);
153 twf.evaluateDerivatives(elec_, active, dlogpsi, dhpsioverpsi);
156 CHECK(dlogpsi[0] == ValueApprox(0.006449058893092842));
157 CHECK(dlogpsi[1] == ValueApprox(-0.01365690177395768));
158 CHECK(dlogpsi[nparam - 1] == ValueApprox(0.1641910574099575));
160 CHECK(dhpsioverpsi[0] == ValueApprox(0.2207480131794138));
161 CHECK(dhpsioverpsi[1] == ValueApprox(0.009316665149067847));
162 CHECK(dhpsioverpsi[nparam - 1] == ValueApprox(0.982665984797896));
164 if (test_nlpp_algorithm_batched)
184 std::vector<PosType> newpos2(2);
185 std::vector<ValueType> ratios2(2);
186 newpos2[0] = newpos - elec_.
R[1];
187 newpos2[1] =
PosType(0.2, 0.5, 0.3) - elec_.
R[1];
189 twf.evaluateRatios(VP, ratios2);
194 std::fill(ratios2.begin(), ratios2.end(), 0);
196 twf.evaluateDerivRatios(VP, active, ratios2, dratio);
210 twf.acceptMove(elec_, 1);
214 CHECK(
twf.getLogPsi() == Approx(-7.8033473273));
216 twf.evaluateLog(elec_);
218 app_log() <<
"twf.evaluateLog logpsi " << std::setprecision(16) <<
twf.getLogPsi() <<
" " <<
twf.getPhase()
220 CHECK(std::complex<double>(
twf.getLogPsi(),
twf.getPhase()) ==
222 CHECK(elec_.
G[0][0] == ValueApprox(1.63020975849953));
223 CHECK(elec_.
G[1][1] == ValueApprox(-1.795375999646262));
224 CHECK(elec_.
G[2][2] == ValueApprox(1.215768958589418));
225 CHECK(elec_.
L[0] == ValueApprox(-21.84021387509693));
226 CHECK(elec_.
L[3] == ValueApprox(-1.332448295858972));
230 if (test_batched_api)
235 std::unique_ptr<TrialWaveFunction> twf_clone(
twf.makeClone(elec_clone));
237 std::vector<PosType> displ(2);
238 displ[0] = {0.1, 0.2, 0.3};
239 displ[1] = {-0.2, -0.3, 0.0};
246 twf.createResource(twf_res);
257 app_log() <<
"before YYY [0] getLogPsi getPhase " << std::setprecision(16) << wf_ref_list[0].getLogPsi() <<
" " 258 << wf_ref_list[0].getPhase() << std::endl;
259 app_log() <<
"before YYY [1] getLogPsi getPhase " << std::setprecision(16) << wf_ref_list[1].getLogPsi() <<
" " 260 << wf_ref_list[1].getPhase() << std::endl;
261 CHECK(std::complex<RealType>(wf_ref_list[0].getLogPsi(), wf_ref_list[0].getPhase()) ==
263 CHECK(std::complex<RealType>(wf_ref_list[1].getLogPsi(), wf_ref_list[1].getPhase()) ==
270 const int moved_elec_id = 1;
281 std::vector<PsiValue> ratios(2);
301 std::vector<bool> isAccepted{
false,
true};
305 CHECK(wf_ref_list[0].getLogPsi() == Approx(-7.803347327300152));
306 CHECK(wf_ref_list[1].getLogPsi() == Approx(-7.321765331299484));
310 const int moved_elec_id_next = 2;
340 TEST_CASE(
"LiH multi Slater dets table_method",
"[wavefunction]")
342 app_log() <<
"-----------------------------------------------------------------" << std::endl;
343 app_log() <<
"LiH_msd using the table method no precomputation" << std::endl;
344 app_log() <<
"-----------------------------------------------------------------" << std::endl;
345 const char* spo_xml_string1 = R
"(<wavefunction name="psi0" target="e"> 346 <sposet_collection type="MolecularOrbital" name="LCAOBSet" source="ion0" cuspCorrection="no" href="LiH.orbs.h5"> 347 <basisset name="LCAOBSet" key="GTO" transform="yes"> 348 <grid type="log" ri="1.e-6" rf="1.e2" npts="1001"/> 350 <sposet basisset="LCAOBSet" name="spo-up" size="85"> 351 <occupation mode="ground"/> 352 <coefficient size="85" spindataset="0"/> 354 <sposet basisset="LCAOBSet" name="spo-dn" size="85"> 355 <occupation mode="ground"/> 356 <coefficient size="85" spindataset="0"/> 360 <multideterminant optimize="yes" spo_up="spo-up" spo_dn="spo-dn" algorithm="table_method"> 361 <detlist size="1487" type="DETS" cutoff="1e-20" href="LiH.orbs.h5"/> 366 test_LiH_msd(spo_xml_string1, "spo-up", 85, 105,
true,
true);
369 TEST_CASE(
"LiH multi Slater dets precomputed_table_method",
"[wavefunction]")
371 app_log() <<
"-----------------------------------------------------------------" << std::endl;
372 app_log() <<
"LiH_msd using the table method with new optimization" << std::endl;
373 app_log() <<
"-----------------------------------------------------------------" << std::endl;
374 const char* spo_xml_string1_new = R
"(<wavefunction name="psi0" target="e"> 375 <sposet_collection type="MolecularOrbital" name="LCAOBSet" source="ion0" cuspCorrection="no" href="LiH.orbs.h5"> 376 <basisset name="LCAOBSet" key="GTO" transform="yes"> 377 <grid type="log" ri="1.e-6" rf="1.e2" npts="1001"/> 379 <sposet basisset="LCAOBSet" name="spo-up" size="85"> 380 <occupation mode="ground"/> 381 <coefficient size="85" spindataset="0"/> 383 <sposet basisset="LCAOBSet" name="spo-dn" size="85"> 384 <occupation mode="ground"/> 385 <coefficient size="85" spindataset="0"/> 389 <multideterminant optimize="yes" spo_up="spo-up" spo_dn="spo-dn" algorithm="precomputed_table_method"> 390 <detlist size="1487" type="DETS" cutoff="1e-20" href="LiH.orbs.h5"/> 395 test_LiH_msd(spo_xml_string1_new, "spo-up", 85, 105,
true,
true);
399 void test_Bi_msd(
const std::string& spo_xml_string,
400 const std::string& check_sponame,
402 int check_basisset_size)
406 ParticleSetPool ptcl = ParticleSetPool(c);
407 auto ions_uptr = std::make_unique<ParticleSet>(ptcl.getSimulationCell());
408 auto elec_uptr = std::make_unique<ParticleSet>(ptcl.getSimulationCell());
409 ParticleSet& ions_(*ions_uptr);
410 ParticleSet& elec_(*elec_uptr);
412 ions_.setName(
"ion0");
413 ptcl.addParticleSet(std::move(ions_uptr));
414 ions_.create(std::vector<int>{1});
415 ions_.R[0] = {0.0, 0.0, 0.0};
416 SpeciesSet&
ispecies = ions_.getSpeciesSet();
417 int LiIdx =
ispecies.addSpecies(
"Bi");
419 elec_.setName(
"elec");
420 ptcl.addParticleSet(std::move(elec_uptr));
421 elec_.create(std::vector<int>{5});
422 elec_.R[0] = {1.592992772, -2.241313928, -0.7315193518};
423 elec_.R[1] = {0.07621077199, 0.8497557547, 1.604678718};
424 elec_.R[2] = {2.077473445, 0.680621113, -0.5251243321};
425 elec_.R[3] = {-1.488849594, 0.7470552741, 0.6659555498};
426 elec_.R[4] = {-1.448485879, 0.7337274141, 0.02687190951};
428 elec_.spins[0] = 4.882003828;
429 elec_.spins[1] = 0.06469299507;
430 elec_.spins[2] = 5.392168887;
431 elec_.spins[3] = 5.33941214;
432 elec_.spins[4] = 3.127416326;
433 elec_.setSpinor(
true);
435 SpeciesSet& tspecies = elec_.getSpeciesSet();
436 int upIdx = tspecies.addSpecies(
"u");
437 int massIdx = tspecies.addAttribute(
"mass");
438 tspecies(massIdx, upIdx) = 1.0;
448 RuntimeOptions runtime_options;
449 WaveFunctionFactory wf_factory(elec_, ptcl.getPool(), c);
450 auto twf_ptr = wf_factory.buildTWF(ein_xml, runtime_options);
452 auto& spo = twf_ptr->getSPOSet(check_sponame);
453 CHECK(spo.getOrbitalSetSize() == check_spo_size);
459 twf.setMassTerm(elec_);
460 twf.evaluateLog(elec_);
464 app_log() <<
"twf.evaluateLog logpsi " << std::setprecision(16) <<
twf.getLogPsi() <<
" " <<
twf.getPhase()
466 CHECK(std::complex<double>(
twf.getLogPsi(),
twf.getPhase()) ==
469 twf.prepareGroup(elec_, 0);
471 auto grad_old =
twf.evalGradWithSpin(elec_, 1, spingrad_old);
472 app_log() <<
"twf.evalGrad grad_old " << std::setprecision(16) << grad_old << std::endl;
473 CHECK(grad_old[0] == ComplexApprox(
ValueType(0.060932, -0.285244)).epsilon(1
e-4));
474 CHECK(grad_old[1] == ComplexApprox(
ValueType(-0.401769, 0.180544)).epsilon(1
e-4));
475 CHECK(grad_old[2] == ComplexApprox(
ValueType(0.174010, 0.140642)).epsilon(1
e-4));
476 CHECK(spingrad_old == ComplexApprox(
ValueType(0.6766137, -0.8366186)).epsilon(1
e-4));
478 PosType delta(0.464586, 0.75017, 1.184383);
480 elec_.makeMoveWithSpin(0, delta, ds);
484 auto ratio =
twf.calcRatioGradWithSpin(elec_, 0, grad_new, spingrad_new);
485 app_log() <<
"twf.calcRatioGrad ratio " << ratio <<
" grad_new " << grad_new << std::endl;
487 CHECK(grad_new[0] == ComplexApprox(
ValueType(-0.631184, -0.136918)).epsilon(1
e-4));
488 CHECK(grad_new[1] == ComplexApprox(
ValueType(0.074214, -0.080204)).epsilon(1
e-4));
489 CHECK(grad_new[2] == ComplexApprox(
ValueType(-0.073180, -0.133539)).epsilon(1
e-4));
490 CHECK(spingrad_new == ComplexApprox(
ValueType(-0.135438, -0.6085006)).epsilon(1
e-4));
492 ratio =
twf.calcRatio(elec_, 0);
493 app_log() <<
"twf.calcRatio ratio " << ratio << std::endl;
496 elec_.accept_rejectMove(0,
false);
500 ResourceCollection pset_res(
"test_pset_res");
501 elec_.createResource(pset_res);
502 ParticleSet elec_clone(elec_);
503 RefVectorWithLeader<ParticleSet> p_list(elec_, {elec_, elec_clone});
504 ResourceCollectionTeamLock<ParticleSet> mw_pset_lock(pset_res, p_list);
506 ResourceCollection twf_res(
"test_twf_res");
507 twf.createResource(twf_res);
508 auto twf_clone =
twf.makeClone(elec_clone);
509 RefVectorWithLeader<TrialWaveFunction> twf_list(
twf, {
twf, *twf_clone});
510 ResourceCollectionTeamLock<TrialWaveFunction> mw_twf_lock(twf_res, twf_list);
517 CHECK(std::complex<double>(twf_list[iw].getLogPsi(), twf_list[iw].getPhase()) ==
523 int moved_elec_id = 1;
524 TWFGrads<CoordsType::POS_SPIN> grads_old(
num_walkers);
528 CHECK(grads_old.grads_positions[iw][0] == ComplexApprox(
ValueType(0.060932, -0.285244)).epsilon(1
e-4));
529 CHECK(grads_old.grads_positions[iw][1] == ComplexApprox(
ValueType(-0.401769, 0.180544)).epsilon(1
e-4));
530 CHECK(grads_old.grads_positions[iw][2] == ComplexApprox(
ValueType(0.174010, 0.140642)).epsilon(1
e-4));
531 CHECK(grads_old.grads_spins[iw] == ComplexApprox(
ValueType(0.6766137, -0.8366186)).epsilon(1
e-4));
535 MCCoords<CoordsType::POS_SPIN> displs(
num_walkers);
536 displs.positions = {delta, delta};
537 displs.spins = {ds, ds};
544 std::fill(ratios.begin(), ratios.end(),
ValueType(0));
546 TWFGrads<CoordsType::POS_SPIN> grads_new(
num_walkers);
551 CHECK(grads_new.grads_positions[iw][0] == ComplexApprox(
ValueType(-0.631184, -0.136918)).epsilon(1
e-4));
552 CHECK(grads_new.grads_positions[iw][1] == ComplexApprox(
ValueType(0.074214, -0.080204)).epsilon(1
e-4));
553 CHECK(grads_new.grads_positions[iw][2] == ComplexApprox(
ValueType(-0.073180, -0.133539)).epsilon(1
e-4));
554 CHECK(grads_new.grads_spins[iw] == ComplexApprox(
ValueType(-0.135438, -0.6085006)).epsilon(1
e-4));
558 TEST_CASE(
"Bi-spinor multi Slater dets",
"[wavefunction]")
560 app_log() <<
"-----------------------------------------------------------------" << std::endl;
561 app_log() <<
"Bi using the table method no precomputation" << std::endl;
562 app_log() <<
"-----------------------------------------------------------------" << std::endl;
563 const char* spo_xml_string1 = R
"(<wavefunction name="psi0" target="e"> 564 <sposet_builder name="spinorbuilder" type="molecularorbital" source="ion0" transform="yes" href="Bi.orbs.h5" precision="double"> 565 <sposet name="myspo" size="16"> 566 <occupation mode="ground"/> 570 <multideterminant optimize="no" spo_0="myspo" algorithm="table_method"> 571 <detlist size="4" type="DETS" nc0="0" ne0="5" nstates="16" cutoff="1e-20"> 572 <ci coeff=" 0.8586" occ0="1110110000000000"/> 573 <ci coeff="-0.2040" occ0="1101110000000000"/> 574 <ci coeff=" 0.4081" occ0="1110101000000000"/> 575 <ci coeff="-0.2340" occ0="1101101000000000"/> 580 test_Bi_msd(spo_xml_string1, "myspo", 16, 123);
582 app_log() <<
"-----------------------------------------------------------------" << std::endl;
583 app_log() <<
"Bi using the table method with new optimization" << std::endl;
584 app_log() <<
"-----------------------------------------------------------------" << std::endl;
585 const char* spo_xml_string1_new = R
"(<wavefunction name="psi0" target="e"> 586 <sposet_builder name="spinorbuilder" type="molecularorbital" source="ion0" transform="yes" href="Bi.orbs.h5" precision="double"> 587 <sposet name="myspo" size="16"> 588 <occupation mode="ground"/> 592 <multideterminant optimize="no" spo_0="myspo" algorithm="precomputed_table_method"> 593 <detlist size="4" type="DETS" nc0="0" ne0="5" nstates="16" cutoff="1e-20"> 594 <ci coeff=" 0.8586" occ0="1110110000000000"/> 595 <ci coeff="-0.2040" occ0="1101110000000000"/> 596 <ci coeff=" 0.4081" occ0="1110101000000000"/> 597 <ci coeff="-0.2340" occ0="1101101000000000"/> 602 test_Bi_msd(spo_xml_string1_new, "myspo", 16, 123);
604 app_log() <<
"-----------------------------------------------------------------" << std::endl;
605 app_log() <<
"Bi using the table method with new optimization, read from hdf5" << std::endl;
606 app_log() <<
"-----------------------------------------------------------------" << std::endl;
607 const char* spo_xml_string2_new = R
"(<wavefunction name="psi0" target="e"> 608 <sposet_builder name="spinorbuilder" type="molecularorbital" source="ion0" transform="yes" href="Bi.orbs.h5" precision="double"> 609 <sposet name="myspo" size="16"> 610 <occupation mode="ground"/> 614 <multideterminant optimize="no" spo_0="myspo" algorithm="precomputed_table_method"> 615 <detlist size="4" type="DETS" nc0="0" ne0="5" nstates="16" cutoff="1e-20" href="Bi.orbs.h5"/> 619 test_Bi_msd(spo_xml_string2_new, "myspo", 16, 123);
void setName(const std::string &aname)
class that handles xmlDoc
static void mw_makeMove(const RefVectorWithLeader< ParticleSet > &p_list, int iat, const MCCoords< CT > &displs)
batched version of makeMove
WaveFunctionComponent::PsiValue PsiValue
int addSpecies(const std::string &aname)
When a name species does not exist, add a new species.
helper functions for EinsplineSetBuilder
QTBase::GradType GradType
QTBase::RealType RealType
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
static void mw_prepareGroup(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int ig)
batched version of prepareGroup
TEST_CASE("complex_helper", "[type_traits]")
void test_LiH_msd(const std::string &spo_xml_string, const std::string &check_sponame, int check_spo_size, int check_basisset_size, int test_nlpp_algorithm_batched, int test_batched_api)
static void mw_calcRatioGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, TWFGrads< CT > &grads)
batched version of ratioGrad
A ParticleSet that handles virtual moves of a selected particle of a given physical ParticleSet Virtu...
void makeMoves(const ParticleSet &refp, int jel, const std::vector< PosType > &deltaV, bool sphere=false, int iat=-1)
move virtual particles to new postions and update distance tables
void addParticleSet(std::unique_ptr< ParticleSet > &&p)
add a ParticleSet* to the pool with its ownership transferred ParticleSet built outside the ParticleS...
LatticeGaussianProduct::GradType GradType
void createResource(ResourceCollection &collection) const
initialize a shared resource and hand it to a collection
QTBase::ComplexType ComplexType
void update(bool skipSK=false)
update the internal data
Communicate * Controller
Global Communicator for a process.
ParticleLaplacian L
laplacians of the particles
static void mw_accept_rejectMove(const RefVectorWithLeader< ParticleSet > &p_list, Index_t iat, const std::vector< bool > &isAccepted, bool forward_mode=true)
batched version of acceptMove and rejectMove fused, templated on CoordsType
static void mw_accept_rejectMove(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, const std::vector< bool > &isAccepted, bool safe_to_delay=false)
int addAttribute(const std::string &aname)
for a new attribute, allocate the data, !More often used to get the index of a species ...
Catch::Detail::LogComplexApprox LogComplexApprox
std::complex< QTFull::RealType > LogValue
QMCTraits::PosType PosType
Wrapping information on parallelism.
Specialized paritlce class for atomistic simulations.
std::vector< QMCTraits::GradType > grads_positions
QTBase::ValueType ValueType
REQUIRE(std::filesystem::exists(filename))
void rejectMove(Index_t iat)
reject a proposed move in regular mode
Manage a collection of ParticleSet objects.
ParticleGradient G
gradients of the particles
Factory class to build a many-body wavefunction.
static void mw_calcRatio(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, std::vector< PsiValue > &ratios, ComputeType ct=ComputeType::ALL)
batched version of calcRatio
class to handle a set of variables that can be modified during optimizations
int size_of_active() const
return the number of active variables
QTFull::ValueType PsiValue
static void mw_evalGrad(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list, int iat, TWFGrads< CT > &grads)
batched version of evalGrad
SpeciesSet & getSpeciesSet()
retrun the SpeciesSet of this particle set
void create(const std::vector< int > &agroup)
create grouped particles
QMCTraits::RealType RealType
void makeMove(Index_t iat, const SingleParticlePos &displ, bool maybe_accept=true)
move the iat-th particle to active_pos_
bool parseFromString(const std::string_view data)
static void mw_update(const RefVectorWithLeader< ParticleSet > &p_list, bool skipSK=false)
batched version of update
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))
TinyVector< double, 3 > PosType
handles acquire/release resource by the consumer (RefVectorWithLeader type).
LatticeGaussianProduct::ValueType ValueType
Declaration of a WaveFunctionFactory.
class to handle linear combinations of basis orbitals used to evaluate the Dirac determinants.
std::complex< double > LogValue
Custom container for set of attributes for a set of species.
const PoolType & getPool() const
get the Pool object
void acceptMove(Index_t iat)
accept the move and update the particle attribute by the proposed move in regular mode ...
const auto & getSimulationCell() const
get simulation cell
An AntiSymmetric WaveFunctionComponent composed of a linear combination of SlaterDeterminants.
static void mw_evaluateLog(const RefVectorWithLeader< TrialWaveFunction > &wf_list, const RefVectorWithLeader< ParticleSet > &p_list)
batched version of evaluateLog.
Declaration of ParticleSetPool.