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