QMCPACK
OneBodyDensityMatricesTests< T > Class Template Reference
+ Collaboration diagram for OneBodyDensityMatricesTests< T >:

Public Types

using Evaluators = OneBodyDensityMatricesInput::Evaluator
 
using Integrators = OneBodyDensityMatricesInput::Integrator
 
using Sampling = OneBodyDensityMatrices::Sampling
 
using MCPWalker = OneBodyDensityMatrices::MCPWalker
 
using Data = OneBodyDensityMatrices::Data
 
using Real = Data::value_type
 

Public Member Functions

void testCopyConstructor (const OneBodyDensityMatrices &obdm)
 
 OneBodyDensityMatricesTests ()=default
 
void testGenerateSamples (ValidOneBodyDensityMatricesInput::valid input, OneBodyDensityMatrices &obdm, ParticleSet &pset_target, StdRandom< T > &rng)
 
void testGenerateSamplesForSpinor (ValidOneBodyDensityMatricesInput::valid input, OneBodyDensityMatrices &obdm, ParticleSet &pset_target, StdRandom< T > &rng)
 
void checkData (Real *ref_in, Real *test_in, size_t size)
 Checking approximate equality for complex valued data as two reals is not consistent with testing practices elsewhere in the code. More...
 
void testAccumulate (OneBodyDensityMatrices &obdm, RefVector< MCPWalker > &walkers, RefVector< ParticleSet > &psets, RefVector< TrialWaveFunction > &twfcs, StdRandom< T > &rng)
 no change test for accumulate More...
 
void testEvaluateMatrix (OneBodyDensityMatrices &obdm, ParticleSet &pset, TrialWaveFunction &trial_wavefunction, MCPWalker &walker, StdRandom< T > &rng)
 no change test for evaluateMatrix. More...
 
void testRegisterAndWrite (OneBodyDensityMatrices &obdm)
 
void dumpData (OneBodyDensityMatrices &obdm)
 

Private Member Functions

Data getEvaluateMatrixData (OBDMI::Integrator integrator)
 
Data getAccumulateData ()
 
Data getUniqueSpinData ()
 

Detailed Description

template<typename T>
class qmcplusplus::testing::OneBodyDensityMatricesTests< T >

Definition at line 34 of file OneBodyDensityMatrices.h.

Member Typedef Documentation

◆ Data

◆ Evaluators

◆ Integrators

◆ MCPWalker

◆ Real

using Real = Data::value_type

Definition at line 65 of file test_OneBodyDensityMatrices.cpp.

◆ Sampling

Constructor & Destructor Documentation

◆ OneBodyDensityMatricesTests()

Member Function Documentation

◆ checkData()

void checkData ( Real ref_in,
Real test_in,
size_t  size 
)
inline

Checking approximate equality for complex valued data as two reals is not consistent with testing practices elsewhere in the code.

Values that are slightly off may now fall in approximation limit properly.

The smell from OperatorEstBase continuing the tradition of packing everything into a Real buffer is not lost on me.

Definition at line 117 of file test_OneBodyDensityMatrices.cpp.

References qmcplusplus::CHECK(), and qmcplusplus::Units::charge::e.

Referenced by OneBodyDensityMatricesTests< T >::testAccumulate(), OneBodyDensityMatricesTests< T >::testEvaluateMatrix(), and OneBodyDensityMatricesTests< T >::testRegisterAndWrite().

118  {
119  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
120  {
121  size /= 2;
122  auto* ref_data = reinterpret_cast<std::complex<Real>*>(ref_in);
123  auto* test_data = reinterpret_cast<std::complex<Real>*>(test_in);
124  for (size_t id = 0; id < size; id += 2)
125 #if defined(MIXED_PRECISION)
126  CHECK(ref_data[id] == ComplexApprox(test_data[id]).epsilon(6e-4));
127 #else
128  CHECK(ref_data[id] == ComplexApprox(test_data[id]));
129 #endif
130  }
131  else
132  {
133  for (size_t id = 0; id < size; ++id)
134 #if defined(MIXED_PRECISION)
135  CHECK(ref_in[id] == Approx(test_in[id]).epsilon(1e-4));
136 #else
137  CHECK(ref_in[id] == Approx(test_in[id]));
138 #endif
139  }
140  }
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ dumpData()

void dumpData ( OneBodyDensityMatrices obdm)
inline

Definition at line 223 of file test_OneBodyDensityMatrices.cpp.

References OperatorEstBase::data_.

Referenced by qmcplusplus::TEST_CASE().

224  {
225  std::cout << "Here is what is in your OneBodyDensityMatrices:\n" << NativePrint(obdm.data_) << '\n';
226  }

◆ getAccumulateData()

OneBodyDensityMatricesTests< T >::Data getAccumulateData ( )
private

Definition at line 973 of file test_OneBodyDensityMatrices.cpp.

Referenced by OneBodyDensityMatricesTests< T >::testAccumulate().

