QMCPACK
ACForce.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) 2019 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Raymond Clay, Sandia National Laboratories
8 //
9 // File created by: Raymond Clay, rclay@sandia.gov, Sandia National Laboratories
10 //////////////////////////////////////////////////////////////////////////////////////
11 
12 
13 /**@file ACForce.h
14  *@brief Declaration of ACForce, Assaraf-Caffarel ZVZB style force estimation.
15  */
16 #ifndef QMCPLUSPLUS_ACFORCE_H
17 #define QMCPLUSPLUS_ACFORCE_H
18 
23 
24 namespace qmcplusplus
25 {
26 class ACForce : public OperatorBase
27 {
28 public:
31  /** Constructor **/
33 
34  /** Destructor, "final" triggers a clang warning **/
35  ~ACForce() override = default;
36 
37  bool dependsOnWaveFunction() const override { return true; }
38  std::string getClassName() const override { return "ACForce"; }
39 
40  /** I/O Routines */
41  bool put(xmlNodePtr cur) final;
42 
43  bool get(std::ostream& os) const final;
44 
45  /** Cloning **/
46  //We don't actually use this makeClone method. We just put an APP_ABORT here
47  std::unique_ptr<OperatorBase> makeClone(ParticleSet& qp, TrialWaveFunction& psi) final;
48 
49  //Not derived from base class. But we need it to properly set the Hamiltonian reference.
50  std::unique_ptr<OperatorBase> makeClone(ParticleSet& qp, TrialWaveFunction& psi, QMCHamiltonian& H);
51 
52  /** Initialization/assignment **/
53  void resetTargetParticleSet(ParticleSet& P) final;
54 
55  void addObservables(PropertySetType& plist, BufferType& collectables) final;
56 
57  void setObservables(PropertySetType& plist) final;
58 
59  void setParticlePropertyList(PropertySetType& plist, int offset) final;
60 
61  /** Since we store a reference to QMCHamiltonian, the baseclass method add2Hamiltonian
62  * isn't sufficient. We override it here. **/
63  void add2Hamiltonian(ParticleSet& qp, TrialWaveFunction& psi, QMCHamiltonian& targetH) final;
64 
65  /** Computes multiplicative regularizer f(G,epsilon) according to Pathak-Wagner arXiv:2002.01434 .
66  * G estimates proximity to node, and f(G,epsilon) in that paper is used to scale all values.
67  * \param[in] G, nabla_i ln(Psi), so vector of all electron gradients.
68  * \param[in] epsilon, regularizer parameter.
69  * \return Value of regularizer f(G,epsilon).
70  */
71  static RealType compute_regularizer_f(const ParticleGradient& G, const RealType epsilon);
72 
73  /** Evaluate **/
74  Return_t evaluate(ParticleSet& P) final;
75 
76 private:
77  ///Finite difference timestep
79 
80  //** Internal variables **/
81  // I'm assuming that psi, ions, elns, and the hamiltonian are bound to this
82  // instantiation. Making sure no crosstalk happens is the job of whatever clones this.
87 
88  ///For indexing observables
90 
91  ///Algorithm/feature switches
94 
95  ///The space warp transformation class.
97 
98  //Pathak-Wagner regularizer parameters.
101 
102  ///Temporary Nion x 3 dimensional arrays for force storage.
108 
109 
111 };
112 
113 } // namespace qmcplusplus
114 #endif
This implements the differential space warp transformation for ZVZB estimators given by Sorella & Cap...
RealType f_epsilon_
Definition: ACForce.h:100
static RealType compute_regularizer_f(const ParticleGradient &G, const RealType epsilon)
Computes multiplicative regularizer f(G,epsilon) according to Pathak-Wagner arXiv:2002.01434 .
Definition: ACForce.cpp:196
Return_t evaluate(ParticleSet &P) final
Evaluate.
Definition: ACForce.cpp:101
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
QTBase::RealType RealType
Definition: Configuration.h:58
RealType delta_
Finite difference timestep.
Definition: ACForce.h:78
Declaration of OperatorBase.
Collection of Local Energy Operators.
void addObservables(PropertySetType &plist, BufferType &collectables) final
named values to the property list Default implementaton uses addValue(plist_)
Definition: ACForce.cpp:139
Attaches a unit to a Vector for IO.
TWFFastDerivWrapper is a wrapper class for TrialWavefunction that provides separate and low level acc...
SpaceWarpTransformation swt_
The space warp transformation class.
Definition: ACForce.h:96
ParticleSet::ParticlePos Forces
Definition: ACForce.h:29
void setObservables(PropertySetType &plist) final
Set the values evaluated by this object to plist Default implementation is to assign Value which is u...
Definition: ACForce.cpp:163
void setParticlePropertyList(PropertySetType &plist, int offset) final
Definition: ACForce.cpp:181
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
ParticleSet::Buffer_t BufferType
typedef for the serialized buffer
Definition: OperatorBase.h:75
bool put(xmlNodePtr cur) final
I/O Routines.
Definition: ACForce.cpp:63
ACForce(ParticleSet &source, ParticleSet &target, TrialWaveFunction &psi, QMCHamiltonian &H)
Constructor.
Definition: ACForce.cpp:22
~ACForce() override=default
Destructor, "final" triggers a clang warning.
QMCHamiltonian & ham_
Definition: ACForce.h:86
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
Declaration of a TrialWaveFunction.
An abstract class for Local Energy operators.
Definition: OperatorBase.h:59
ParticleSet::ParticleGradient ParticleGradient
Definition: ACForce.h:30
Class to represent a many-body trial wave function.
ParticleAttrib< SingleParticlePos > ParticlePos
Definition: Configuration.h:92
void add2Hamiltonian(ParticleSet &qp, TrialWaveFunction &psi, QMCHamiltonian &targetH) final
Since we store a reference to QMCHamiltonian, the baseclass method add2Hamiltonian isn&#39;t sufficient...
Definition: ACForce.cpp:92
RealType reg_epsilon_
Definition: ACForce.h:99
ParticleAttrib< QTFull::GradType > ParticleGradient
Definition: Configuration.h:95
void resetTargetParticleSet(ParticleSet &P) final
Initialization/assignment.
Definition: ACForce.cpp:137
IndexType first_force_index_
For indexing observables.
Definition: ACForce.h:89
TWFFastDerivWrapper psi_wrapper_
Definition: ACForce.h:110
bool useSpaceWarp_
Algorithm/feature switches.
Definition: ACForce.h:92
Forces hf_force_
Temporary Nion x 3 dimensional arrays for force storage.
Definition: ACForce.h:103
bool dependsOnWaveFunction() const override
return true if this operator depends on a wavefunction
Definition: ACForce.h:37
std::unique_ptr< OperatorBase > makeClone(ParticleSet &qp, TrialWaveFunction &psi) final
Cloning.
Definition: ACForce.cpp:46
BareKineticEnergy::Return_t Return_t
ParticleSet & ions_
Definition: ACForce.h:83
Declaration of QMCHamiltonian.
TrialWaveFunction & psi_
Definition: ACForce.h:85
ParticleSet & elns_
Definition: ACForce.h:84
std::string getClassName() const override
return class name
Definition: ACForce.h:38
RecordNamedProperty< FullPrecRealType > PropertySetType
define PropertyList_t
Definition: Configuration.h:69