47template<
class Field >
58 virtual Field &
get_U(
bool smeared =
false) = 0;
61template <
class GaugeField >
164 virtual void deriv(
const GaugeField&
U, GaugeField& dSdU) = 0;
214 U.smeared_force(dSdU);
226template <
class GaugeField >
235 virtual RealD S(
const GaugeField&
U) {
return 0.0;};
236 virtual void deriv(
const GaugeField&
U, GaugeField& dSdU) { assert(0); };
241 virtual std::string
action_name() {
return std::string(
"Level Force Log"); };
242 virtual std::string
LogParameters() {
return std::string(
"No parameters");};
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
Base class for all actions.
virtual RealD S(const GaugeField &U)=0
Evaluate this action with the given gauge field.
RealD Fdt_norm_average(void)
Mean (absolute value of) impulse (force integrated over a time step) for a trajectory.
void deriv_log(RealD nrm, RealD max, RealD Fdt_nrm, RealD Fdt_max)
Record statistics on the action and derivative.
virtual RealD Sinitial(ConfigurationBase< GaugeField > &U)
Get the action at the start of the trajectory.
void deriv_timer_start(void)
Start timing derivative computation.
virtual void refresh(ConfigurationBase< GaugeField > &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
Refresh pseudofermion fields.
virtual RealD S(ConfigurationBase< GaugeField > &U)
Evaluate this action with the given gauge field.
virtual void deriv(ConfigurationBase< GaugeField > &U, GaugeField &dSdU)
void refresh_timer_stop(void)
Stop timing pseudofermion field refresh.
void deriv_timer_stop(void)
Stop timing derivative computation.
RealD refresh_timer(void)
Time spent refreshing pseudofermion fields in microseconds.
virtual RealD Sinitial(const GaugeField &U)
Get the action at the start of the trajectory.
virtual std::string LogParameters()=0
Print the parameters of the action.
virtual std::string action_name()=0
Report the name of the action.
RealD deriv_norm_average(void)
Mean (absolute value of) derivative for a trajectory.
void reset_timer(void)
Zero timers associated with this action.
RealD Fdt_max_average(void)
Mean maximum value of impulse (force integrated over a time step) for a trajectory.
RealD deriv_max_average(void)
Mean maximum derivative for a trajectory.
void S_timer_start(void)
Start timing action computation.
void S_timer_stop(void)
Stop timing action computation.
virtual void refresh(const GaugeField &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)=0
Refresh pseudofermion fields.
RealD S_timer(void)
Time spent computing the action in microseconds.
void refresh_timer_start(void)
Start timing pseudofermion field refresh.
virtual void deriv(const GaugeField &U, GaugeField &dSdU)=0
RealD deriv_timer(void)
Time spent computing the derivative in microseconds.
Base class for "smart configuration", a container for a gauge configuration holding unsmeared and sme...
virtual Field & get_SmearedU()=0
virtual ~ConfigurationBase()
virtual void set_Field(Field &U)=0
virtual void smeared_force(Field &)=0
virtual Field & get_U(bool smeared=false)=0
A trivial action, which may be used as a placeholder.
virtual void refresh(const GaugeField &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
Refresh pseudofermion fields.
virtual void deriv(const GaugeField &U, GaugeField &dSdU)
virtual std::string LogParameters()
Print the parameters of the action.
virtual RealD S(const GaugeField &U)
Evaluate this action with the given gauge field.
virtual std::string action_name()
Report the name of the action.