974 {
975  Data data;
976  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
977  {
978  data = {
979  2.9291234638, 0.0000000000, -0.2132989360, 0.0745674664, 0.6575312763, -0.0241892145, 0.2532299248,
980  -0.0000000109, -1.1240579737, 0.0000000028, -0.1397854178, 0.1645671318, 0.1881583956, 0.1222590747,
981  -0.0019595386, 0.0000000000, -0.2132989360, -0.0745674664, 3.1431572436, -0.0000000000, 0.4556655323,
982  -0.0032110369, 0.0525287831, 0.0018092687, -0.1435885589, 0.0345014350, 0.1530394508, 0.2388837829,
983  -0.1875535298, 0.1030355338, -0.1497527705, -0.0024706633, 0.6575312763, 0.0241892145, 0.4556655323,
984  0.0032110369, 3.1711078068, 0.0000000000, -0.0159540742, -0.0059570373, -0.3042315457, 0.0162837209,
985  -0.2911526549, 0.0615081334, 0.4400568181, 0.0798583623, 0.0217861975, 0.0169827532, 0.2532299248,
986  0.0000000109, 0.0525287831, -0.0018092687, -0.0159540742, 0.0059570373, 3.4070503585, 0.0000000000,
987  0.8103626817, 0.0000000056, -0.0952865678, -0.2711773981, 0.1282606987, -0.2014612680, 0.4847746576,
988  -0.0000000011, -6.0458119707, 0.0000000067, 5.8517166367, -2.3147839762, -20.4116215167, 0.6636152886,
989  -7.3052152124, 0.0000005920, -5.9833739861, 0.0000001586, 0.4080623680, -5.2593437195, -0.5492733308,
990  -3.9072369333, 3.6961289593, 0.0000000740, 0.9493241103, 1.5333691280, -1.1621879823, -3.5401562485,
991  2.3633267850, 2.7990104110, 3.6921767198, -1.5637638719, 0.9327053281, 0.8055850013, -1.3612795276,
992  -0.3390817263, -0.6755117159, 0.5662076117, 0.3702207032, -1.8456735112, -1.2778398461, 1.1391606465,
993  0.8788742485, -3.0888907845, -2.2904629312, 2.2770067320, -4.9698620698, -1.1617407073, -1.2554700698,
994  0.5984800818, -0.6755119158, -0.3616944760, -0.9538525628, 0.3390815677, -0.4983361691, -1.3711756489,
995  -4.0798709203, -0.0000000000, 2.9144861374, -1.2298470587, -10.8447153218, 0.3305180969, -10.0697430530,
996  0.0000001859, -3.4632636632, 0.0000000419, 0.1108403565, -1.6391623703, -0.1491970188, -1.2177557551,
997  -0.5534367488, 0.0000000000, 2.9291234638, -0.0000000000, -0.2132989360, 0.0745674664, 0.6575312763,
998  -0.0241892145, 0.2532299248, -0.0000000109, -1.1240579737, 0.0000000028, -0.1397854178, 0.1645671318,
999  0.1881583956, 0.1222590747, -0.0019595386, 0.0000000000, -0.2132989360, -0.0745674664, 3.1431572436,
1000  0.0000000000, 0.4556655323, -0.0032110369, 0.0525287831, 0.0018092687, -0.1435885589, 0.0345014350,
1001  0.1530394508, 0.2388837829, -0.1875535298, 0.1030355338, -0.1497527705, -0.0024706633, 0.6575312763,
1002  0.0241892145, 0.4556655323, 0.0032110369, 3.1711078068, 0.0000000000, -0.0159540742, -0.0059570373,
1003  -0.3042315457, 0.0162837209, -0.2911526549, 0.0615081334, 0.4400568181, 0.0798583623, 0.0217861975,
1004  0.0169827532, 0.2532299248, 0.0000000109, 0.0525287831, -0.0018092687, -0.0159540742, 0.0059570373,
1005  3.4070503585, -0.0000000000, 0.8103626817, 0.0000000056, -0.0952865678, -0.2711773981, 0.1282606987,
1006  -0.2014612680, 0.4847746576, -0.0000000011, -0.0535485614, 0.0000000456, -0.2634589697, -0.4273305284,
1007  -3.7681731806, -0.0298776483, 6.3003941549, -0.0000001048, 2.5146140015, -0.0000000790, 0.2019179652,
1008  0.3783014377, -0.2717920962, 0.2810452661, -0.2195164577, -0.0000000335, 0.8248473372, -0.0302759687,
1009  0.0564839927, 0.0627061848, 0.3233263517, -2.6372267985, -0.7480447015, 4.8497448204, -0.3290319572,
1010  1.3407680257, 1.0988018851, -0.0721739419, 0.8942277438, 0.9612852986, -0.2616888674, 0.6620697600,
1011  -1.1102874022, -0.0224924193, 0.5422928928, -0.0307012816, -0.4413043984, -1.9024908391, 1.0069071996,
1012  3.6029399491, 0.4428940955, 0.9960743917, 0.8942278339, -0.9177543595, 0.5594585213, 0.0721740209,
1013  0.3522468123, 0.4918604753, -2.1530368296, 0.0000000000, -0.4899613886, 0.0492231475, 0.4340461159,
1014  -0.0555640559, -5.8227729586, -0.0000000037, -0.9649526524, -0.0000000466, 0.6122771455, 0.4591252615,
1015  -0.8241569084, 0.3410902494, -0.4924760260, 0.0000000000,
1016  };
1017  }
1018  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
1019  {
1020  data = {
1021  2.9418870316, -0.0730367697, 0.2825942788, -0.0482128086, -0.4076353925, 0.0565848266, 1.1815582427,
1022  0.1397691924, -0.0730367697, 3.4212182000, 0.8908985700, 0.2575937162, -0.1332837838, 0.5354984573,
1023  0.0223089765, -0.4943417103, 0.2825942788, 0.8908985700, 3.2846114781, 0.2100203992, -0.2969335200,
1024  -0.0668884727, 0.7393865326, 0.0744676157, -0.0482128086, 0.2575937162, 0.2100203992, 2.7804644672,
1025  0.1479959718, -0.2108628317, -0.1058624903, 0.1094655214, -10.4814218220, -2.7285795717, -29.9852578068,
1026  0.7835860171, 3.1523292003, -6.8371790968, -5.0309586919, 7.6730591933, -0.5950386079, 2.9929684361,
1027  0.1106432525, 6.0237785519, -0.6494115783, 0.8415771440, 0.5782321647, 0.4242339082, -3.6209466698,
1028  1.7496134966, -6.8014176733, -1.2619245515, 0.8164606643, -0.6836185979, -1.7382138253, 1.3061371959,
1029  -5.8646902639, -2.1311266822, -17.1140445213, -5.8610844090, 2.2307905583, -4.2035012366, -3.0671418156,
1030  3.5223740553, 2.9418870316, -0.0730367697, 0.2825942788, -0.0482128086, -0.4076353925, 0.0565848266,
1031  1.1815582427, 0.1397691924, -0.0730367697, 3.4212182000, 0.8908985700, 0.2575937162, -0.1332837838,
1032  0.5354984573, 0.0223089765, -0.4943417103, 0.2825942788, 0.8908985700, 3.2846114781, 0.2100203992,
1033  -0.2969335200, -0.0668884727, 0.7393865326, 0.0744676157, -0.0482128086, 0.2575937162, 0.2100203992,
1034  2.7804644672, 0.1479959718, -0.2108628317, -0.1058624903, 0.1094655214, 0.8730451012, 1.0231657997,
1035  -2.5208434318, 3.9689595744, 0.5349419029, 0.5691939230, -0.9648631708, -0.9783541221, 0.3220945960,
1036  -0.8712038765, 1.5289446738, -4.6535453897, 1.2120349971, 0.7055562347, 2.1390028670, -0.7203237486,
1037  -1.3012372435, -0.5715963470, 0.5311792927, -1.7615315077, 0.5661913908, 0.2251863434, 0.8706914019,
1038  -0.1236678876, -2.9956864970, -1.7155487648, -1.2654380257, -4.2335858349, 1.4018920220, -0.0193915347,
1039  -0.1188045474, -0.0461947842,
1040  };
1041  }
1042  return data;
1043 }

◆ getEvaluateMatrixData()

OneBodyDensityMatricesTests< T >::Data getEvaluateMatrixData ( OBDMI::Integrator  integrator)
private

Definition at line 561 of file test_OneBodyDensityMatrices.cpp.

References OneBodyDensityMatricesInput::DENSITY, OneBodyDensityMatricesInput::UNIFORM, and OneBodyDensityMatricesInput::UNIFORM_GRID.

Referenced by OneBodyDensityMatricesTests< T >::testEvaluateMatrix().

