QMCPACK
MomentumDistributionInput.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2023 QMCPACK developers.
6 //
7 // File developed by: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
8 //
9 // Some code refactored from: MomentumEstimator.h
10 //////////////////////////////////////////////////////////////////////////////////////
11 #ifndef QMCPLUSPLUS_MOMENTUMDISTRIBUTIONINPUT_H
12 #define QMCPLUSPLUS_MOMENTUMDISTRIBUTIONINPUT_H
13 
14 #include "InputSection.h"
15 
16 namespace qmcplusplus
17 {
18 
19 class MomentumDistribution;
20 
21 /** Native representation for Momentum Distribution Estimators inputs
22  */
24 {
25 public:
28 
30  {
31  public:
32  // clang-format: off
34  {
35  section_name = "MomentumDistribution";
36  attributes = {"type", "name", "samples", "kmax", "kmax0", "kmax1", "kmax2"};
37  strings = {"type", "name"};
38  integers = {"samples"};
39  reals = {"kmax", "kmax0", "kmax1", "kmax2"};
40  // default_values = {{"name", std::string("nofk")}, {"samples", int(40)}, {"kmax", Real(0.0)},
41  // {"kmax0", Real(0.0)}, {"kmax1", Real(0.0)}, {"kmax2", Real(0.0)}};
42  }
43  // clang-format: on
44  };
45 
46  MomentumDistributionInput(xmlNodePtr cur);
47  /** default copy constructor
48  * This is required due to MDI being part of a variant used as a vector element.
49  */
51 private:
53 
54  std::string name_{"nofk"};
55  std::string type_;
56  ///number of samples
57  int samples_ = 40;
58  //maximum k-value in the k-grid in cartesian coordinates
59  Real kmax_ = 0.0;
60  //maximum k-values in the k-grid along the reciprocal cell axis
61  Real kmax0_ = 0.0;
62  Real kmax1_ = 0.0;
63  Real kmax2_ = 0.0;
64 
65 public:
66  const std::string& get_name() const { return name_; }
67  const std::string& get_type() const { return type_; }
68  const int& get_samples() const { return samples_; }
69  const Real& get_kmax() const { return kmax_; }
70  const Real& get_kmax0() const { return kmax0_; }
71  const Real& get_kmax1() const { return kmax1_; }
72  const Real& get_kmax2() const { return kmax2_; }
73 };
74 
75 } // namespace qmcplusplus
76 #endif /* MOMENTUMDISTRIBUTIONINPUT_H */
std::unordered_set< std::string > strings
Definition: InputSection.h:67
std::unordered_set< std::string > reals
Definition: InputSection.h:72
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Class that collects momentum distribution of electrons.
MomentumDistributionInputSection input_section_
std::unordered_set< std::string > integers
Definition: InputSection.h:71
std::unordered_set< std::string > attributes
Definition: InputSection.h:62
QTFull::RealType FullPrecRealType
Definition: Configuration.h:66
Input section provides basic parsing and a uniform method of access to the raw parsed input...
Definition: InputSection.h:37
std::string section_name
"Name" of the input section, you must define this in the subtype and the ename, name, type, or method must match.
Definition: InputSection.h:57
Native representation for Momentum Distribution Estimators inputs.