QMCPACK
QMCFiniteSize Class Reference

Class to handle FS corrections. More...

+ Inheritance diagram for QMCFiniteSize:
+ Collaboration diagram for QMCFiniteSize:

Public Types

using LRHandlerType = LRCoulombSingleton::LRHandlerType
 
using GridType = LRCoulombSingleton::GridType
 
using RadFunctorType = LRCoulombSingleton::RadFunctorType
 
using mRealType = LRHandlerType::mRealType
 
using Grid_t = SkParserBase::Grid_t
 
using RealType = QMCTraits::RealType
 
using FullPrecRealType = QMCTraits::FullPrecRealType
 
using PosType = QMCTraits::PosType
 

Public Member Functions

 QMCFiniteSize ()
 
 QMCFiniteSize (SkParserBase *skparser_i)
 
 ~QMCFiniteSize ()
 
void setSkParser (SkParserBase *skparser_i)
 
bool validateXML () override
 validate the input file More...
 
bool execute () override
 execute the main function More...
 
void build_spherical_grid (IndexType mtheta, IndexType mphi)
 
void getSkInfo (UBspline_3d_d *spline, std::vector< RealType > &symmatelem)
 
UBspline_3d_d * getSkSpline (std::vector< RealType > sk, RealType limit=1.0)
 
RealType sphericalAvgSk (UBspline_3d_d *spline, RealType k)
 
RealType integrate_spline (UBspline_1d_d *spline, RealType a, RealType b, IndexType N)
 
UBspline_1d_d * spline_clamped (std::vector< RealType > &grid, std::vector< RealType > &vals, RealType lVal, RealType rVal)
 
void initialize ()
 
void calcPotentialCorrection ()
 
void calcLeadingOrderCorrections ()
 
void summary ()
 
RealType calcPotentialDiscrete (std::vector< RealType > sk)
 
RealType calcPotentialInt (std::vector< RealType > sk)
 
- Public Member Functions inherited from QMCAppBase
 QMCAppBase ()
 constructor More...
 
virtual ~QMCAppBase ()
 destructor More...
 
bool parse (const std::string &infile)
 parse an input file More...
 
void saveXml ()
 save the xml document More...
 
const std::string & getTitle () const
 

Private Member Functions

bool processPWH (xmlNodePtr cur)
 
void wfnPut (xmlNodePtr cur)
 
void initBreakup ()
 
void printSkRawSphAvg (const std::vector< RealType > &sk)
 
void printSkSplineSphAvg (UBspline_3d_d *spline)
 

Private Attributes

SkParserBaseskparser
 
ParticleSetPool ptclPool
 
RealType myRcut
 
RealType myConst
 
ParticleSetP
 
RealType h
 
std::vector< PosTypesphericalgrid
 
std::unique_ptr< LRHandlerTypeAA
 
std::unique_ptr< RadFunctorTyperVs
 
Grid_t gridx
 
Grid_t gridy
 
Grid_t gridz
 
KContainer Klist
 
std::vector< TinyVector< int, OHMMS_DIM > > kpts
 
std::vector< RealTypeSK_raw
 
std::vector< RealTypeSKerr_raw
 
std::vector< RealTypeSK
 
std::vector< RealTypeSKerr
 
IndexType mtheta
 
IndexType mphi
 
IndexType NumSamples
 
RealType Ne
 
RealType Vol
 
RealType rs
 
RealType rho
 
RealType tlo
 
RealType tloerr
 
RealType vlo
 
RealType vloerr
 
RealType Vfs
 
RealType Vfserr
 

Additional Inherited Members

- Protected Member Functions inherited from QMCAppBase
bool pushDocument (const std::string &infile)
 open a new document More...
 
void popDocument ()
 close the current document More...
 
- Protected Attributes inherited from QMCAppBase
std::stack< Libxml2Document * > xml_doc_stack_
 stack of xml document More...
 
ProjectData my_project_
 project description More...
 
RandomNumberControl my_random_control_
 random number controller More...
 
- Private Types inherited from QMCTraits
enum  { DIM = OHMMS_DIM, DIM_VGL = OHMMS_DIM + 2 }
 
using QTBase = QMCTypes< OHMMS_PRECISION, DIM >
 
using QTFull = QMCTypes< OHMMS_PRECISION_FULL, DIM >
 
using RealType = QTBase::RealType
 
using ComplexType = QTBase::ComplexType
 
using ValueType = QTBase::ValueType
 
using PosType = QTBase::PosType
 
using GradType = QTBase::GradType
 
using TensorType = QTBase::TensorType
 
using IndexType = OHMMS_INDEXTYPE
 define other types More...
 
using FullPrecRealType = QTFull::RealType
 
using FullPrecValueType = QTFull::ValueType
 
using PropertySetType = RecordNamedProperty< FullPrecRealType >
 define PropertyList_t More...
 
using PtclGrpIndexes = std::vector< std::pair< int, int > >
 

Detailed Description

Class to handle FS corrections.

Implements finite size corrections from Holzmann et al., PRB (2016) Currently implements Eqn. (30), using a long-rang break up of the Coulomb interaction and a spline representation of S(k). S(k) is obtained from SkParserBase

Definition at line 19 of file QMCFiniteSize.h.

Member Typedef Documentation

◆ FullPrecRealType

Definition at line 28 of file QMCFiniteSize.h.

◆ Grid_t

Definition at line 26 of file QMCFiniteSize.h.

◆ GridType

Definition at line 23 of file QMCFiniteSize.h.

◆ LRHandlerType

◆ mRealType

using mRealType = LRHandlerType::mRealType

Definition at line 25 of file QMCFiniteSize.h.

◆ PosType

Definition at line 29 of file QMCFiniteSize.h.

◆ RadFunctorType

◆ RealType

Definition at line 27 of file QMCFiniteSize.h.

Constructor & Destructor Documentation

◆ QMCFiniteSize() [1/2]

Definition at line 13 of file QMCFiniteSize.cpp.

References qmcplusplus::app_log(), QMCFiniteSize::build_spherical_grid(), QMCFiniteSize::h, QMCFiniteSize::mphi, and QMCFiniteSize::mtheta.