563 {
564  Data data;
565  switch (integrator)
566  {
568  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
569  {
570  data = {
571  0.8559739634, -2.775557562e-16, -0.0009312358165, -0.0002137464399, -0.00188481782, -0.00010560363,
572  -0.1690957318, 4.68545619e-11, 0.2135706414, 4.229001871e-11, -0.0003234768609, -0.0008471008737,
573  0.0004354250735, -0.000629313951, 0.2632686421, -4.718447855e-16, -0.0009312358165, 0.0002137464399,
574  0.6904253737, -5.551115123e-17, -2.29895663e-05, -6.759071163e-05, 8.571154293e-05, -2.029129991e-05,
575  -0.0002755957962, 6.15929991e-05, 0.01997752724, -0.03959823579, -0.03441868427, -0.03703684606,
576  -0.000228978625, 5.163016816e-05, -0.00188481782, 0.00010560363, -2.29895663e-05, 6.759071163e-05,
577  0.6910137193, 1.110223025e-15, 0.0001789239062, -9.720928471e-06, -0.0005431524679, 3.125021981e-05,
578  -0.0370646689, -0.03445096274, 0.03964615719, -0.02000771091, -0.0004552815242, 2.596515681e-05,
579  -0.1690957318, -4.685549171e-11, 8.571154293e-05, 2.029129991e-05, 0.0001789239062, 9.720928472e-06,
580  0.6510614284, 4.996003611e-16, -0.3264829535, -1.120145643e-11, -1.628936668e-05, -5.104526467e-05,
581  2.191572411e-05, -3.7934521e-05, -0.1113259098, -1.13588236e-11, 0.9949076208, 5.254666641e-08,
582  0.09716631627, -0.008698974489, -0.07670746649, 0.01101924465, -1.054191923, -1.009885029e-07,
583  0.6429960606, 5.478465426e-08, 0.006654585037, -0.003422468497, -0.008957381204, -0.002542568933,
584  0.3883611988, 2.492687778e-08, -0.2567403319, -2.274337275, -0.070057294, -2.130173974,
585  -0.185057423, -2.774684629, 0.494079399, 4.39071663, -0.2679771972, -2.380684367,
586  -0.2537442403, 0.1010428549, -0.2026493778, -0.04440749192, -0.1216357873, -1.078602297,
587  0.345585874, -1.689635575, 0.7414178343, -1.48274947, 0.742418168, -1.971367257,
588  -0.6650567573, 3.261922039, 0.3607112874, -1.768642232, -0.202649463, -0.01653546255,
589  -0.1315184346, -0.1010429096, 0.1637281089, -0.8013080665, -1.915594805, -3.652633751e-14,
590  -2.106812279, -0.3174159872, -2.798953942, -0.2389235612, 4.203062081, 7.690383574e-08,
591  -2.237403378, -1.095805402e-08, 0.05937990357, 0.2648259866, -0.0799285254, 0.196742672,
592  -0.9570615415, -1.670885652e-14, 0.8559739634, 5.551115123e-17, -0.0009312358165, -0.0002137464399,
593  -0.00188481782, -0.00010560363, -0.1690957318, 4.685551946e-11, 0.2135706414, 4.229011585e-11,
594  -0.0003234768609, -0.0008471008737, 0.0004354250735, -0.000629313951, 0.2632686421, -3.330669074e-16,
595  -0.0009312358165, 0.0002137464399, 0.6904253737, -5.551115123e-17, -2.29895663e-05, -6.759071163e-05,
596  8.571154293e-05, -2.029129991e-05, -0.0002755957962, 6.15929991e-05, 0.01997752724, -0.03959823579,
597  -0.03441868427, -0.03703684606, -0.000228978625, 5.163016816e-05, -0.00188481782, 0.00010560363,
598  -2.29895663e-05, 6.759071163e-05, 0.6910137193, 5.551115123e-17, 0.0001789239062, -9.720928471e-06,
599  -0.0005431524679, 3.125021981e-05, -0.0370646689, -0.03445096274, 0.03964615719, -0.02000771091,
600  -0.0004552815242, 2.596515681e-05, -0.1690957318, -4.68551864e-11, 8.571154293e-05, 2.029129991e-05,
601  0.0001789239062, 9.720928471e-06, 0.6510614284, 1.665334537e-16, -0.3264829535, -1.12007903e-11,
602  -1.628936668e-05, -5.104526467e-05, 2.191572411e-05, -3.7934521e-05, -0.1113259098, -1.13588583e-11,
603  -0.1398697498, 1.676108652e-08, 0.009839305325, -0.03110873861, -0.2743146761, 0.001115813703,
604  0.8078232309, 7.208311281e-09, -0.3939381356, 7.358152143e-10, 0.01322489101, 0.01202117753,
605  -0.01780140861, 0.008930678923, -0.1179882345, 4.657475086e-09, 0.1004197767, -0.3872746911,
606  -0.4631185606, -0.1267234616, 0.251940383, 0.3432366261, 0.1357909209, 0.1882467853,
607  -0.04657813737, -0.1481318675, -0.01754424248, -0.008096072777, 0.04046503369, 0.04321394303,
608  0.01594660416, -0.1297942252, -0.1351702458, -0.2877115343, 0.5308175294, -0.1497099916,
609  -0.302802717, 0.3542104112, -0.1827815947, 0.1398510191, 0.06269657586, -0.1100491288,
610  0.04046503056, -0.0383308965, -0.04195025864, 0.008096072041, -0.02146496291, -0.09642585851,
611  1.583358633, 5.551115123e-15, 0.5400010285, 0.09966977815, 0.8788816574, 0.06123897411,
612  -2.364549544, -2.291840495e-08, 1.339153745, 3.484556643e-09, -0.02316768222, -0.0762631529,
613  0.03118495745, -0.05665686084, 0.6842069691, 1.720845688e-15,
614  };
615  }
616  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
617  {
618  data = {
619  0.4279869817, -0.0005724911282, -0.0009952107251, -0.08454786586, 0.1067853207, -0.0005852888673,
620  -9.694443874e-05, 0.131634321, -0.0005724911282, 0.3452101128, 0.07732509099, 5.299452569e-05,
621  -0.0001685944122, -0.01345751284, -0.03081850011, -0.0001403043966, -0.0009952107251, 0.07732509099,
622  0.3455042856, 9.430886761e-05, -0.0002871986719, -0.03308358791, 0.006219573346, -0.0002406233405,
623  -0.08454786586, 5.299452569e-05, 9.430886761e-05, 0.3255307142, -0.1632414767, -3.366691551e-05,
624  -8.009937089e-06, -0.0556629549, 0.4974537841, 0.04423363063, -0.03284416792, -0.5270959104,
625  0.3214980027, 0.001616059574, -0.005749976824, 0.1941805869, 1.008798472, 0.9822905645,
626  1.251738209, -1.948318603, 1.056353583, -0.1335433475, -0.04654405447, 0.4784832548,
627  1.017610724, 1.176381561, 1.414874433, -1.963489414, 1.064676762, -0.1520816495,
628  -0.05908794817, 0.4825180877, -0.9577974025, -1.212114133, -1.518938752, 2.101531079,
629  -1.118701694, 0.1621029451, 0.05840707331, -0.4785307708, 0.4279869817, -0.0005724911282,
630  -0.0009952107251, -0.08454786586, 0.1067853207, -0.0005852888673, -9.694443874e-05, 0.131634321,
631  -0.0005724911282, 0.3452101128, 0.07732509099, 5.299452569e-05, -0.0001685944122, -0.01345751284,
632  -0.03081850011, -0.0001403043966, -0.0009952107251, 0.07732509099, 0.3455042856, 9.430886761e-05,
633  -0.0002871986719, -0.03308358791, 0.006219573346, -0.0002406233405, -0.08454786586, 5.299452569e-05,
634  9.430886761e-05, 0.3255307142, -0.1632414767, -3.366691551e-05, -8.00993709e-06, -0.0556629549,
635  -0.06993488329, -0.01063469842, -0.1365994325, 0.4039116172, -0.1969690692, 0.01262303497,
636  -0.004435365783, -0.05899411958, 0.2438472339, -0.1415980475, -0.09314308211, -0.0262279326,
637  0.05077686603, 0.01074587779, 0.0101183853, 0.07287041467, 0.07627064426, 0.3044594466,
638  -0.2645758779, -0.1613163063, 0.08637285105, 0.01857458999, -0.04049312511, 0.0374804478,
639  0.7916793164, 0.3198354033, 0.4700603157, -1.182274783, 0.6695768741, -0.04971541756,
640  -0.01273595169, 0.3421034845,
641  };
642  }
643  break;
644  }
646  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
647  {
648  data = {
649  0.8261941614, 0,
650  -0.04207477301, -0.01042641052,
651  -0.09193944978, -0.004771495112,
652  -0.1577639198, 2.251655112e-09,
653  0.2529218804, -3.528230208e-10,
654  0.01395852521, -0.01381912806,
655  -0.01878889069, -0.0102664046,
656  0.2669242402, -1.665334537e-16,
657  -0.04207477301, 0.01042641052,
658  0.7237235295, -2.220446049e-16,
659  -0.1362791782, 0.02883929086,
660  -0.0345711543, -0.01578687034,
661  0.07089423603, 0.01585967312,
662  0.06197413691, -0.0673375704,
663  -0.07846982731, -0.0428311471,
664  0.03401975498, 0.01636340115,
665  -0.09193944978, 0.004771495112,
666  -0.1362791782, -0.02883929086,
667  0.4726910113, 3.330669074e-16,
668  0.1392076512, 0.003920553607,
669  -0.1398496516, -0.008039785222,
670  0.02312496202, 0.01413794966,
671  -0.04626371454, 0.02462349008,
672  -0.1442914533, -0.003858018529,
673  -0.1577639198, -2.251654918e-09,
674  -0.0345711543, 0.01578687034,
675  0.1392076512, -0.003920553607,
676  0.6406077933, -2.220446049e-16,
677  -0.3821572706, -6.950154341e-11,
678  -0.03309714608, -0.006729454624,
679  0.04455046481, -0.004999419621,
680  -0.06308963653, -2.521567177e-09,
681  0.9566798997, 3.993940545e-08,
682  0.1287007623, -0.03913606336,
683  -0.3450997639, 0.01459536453,
684  -1.049841949, -8.448363198e-08,
685  0.7807572133, 5.406439579e-08,
686  0.0636014061, -0.0144126824,
687  -0.08561076546, -0.01070736661,
688  0.3453233488, 7.91976143e-09,
689  -0.1652425535, -1.673204981,
690  -0.2864309551, -1.827550661,
691  0.1092013893, -0.4672139335,
692  0.4181616684, 3.856599084,
693  -0.2678120582, -2.450374785,
694  -0.1661115247, -0.5147466032,
695  0.03950582141, 0.7348504126,
696  -0.01780951734, -0.3040424203,
697  0.2224251057, -1.243046364,
698  0.4872309759, -1.334778155,
699  0.2833545206, -0.2677130338,
700  -0.5628674436, 2.865118995,
701  0.3604889296, -1.820416191,
702  0.03950573518, -0.4243869589,
703  -0.1899388751, 0.5147465492,
704  0.02397254984, -0.2258771884,
705  -1.317725416, -2.642330799e-14,
706  -1.83826268, -0.06023003292,
707  -0.5311043355, -0.2084686282,
708  3.662896282, 2.914568187e-08,
709  -2.270465021, 2.617466888e-08,
710  -0.5283222051, 0.08433855146,
711  0.7111490664, 0.06265614476,
712  -0.1773974531, -2.775557562e-15,
713  0.8261941614, -5.551115123e-17,
714  -0.04207477301, -0.01042641052,
715  -0.09193944978, -0.004771495112,
716  -0.1577639198, 2.251654183e-09,
717  0.2529218804, -3.528226322e-10,
718  0.01395852521, -0.01381912806,
719  -0.01878889069, -0.0102664046,
720  0.2669242402, -1.942890293e-16,
721  -0.04207477301, 0.01042641052,
722  0.7237235295, -2.220446049e-16,
723  -0.1362791782, 0.02883929086,
724  -0.0345711543, -0.01578687034,
725  0.07089423603, 0.01585967312,
726  0.06197413691, -0.0673375704,
727  -0.07846982731, -0.0428311471,
728  0.03401975498, 0.01636340115,
729  -0.09193944978, 0.004771495112,
730  -0.1362791782, -0.02883929086,
731  0.4726910113, 5.551115123e-17,
732  0.1392076512, 0.003920553607,
733  -0.1398496516, -0.008039785222,
734  0.02312496202, 0.01413794966,
735  -0.04626371454, 0.02462349008,
736  -0.1442914533, -0.003858018529,
737  -0.1577639198, -2.251654516e-09,
738  -0.0345711543, 0.01578687034,
739  0.1392076512, -0.003920553607,
740  0.6406077933, -1.665334537e-16,
741  -0.3821572706, -6.950134912e-11,
742  -0.03309714608, -0.006729454624,
743  0.04455046481, -0.004999419621,
744  -0.06308963653, -2.521567073e-09,
745  -0.09246990704, 1.714692167e-08,
746  0.01718168811, -0.002306490387,
747  -0.0203382379, 0.001948481938,
748  0.7391743085, 3.440059682e-09,
749  -0.4038538237, 3.37227038e-09,
750  -0.05196998174, -0.01900034084,
751  0.06995427856, -0.01411562006,
752  0.001586062406, 3.942820508e-09,
753  0.09257244551, -0.4150339965,
754  -0.543569044, -0.1978266927,
755  0.2876563907, 0.3016008129,
756  0.2041868448, 0.2689153029,
757  -0.1456849905, -0.2702324047,
758  -0.06303854185, 0.03455118382,
759  0.02035291547, 0.04212529665,
760  -0.04182725494, -0.2125070964,
761  -0.1246073282, -0.308334295,
762  0.6467124191, -0.2090012216,
763  -0.3333005141, 0.3431996583,
764  -0.2748460697, 0.1997807403,
765  0.1960995565, -0.2007592471,
766  0.02035290751, -0.06296446567,
767  -0.07531415043, -0.03455118719,
768  0.05630165983, -0.15787436,
769  1.360996296, 4.440892099e-15,
770  0.460662518, -0.009109012253,
771  -0.08032289324, 0.05224157011,
772  -2.1641054, -3.065196319e-09,
773  1.447670416, -1.103484504e-08,
774  0.2132345387, -0.01793768528,
775  -0.2870247183, -0.01332608765,
776  0.369682822, 9.436895709e-16,
777  };
778  }
779  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
780  {
781  data = {
782  0.4130970807, -0.02625059177, -0.04835547244, -0.07888195875, 0.12646094, 6.96985738e-05,
783  -0.01452764765, 0.1334621201, -0.02625059177, 0.3466032331, -0.001161163685, -0.009392146568,
784  0.02751728009, 0.0007624905835, -0.06528656996, 0.008828176914, -0.04835547244, -0.001161163685,
785  0.2210869708, 0.06764354093, -0.06590493546, 0.02539089034, -0.01991866217, -0.07021671737,
786  -0.07888195875, -0.009392146568, 0.06764354093, 0.3203038942, -0.1910786333, -0.01991330156,
787  0.01977552422, -0.031544817, 0.4783399299, 0.04478231453, -0.165252207, -0.5249209266,
788  0.3903785766, 0.02459435045, -0.04815905069, 0.1726616705, 0.7539812136, 0.7595813826,
789  0.2502049139, -1.719218703, 1.091281367, 0.1944111372, -0.3327445041, 0.1431164515,
790  0.7327357349, 0.9257821561, 0.3266874516, -1.713993226, 1.090452555, 0.2048993189,
791  -0.372436296, 0.1249248691, -0.6588627081, -0.9492463565, -0.3697864819, 1.831448156,
792  -1.135232497, -0.2219918268, 0.3869026056, -0.08869872655, 0.4130970807, -0.02625059177,
793  -0.04835547244, -0.07888195875, 0.12646094, 6.96985738e-05, -0.01452764765, 0.1334621201,
794  -0.02625059177, 0.3466032331, -0.001161163685, -0.009392146568, 0.02751728009, 0.0007624905835,
795  -0.06528656996, 0.008828176914, -0.04835547244, -0.001161163685, 0.2210869708, 0.06764354093,
796  -0.06590493546, 0.02539089034, -0.01991866217, -0.07021671737, -0.07888195875, -0.009392146568,
797  0.06764354093, 0.3203038942, -0.1910786333, -0.01991330156, 0.01977552422, -0.031544817,
798  -0.0462349621, 0.007437619475, -0.009194881695, 0.3695871528, -0.2019269101, -0.03548515978,
799  0.02791932722, 0.0007930292316, 0.253803221, -0.1431755519, -0.0640034998, -0.03236422918,
800  0.06227370761, -0.006365722925, 0.02063497821, 0.08533992072, 0.0918634834, 0.3878849668,
801  -0.2614830065, -0.2373134048, 0.1984294012, -0.01545314238, -0.06281061419, 0.1070880099,
802  0.6804981478, 0.2257767529, -0.01404066156, -1.082052701, 0.7238352026, 0.09764842672,
803  -0.150175403, 0.184841411,
804  };
805  }
806  break;
807  }
809  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
810  {
811  data = {
812  0.9924480859, -1.110223025e-16,
813  -0.1885291696, 0.0319276602,
814  0.2815361269, -0.02138019278,
815  0.1872112957, -3.684201194e-09,
816  -0.5244043425, 1.095947622e-08,
817  -0.03918278828, -0.3023406232,
818  0.05274204952, -0.2246129078,
819  0.01383924214, 9.714451465e-17,
820  -0.1885291696, -0.0319276602,
821  0.9180621234, 2.775557562e-16,
822  0.2402287308, -0.01308718541,
823  0.2057882223, 0.004465819328,
824  0.1024448325, 0.02374868021,
825  -0.05743147279, -0.07637345821,
826  0.03130436103, -0.08626204101,
827  0.1630605924, -0.02521124324,
828  0.2815361269, 0.02138019278,
829  0.2402287308, 0.01308718541,
830  1.031979911, 3.330669074e-16,
831  -0.03937932123, -0.02333745214,
832  -0.2094143097, -0.01161775883,
833  -0.1348871245, -0.190165311,
834  0.1601241654, -0.149665044,
835  0.2223111845, -0.01849191565,
836  0.1872112957, 3.684200389e-09,
837  0.2057882223, -0.004465819328,
838  -0.03937932123, 0.02333745214,
839  1.323421938, 4.440892099e-16,
840  0.2905844345, 1.315278547e-08,
841  -0.1594450613, -0.2611690287,
842  0.2146213636, -0.1940259416,
843  0.2116494581, 6.064937663e-09,
844  0.5632626352, 1.703273084e-08,
845  -0.3488988503, 0.02573820756,
846  0.2269574287, -0.03956679718,
847  -1.637494571, -1.812725284e-07,
848  -0.8314244571, -8.494759768e-08,
849  0.1951723949, 0.1024546704,
850  -0.2627122381, 0.0761148891,
851  -0.282499705, -2.532976356e-09,
852  -0.09350615209, -0.756293056,
853  0.1463790836, -2.234477269,
854  -0.5935525371, -5.517868252,
855  0.829208332, 7.707654298,
856  0.3647990603, 3.119019826,
857  0.1734726648, -0.3225198405,
858  0.1526169414, 0.4999332675,
859  -0.07866503442, -0.05924377889,
860  0.1258641643, -0.5618602341,
861  1.097431538, -1.4619276,
862  1.305834496, -3.987176014,
863  -1.116157862, 5.726119334,
864  -0.4910385854, 2.317161517,
865  0.1526170644, -0.3054089574,
866  0.08142330397, 0.3225199255,
867  0.105887215, -0.04401298315,
868  -0.4339186561, -1.629252289e-14,
869  -2.305548843, -0.6188863722,
870  -5.45730064, -0.2614613878,
871  7.525382195, 1.317113143e-07,
872  2.880837963, 2.432125967e-08,
873  -0.325402542, -0.228642532,
874  0.4380088526, -0.1698614745,
875  -0.1214395281, -3.462508058e-15,
876  0.9924480859, 5.551115123e-17,
877  -0.1885291696, 0.0319276602,
878  0.2815361269, -0.02138019278,
879  0.1872112957, -3.684200667e-09,
880  -0.5244043425, 1.095947622e-08,
881  -0.03918278828, -0.3023406232,
882  0.05274204952, -0.2246129078,
883  0.01383924214, -2.975050761e-16,
884  -0.1885291696, -0.0319276602,
885  0.9180621234, -1.665334537e-16,
886  0.2402287308, -0.01308718541,
887  0.2057882223, 0.004465819328,
888  0.1024448325, 0.02374868021,
889  -0.05743147279, -0.07637345821,
890  0.03130436103, -0.08626204101,
891  0.1630605924, -0.02521124324,
892  0.2815361269, 0.02138019278,
893  0.2402287308, 0.01308718541,
894  1.031979911, 0,
895  -0.03937932123, -0.02333745214,
896  -0.2094143097, -0.01161775883,
897  -0.1348871245, -0.190165311,
898  0.1601241654, -0.149665044,
899  0.2223111845, -0.01849191565,
900  0.1872112957, 3.68420057e-09,
901  0.2057882223, -0.004465819328,
902  -0.03937932123, 0.02333745214,
903  1.323421938, 0,
904  0.2905844345, 1.315278556e-08,
905  -0.1594450613, -0.2611690287,
906  0.2146213636, -0.1940259416,
907  0.2116494581, 6.064937469e-09,
908  0.2051059875, 2.820113419e-08,
909  0.1614723089, -0.04906840403,
910  -0.4326817327, 0.01831176767,
911  1.706267288, 1.643257963e-08,
912  0.4080117321, 4.721028735e-09,
913  -0.1551120856, -0.2788399487,
914  0.2087889614, -0.2071539023,
915  0.1814356421, -1.855115922e-09,
916  0.4257831978, -0.1752088462,
917  -0.4998292759, 0.07462493825,
918  0.2373005349, 0.3540303805,
919  0.2248224859, 0.09288554326,
920  -0.1494463458, 0.1278007236,
921  -0.05568689306, -0.2034175338,
922  0.1004071574, 0.007263799659,
923  0.03200635492, 0.1228505216,
924  -0.5731263129, -0.130165,
925  0.5767337619, -0.002042114292,
926  -0.330578729, 0.3705292719,
927  -0.3026226697, 0.06900584231,
928  0.2011625579, 0.09494483239,
929  0.1004071511, 0.1154251684,
930  -0.1162463317, 0.2034175291,
931  -0.04308221061, 0.09126728585,
932  0.7806523758, 3.275157923e-15,
933  0.1160951465, 0.2239745488,
934  1.974993197, 0.01316587446,
935  -4.058777904, -4.039943313e-08,
936  -1.782306544, -2.124291576e-08,
937  0.2934590981, 0.1825596902,
938  -0.3950112733, 0.1356259601,
939  -0.2695462139, -7.21644966e-16,
940  };
941  }
942  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
943  {
944  data = {
945  0.9408447786, -0.3935847362, -0.2468586928, 0.1346424361, -0.2790550847, -0.2728613819, 0.118510686,
946  0.373636656, -0.3935847362, 1.465454239, 0.3906355741, 0.3826898337, -0.03726984102, -0.07963536415,
947  -0.4819140243, -0.2130898108, -0.2468586928, 0.3906355741, 0.8424465027, 0.2589273731, -0.03575380357,
948  -0.253719428, 0.1136907332, 0.09985411935, 0.1346424361, 0.3826898337, 0.2589273731, 1.097297774,
949  -0.2458047841, -0.1441440472, -0.1503264601, 0.09909758853, 0.6175832301, -0.6985723605, -0.6243271971,
950  -1.376534064, 0.09219592002, -0.02237084205, 0.2231280489, 0.1476634744, -1.208204987, 1.712369561,
951  1.715275159, -4.409355333, 0.8508272302, -0.494084464, 0.3242451383, -0.2368202448, -1.480471134,
952  2.537211763, 2.19567287, -4.176679345, 0.8267380683, -0.6223330608, 0.1422109575, -0.3020474178,
953  1.853750075, -2.613447154, -2.388944783, 4.650543191, -0.9996739752, 0.5654611738, -0.2023390067,
954  0.4167421543, 0.9408447786, -0.3935847362, -0.2468586928, 0.1346424361, -0.2790550847, -0.2728613819,
955  0.118510686, 0.373636656, -0.3935847362, 1.465454239, 0.3906355741, 0.3826898337, -0.03726984102,
956  -0.07963536415, -0.4819140243, -0.2130898108, -0.2468586928, 0.3906355741, 0.8424465027, 0.2589273731,
957  -0.03575380357, -0.253719428, 0.1136907332, 0.09985411935, 0.1346424361, 0.3826898337, 0.2589273731,
958  1.097297774, -0.2458047841, -0.1441440472, -0.1503264601, 0.09909758853, 0.3273111356, 0.3790594202,
959  -0.01488345199, 1.314728254, -0.321881638, -0.1063667686, -0.2555566944, 0.1032133755, 0.7484376476,
960  -0.8135360105, -0.4255269663, -0.03246449107, -0.1597379358, -0.09287811809, 0.2144758734, 0.2846013811,
961  -0.1713163625, 1.015300497, -0.563966848, -0.3464659878, 0.087960779, 0.2142716444, -0.5686552903,
962  -0.3532239607, 0.1204139568, -0.3049230367, 0.1268687562, -2.916771087, 0.4142601541, -0.209253697,
963  0.4634440052, 0.1000471674,
964  };
965  }
966  break;
967  }
968  }
969  return data;
970 }

