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: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
8 //                    Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
9 //
10 // File created by: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
11 //////////////////////////////////////////////////////////////////////////////////////
12 
13 
14 #ifndef QMCPLUSPLUS_STATIC_STRUCTURE_FACTOR_H
15 #define QMCPLUSPLUS_STATIC_STRUCTURE_FACTOR_H
16 
17 #include "QMCHamiltonians/OperatorBase.h"
18 
19 namespace qmcplusplus
20 {
21 class StaticStructureFactor : public OperatorBase
22 {
23 public:
24   typedef std::vector<RealType> k2_t;
25   typedef std::vector<RealType> dens_t;
26   typedef std::vector<PosType> pts_t;
27 
28   //data members
29   int nspecies;
30   std::vector<std::string> species_name;
31   RealType ecut;
32   int nkpoints;
33   const ParticleSet& Pinit;
34 
35   //constructor/destructor
36   StaticStructureFactor(ParticleSet& P);
~StaticStructureFactor()37   ~StaticStructureFactor() {}
38 
39   //standard interface
40   OperatorBase* makeClone(ParticleSet& P, TrialWaveFunction& psi);
41   bool put(xmlNodePtr cur);
42   Return_t evaluate(ParticleSet& P);
43 
44   //required for Collectables interface
45   void addObservables(PropertySetType& plist, BufferType& olist);
46   void registerCollectables(std::vector<observable_helper*>& h5desc, hid_t gid) const;
47 
48   //should be empty for Collectables interface
resetTargetParticleSet(ParticleSet & P)49   void resetTargetParticleSet(ParticleSet& P) {}
setObservables(PropertySetType & plist)50   void setObservables(PropertySetType& plist) {}
setParticlePropertyList(PropertySetType & plist,int offset)51   void setParticlePropertyList(PropertySetType& plist, int offset) {}
52 
53 #if !defined(REMOVE_TRACEMANAGER)
checkout_scalar_arrays(TraceManager & tm)54   void checkout_scalar_arrays(TraceManager& tm) {}
collect_scalar_samples()55   void collect_scalar_samples() {}
delete_scalar_arrays()56   void delete_scalar_arrays() {}
57 #endif
58 
59   //obsolete?
get(std::ostream & os)60   bool get(std::ostream& os) const { return false; }
61 
62   //local functions
63   void reset();
64   void report(const std::string& pad);
65 };
66 
67 } // namespace qmcplusplus
68 
69 #endif
70