14  : skparser(NULL), ptclPool(NULL), myRcut(0.0), myConst(0.0), P(NULL), h(0.0), sphericalgrid(0)
15 {
16  IndexType mtheta = 80;
17  IndexType mphi = 80;
18  app_log() << "Building spherical grid. n_theta x n_phi = " << mtheta << " x " << mphi << std::endl;
20  h = 0.1;
21 }
std::ostream & app_log()
Definition: OutputManager.h:65
void build_spherical_grid(IndexType mtheta, IndexType mphi)
std::vector< PosType > sphericalgrid
Definition: QMCFiniteSize.h:61
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56

◆ QMCFiniteSize() [2/2]

QMCFiniteSize ( SkParserBase skparser_i)

Definition at line 23 of file QMCFiniteSize.cpp.

References QMCFiniteSize::build_spherical_grid(), QMCFiniteSize::h, QMCFiniteSize::mphi, QMCFiniteSize::mtheta, and QMCFiniteSize::NumSamples.

24  : skparser(skparser_i), ptclPool(NULL), myRcut(0.0), myConst(0.0), P(NULL), h(0.0), sphericalgrid(0)
25 {
26  mtheta = 80;
27  mphi = 80;
28  h = 0.1;
29  NumSamples = 1000;
31 }
void build_spherical_grid(IndexType mtheta, IndexType mphi)
std::vector< PosType > sphericalgrid
Definition: QMCFiniteSize.h:61
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56

◆ ~QMCFiniteSize()

~QMCFiniteSize ( )
inline

Definition at line 32 of file QMCFiniteSize.h.

32 {};

Member Function Documentation

◆ build_spherical_grid()

void build_spherical_grid ( IndexType  mtheta,
IndexType  mphi 
)

Definition at line 33 of file QMCFiniteSize.cpp.

References qmcplusplus::cos(), qmcplusplus::Units::distance::m, QMCFiniteSize::mphi, QMCFiniteSize::mtheta, qmcplusplus::n, qmcplusplus::sin(), QMCFiniteSize::sphericalgrid, and qmcplusplus::sqrt().

Referenced by QMCFiniteSize::QMCFiniteSize().

34 {
35  //Spherical grid from https://www.cmu.edu/biolphys/deserno/pdf/sphere_equi.pdf
36  RealType alpha = 4.0 * M_PI / (mtheta * mphi);
37  RealType d = std::sqrt(alpha);
38  RealType Mt = int(std::round(M_PI / d));
39  RealType Dt = M_PI / Mt;
40  RealType Dp = alpha / Dt;
41  int count = 0;
42  for (int m = 0; m < Mt; m++)
43  {
44  RealType theta = M_PI * (m + 0.5) / Mt;
45  RealType Mp = int(std::round(2 * M_PI * std::sin(theta) / Dp));
46  for (int n = 0; n < Mp; n++)
47  {
48  IndexType gindex = m * mtheta + n;
49  RealType phi = 2 * M_PI * n / Mp;
50  PosType tmp;
51  tmp[0] = std::sin(theta) * std::cos(phi);
52  tmp[1] = std::sin(theta) * std::sin(phi);
53  tmp[2] = std::cos(theta);
54  sphericalgrid.push_back(tmp);
55  }
56  }
57 }
MakeReturn< UnaryNode< FnSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sin(const Vector< T1, C1 > &l)
QMCTraits::PosType PosType
MakeReturn< UnaryNode< FnCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cos(const Vector< T1, C1 > &l)
std::vector< PosType > sphericalgrid
Definition: QMCFiniteSize.h:61
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
QMCTraits::RealType RealType

◆ calcLeadingOrderCorrections()

void calcLeadingOrderCorrections ( )

Definition at line 541 of file QMCFiniteSize.cpp.

References QMCFiniteSize::getSkInfo(), QMCFiniteSize::getSkSpline(), qmcplusplus::getStats(), QMCFiniteSize::Ne, QMCFiniteSize::NumSamples, QMCFiniteSize::rho, QMCFiniteSize::SK, QMCFiniteSize::SKerr, QMCFiniteSize::tlo, QMCFiniteSize::tloerr, QMCFiniteSize::vlo, and QMCFiniteSize::vloerr.

Referenced by QMCFiniteSize::execute().

542 {
543  RandomGenerator rng;
544 
545  std::vector<RealType> bs(NumSamples);
546 #pragma omp parallel for
547  for (int i = 0; i < NumSamples; i++)
548  {
549  std::vector<RealType> newSK(SK.size());
550  for (int j = 0; j < SK.size(); j++)
551  {
552  FullPrecRealType chi;
553  chi = rng();
554  newSK[j] = SK[j] + SKerr[j] * chi;
555  }
556  UBspline_3d_d* spline = getSkSpline(newSK);
557  std::vector<RealType> Amat;
558  getSkInfo(spline, Amat);
559  bs[i] = (Amat[0] + Amat[1] + Amat[2]) / 3.0;
560  }
561 
562  RealType b, berr;
563  getStats(bs, b, berr);
564 
565  vlo = 2 * M_PI * rho * b / RealType(Ne);
566  vloerr = (2 * M_PI * rho / RealType(Ne)) * berr;
567  tlo = 1.0 / RealType(Ne * b * 8);
568  tloerr = berr / (8 * RealType(Ne) * b * b);
569 }
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
UBspline_3d_d * getSkSpline(std::vector< RealType > sk, RealType limit=1.0)
std::vector< RealType > SKerr
Definition: QMCFiniteSize.h:77
StdRandom< OHMMS_PRECISION_FULL > RandomGenerator
void getSkInfo(UBspline_3d_d *spline, std::vector< RealType > &symmatelem)
std::vector< RealType > SK
Definition: QMCFiniteSize.h:76
QMCTraits::RealType RealType
QMCTraits::FullPrecRealType FullPrecRealType
Definition: QMCFiniteSize.h:28
void getStats(const std::vector< RealType > &vals, RealType &avg, RealType &err, int start)
Simpleaverage and error estimate.
Definition: FSUtilities.cpp:31

◆ calcPotentialCorrection()

void calcPotentialCorrection ( )

Definition at line 501 of file QMCFiniteSize.cpp.