◆ getUniqueSpinData()

OneBodyDensityMatricesTests< T >::Data getUniqueSpinData ( )
private

Definition at line 1046 of file test_OneBodyDensityMatrices.cpp.

Referenced by OneBodyDensityMatricesTests< T >::testRegisterAndWrite().

1047 {
1048  Data data;
1049  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
1050  {
1051  data = {0.80788614, 0.03850586, 0.31091131, 0.38205625, 0.44777905, 0.21091672, 0.10743698, 0.96152914, 0.20791861,
1052  0.6312172, 0.45626258, 0.08119136, 0.90431926, 0.11375654, 0.8067544, 0.54595911, 0.84150056, 0.20621477,
1053  0.03414278, 0.29305023, 0.45018883, 0.20085125, 0.40840351, 0.66825399, 0.84792934, 0.16337382, 0.29096146,
1054  0.39040606, 0.83718991, 0.36255192, 0.75091973, 0.46448582, 0.52401399, 0.90176318, 0.38023557, 0.71028634,
1055  0.84000996, 0.23419118, 0.30553855, 0.72794856, 0.32839433, 0.09785895, 0.4900262, 0.03030494, 0.14355491,
1056  0.57876809, 0.75103524, 0.02254518, 0.66510853, 0.03025319, 0.14589509, 0.01467558, 0.48894704, 0.04131938,
1057  0.78907133, 0.99612016, 0.96833451, 0.67448307, 0.93273006, 0.20283358, 0.73427328, 0.51123229, 0.58574252,
1058  0.75568488, 0.9315693, 0.31038253, 0.34644132, 0.36777262, 0.63775962, 0.05487314, 0.83054504, 0.73965924,
1059  0.37751022, 0.93023354, 0.48824517, 0.03106788, 0.91065432, 0.65471251, 0.00795302, 0.31126833, 0.58215106,
1060  0.89782226, 0.33120933, 0.38434518, 0.94334496, 0.36956736, 0.30646061, 0.07810828, 0.97154079, 0.02514768,
1061  0.84117586, 0.23971438, 0.22623238, 0.35594978, 0.36437615, 0.77427557, 0.53121471, 0.53240224, 0.39277132,
1062  0.69702301, 0.00654816, 0.94311127, 0.99594941, 0.49187803, 0.10536416, 0.97302689, 0.44064925, 0.28800946,
1063  0.29735792, 0.09520762, 0.16488844, 0.53418347, 0.65144419, 0.03973145, 0.53885783, 0.7358722, 0.45309111,
1064  0.79190158, 0.22632916, 0.20165111, 0.42914622, 0.22774585, 0.85961036, 0.56634649, 0.10872035, 0.69251128,
1065  0.2021623, 0.67509793, 0.52598371, 0.46793523, 0.91830822, 0.77020753, 0.09795741, 0.76007691, 0.50678007,
1066  0.4795003, 0.66071835, 0.32442191, 0.23907092, 0.00210992, 0.75524376, 0.94234713, 0.5690928, 0.34679526,
1067  0.30868398, 0.77709926, 0.51133303, 0.20918474, 0.39361117, 0.7962174, 0.48195751, 0.99470092, 0.30140288,
1068  0.54417926, 0.83619258, 0.66607407, 0.63815312, 0.84754301, 0.46217861, 0.40382941, 0.8669163, 0.80892846,
1069  0.78275811, 0.08359574, 0.74127963, 0.83093771, 0.88526743, 0.83504267, 0.97853459, 0.21692576, 0.45164991,
1070  0.9074328, 0.87753109, 0.85276772, 0.53516365, 0.53168515, 0.40269904, 0.89566943, 0.37372088, 0.73002752,
1071  0.35593885, 0.73251118, 0.77375582, 0.12760254, 0.8455303, 0.91220549, 0.97342524, 0.6901983, 0.01956135,
1072  0.98966668, 0.89508114, 0.86107002, 0.85139379, 0.26868744, 0.49119517, 0.79074938, 0.91333433, 0.16790021,
1073  0.14352574, 0.97134471, 0.69411371, 0.28605858, 0.70411151, 0.36656519, 0.70878013, 0.21327726, 0.34290399,
1074  0.84309746, 0.90860334, 0.97362624, 0.05473755, 0.71643348, 0.14711903, 0.38781449, 0.784074, 0.40246134,
1075  0.40066814, 0.93058349, 0.43298608, 0.11167385, 0.27113968, 0.33209627, 0.40601194, 0.81328762, 0.68107437,
1076  0.46367926, 0.13120107, 0.38408714, 0.64249068, 0.68798637, 0.35231959, 0.98679773, 0.12638461, 0.75466016,
1077  0.97212161, 0.15569373, 0.55338423, 0.2814492, 0.88983892, 0.33155614, 0.25340461, 0.02949572, 0.08162776,
1078  0.49678983, 0.59962038, 0.20915831, 0.7750513, 0.6575729, 0.50223288, 0.37927361, 0.09678806, 0.22351711,
1079  0.127808, 0.16958427, 0.26687417, 0.37408405};
1080  }
1081  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
1082  {
1083  data = {0.19381403, 0.71283387, 0.74185289, 0.01593182, 0.4237967, 0.30713958, 0.04877154, 0.32839586, 0.55966269,
1084  0.86166257, 0.13164395, 0.18967966, 0.52716562, 0.75501117, 0.89099129, 0.91181301, 0.56299847, 0.84040689,
1085  0.42003362, 0.54417536, 0.91786624, 0.24179691, 0.80097938, 0.52312247, 0.49135109, 0.06204171, 0.32918368,
1086  0.19109569, 0.27910843, 0.13869181, 0.39276429, 0.84432737, 0.55296738, 0.58336158, 0.42912991, 0.73847165,
1087  0.70821508, 0.44336715, 0.34394486, 0.81857914, 0.17582283, 0.85206451, 0.00962322, 0.6018576, 0.77709871,
1088  0.9363809, 0.77303195, 0.79399817, 0.64872202, 0.90561921, 0.34909147, 0.5382709, 0.4735065, 0.97592345,
1089  0.64042891, 0.98233348, 0.61072865, 0.99648271, 0.93723708, 0.12341335, 0.87404106, 0.52492966, 0.50025206,
1090  0.32956586, 0.35388674, 0.41701219, 0.35787114, 0.78154075, 0.19389593, 0.56085759, 0.42076409, 0.45505835,
1091  0.13691315, 0.92741853, 0.65416634, 0.01324141, 0.70580805, 0.36063625, 0.20206282, 0.04019175, 0.3161708,
1092  0.8021294, 0.47419179, 0.58339627, 0.94680233, 0.14275504, 0.51723762, 0.88195736, 0.02861162, 0.54720941,
1093  0.47704361, 0.72112318, 0.71249342, 0.57327699, 0.82174918, 0.65460258, 0.58492448, 0.0654615, 0.23514782,
1094  0.56317195, 0.99078012, 0.16018222, 0.98232388, 0.48021303, 0.45997915, 0.22901306, 0.30486665, 0.47519321,
1095  0.11869839, 0.25773838, 0.30733499, 0.03014402, 0.41846284, 0.51370103, 0.14486378, 0.91023931, 0.45369315,
1096  0.18793261, 0.51507439, 0.46019929, 0.67773434, 0.20830221, 0.59268401, 0.48456955, 0.9678142, 0.50709602,
1097  0.85130517, 0.60737725};
1098  }
1099  return data;
1100 }

