QMCPACK
MagnetizationDensityTests Class Reference
+ Collaboration diagram for MagnetizationDensityTests:

Public Member Functions

void testCopyConstructor (const MagnetizationDensity &magdens)
 
void testData (const MagnetizationDensity &magdens, const Data &data)
 
void testIntegrationFunctions (const MagnetizationDensity &magdens)
 
void testGrids (const MagnetizationDensity &magdens)
 
int computeBinAccessor (const MagnetizationDensity &magdens, const Position &r, const int spin_index)
 

Private Types

using WF = WaveFunctionTypes< QMCTraits::ValueType, QMCTraits::FullPrecValueType >
 
using Position = QMCTraits::PosType
 
using Data = MagnetizationDensity::Data
 
using Real = WF::Real
 
using Value = WF::Value
 

Detailed Description

Definition at line 47 of file test_MagnetizationDensity.cpp.

Member Typedef Documentation

◆ Data

Definition at line 51 of file test_MagnetizationDensity.cpp.

◆ Position

using Position = QMCTraits::PosType
private

Definition at line 50 of file test_MagnetizationDensity.cpp.

◆ Real

using Real = WF::Real
private

Definition at line 52 of file test_MagnetizationDensity.cpp.

◆ Value

using Value = WF::Value
private

Definition at line 53 of file test_MagnetizationDensity.cpp.

◆ WF

Member Function Documentation

◆ computeBinAccessor()

int computeBinAccessor ( const MagnetizationDensity magdens,
const Position r,
const int  spin_index 
)
inline

Definition at line 110 of file test_MagnetizationDensity.cpp.

References MagnetizationDensity::computeBin().

111  {
112  return magdens.computeBin(r, spin_index);
113  }

◆ testCopyConstructor()

void testCopyConstructor ( const MagnetizationDensity magdens)
inline

Definition at line 56 of file test_MagnetizationDensity.cpp.

References MagnetizationDensity::center_, qmcplusplus::CHECK(), OperatorEstBase::data_locality_, MagnetizationDensity::gdims_, MagnetizationDensity::grid_, MagnetizationDensity::integrator_, MagnetizationDensity::nsamples_, OHMMS_DIM, and MagnetizationDensity::rcorner_.

57  {
58  MagnetizationDensity magdens2(magdens);
59  CHECK(magdens.nsamples_ == magdens2.nsamples_);
60  CHECK(magdens.integrator_ == magdens2.integrator_);
61  CHECK(magdens.data_locality_ == magdens2.data_locality_);
62  for (int idim = 0; idim < OHMMS_DIM; idim++)
63  {
64  CHECK(magdens.gdims_[idim] == magdens2.gdims_[idim]);
65  CHECK(magdens.grid_[idim] == magdens2.grid_[idim]);
66  CHECK(magdens.rcorner_[idim] == Approx(magdens2.rcorner_[idim]));
67  CHECK(magdens.center_[idim] == Approx(magdens2.center_[idim]));
68  }
69  }
#define OHMMS_DIM
Definition: config.h:64
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testData()

void testData ( const MagnetizationDensity magdens,
const Data data 
)
inline

Definition at line 71 of file test_MagnetizationDensity.cpp.

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

72  {
73  for (size_t i = 0; i < data.size(); i++)
74  CHECK(magdens.data_[i] == Approx(data[i]));
75  }
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testGrids()

void testGrids ( const MagnetizationDensity magdens)
inline

Definition at line 88 of file test_MagnetizationDensity.cpp.

References qmcplusplus::CHECK(), MagnetizationDensity::generateRandomGrid(), and MagnetizationDensity::generateUniformGrid().

89  {
90  int npoints = 5;
91  std::vector<Real> xgrid(npoints);
92  Real start = 0.0;
93  Real stop = 1.5;
94 
95  Real delta = (stop - start) / Real(npoints - 1);
96 
97  magdens.generateUniformGrid(xgrid, start, stop);
98  for (int i = 0; i < npoints; i++)
99  CHECK(xgrid[i] == Approx(start + i * delta));
100 
101  FakeRandom rng;
102  magdens.generateRandomGrid(xgrid, rng, start, stop);
103 
104  for (int i = 0; i < npoints; i++)
105  {
106  bool ok = (xgrid[i] >= start) && (xgrid[i] <= stop);
107  CHECK(ok);
108  }
109  }
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

◆ testIntegrationFunctions()

void testIntegrationFunctions ( const MagnetizationDensity magdens)
inline

Definition at line 77 of file test_MagnetizationDensity.cpp.

References qmcplusplus::CHECK(), and MagnetizationDensity::integrateBySimpsonsRule().

78  {
79  //For xgrid, we use dx=1.0 from 0 to 8.
80  //For ygrid, we use f(x)=x^3.
81  std::vector<Value> ygrid = {0, 1, 8, 27, 64, 125, 216, 343, 512};
82  Value result_simpsons(0.0);
83  result_simpsons = magdens.integrateBySimpsonsRule(ygrid, Real(1.0));
84 
85  CHECK(std::real(result_simpsons) == Approx(Real(1024)));
86  }
QMCTraits::RealType real
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))

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