References QMCFiniteSize::calcPotentialDiscrete(), QMCFiniteSize::calcPotentialInt(), qmcplusplus::getStats(), QMCFiniteSize::NumSamples, QMCFiniteSize::SK, QMCFiniteSize::SK_raw, QMCFiniteSize::SKerr, QMCFiniteSize::SKerr_raw, qmcplusplus::sqrt(), QMCFiniteSize::Vfs, and QMCFiniteSize::Vfserr.

Referenced by QMCFiniteSize::execute().

502 {
503  //resample vsums and vints
504  std::vector<RealType> vsums, vints;
505  vsums.resize(NumSamples);
506  vints.resize(NumSamples);
507 
508  RandomGenerator rng;
509 #pragma omp parallel for
510  for (int i = 0; i < NumSamples; i++)
511  {
512  std::vector<RealType> newSK_raw(SK_raw.size());
513  for (int j = 0; j < SK_raw.size(); j++)
514  {
515  FullPrecRealType chi;
516  chi = rng();
517  newSK_raw[j] = SK_raw[j] + SKerr_raw[j] * chi;
518  }
519  vsums[i] = calcPotentialDiscrete(newSK_raw);
520 
521  std::vector<RealType> newSK(SK.size());
522  for (int j = 0; j < SK.size(); j++)
523  {
524  FullPrecRealType chi;
525  chi = rng();
526  newSK[j] = SK[j] + SKerr[j] * chi;
527  }
528  vints[i] = calcPotentialInt(newSK);
529  }
530 
531  RealType vint, vinterr;
532  getStats(vints, vint, vinterr);
533 
534  RealType vsum, vsumerr;
535  getStats(vsums, vsum, vsumerr);
536 
537  Vfs = vint - vsum;
538  Vfserr = std::sqrt(vinterr * vinterr + vsumerr * vsumerr);
539 }
std::vector< RealType > SKerr
Definition: QMCFiniteSize.h:77
StdRandom< OHMMS_PRECISION_FULL > RandomGenerator
RealType calcPotentialInt(std::vector< RealType > sk)
std::vector< RealType > SK
Definition: QMCFiniteSize.h:76
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
QMCTraits::RealType RealType
QMCTraits::FullPrecRealType FullPrecRealType
Definition: QMCFiniteSize.h:28
void getStats(const std::vector< RealType > &vals, RealType &avg, RealType &err, int start)
Simpleaverage and error estimate.
Definition: FSUtilities.cpp:31
std::vector< RealType > SK_raw
Definition: QMCFiniteSize.h:74
std::vector< RealType > SKerr_raw
Definition: QMCFiniteSize.h:75
RealType calcPotentialDiscrete(std::vector< RealType > sk)

◆ calcPotentialDiscrete()

QMCFiniteSize::RealType calcPotentialDiscrete ( std::vector< RealType sk)

Definition at line 460 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, QMCFiniteSize::Klist, and KContainer::kshell.

Referenced by QMCFiniteSize::calcPotentialCorrection().