◆ testAccumulate()

void testAccumulate ( OneBodyDensityMatrices obdm,
RefVector< MCPWalker > &  walkers,
RefVector< ParticleSet > &  psets,
RefVector< TrialWaveFunction > &  twfcs,
StdRandom< T > &  rng 
)
inline

no change test for accumulate

Definition at line 144 of file test_OneBodyDensityMatrices.cpp.

References OneBodyDensityMatricesTests< T >::checkData(), OperatorEstBase::data_, qmcplusplus::generate_test_data, OneBodyDensityMatricesTests< T >::getAccumulateData(), OneBodyDensityMatrices::implAccumulate(), and qmcplusplus::hdf::walkers.

Referenced by qmcplusplus::TEST_CASE().

149  {
150  obdm.implAccumulate(walkers, psets, twfcs, rng);
151  Data data(getAccumulateData());
152  auto& returned_data = obdm.data_;
153  if constexpr (generate_test_data)
154  FAIL_CHECK("Test always fails when generating new test reference data.");
155  else
156  checkData(data.data(), returned_data.data(), data.size());
157  }
void checkData(Real *ref_in, Real *test_in, size_t size)
Checking approximate equality for complex valued data as two reals is not consistent with testing pra...
const char walkers[]
Definition: HDFVersion.h:36
constexpr bool generate_test_data
set to true to generate new random R for particles.

