32 TEST_CASE(
"Spline applyRotation zero rotation",
"[wavefunction]")
39 lattice.R = {3.37316115, 3.37316115, 0.0, 0.0, 3.37316115, 3.37316115, 3.37316115, 0.0, 3.37316115};
51 ions_.R[0] = {0.0, 0.0, 0.0};
52 ions_.R[1] = {1.68658058, 1.68658058, 1.68658058};
57 elec_.
R[0] = {0.0, 0.0, 0.0};
58 elec_.
R[1] = {0.0, 1.0, 0.0};
63 tspecies(chargeIdx, upIdx) = -1;
67 const char* particles = R
"(<tmp> 68 <determinantset type="einspline" href="diamondC_1x1x1.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion" gpu="no" precision="double" size="7"/> 75 xmlNodePtr ein1 = xmlFirstElementChild(root);
80 const auto orbitalsetsize = spo->getOrbitalSetSize();
85 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_bare, dpsiM_bare, d2psiM_bare);
104 for (
int i = 0; i < orbitalsetsize; i++)
107 spo->storeParamsBeforeRotation();
108 spo->applyRotation(rot_mat,
false);
114 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_rot, dpsiM_rot, d2psiM_rot);
119 for (
int i = 0; i < elec_.
R.
size(); i++)
120 for (
int j = 0; j < orbitalsetsize; j++)
122 psiM_rot_manual[i][j] = 0.;
123 for (
int k = 0; k < orbitalsetsize; k++)
124 psiM_rot_manual[i][j] += psiM_bare[i][k] * rot_mat[k][j];
126 auto check =
checkMatrix(psiM_rot_manual, psiM_rot,
true);
127 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
131 for (
int i = 0; i < elec_.
R.
size(); i++)
132 for (
int j = 0; j < orbitalsetsize; j++)
134 dpsiM_rot_manual[i][j][0] = 0.;
135 dpsiM_rot_manual[i][j][1] = 0.;
136 dpsiM_rot_manual[i][j][2] = 0.;
137 for (
int k = 0; k < orbitalsetsize; k++)
138 for (
int l = 0; l < 3; l++)
139 dpsiM_rot_manual[i][j][l] += dpsiM_bare[i][k][l] * rot_mat[k][j];
144 for (
int i = 0; i < elec_.
R.
size(); i++)
145 for (
int j = 0; j < orbitalsetsize; j++)
146 for (
int k = 0; k < 3; k++)
149 CHECK(res == Approx(0.).epsilon(2
e-4));
153 for (
int i = 0; i < elec_.
R.
size(); i++)
154 for (
int j = 0; j < orbitalsetsize; j++)
156 d2psiM_rot_manual[i][j] = 0.;
157 for (
int k = 0; k < orbitalsetsize; k++)
158 d2psiM_rot_manual[i][j] += d2psiM_bare[i][k] * rot_mat[k][j];
161 check =
checkMatrix(d2psiM_rot_manual, d2psiM_rot,
true, 2
e-4);
162 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
167 TEST_CASE(
"Spline applyRotation one rotation",
"[wavefunction]")
174 lattice.R = {3.37316115, 3.37316115, 0.0, 0.0, 3.37316115, 3.37316115, 3.37316115, 0.0, 3.37316115};
183 ions_.setName(
"ion");
186 ions_.R[0] = {0.0, 0.0, 0.0};
187 ions_.R[1] = {1.68658058, 1.68658058, 1.68658058};
192 elec_.
R[0] = {0.0, 0.0, 0.0};
193 elec_.
R[1] = {0.0, 1.0, 0.0};
198 tspecies(chargeIdx, upIdx) = -1;
202 const char* particles = R
"(<tmp> 203 <determinantset type="einspline" href="diamondC_1x1x1.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion" gpu="no" precision="double" size="7"/> 210 xmlNodePtr ein1 = xmlFirstElementChild(root);
215 const auto orbitalsetsize = spo->getOrbitalSetSize();
220 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_bare, dpsiM_bare, d2psiM_bare);
266 rot_mat[0][0] = 8.06061880e-01;
267 rot_mat[0][1] = 3.54921598e-01;
268 rot_mat[0][2] = -3.40706426e-01;
269 rot_mat[0][3] = -5.90163619e-02;
270 rot_mat[0][4] = 1.11650454e-01;
271 rot_mat[0][5] = -1.99768450e-01;
272 rot_mat[0][6] = -2.28818375e-01;
273 rot_mat[1][0] = 1.58069821e-02;
274 rot_mat[1][1] = 2.10363421e-01;
275 rot_mat[1][2] = 2.74922448e-01;
276 rot_mat[1][3] = 2.12581764e-01;
277 rot_mat[1][4] = 2.64602356e-01;
278 rot_mat[1][5] = -6.34971914e-01;
279 rot_mat[1][6] = 6.01265560e-01;
280 rot_mat[2][0] = 4.43696646e-01;
281 rot_mat[2][1] = -6.06912539e-02;
282 rot_mat[2][2] = 2.61413193e-01;
283 rot_mat[2][3] = -1.98368802e-01;
284 rot_mat[2][4] = -6.43234645e-02;
285 rot_mat[2][5] = 5.75880430e-01;
286 rot_mat[2][6] = 5.96646495e-01;
287 rot_mat[3][0] = 1.45865363e-01;
288 rot_mat[3][1] = -5.16577220e-01;
289 rot_mat[3][2] = -2.09866367e-01;
290 rot_mat[3][3] = 5.55699395e-01;
291 rot_mat[3][4] = 5.73062990e-01;
292 rot_mat[3][5] = 1.74778224e-01;
293 rot_mat[3][6] = 8.77170506e-03;
294 rot_mat[4][0] = -3.24609748e-01;
295 rot_mat[4][1] = 2.89664179e-01;
296 rot_mat[4][2] = -7.50613752e-01;
297 rot_mat[4][3] = -1.63060005e-01;
298 rot_mat[4][4] = 1.70803377e-01;
299 rot_mat[4][5] = 1.63784167e-01;
300 rot_mat[4][6] = 4.05850414e-01;
301 rot_mat[5][0] = 1.32570771e-03;
302 rot_mat[5][1] = 3.80299846e-01;
303 rot_mat[5][2] = -5.08439810e-02;
304 rot_mat[5][3] = 7.59141791e-01;
305 rot_mat[5][4] = -4.77844928e-01;
306 rot_mat[5][5] = 2.12149087e-01;
307 rot_mat[5][6] = 5.60882349e-02;
308 rot_mat[6][0] = 1.62781208e-01;
309 rot_mat[6][1] = -5.75073150e-01;
310 rot_mat[6][2] = -3.60485665e-01;
311 rot_mat[6][3] = -1.70070331e-02;
312 rot_mat[6][4] = -5.72251258e-01;
313 rot_mat[6][5] = -3.50549638e-01;
314 rot_mat[6][6] = 2.49394158e-01;
315 spo->storeParamsBeforeRotation();
316 spo->applyRotation(rot_mat,
false);
322 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_rot, dpsiM_rot, d2psiM_rot);
327 for (
int i = 0; i < elec_.
R.
size(); i++)
328 for (
int j = 0; j < orbitalsetsize; j++)
330 psiM_rot_manual[i][j] = 0.;
331 for (
int k = 0; k < orbitalsetsize; k++)
332 psiM_rot_manual[i][j] += psiM_bare[i][k] * rot_mat[k][j];
334 auto check =
checkMatrix(psiM_rot_manual, psiM_rot,
true);
335 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
339 for (
int i = 0; i < elec_.
R.
size(); i++)
340 for (
int j = 0; j < orbitalsetsize; j++)
342 dpsiM_rot_manual[i][j][0] = 0.;
343 dpsiM_rot_manual[i][j][1] = 0.;
344 dpsiM_rot_manual[i][j][2] = 0.;
345 for (
int k = 0; k < orbitalsetsize; k++)
346 for (
int l = 0; l < 3; l++)
347 dpsiM_rot_manual[i][j][l] += dpsiM_bare[i][k][l] * rot_mat[k][j];
352 for (
int i = 0; i < elec_.
R.
size(); i++)
353 for (
int j = 0; j < orbitalsetsize; j++)
354 for (
int k = 0; k < 3; k++)
357 CHECK(res == Approx(0.).epsilon(2
e-4));
361 for (
int i = 0; i < elec_.
R.
size(); i++)
362 for (
int j = 0; j < orbitalsetsize; j++)
364 d2psiM_rot_manual[i][j] = 0.;
365 for (
int k = 0; k < orbitalsetsize; k++)
366 d2psiM_rot_manual[i][j] += d2psiM_bare[i][k] * rot_mat[k][j];
369 check =
checkMatrix(d2psiM_rot_manual, d2psiM_rot,
true, 2
e-4);
370 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
375 TEST_CASE(
"Spline applyRotation two rotations",
"[wavefunction]")
382 lattice.R = {3.37316115, 3.37316115, 0.0, 0.0, 3.37316115, 3.37316115, 3.37316115, 0.0, 3.37316115};
391 ions_.setName(
"ion");
394 ions_.R[0] = {0.0, 0.0, 0.0};
395 ions_.R[1] = {1.68658058, 1.68658058, 1.68658058};
400 elec_.
R[0] = {0.0, 0.0, 0.0};
401 elec_.
R[1] = {0.0, 1.0, 0.0};
406 tspecies(chargeIdx, upIdx) = -1;
410 const char* particles = R
"(<tmp> 411 <determinantset type="einspline" href="diamondC_1x1x1.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion" gpu="no" precision="double" size="7"/> 418 xmlNodePtr ein1 = xmlFirstElementChild(root);
423 const auto orbitalsetsize = spo->getOrbitalSetSize();
428 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_bare, dpsiM_bare, d2psiM_bare);
474 rot_mat1[0][0] = 8.06061880e-01;
475 rot_mat1[0][1] = 3.54921598e-01;
476 rot_mat1[0][2] = -3.40706426e-01;
477 rot_mat1[0][3] = -5.90163619e-02;
478 rot_mat1[0][4] = 1.11650454e-01;
479 rot_mat1[0][5] = -1.99768450e-01;
480 rot_mat1[0][6] = -2.28818375e-01;
481 rot_mat1[1][0] = 1.58069821e-02;
482 rot_mat1[1][1] = 2.10363421e-01;
483 rot_mat1[1][2] = 2.74922448e-01;
484 rot_mat1[1][3] = 2.12581764e-01;
485 rot_mat1[1][4] = 2.64602356e-01;
486 rot_mat1[1][5] = -6.34971914e-01;
487 rot_mat1[1][6] = 6.01265560e-01;
488 rot_mat1[2][0] = 4.43696646e-01;
489 rot_mat1[2][1] = -6.06912539e-02;
490 rot_mat1[2][2] = 2.61413193e-01;
491 rot_mat1[2][3] = -1.98368802e-01;
492 rot_mat1[2][4] = -6.43234645e-02;
493 rot_mat1[2][5] = 5.75880430e-01;
494 rot_mat1[2][6] = 5.96646495e-01;
495 rot_mat1[3][0] = 1.45865363e-01;
496 rot_mat1[3][1] = -5.16577220e-01;
497 rot_mat1[3][2] = -2.09866367e-01;
498 rot_mat1[3][3] = 5.55699395e-01;
499 rot_mat1[3][4] = 5.73062990e-01;
500 rot_mat1[3][5] = 1.74778224e-01;
501 rot_mat1[3][6] = 8.77170506e-03;
502 rot_mat1[4][0] = -3.24609748e-01;
503 rot_mat1[4][1] = 2.89664179e-01;
504 rot_mat1[4][2] = -7.50613752e-01;
505 rot_mat1[4][3] = -1.63060005e-01;
506 rot_mat1[4][4] = 1.70803377e-01;
507 rot_mat1[4][5] = 1.63784167e-01;
508 rot_mat1[4][6] = 4.05850414e-01;
509 rot_mat1[5][0] = 1.32570771e-03;
510 rot_mat1[5][1] = 3.80299846e-01;
511 rot_mat1[5][2] = -5.08439810e-02;
512 rot_mat1[5][3] = 7.59141791e-01;
513 rot_mat1[5][4] = -4.77844928e-01;
514 rot_mat1[5][5] = 2.12149087e-01;
515 rot_mat1[5][6] = 5.60882349e-02;
516 rot_mat1[6][0] = 1.62781208e-01;
517 rot_mat1[6][1] = -5.75073150e-01;
518 rot_mat1[6][2] = -3.60485665e-01;
519 rot_mat1[6][3] = -1.70070331e-02;
520 rot_mat1[6][4] = -5.72251258e-01;
521 rot_mat1[6][5] = -3.50549638e-01;
522 rot_mat1[6][6] = 2.49394158e-01;
523 spo->storeParamsBeforeRotation();
524 spo->applyRotation(rot_mat1,
false);
559 rot_mat2[0][0] = -2.98194829e-02;
560 rot_mat2[0][1] = -6.14346084e-01;
561 rot_mat2[0][2] = -6.43923495e-01;
562 rot_mat2[0][3] = -1.18552217e-01;
563 rot_mat2[0][4] = 3.77244445e-01;
564 rot_mat2[0][5] = -2.06047353e-01;
565 rot_mat2[0][6] = 9.07122365e-02;
566 rot_mat2[1][0] = -3.48818370e-01;
567 rot_mat2[1][1] = 4.38506143e-01;
568 rot_mat2[1][2] = -5.57140467e-01;
569 rot_mat2[1][3] = -3.70956624e-01;
570 rot_mat2[1][4] = -2.23467853e-01;
571 rot_mat2[1][5] = 3.80270838e-01;
572 rot_mat2[1][6] = 2.08518583e-01;
573 rot_mat2[2][0] = 1.87644050e-01;
574 rot_mat2[2][1] = -1.34182635e-01;
575 rot_mat2[2][2] = 3.74618322e-01;
576 rot_mat2[2][3] = -8.74132032e-01;
577 rot_mat2[2][4] = 1.57504581e-01;
578 rot_mat2[2][5] = 4.78555353e-02;
579 rot_mat2[2][6] = 1.23455215e-01;
580 rot_mat2[3][0] = -7.68247448e-02;
581 rot_mat2[3][1] = -2.48006571e-01;
582 rot_mat2[3][2] = -7.30866440e-02;
583 rot_mat2[3][3] = -2.06817660e-01;
584 rot_mat2[3][4] = -7.99320897e-01;
585 rot_mat2[3][5] = -4.53458397e-01;
586 rot_mat2[3][6] = -1.99842648e-01;
587 rot_mat2[4][0] = 2.59360916e-02;
588 rot_mat2[4][1] = 5.64417889e-01;
589 rot_mat2[4][2] = -1.05874452e-01;
590 rot_mat2[4][3] = -1.09701962e-01;
591 rot_mat2[4][4] = 2.76429977e-01;
592 rot_mat2[4][5] = -7.59899812e-01;
593 rot_mat2[4][6] = 6.04531910e-02;
594 rot_mat2[5][0] = 3.50608068e-01;
595 rot_mat2[5][1] = 1.58922313e-01;
596 rot_mat2[5][2] = -2.49914906e-01;
597 rot_mat2[5][3] = -1.49783413e-01;
598 rot_mat2[5][4] = 1.03865829e-01;
599 rot_mat2[5][5] = 1.56180926e-01;
600 rot_mat2[5][6] = -8.55420691e-01;
601 rot_mat2[6][0] = 8.44230723e-01;
602 rot_mat2[6][1] = 8.33975900e-02;
603 rot_mat2[6][2] = -2.35816939e-01;
604 rot_mat2[6][3] = 8.35859456e-02;
605 rot_mat2[6][4] = -2.38381031e-01;
606 rot_mat2[6][5] = 5.64243083e-02;
607 rot_mat2[6][6] = 3.97132056e-01;
608 spo->storeParamsBeforeRotation();
609 spo->applyRotation(rot_mat2,
false);
613 for (
int i = 0; i < orbitalsetsize; i++)
614 for (
int j = 0; j < orbitalsetsize; j++)
616 rot_mat_tot[i][j] = 0;
617 for (
int k = 0; k < orbitalsetsize; k++)
618 rot_mat_tot[i][j] += rot_mat1[i][k] * rot_mat2[k][j];
625 spo->evaluate_notranspose(elec_, 0, elec_.
R.
size(), psiM_rot, dpsiM_rot, d2psiM_rot);
630 for (
int i = 0; i < elec_.
R.
size(); i++)
631 for (
int j = 0; j < orbitalsetsize; j++)
633 psiM_rot_manual[i][j] = 0.;
634 for (
int k = 0; k < orbitalsetsize; k++)
635 psiM_rot_manual[i][j] += psiM_bare[i][k] * rot_mat_tot[k][j];
637 auto check =
checkMatrix(psiM_rot_manual, psiM_rot,
true);
638 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
642 for (
int i = 0; i < elec_.
R.
size(); i++)
643 for (
int j = 0; j < orbitalsetsize; j++)
645 dpsiM_rot_manual[i][j][0] = 0.;
646 dpsiM_rot_manual[i][j][1] = 0.;
647 dpsiM_rot_manual[i][j][2] = 0.;
648 for (
int k = 0; k < orbitalsetsize; k++)
649 for (
int l = 0; l < 3; l++)
650 dpsiM_rot_manual[i][j][l] += dpsiM_bare[i][k][l] * rot_mat_tot[k][j];
655 for (
int i = 0; i < elec_.
R.
size(); i++)
656 for (
int j = 0; j < orbitalsetsize; j++)
657 for (
int k = 0; k < 3; k++)
660 CHECK(res == Approx(0.).epsilon(2
e-4));
664 for (
int i = 0; i < elec_.
R.
size(); i++)
665 for (
int j = 0; j < orbitalsetsize; j++)
667 d2psiM_rot_manual[i][j] = 0.;
668 for (
int k = 0; k < orbitalsetsize; k++)
669 d2psiM_rot_manual[i][j] += d2psiM_bare[i][k] * rot_mat_tot[k][j];
671 check =
checkMatrix(d2psiM_rot_manual, d2psiM_rot,
true, 2
e-4);
672 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
678 TEST_CASE(
"Spline applyRotation complex rotation",
"[wavefunction]")
685 lattice.R = {3.37316115, 3.37316115, 0.0, 0.0, 3.37316115, 3.37316115, 3.37316115, 0.0, 3.37316115};
687 ParticleSetPool ptcl = ParticleSetPool(c);
688 ptcl.setSimulationCell(
lattice);
689 auto ions_uptr = std::make_unique<ParticleSet>(ptcl.getSimulationCell());
690 auto elec_uptr = std::make_unique<ParticleSet>(ptcl.getSimulationCell());
691 ParticleSet& ions_(*ions_uptr);
692 ParticleSet& elec_(*elec_uptr);
694 ions_.setName(
"ion");
695 ptcl.addParticleSet(std::move(ions_uptr));
697 ions_.R[0] = {0.0, 0.0, 0.0};
698 ions_.R[1] = {1.68658058, 1.68658058, 1.68658058};
700 elec_.setName(
"elec");
701 ptcl.addParticleSet(std::move(elec_uptr));
703 elec_.R[0] = {0.0, 0.0, 0.0};
704 elec_.R[1] = {0.0, 1.0, 0.0};
706 SpeciesSet& tspecies = elec_.getSpeciesSet();
707 int upIdx = tspecies.addSpecies(
"u");
708 int chargeIdx = tspecies.addAttribute(
"charge");
709 tspecies(chargeIdx, upIdx) = -1;
713 const char* particles = R
"(<tmp> 714 <determinantset type="einspline" href="diamondC_1x1x1.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion" gpu="no" precision="double" size="7"/> 721 xmlNodePtr ein1 = xmlFirstElementChild(root);
722 EinsplineSetBuilder einSet(elec_, ptcl.getPool(), c, ein1);
723 auto spo = einSet.createSPOSetFromXML(ein1);
726 const auto orbitalsetsize = spo->getOrbitalSetSize();
731 spo->evaluate_notranspose(elec_, 0, elec_.R.size(), psiM_bare, dpsiM_bare, d2psiM_bare);
758 for (
int i = 0; i < orbitalsetsize; i++)
761 spo->storeParamsBeforeRotation();
762 spo->applyRotation(rot_mat,
false);
768 spo->evaluate_notranspose(elec_, 0, elec_.R.size(), psiM_rot, dpsiM_rot, d2psiM_rot);
773 for (
int i = 0; i < elec_.R.size(); i++)
774 for (
int j = 0; j < orbitalsetsize; j++)
776 psiM_rot_manual[i][j] = 0.;
777 for (
int k = 0; k < orbitalsetsize; k++)
778 psiM_rot_manual[i][j] += psiM_bare[i][k] * rot_mat[k][j];
780 auto check =
checkMatrix(psiM_rot_manual, psiM_rot,
true);
781 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
785 for (
int i = 0; i < elec_.R.size(); i++)
786 for (
int j = 0; j < orbitalsetsize; j++)
788 dpsiM_rot_manual[i][j][0] = 0.;
789 dpsiM_rot_manual[i][j][1] = 0.;
790 dpsiM_rot_manual[i][j][2] = 0.;
791 for (
int k = 0; k < orbitalsetsize; k++)
792 for (
int l = 0; l < 3; l++)
793 dpsiM_rot_manual[i][j][l] += dpsiM_bare[i][k][l] * rot_mat[k][j];
798 for (
int i = 0; i < elec_.R.size(); i++)
799 for (
int j = 0; j < orbitalsetsize; j++)
800 for (
int k = 0; k < 3; k++)
803 CHECK(res == Approx(0.).epsilon(2
e-4));
807 for (
int i = 0; i < elec_.R.size(); i++)
808 for (
int j = 0; j < orbitalsetsize; j++)
810 d2psiM_rot_manual[i][j] = 0.;
811 for (
int k = 0; k < orbitalsetsize; k++)
812 d2psiM_rot_manual[i][j] += d2psiM_bare[i][k] * rot_mat[k][j];
814 check =
checkMatrix(d2psiM_rot_manual, d2psiM_rot,
true, 2
e-4);
815 CHECKED_ELSE(check.result) { FAIL(check.result_message); }
a class that defines a supercell in D-dimensional Euclean space.
void setName(const std::string &aname)
void setSimulationCell(const SimulationCell &simulation_cell)
set simulation cell
class that handles xmlDoc
int addSpecies(const std::string &aname)
When a name species does not exist, add a new species.
helper functions for EinsplineSetBuilder
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > ParticleLayout
TEST_CASE("complex_helper", "[type_traits]")
void addParticleSet(std::unique_ptr< ParticleSet > &&p)
add a ParticleSet* to the pool with its ownership transferred ParticleSet built outside the ParticleS...
Builder class for einspline-based SPOSet objects.
OrbitalSetTraits< ValueType >::ValueMatrix ValueMatrix
CHECKED_ELSE(check_matrix_result.result)
Derives EinsplineSetBuilder.
Communicate * Controller
Global Communicator for a process.
int addAttribute(const std::string &aname)
for a new attribute, allocate the data, !More often used to get the index of a species ...
OrbitalSetTraits< ValueType >::GradMatrix GradMatrix
Wrapping information on parallelism.
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > lattice
Specialized paritlce class for atomistic simulations.
size_type size() const
return the current size
double norm(const zVec &c)
QTBase::ValueType ValueType
REQUIRE(std::filesystem::exists(filename))
Manage a collection of ParticleSet objects.
SpeciesSet & getSpeciesSet()
retrun the SpeciesSet of this particle set
void create(const std::vector< int > &agroup)
create grouped particles
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
bool parseFromString(const std::string_view data)
CheckMatrixResult checkMatrix(M1 &a_mat, M2 &b_mat, const bool check_all=false, std::optional< const double > eps=std::nullopt)
This function checks equality a_mat and b_mat elements M1, M2 need to have their element type declare...
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))
Declaration of WaveFunctionComponent.
Custom container for set of attributes for a set of species.
const PoolType & getPool() const
get the Pool object
std::unique_ptr< SPOSet > createSPOSetFromXML(xmlNodePtr cur) override
initialize the Antisymmetric wave function for electrons
class to handle complex splines to complex orbitals with splines of arbitrary precision ...
const auto & getSimulationCell() const
get simulation cell
Declaration of ParticleSetPool.