QMCPACK
MagnetizationDensityInput Class Reference
+ Collaboration diagram for MagnetizationDensityInput:

Classes

struct  DerivedParameters
 
class  MagnetizationDensityInputSection
 

Public Types

enum  Integrator { SIMPSONS, MONTECARLO }
 
using Real = QMCTraits::FullPrecRealType
 
using POLT = PtclOnLatticeTraits
 
using Lattice = POLT::ParticleLayout
 
using PosType = TinyVector< Real, OHMMS_DIM >
 
using Consumer = MagnetizationDensity
 

Public Member Functions

 MagnetizationDensityInput (xmlNodePtr node)
 
 MagnetizationDensityInput (const MagnetizationDensityInput &)=default
 default copy constructor This is required due to SDI being part of a variant used as a vector element. More...
 
PosType get_corner () const
 
PosType get_center () const
 
PosType get_grid () const
 
PosType get_dr () const
 
bool get_corner_defined () const
 
bool get_center_defined () const
 
int get_nsamples () const
 
Integrator get_integrator () const
 
bool get_write_report () const
 
bool get_save_memory () const
 
DerivedParameters calculateDerivedParameters (const Lattice &lattice) const
 Derived parameters of SpinDensity. More...
 

Static Public Attributes

static const std::unordered_map< std::string, std::any > lookup_input_enum_value
 
static constexpr int DIM = QMCTraits::DIM
 

Private Attributes

MagnetizationDensityInputSection input_section_
 
std::string myName_ = "MagnetizationDensityInput"
 
Integrator integrator_ = Integrator::SIMPSONS
 
int nsamples_ = 9
 
PosType corner_ = {0.0, 0.0, 0.0}
 
PosType dr_ = {0.1, 0.1, 0.1}
 
PosType grid_real_ = {10, 10, 10}
 
PosType center_ = {0.0, 0.0, 0.0}
 
bool write_report_ = false
 
bool save_memory_ = false
 
bool have_dr_ = false
 these are necessary for calculateDerivedParameters More...
 
bool have_grid_ = false
 
bool have_center_ = false
 
bool have_corner_ = false
 

Detailed Description

Definition at line 24 of file MagnetizationDensityInput.h.


Class Documentation

◆ qmcplusplus::MagnetizationDensityInput::DerivedParameters

struct qmcplusplus::MagnetizationDensityInput::DerivedParameters

Definition at line 62 of file MagnetizationDensityInput.h.

+ Collaboration diagram for MagnetizationDensityInput::DerivedParameters:
Class Members
PosType corner
TinyVector< int, DIM > gdims
TinyVector< int, DIM > grid
size_t npoints

Member Typedef Documentation

◆ Consumer

Definition at line 42 of file MagnetizationDensityInput.h.

◆ Lattice

Definition at line 40 of file MagnetizationDensityInput.h.

◆ POLT

Definition at line 39 of file MagnetizationDensityInput.h.

◆ PosType

Definition at line 41 of file MagnetizationDensityInput.h.

◆ Real

Definition at line 38 of file MagnetizationDensityInput.h.

Member Enumeration Documentation

◆ Integrator

enum Integrator
strong
Enumerator
SIMPSONS 
MONTECARLO 

Definition at line 27 of file MagnetizationDensityInput.h.

28  {
29  SIMPSONS,
30  MONTECARLO
31  };

Constructor & Destructor Documentation

◆ MagnetizationDensityInput() [1/2]

MagnetizationDensityInput ( xmlNodePtr  node)

Definition at line 24 of file MagnetizationDensityInput.cpp.

References MagnetizationDensityInput::center_, MagnetizationDensityInput::corner_, MagnetizationDensityInput::dr_, MagnetizationDensityInput::grid_real_, MagnetizationDensityInput::have_center_, MagnetizationDensityInput::have_corner_, MagnetizationDensityInput::have_dr_, MagnetizationDensityInput::have_grid_, MagnetizationDensityInput::input_section_, MagnetizationDensityInput::integrator_, LAMBDA_setIfInInput, MagnetizationDensityInput::nsamples_, and InputSection::readXML().

25 {
27  auto setIfInInput = LAMBDA_setIfInInput;
28  setIfInInput(nsamples_, "samples");
29  setIfInInput(integrator_, "integrator");
30  have_center_ = setIfInInput(center_, "center");
31  have_corner_ = setIfInInput(corner_, "corner");
32  have_grid_ = setIfInInput(grid_real_, "grid");
33  have_dr_ = setIfInInput(dr_, "dr");
34 }
#define LAMBDA_setIfInInput
If tag is present in input_secution set its variable.
void readXML(xmlNodePtr cur)
Read variable values (initialize) from XML input, call checkValid.
bool have_dr_
these are necessary for calculateDerivedParameters
MagnetizationDensityInputSection input_section_