◆ testCopyConstructor()

void testCopyConstructor ( const OneBodyDensityMatrices obdm)
inline

Definition at line 67 of file test_OneBodyDensityMatrices.cpp.

References qmcplusplus::CHECK(), OperatorEstBase::data_, and OneBodyDensityMatrices::sampling_.

Referenced by qmcplusplus::TEST_CASE().

68  {
69  OneBodyDensityMatrices obdm2(obdm);
70  CHECK(obdm.sampling_ == obdm2.sampling_);
71  CHECK(obdm.data_ != obdm2.data_);
72  }
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testEvaluateMatrix()

void testEvaluateMatrix ( OneBodyDensityMatrices obdm,
ParticleSet pset,
TrialWaveFunction trial_wavefunction,
MCPWalker walker,
StdRandom< T > &  rng 
)
inline

no change test for evaluateMatrix.

Definition at line 161 of file test_OneBodyDensityMatrices.cpp.

References OneBodyDensityMatricesTests< T >::checkData(), OperatorEstBase::data_, OneBodyDensityMatrices::evaluateMatrix(), qmcplusplus::generate_test_data, OneBodyDensityMatricesInput::get_integrator(), OneBodyDensityMatricesTests< T >::getEvaluateMatrixData(), OneBodyDensityMatrices::input_, qmcplusplus::pset, and qmcplusplus::walker.