461 {
462  //This is the \frac{1}{Omega} \sum_{\mathbf{k}} \frac{v_k}{2} S(\mathbf{k}) term.
463  return 0.5 * AA->evaluate_w_sk(Klist.kshell, sk.data());
464 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
std::vector< int > kshell
kpts which belong to the ith-shell [kshell[i], kshell[i+1])
Definition: KContainer.h:61

◆ calcPotentialInt()

QMCFiniteSize::RealType calcPotentialInt ( std::vector< RealType sk)

Definition at line 466 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, QMCFiniteSize::getSkSpline(), QMCFiniteSize::integrate_spline(), QMCFiniteSize::Klist, KContainer::kshell, QMCFiniteSize::sphericalAvgSk(), QMCFiniteSize::spline_clamped(), and QMCFiniteSize::Vol.

Referenced by QMCFiniteSize::calcPotentialCorrection().

467 {
468  auto spline = std::unique_ptr<UBspline_3d_d, void (*)(void*)>{getSkSpline(sk), destroy_Bspline};
469 
470  RealType kmax = AA->get_kc();
471  IndexType ngrid = 2 * Klist.kshell.size() - 1; //make a lager kmesh
472 
473  std::vector<RealType> unigrid1d, k2vksk;
474  RealType dk = kmax / ngrid;
475 
476  unigrid1d.push_back(0.0);
477  k2vksk.push_back(0.0);
478  for (int i = 1; i < ngrid; i++)
479  {
480  RealType kval = i * dk;
481  unigrid1d.push_back(kval);
482  RealType skavg = sphericalAvgSk(spline.get(), kval);
483  RealType k2vk = kval * kval * AA->evaluate_vlr_k(kval); //evaluation for arbitrary kshell for any LRHandler
484  k2vksk.push_back(0.5 * k2vk * skavg);
485  }
486 
487  k2vksk.push_back(0.0);
488  unigrid1d.push_back(kmax);
489 
490  auto integrand =
491  std::unique_ptr<UBspline_1d_d, void (*)(void*)>{spline_clamped(unigrid1d, k2vksk, 0.0, 0.0), destroy_Bspline};
492 
493  //Integrate the spline and compute the thermodynamic limit.
494  RealType integratedval = integrate_spline(integrand.get(), 0.0, kmax, 200);
495  RealType intnorm = Vol / 2.0 / M_PI / M_PI; //The volume factor here is because 1/Vol is
496  //included in QMCPACK's v_k. See CoulombFunctor.
497 
498  return intnorm * integratedval;
499 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
RealType integrate_spline(UBspline_1d_d *spline, RealType a, RealType b, IndexType N)
UBspline_3d_d * getSkSpline(std::vector< RealType > sk, RealType limit=1.0)
RealType sphericalAvgSk(UBspline_3d_d *spline, RealType k)
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
std::vector< int > kshell
kpts which belong to the ith-shell [kshell[i], kshell[i+1])
Definition: KContainer.h:61
QMCTraits::RealType RealType
UBspline_1d_d * spline_clamped(std::vector< RealType > &grid, std::vector< RealType > &vals, RealType lVal, RealType rVal)

◆ execute()

bool execute ( )
overridevirtual

execute the main function

Implements QMCAppBase.

Definition at line 602 of file QMCFiniteSize.cpp.

References QMCFiniteSize::calcLeadingOrderCorrections(), QMCFiniteSize::calcPotentialCorrection(), SkParserBase::get_sk(), SkParserBase::get_sk_raw(), SkParserBase::get_skerr_raw(), QMCFiniteSize::getSkSpline(), QMCFiniteSize::initialize(), SkParserBase::is_normalized(), QMCFiniteSize::Ne, QMCFiniteSize::printSkRawSphAvg(), QMCFiniteSize::printSkSplineSphAvg(), QMCFiniteSize::SK, QMCFiniteSize::SK_raw, QMCFiniteSize::SKerr, QMCFiniteSize::SKerr_raw, QMCFiniteSize::skparser, and QMCFiniteSize::summary().

603 {
604  initialize();
605  //Print Spherical Avg from data
608  if (skparser->is_normalized() == false)
609  {
610  for (int i = 0; i < SK_raw.size(); i++)
611  {
612  SK_raw[i] /= RealType(Ne);
613  SKerr_raw[i] /= RealType(Ne);
614  }
615  }
617 
618  //Print Spherical Avg from spline
619  skparser->get_sk(SK, SKerr); //now have SK on full grid
620  if (skparser->is_normalized() == false)
621  {
622  for (IndexType i = 0; i < SK.size(); i++)
623  {
624  SK[i] /= RealType(Ne);
625  SKerr[i] /= RealType(Ne);
626  }
627  }
628  UBspline_3d_d* sk3d_spline = getSkSpline(SK);
629  printSkSplineSphAvg(sk3d_spline);
630 
633 
634  summary();
635 
636  return true;
637 }
void get_sk(std::vector< RealType > &sk, std::vector< RealType > &skerr)
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
UBspline_3d_d * getSkSpline(std::vector< RealType > sk, RealType limit=1.0)
std::vector< RealType > SKerr
Definition: QMCFiniteSize.h:77
std::vector< RealType > get_skerr_raw()
Definition: SkParserBase.h:35
void printSkRawSphAvg(const std::vector< RealType > &sk)
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
std::vector< RealType > SK
Definition: QMCFiniteSize.h:76
void printSkSplineSphAvg(UBspline_3d_d *spline)
std::vector< RealType > get_sk_raw()
Definition: SkParserBase.h:34
std::vector< RealType > SK_raw
Definition: QMCFiniteSize.h:74
std::vector< RealType > SKerr_raw
Definition: QMCFiniteSize.h:75

◆ getSkInfo()

void getSkInfo ( UBspline_3d_d *  spline,
std::vector< RealType > &  symmatelem 
)

Definition at line 216 of file QMCFiniteSize.cpp.

References ParticleSet::getLattice(), QMCFiniteSize::h, and QMCFiniteSize::P.

Referenced by QMCFiniteSize::calcLeadingOrderCorrections(), and QMCFiniteSize::printSkSplineSphAvg().

217 {
218  symmatelem.resize(6);
219  FullPrecRealType sx(0), sy(0), sz(0), sxy(0), sxz(0), syz(0);
220  RealType h2 = h * h;
221 
222  PosType disp;
223  PosType disp_lat;
224 
225  disp[0] = h;
226  disp[1] = 0;
227  disp[2] = 0;
228  disp_lat = P->getLattice().k_unit(disp);
229  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &sx);
230 
231  disp[0] = 0;
232  disp[1] = h;
233  disp[2] = 0;
234  disp_lat = P->getLattice().k_unit(disp);
235  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &sy);
236 
237  disp[0] = 0;
238  disp[1] = 0;
239  disp[2] = h;
240  disp_lat = P->getLattice().k_unit(disp);
241  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &sz);
242 
243  disp[0] = h;
244  disp[1] = h;
245  disp[2] = 0;
246  disp_lat = P->getLattice().k_unit(disp);
247  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &sxy);
248 
249  disp[0] = h;
250  disp[1] = 0;
251  disp[2] = h;
252  disp_lat = P->getLattice().k_unit(disp);
253  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &sxz);
254 
255  disp[0] = 0;
256  disp[1] = h;
257  disp[2] = h;
258  disp_lat = P->getLattice().k_unit(disp);
259  eval_UBspline_3d_d(spline, disp_lat[0], disp_lat[1], disp_lat[2], &syz);
260 
261  symmatelem[0] = RealType(sx) / h2;
262  symmatelem[1] = RealType(sy) / h2;
263  symmatelem[2] = RealType(sz) / h2;
264  symmatelem[3] = 0.5 * RealType(sxy - sx - sy) / h2;
265  symmatelem[4] = 0.5 * RealType(sxz - sx - sz) / h2;
266  symmatelem[5] = 0.5 * RealType(syz - sy - sz) / h2;
267 }
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
QMCTraits::PosType PosType
QMCTraits::RealType RealType
QMCTraits::FullPrecRealType FullPrecRealType
Definition: QMCFiniteSize.h:28
const auto & getLattice() const
Definition: ParticleSet.h:251

◆ getSkSpline()

UBspline_3d_d * getSkSpline ( std::vector< RealType sk,
RealType  limit = 1.0 
)

Definition at line 159 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, LinearGrid< T, CT >::einspline_grid(), ParticleSet::getLattice(), QMCFiniteSize::gridx, QMCFiniteSize::gridy, QMCFiniteSize::gridz, OneDimGridBase< T, CT >::lower_bound, QMCFiniteSize::P, and OneDimGridBase< T, CT >::upper_bound.

Referenced by QMCFiniteSize::calcLeadingOrderCorrections(), QMCFiniteSize::calcPotentialInt(), and QMCFiniteSize::execute().

