QMCPACK
RadialJastrowBuilder.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) 2016 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Luke Shulenburger, lshulen@sandia.gov, Sandia National Laboratories
8 //
9 // File created by: Luke Shulenburger, lshulen@sandia.gov, Sandia National Laboratories
10 //////////////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef QMCPLUSPLUS_RADIAL_JASTROW_BUILDER_H
13 #define QMCPLUSPLUS_RADIAL_JASTROW_BUILDER_H
14 
16 
19 #include "OhmmsData/AttributeSet.h"
20 #include "OhmmsData/ParameterSet.h"
21 
22 #include <string>
23 
24 
25 namespace qmcplusplus
26 {
27 /** JastrowBuilder using an analytic 1d functor
28  * Should be able to eventually handle all one and two body jastrows
29  * although spline based ones will come later
30  */
31 
32 
34 {
35 public:
36  enum detail
37  {
38  CPU,
41  };
42 
43  // one body constructor
45  // two body constructor
47 
48  std::unique_ptr<WaveFunctionComponent> buildComponent(xmlNodePtr cur) override;
49 
50 private:
51  /// \xmla{jastrow,name}
52  std::string NameOpt;
53  /// \xmla{jastrow,type}
54  std::string TypeOpt;
55  /// \xmla{jastrow,function}
56  std::string Jastfunction;
57  /// \xmla{jastrow,spin}
58  std::string SpinOpt;
59  ///particle set for source particle
61 
62  // has a specialization for RPAFunctor in cpp file
63  template<class RadFuncType, bool SPIN = false, unsigned Implementation = detail::CPU>
64  std::unique_ptr<WaveFunctionComponent> createJ1(xmlNodePtr cur);
65 
66  template<class RadFuncType, unsigned Implementation = detail::CPU>
67  std::unique_ptr<WaveFunctionComponent> createJ2(xmlNodePtr cur);
68 
69  template<class RadFuncType>
70  void initTwoBodyFunctor(RadFuncType& functor, double fac);
71 
72  template<class RadFuncType>
73  void computeJ2uk(const std::vector<RadFuncType*>& functors);
74 
75  void guardAgainstOBC();
76  void guardAgainstPBC();
77 };
78 
79 } // namespace qmcplusplus
80 
81 #endif
std::unique_ptr< WaveFunctionComponent > createJ1(xmlNodePtr cur)
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
An abstract class for wave function builders.
std::unique_ptr< WaveFunctionComponent > buildComponent(xmlNodePtr cur) override
process a xml node at cur
JastrowBuilder using an analytic 1d functor Should be able to eventually handle all one and two body ...
ParticleSet * SourcePtcl
particle set for source particle
Wrapping information on parallelism.
Definition: Communicate.h:68
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
std::string NameOpt
<jastrow name="...">
declaration of ProgressReportEngine
RadialJastrowBuilder(Communicate *comm, ParticleSet &target, ParticleSet &source)
std::string Jastfunction
<jastrow function="...">
void computeJ2uk(const std::vector< RadFuncType *> &functors)
std::unique_ptr< WaveFunctionComponent > createJ2(xmlNodePtr cur)
std::string SpinOpt
<jastrow spin="...">
std::string TypeOpt
<jastrow type="...">
void initTwoBodyFunctor(RadFuncType &functor, double fac)
declaration of the base class for many-body wavefunction.