1#ifndef RP_PERTURBATION_H
2#define RP_PERTURBATION_H
4#include <util/param/ParamComposite.h>
7namespace Util {
template <
typename T>
class DArray; }
30 template <
int D,
class T>
66 virtual double hamiltonian(
double unperturbedHamiltonian);
108 typename T::System
const &
system()
const;
148 typename T::System&
system();
158 typename T::Simulator* simulatorPtr_;
161 typename T::System* systemPtr_;
168 template <
int D,
class T>
171 assert(simulatorPtr_);
172 return *simulatorPtr_;
176 template <
int D,
class T>
179 assert(simulatorPtr_);
180 return *simulatorPtr_;
184 template <
int D,
class T>
192 template <
int D,
class T>
double lambda() const
Get the perturbation parameter.
T::System const & system() const
Get parent typename T::System by const reference.
virtual ~Perturbation()=default
Destructor.
virtual double df()
Compute and return derivative of H w/ respect to parameter lambda.
double lambda_
Strength of the perturbation.
virtual void restoreState()
Restore any required internal state variables.
virtual double hamiltonian(double unperturbedHamiltonian)
Compute and return the perturbation to the Hamiltonian.
void setLambda(double lambda)
Set the perturbation parameter value.
Perturbation(typename T::Simulator &simulator)
Constructor.
T::Simulator const & simulator() const
Get parent typename T::Simulator by const reference.
virtual void incrementDc(DArray< typename T::RField > &dc)
Modify the generalized forces to include perturbation.
virtual void setup()
Complete any required initialization.
virtual void saveState()
Save any required internal state variables.
virtual void readParameters(std::istream &in)
Read parameters from archive.
Dynamically allocatable contiguous array template.
ParamComposite()
Constructor.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.
Utility classes for scientific computation.