Referenced by qmcplusplus::TEST_CASE().

166  {
167  obdm.evaluateMatrix(pset, trial_wavefunction, walker, rng);
168  Data data(getEvaluateMatrixData(obdm.input_.get_integrator()));
169  auto& returned_data = obdm.data_;
170  if constexpr (generate_test_data)
171  FAIL_CHECK("Test always fails when generating new test reference data.");
172  else
173  checkData(returned_data.data(), data.data(), data.size());
174  }
void checkData(Real *ref_in, Real *test_in, size_t size)
Checking approximate equality for complex valued data as two reals is not consistent with testing pra...
constexpr bool generate_test_data
set to true to generate new random R for particles.

◆ testGenerateSamples()

void testGenerateSamples ( ValidOneBodyDensityMatricesInput::valid  input,
OneBodyDensityMatrices obdm,
ParticleSet pset_target,
StdRandom< T > &  rng 
)
inline

Definition at line 75 of file test_OneBodyDensityMatrices.cpp.

References qmcplusplus::CHECK(), OneBodyDensityMatrices::generateSamples(), OneBodyDensityMatrices::nmoves_, OHMMS_DIM, qmcplusplus::pow(), qmcplusplus::pset_target, and OneBodyDensityMatrices::samples_.

Referenced by OneBodyDensityMatricesTests< T >::testGenerateSamplesForSpinor().