160 {
161  //get the einspline grids.
162  Ugrid esgridx = gridx.einspline_grid();
163  Ugrid esgridy = gridy.einspline_grid();
164  Ugrid esgridz = gridz.einspline_grid();
165 
166  //setup the einspline boundary conditions.
167  BCtype_d bcx;
168  BCtype_d bcy;
169  BCtype_d bcz;
170 
171  //This piece iterates through S(k) and sets
172  //pieces beyond the k-cutoff equal to 1.
173  //A violent approximation if S(k) is not converged, but
174  //better than S(k)=0.
175  double kc = AA->get_kc();
176  double kcutsq = kc * kc;
177 
178  for (int i = int(gridx.lower_bound), skindex = 0; i <= int(gridx.upper_bound); i++)
179  for (int j = int(gridy.lower_bound); j <= int(gridy.upper_bound); j++)
180  for (int k = int(gridz.lower_bound); k <= int(gridz.upper_bound); k++)
181  {
182  PosType v;
183  v[0] = i;
184  v[1] = j;
185  v[2] = k;
186  RealType ksq = P->getLattice().ksq(v);
187 
188  if (ksq > kcutsq)
189  sk[skindex] = limit;
190  skindex++;
191  }
192  //No particular BC's on the edge of S(k).
193 
194  bcx.lCode = NATURAL;
195  bcx.rCode = NATURAL;
196  bcx.lVal = 1.0;
197  bcx.rVal = 1.0;
198 
199  bcy.lCode = NATURAL;
200  bcy.rCode = NATURAL;
201  bcy.lVal = 1.0;
202  bcy.rVal = 1.0;
203 
204  bcz.lCode = NATURAL;
205  bcz.rCode = NATURAL;
206  bcz.lVal = 1.0;
207  bcz.rVal = 1.0;
208 
209  //hack for QMC_MIXED_PRECISION to interface to UBspline_3d_d
210  std::vector<FullPrecRealType> sk_fp(sk.begin(), sk.end());
211  UBspline_3d_d* spline = create_UBspline_3d_d(esgridx, esgridy, esgridz, bcx, bcy, bcz, sk_fp.data());
212 
213  return spline;
214 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
QMCTraits::PosType PosType
QMCTraits::RealType RealType
const auto & getLattice() const
Definition: ParticleSet.h:251

◆ initBreakup()

void initBreakup ( )
private

Definition at line 142 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, qmcplusplus::app_log(), LRCoulombSingleton::createSpline4RbyVs(), LRCoulombSingleton::getHandler(), ParticleSet::getLattice(), ParticleSetPool::getParticleSet(), QMCFiniteSize::myRcut, QMCFiniteSize::P, QMCFiniteSize::ptclPool, and QMCFiniteSize::rVs.

Referenced by QMCFiniteSize::initialize().

143 {
144  app_log() << "=========================================================\n";
145  app_log() << " Initializing Long Range Breakup (Esler) \n";
146  app_log() << "=========================================================\n";
147  P = ptclPool.getParticleSet("e");
149  myRcut = AA->get_rc();
150  auto myGrid = LinearGrid<RealType>();
151  int ng = P->getLattice().num_ewald_grid_points;
152  myGrid.set(0, myRcut, ng);
153  if (rVs == nullptr)
154  {
156  }
157 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
static std::unique_ptr< RadFunctorType > createSpline4RbyVs(const LRHandlerType *aLR, mRealType rcut, const GridType &agrid)
create a linear spline function
std::ostream & app_log()
Definition: OutputManager.h:65
ParticleSet * getParticleSet(const std::string &pname)
get a named ParticleSet
Linear Grid inherets from Grid.
Definition: Grid.h:73
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56
static std::unique_ptr< LRHandlerType > getHandler(ParticleSet &ref)
This returns an energy optimized LR handler. If non existent, it creates one.
const auto & getLattice() const
Definition: ParticleSet.h:251
std::unique_ptr< RadFunctorType > rVs
Definition: QMCFiniteSize.h:63

◆ initialize()

void initialize ( )

Definition at line 356 of file QMCFiniteSize.cpp.

References SkParserBase::get_grid(), ParticleSet::getLattice(), ParticleSet::getSimulationCell(), ParticleSet::getTotalNum(), QMCFiniteSize::gridx, QMCFiniteSize::gridy, QMCFiniteSize::gridz, SkParserBase::has_grid(), QMCFiniteSize::initBreakup(), QMCFiniteSize::Klist, KContainer::kpts, QMCFiniteSize::kpts, QMCFiniteSize::Ne, QMCFiniteSize::P, qmcplusplus::pow(), QMCFiniteSize::rho, QMCFiniteSize::rs, SkParserBase::set_grid(), QMCFiniteSize::skparser, and QMCFiniteSize::Vol.

Referenced by QMCFiniteSize::execute().

357 {
358  //Initialize the long range breakup. Chosen in input xml
359  initBreakup();
360  Ne = P->getTotalNum();
361  Vol = P->getLattice().Volume;
362  rs = std::pow(3.0 / (4 * M_PI) * Vol / RealType(Ne), 1.0 / 3.0);
363  rho = RealType(Ne) / Vol;
364  Klist = P->getSimulationCell().getKLists();
365  kpts = Klist.kpts; //These are in reduced coordinates.
366  //Easier to spline, but will have to convert
367  //for real space integration.
368 
369  if (!skparser->has_grid())
371  std::cout << "Grid computed.\n";
372 
374 }
std::vector< TinyVector< int, OHMMS_DIM > > kpts
Definition: QMCFiniteSize.h:73
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
size_t getTotalNum() const
Definition: ParticleSet.h:493
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)
const auto & getSimulationCell() const
Definition: ParticleSet.h:250
const auto & getLattice() const
Definition: ParticleSet.h:251
void get_grid(Grid_t &xgrid, Grid_t &ygrid, Grid_t &zgrid)
void set_grid(const std::vector< PosType > &gridpoints)
std::vector< TinyVector< int, DIM > > kpts
K-vector in reduced coordinates.
Definition: KContainer.h:50

◆ integrate_spline()

QMCFiniteSize::RealType integrate_spline ( UBspline_1d_d *  spline,
RealType  a,
RealType  b,
IndexType  N 
)

Definition at line 326 of file QMCFiniteSize.cpp.

References qmcplusplus::Units::force::N.

Referenced by QMCFiniteSize::calcPotentialInt().

327 {
328  if (N % 2 != 0) // if N odd, warn that destruction is imminent
329  {
330  std::cerr << "Warning in integrate_spline: N must be even!\n";
331  N = N - 1; // No risk of overflow
332  }
333 
334  RealType eps = (b - a) / RealType(N);
335  RealType sum = 0.0;
336  FullPrecRealType tmp = 0.0; //hack to interface to UBspline_1d_d
337  RealType xi = 0.0;
338  for (int i = 1; i < N / 2; i++)
339  {
340  xi = a + (2 * i - 2) * eps;
341  eval_UBspline_1d_d(spline, xi, &tmp);
342  sum += RealType(tmp);
343 
344  xi = a + (2 * i - 1) * eps;
345  eval_UBspline_1d_d(spline, xi, &tmp);
346  sum += 4 * tmp;
347 
348  xi = a + (2 * i) * eps;
349  eval_UBspline_1d_d(spline, xi, &tmp);
350  sum += tmp;
351  }
352 
353  return (eps / 3.0) * sum;
354 }
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
QMCTraits::RealType RealType
QMCTraits::FullPrecRealType FullPrecRealType
Definition: QMCFiniteSize.h:28

◆ printSkRawSphAvg()

void printSkRawSphAvg ( const std::vector< RealType > &  sk)
private

Definition at line 376 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, qmcplusplus::app_log(), QMCFiniteSize::Klist, KContainer::kshell, KContainer::ksq, qmcplusplus::n, and qmcplusplus::sqrt().

Referenced by QMCFiniteSize::execute().

377 {
378  std::vector<RealType> vsk_1d(Klist.kshell.size());
379 
380  // Average within each shell
381  for (int ks = 0; ks < Klist.kshell.size() - 1; ks++)
382  {
383  RealType u = 0;
384  RealType n = 0;
385  for (int ki = Klist.kshell[ks]; ki < Klist.kshell[ks + 1]; ki++)
386  {
387  u += sk[ki];
388  n++;
389  }
390  if (n != 0)
391  {
392  vsk_1d[ks] = u / n;
393  }
394  else
395  {
396  vsk_1d[ks] = 0;
397  }
398  }
399 
400  app_log() << std::fixed;
401  app_log() << "\nSpherically averaged raw S(k):\n";
402  app_log() << std::setw(12) << "k" << std::setw(12) << "S(k)" << std::setw(12) << "vk"
403  << "\n";
404  for (int ks = 0; ks < Klist.kshell.size() - 1; ks++)
405  {
406  app_log() << std::setw(12) << std::setprecision(8) << std::sqrt(Klist.ksq[Klist.kshell[ks]]) << std::setw(12)
407  << std::setprecision(8) << vsk_1d[ks] << std::setw(12) << std::setprecision(8) << AA->Fk_symm[ks] << '\n';
408  }
409 
410  if (vsk_1d[Klist.kshell.size() - 2] < 0.99)
411  {
412  app_log() << "####################################################################\n";
413  app_log() << "WARNING: The S(k) in the largest kshell is less than 0.99\n";
414  app_log() << " This code assumes the S(k) is converged to 1.0 at large k\n";
415  app_log() << " You may need to rerun with a larger LR_dim_cutoff\n";
416  app_log() << "####################################################################\n";
417  }
418 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
std::ostream & app_log()
Definition: OutputManager.h:65
std::vector< int > kshell
kpts which belong to the ith-shell [kshell[i], kshell[i+1])
Definition: KContainer.h:61
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
std::vector< RealType > ksq
squre of kpts in Cartesian coordniates
Definition: KContainer.h:56
QMCTraits::RealType RealType

◆ printSkSplineSphAvg()

void printSkSplineSphAvg ( UBspline_3d_d *  spline)
private

Definition at line 420 of file QMCFiniteSize.cpp.

References QMCFiniteSize::AA, qmcplusplus::app_log(), QMCFiniteSize::getSkInfo(), and QMCFiniteSize::sphericalAvgSk().

Referenced by QMCFiniteSize::execute().

421 {
422  std::vector<RealType> Amat;
423  getSkInfo(spline, Amat);
424 
425  app_log() << "\n=========================================================\n";
426  app_log() << " S(k) Info \n";
427  app_log() << "=========================================================\n";
428  app_log() << "S(k) anisotropy near k=0\n";
429  app_log() << "------------------------\n";
430  app_log() << " a_xx = " << Amat[0] << std::endl;
431  app_log() << " a_yy = " << Amat[1] << std::endl;
432  app_log() << " a_zz = " << Amat[2] << std::endl;
433  app_log() << " a_xy = " << Amat[3] << std::endl;
434  app_log() << " a_xz = " << Amat[4] << std::endl;
435  app_log() << " a_yz = " << Amat[5] << std::endl;
436  app_log() << "------------------------\n";
437 
438  RealType b = (Amat[0] + Amat[1] + Amat[2]) / 3.0;
439 
440  app_log() << "Spherically averaged S(k) near k=0\n";
441  app_log() << "S(k)=b*k^2 b = " << b << std::endl;
442  app_log() << "------------------------\n";
443  app_log() << std::endl;
444 
445  RealType kmax = AA->get_kc();
446  RealType nk = 100;
447  RealType kdel = kmax / (nk - 1.0);
448 
449  app_log() << "\nSpherically averaged splined S(k):\n";
450  app_log() << std::setw(12) << "k" << std::setw(12) << "S(k)"
451  << "\n";
452  for (int k = 0; k < nk; k++)
453  {
454  RealType kval = kdel * k;
455  app_log() << std::setw(12) << std::setprecision(8) << kval << std::setw(12) << std::setprecision(8)
456  << sphericalAvgSk(spline, kval) << "\n";
457  }
458 }
std::unique_ptr< LRHandlerType > AA
Definition: QMCFiniteSize.h:62
std::ostream & app_log()
Definition: OutputManager.h:65
RealType sphericalAvgSk(UBspline_3d_d *spline, RealType k)
void getSkInfo(UBspline_3d_d *spline, std::vector< RealType > &symmatelem)
QMCTraits::RealType RealType

◆ processPWH()

bool processPWH ( xmlNodePtr  cur)
private

Definition at line 118 of file QMCFiniteSize.cpp.

References QMCFiniteSize::ptclPool, ParticleSetPool::put(), ParticleSetPool::readSimulationCellXML(), and QMCFiniteSize::wfnPut().

Referenced by QMCFiniteSize::validateXML().

119 {
120  //return true and will be ignored
121  if (cur == NULL)
122  return true;
123  bool inputnode = true;
124  //save the root to grep @tilematrix
125  xmlNodePtr cur_root = cur;
126  cur = cur->children;
127  while (cur != NULL)
128  {
129  std::string cname((const char*)cur->name);
130  if (cname == "simulationcell")
132  else if (cname == "particleset")
133  ptclPool.put(cur);
134  else if (cname == "wavefunction")
135  wfnPut(cur);
136 
137  cur = cur->next;
138  }
139  return inputnode;
140 }
bool put(xmlNodePtr cur)
process an xml element
void wfnPut(xmlNodePtr cur)
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56
bool readSimulationCellXML(xmlNodePtr cur)
initialize the supercell shared by all the particle sets

◆ setSkParser()

void setSkParser ( SkParserBase skparser_i)
inline

Definition at line 35 of file QMCFiniteSize.h.

References QMCFiniteSize::skparser.

35 { skparser = skparser_i; };

◆ sphericalAvgSk()

QMCFiniteSize::RealType sphericalAvgSk ( UBspline_3d_d *  spline,
RealType  k 
)

Definition at line 269 of file QMCFiniteSize.cpp.

References ParticleSet::getLattice(), QMCFiniteSize::gridx, QMCFiniteSize::gridy, QMCFiniteSize::gridz, OneDimGridBase< T, CT >::lower_bound, QMCFiniteSize::P, QMCFiniteSize::sphericalgrid, and OneDimGridBase< T, CT >::upper_bound.

Referenced by QMCFiniteSize::calcPotentialInt(), and QMCFiniteSize::printSkSplineSphAvg().

270 {
271  RealType sum = 0.0;
272  FullPrecRealType val = 0.0;
273  PosType kvec(0);
274  IndexType ngrid = sphericalgrid.size();
275  for (IndexType i = 0; i < ngrid; i++)
276  {
277  kvec = P->getLattice().k_unit(k * sphericalgrid[i]); // to reduced coordinates
278  bool inx = true;
279  bool iny = true;
280  bool inz = true;
281  if (kvec[0] <= gridx.lower_bound || kvec[0] >= gridx.upper_bound)
282  inx = false;
283  if (kvec[1] <= gridy.lower_bound || kvec[1] >= gridy.upper_bound)
284  iny = false;
285  if (kvec[2] <= gridz.lower_bound || kvec[2] >= gridz.upper_bound)
286  inz = false;
287  if (!(inx & iny & inz))
288  sum += 1;
289  else
290  {
291  eval_UBspline_3d_d(spline, kvec[0], kvec[1], kvec[2], &val);
292  sum += RealType(val);
293  }
294  }
295 
296  return sum / RealType(ngrid);
297 }
QMCTraits::RealType RealType
Definition: QMCFiniteSize.h:27
QMCTraits::PosType PosType
std::vector< PosType > sphericalgrid
Definition: QMCFiniteSize.h:61
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
QMCTraits::RealType RealType
QMCTraits::FullPrecRealType FullPrecRealType
Definition: QMCFiniteSize.h:28
const auto & getLattice() const
Definition: ParticleSet.h:251

◆ spline_clamped()

UBspline_1d_d * spline_clamped ( std::vector< RealType > &  grid,
std::vector< RealType > &  vals,
RealType  lVal,
RealType  rVal 
)

Definition at line 299 of file QMCFiniteSize.cpp.

References LinearGrid< T, CT >::set().

Referenced by QMCFiniteSize::calcPotentialInt().

303 {
304  //hack to interface to NUgrid stuff in double prec for MIXED build
305  std::vector<FullPrecRealType> grid_fp(grid.begin(), grid.end());
306 
307  Grid_t lingrid;
308  lingrid.set(grid_fp[0], grid_fp.back(), grid_fp.size());
309  Ugrid esgrid = lingrid.einspline_grid();
310 
311  BCtype_d xBC;
312  xBC.lVal = lVal;
313  xBC.rVal = rVal;
314  xBC.lCode = DERIV1;
315  xBC.rCode = DERIV1;
316  //hack to interface to NUgrid stuff in double prec for MIXED build
317  std::vector<FullPrecRealType> vals_fp(vals.begin(), vals.end());
318  return create_UBspline_1d_d(esgrid, xBC, vals_fp.data());
319 }
void set(T ri, T rf, int n) override
Set the grid given the parameters.

◆ summary()

void summary ( )

Definition at line 571 of file QMCFiniteSize.cpp.

References qmcplusplus::app_log(), QMCFiniteSize::Ne, QMCFiniteSize::rho, QMCFiniteSize::rs, QMCFiniteSize::tlo, QMCFiniteSize::tloerr, QMCFiniteSize::Vfs, QMCFiniteSize::Vfserr, QMCFiniteSize::vlo, QMCFiniteSize::vloerr, and QMCFiniteSize::Vol.

Referenced by QMCFiniteSize::execute().

572 {
573  // Here are the fsc corrections to potential
574  app_log() << "\n=========================================================\n";
575  app_log() << " Finite Size Corrections:\n";
576  app_log() << "=========================================================\n";
577  app_log() << " System summary:\n";
578  app_log() << std::fixed;
579  app_log() << " Nelec = " << std::setw(12) << Ne << "\n";
580  app_log() << " Vol = " << std::setw(12) << std::setprecision(8) << Vol << " [a0^3]\n";
581  app_log() << " Ne/V = " << std::setw(12) << std::setprecision(8) << rho << " [1/a0^3]\n";
582  app_log() << " rs/a0 = " << std::setw(12) << std::setprecision(8) << rs << "\n";
583  app_log() << "\n";
584  app_log() << " Leading Order Corrections:\n";
585  app_log() << " V_LO / electron = " << std::setw(12) << std::setprecision(8) << vlo << " +/- " << vloerr
586  << " [Ha/electron]\n";
587  app_log() << " V_LO = " << std::setw(12) << std::setprecision(8) << vlo * Ne << " +/- " << vloerr * Ne
588  << " [Ha]\n";
589  app_log() << " T_LO / electron = " << std::setw(12) << std::setprecision(8) << tlo << " +/- " << tloerr
590  << " [Ha/electron]\n";
591  app_log() << " T_LO = " << std::setw(12) << std::setprecision(8) << tlo * Ne << " +/- " << tloerr * Ne
592  << " [Ha]\n";
593  app_log() << " NB: This is a crude estimate of the kinetic energy correction!\n";
594  app_log() << "\n";
595  app_log() << " Beyond Leading Order (Integrated corrections):\n";
596  app_log() << " V_Int / electron = " << std::setw(12) << std::setprecision(8) << Vfs << " +/- " << Vfserr
597  << " [Ha/electron]\n";
598  app_log() << " V_Int = " << std::setw(12) << std::setprecision(8) << Vfs * Ne << " +/- " << Vfserr * Ne
599  << " [Ha]\n";
600 }
std::ostream & app_log()
Definition: OutputManager.h:65

◆ validateXML()

bool validateXML ( )
overridevirtual

validate the input file

Implements QMCAppBase.

Definition at line 59 of file QMCFiniteSize.cpp.

References qmcplusplus::app_log(), ParticleSetPool::get(), QMCAppBase::popDocument(), QMCFiniteSize::processPWH(), QMCFiniteSize::ptclPool, QMCAppBase::pushDocument(), ParticleSetPool::put(), QMCFiniteSize::wfnPut(), and QMCAppBase::xml_doc_stack_.

60 {
61  xmlXPathContextPtr m_context = xml_doc_stack_.top()->getXPathContext();
62  xmlNodePtr cur = xml_doc_stack_.top()->getRoot()->children;
63 
64  while (cur != NULL)
65  {
66  std::string cname((const char*)cur->name);
67  if (cname == "particleset")
68  {
69  ptclPool.put(cur);
70  }
71  else if (cname == "wavefunction")
72  {
73  wfnPut(cur);
74  }
75  else if (cname == "include")
76  {
77  //file is provided
78  const xmlChar* a = xmlGetProp(cur, (const xmlChar*)"href");
79  if (a)
80  {
81  pushDocument((const char*)a);
82  processPWH(xml_doc_stack_.top()->getRoot());
83  popDocument();
84  }
85  }
86  else if (cname == "qmcsystem")
87  {
88  processPWH(cur);
89  }
90  else {}
91  cur = cur->next;
92  }
93 
94  app_log() << "=========================================================\n";
95  app_log() << " Summary of QMC systems \n";
96  app_log() << "=========================================================\n";
97  ptclPool.get(app_log());
98  return true;
99 }
bool put(xmlNodePtr cur)
process an xml element
std::ostream & app_log()
Definition: OutputManager.h:65
void wfnPut(xmlNodePtr cur)
bool get(std::ostream &os) const
bool pushDocument(const std::string &infile)
open a new document
Definition: QMCAppBase.cpp:30
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56
bool processPWH(xmlNodePtr cur)
void popDocument()
close the current document
Definition: QMCAppBase.cpp:46
std::stack< Libxml2Document * > xml_doc_stack_
stack of xml document
Definition: QMCAppBase.h:64

◆ wfnPut()

void wfnPut ( xmlNodePtr  cur)
private

Definition at line 102 of file QMCFiniteSize.cpp.

References OhmmsAttributeSet::add(), ParticleSetPool::getParticleSet(), QMCFiniteSize::ptclPool, and OhmmsAttributeSet::put().

Referenced by QMCFiniteSize::processPWH(), and QMCFiniteSize::validateXML().

103 {
104  std::string id("psi0"), target("e"), role("extra");
105  OhmmsAttributeSet pAttrib;
106  pAttrib.add(id, "id");
107  pAttrib.add(id, "name");
108  pAttrib.add(target, "target");
109  pAttrib.add(target, "ref");
110  pAttrib.add(role, "role");
111  pAttrib.put(cur);
112  ParticleSet* qp = ptclPool.getParticleSet(target);
113 
114  if (qp == nullptr)
115  throw std::runtime_error("target particle set named '" + target + "' not found");
116 }
bool put(xmlNodePtr cur)
assign attributes to the set
Definition: AttributeSet.h:55
ParticleSet * getParticleSet(const std::string &pname)
get a named ParticleSet
class to handle a set of attributes of an xmlNode
Definition: AttributeSet.h:24
ParticleSetPool ptclPool
Definition: QMCFiniteSize.h:56
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
Definition: AttributeSet.h:42

Member Data Documentation

◆ AA

◆ gridx

◆ gridy

◆ gridz

◆ h

RealType h
private

Definition at line 60 of file QMCFiniteSize.h.

Referenced by QMCFiniteSize::getSkInfo(), and QMCFiniteSize::QMCFiniteSize().

◆ Klist

◆ kpts

std::vector<TinyVector<int, OHMMS_DIM> > kpts
private

Definition at line 73 of file QMCFiniteSize.h.

Referenced by QMCFiniteSize::initialize().

◆ mphi

IndexType mphi
private

◆ mtheta

IndexType mtheta
private

◆ myConst

RealType myConst
private

Definition at line 58 of file QMCFiniteSize.h.

◆ myRcut

RealType myRcut
private

Definition at line 57 of file QMCFiniteSize.h.

Referenced by QMCFiniteSize::initBreakup().

◆ Ne

◆ NumSamples

◆ P

◆ ptclPool

◆ rho

◆ rs

RealType rs
private

Definition at line 81 of file QMCFiniteSize.h.

Referenced by QMCFiniteSize::initialize(), and QMCFiniteSize::summary().

◆ rVs

std::unique_ptr<RadFunctorType> rVs
private

Definition at line 63 of file QMCFiniteSize.h.

Referenced by QMCFiniteSize::initBreakup().

◆ SK

◆ SK_raw

std::vector<RealType> SK_raw
private

◆ SKerr

◆ SKerr_raw

std::vector<RealType> SKerr_raw
private

◆ skparser

SkParserBase* skparser
private

◆ sphericalgrid

std::vector<PosType> sphericalgrid
private

◆ tlo

RealType tlo
private

◆ tloerr

RealType tloerr
private

◆ Vfs

RealType Vfs
private

◆ Vfserr

RealType Vfserr
private

◆ vlo

RealType vlo
private

◆ vloerr

RealType vloerr
private

◆ Vol


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