◆ MagnetizationDensityInput() [2/2]

default copy constructor This is required due to SDI being part of a variant used as a vector element.

Member Function Documentation

◆ calculateDerivedParameters()

MagnetizationDensityInput::DerivedParameters calculateDerivedParameters ( const Lattice lattice) const

Derived parameters of SpinDensity.

These require the cell the SpinDensity is evaluated over, the caller (SpinDensityNew) either gets this from the input and passes it back or passes in the cell from the relevant ParticleSet.

Definition at line 37 of file MagnetizationDensityInput.cpp.

References qmcplusplus::ceil(), MagnetizationDensityInput::center_, MagnetizationDensityInput::corner_, MagnetizationDensityInput::DIM, qmcplusplus::dot(), MagnetizationDensityInput::dr_, MagnetizationDensityInput::grid_real_, MagnetizationDensityInput::have_center_, MagnetizationDensityInput::have_corner_, MagnetizationDensityInput::have_dr_, MagnetizationDensityInput::have_grid_, qmcplusplus::lattice, and qmcplusplus::sqrt().

Referenced by qmcplusplus::TEST_CASE().

39 {
40  PosType corner = 0.0;
41  //Corner and center can be taken care of by defaults. corner=0 if not specified.
42  if (have_center_)
43  corner = center_ - lattice.Center;
44  else if (have_corner_)
45  corner = corner_;
46 
48 
49  //dr or grid must be specified to perform the grid math. Input already checked before we get here.
50  if (have_dr_)
51  for (int d = 0; d < DIM; ++d)
52  grid[d] = (int)std::ceil(std::sqrt(dot(lattice.Rv[d], lattice.Rv[d])) / dr_[d]);
53  else if (have_grid_)
54  for (int d = 0; d < DIM; ++d)
55  grid[d] = (int)std::ceil(grid_real_[d]);
56 
57  size_t npoints = 1;
58  for (int d = 0; d < DIM; ++d)
59  npoints *= grid[d];
60 
62  gdims[0] = npoints / grid[0];
63  for (int d = 1; d < DIM; ++d)
64  gdims[d] = gdims[d - 1] / grid[d];
65 
66  return {corner, grid, gdims, npoints};
67 }
QMCTraits::PosType PosType
CrystalLattice< OHMMS_PRECISION, OHMMS_DIM > lattice
MakeReturn< UnaryNode< FnCeil, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t ceil(const Vector< T1, C1 > &l)
bool have_dr_
these are necessary for calculateDerivedParameters
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)

◆ get_center()

PosType get_center ( ) const
inline

◆ get_center_defined()

bool get_center_defined ( ) const
inline

◆ get_corner()

PosType get_corner ( ) const
inline

◆ get_corner_defined()

bool get_corner_defined ( ) const
inline

◆ get_dr()

PosType get_dr ( ) const
inline

◆ get_grid()

PosType get_grid ( ) const
inline

◆ get_integrator()

◆ get_nsamples()

◆ get_save_memory()

bool get_save_memory ( ) const
inline

◆ get_write_report()

bool get_write_report ( ) const
inline

Member Data Documentation

◆ center_

◆ corner_

◆ DIM

◆ dr_

◆ grid_real_

◆ have_center_

◆ have_corner_

◆ have_dr_

bool have_dr_ = false
private

these are necessary for calculateDerivedParameters

If we are going to later write out a canonical input for this input then they are needed as well.

Definition at line 125 of file MagnetizationDensityInput.h.

Referenced by MagnetizationDensityInput::calculateDerivedParameters(), and MagnetizationDensityInput::MagnetizationDensityInput().

◆ have_grid_

◆ input_section_

◆ integrator_

◆ lookup_input_enum_value

const std::unordered_map<std::string, std::any> lookup_input_enum_value
inlinestatic
Initial value:
{{"integrator-simpsons", Integrator::SIMPSONS},
{"integrator-montecarlo", Integrator::MONTECARLO}}

Definition at line 35 of file MagnetizationDensityInput.h.

Referenced by MagnetizationDensityInput::MagnetizationDensityInputSection::assignAnyEnum().

◆ myName_

std::string myName_ = "MagnetizationDensityInput"
private

Definition at line 109 of file MagnetizationDensityInput.h.

◆ nsamples_

◆ save_memory_

bool save_memory_ = false
private

◆ write_report_

bool write_report_ = false
private

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