79  {
80  using Input = ValidOneBodyDensityMatricesInput;
81  switch (input)
82  {
83  case (Input::valid::VANILLA):
84  obdm.generateSamples(1.0, pset_target, rng);
85  CHECK(obdm.nmoves_ == 64);
86  break;
87  case (Input::valid::SCALE):
88  obdm.generateSamples(1.0, pset_target, rng);
89  CHECK(obdm.nmoves_ == 0);
90  break;
91  case (Input::valid::GRID):
92  obdm.generateSamples(1.0, pset_target, rng);
93  CHECK(obdm.nmoves_ == 0);
94  CHECK(obdm.samples_ == pow(22, OHMMS_DIM));
95  break;
96  }
97  }
testing::ValidSpinDensityInput input
#define OHMMS_DIM
Definition: config.h:64
MakeReturn< BinaryNode< FnPow, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t pow(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testGenerateSamplesForSpinor()

void testGenerateSamplesForSpinor ( ValidOneBodyDensityMatricesInput::valid  input,
OneBodyDensityMatrices obdm,
ParticleSet pset_target,
StdRandom< T > &  rng 
)
inline

Definition at line 99 of file test_OneBodyDensityMatrices.cpp.

References qmcplusplus::abs(), qmcplusplus::CHECK(), qmcplusplus::Units::charge::e, OneBodyDensityMatrices::is_spinor_, qmcplusplus::pset_target, OneBodyDensityMatrices::spcur_, and OneBodyDensityMatricesTests< T >::testGenerateSamples().

103  {
105  //confirm that the spins were sampled, will be zero if not
106  CHECK(obdm.is_spinor_ == true);
107  CHECK(std::abs(obdm.spcur_) > 1e-8);
108  }
testing::ValidSpinDensityInput input
void testGenerateSamples(ValidOneBodyDensityMatricesInput::valid input, OneBodyDensityMatrices &obdm, ParticleSet &pset_target, StdRandom< T > &rng)
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testRegisterAndWrite()

void testRegisterAndWrite ( OneBodyDensityMatrices obdm)
inline

Definition at line 176 of file test_OneBodyDensityMatrices.cpp.

References OneBodyDensityMatrices::basis_size_, OneBodyDensityMatricesTests< T >::checkData(), hdf_archive::close(), hdf_archive::create(), OperatorEstBase::data_, OneBodyDensityMatricesTests< T >::getUniqueSpinData(), qmcplusplus::okay, hdf_archive::open(), hdf_archive::readSlabReshaped(), OneBodyDensityMatrices::registerOperatorEstimator(), qmcplusplus::REQUIRE(), hdf_path::string(), and OperatorEstBase::write().

Referenced by qmcplusplus::TEST_CASE().

177  {
178  //this test is just going to set some arbitrary data, not actually calculate anything.
179  //then we will write this data to the hdf5
180  //then we will open and read the hdf5 and make sure the up and down data are properly written
181 
182  obdm.data_ = getUniqueSpinData();
183  hdf_archive hd;
184  std::string test_file{"1rdm_test.hdf"};
185  bool okay = hd.create(test_file);
186  REQUIRE(okay);
187 
188  obdm.registerOperatorEstimator(hd);
189  obdm.write(hd);
190  hd.close();
191 
192  hdf_archive hd_read;
193  okay = hd_read.open(test_file);
194  REQUIRE(okay);
195  Data up_data;
196  Data dn_data;
197 
198  hdf_path up_path = {"OneBodyDensityMatrices/number_matrix/u/value"};
199  hdf_path dn_path = {"OneBodyDensityMatrices/number_matrix/d/value"};
200 
201  size_t nb = obdm.basis_size_;
202  size_t down_offset = 0;
203  if constexpr (IsComplex_t<OneBodyDensityMatrices::Value>::value)
204  {
205  std::array<size_t, 4> shape = {1, nb, nb, 2};
206  hd_read.readSlabReshaped(up_data, shape, up_path.string());
207  hd_read.readSlabReshaped(dn_data, shape, dn_path.string());
208  down_offset = nb * nb * 2; //for real and imag
209  }
210  else if constexpr (std::is_floating_point<OneBodyDensityMatrices::Value>::value)
211  {
212  std::array<size_t, 3> shape = {1, nb, nb};
213  hd_read.readSlabReshaped(up_data, shape, up_path.string());
214  hd_read.readSlabReshaped(dn_data, shape, dn_path.string());
215  down_offset = nb * nb;
216  }
217  //The data in obdm is the reference data, we need to check that
218  //what was read from the hdf5 is consistent
219  checkData(obdm.data_.data(), up_data.data(), up_data.size());
220  checkData(obdm.data_.data() + down_offset, dn_data.data(), dn_data.size());
221  }
void checkData(Real *ref_in, Real *test_in, size_t size)
Checking approximate equality for complex valued data as two reals is not consistent with testing pra...
REQUIRE(std::filesystem::exists(filename))

The documentation for this class was generated from the following files: