atomicrex
0.1
An advanced atomistic model building tool
|
Base class for all one-dimensional functions that can be fitted. More...
#include <Functions.h>
Public Types | |
enum | NormalizationMode { NONE, SPHERICAL_INTEGRAL, UNITY_ORIGIN } |
Public Member Functions | |
FunctionBase (const FPString &id, FitJob *job, const FPString &tag=FPString()) | |
Constructor. | |
bool | hasCutoff () const |
Returns whether this function has a cutoff. | |
double | cutoff () const |
void | setCutoff (double cutoff) |
double | prefactor () const |
Returns the constant prefactor the function is multiplied with. | |
double | evaluate (double r) |
Evaluates the function at the given r and multiplies the value with the proper normalization factor. | |
double | evaluate (double r, double &deriv) |
Evaluates the function and its derivative at the given r and multiplies the values with the proper normalization factor. | |
void | writeTabulated (std::ostream &out, double rmin, double rmax, double dr) |
Write tabulated function to stream for visualization with Gnuplot. More... | |
NormalizationMode | normalizationMode () const |
Returns the normalization mode set for this function. | |
void | setNormalizationMode (NormalizationMode mode) |
Specifies the normalization mode to be used for this function. | |
void | computePrefactor () |
virtual void | dofValueChanged (DegreeOfFreedom &dof) override |
const std::shared_ptr< FunctionBase > & | screeningFunction () const |
Returns the screening function applied to this function, or NULL. | |
void | setScreeningFunction (const std::shared_ptr< FunctionBase > &func) |
void | verifyDerivative () |
void | checkDerivativeNumerically (double r) |
double | centralDerivative (double r, double h, double &abserr_trunc, double &abserr_round) |
virtual void | parse (XML::Element functionElement) override |
Parses function parameters from the given XML element. | |
virtual XML::OElement | generateXMLDefinition (const FPString &elementName) |
Produces an XML representation of the function's current parameters and DOFs. | |
![]() | |
virtual | ~FitObject ()=default |
Virtual destructor. | |
double | relativeWeight () const |
Returns the relative fit weight assigned to this object. | |
void | setRelativeWeight (double weight) |
Assigns a relative fit weight to this object. | |
virtual void | assignAbsoluteWeights (double absoluteWeight) |
Recursively assigns absolute weights to the properties of this object and its sub-objects. | |
virtual bool | computeProperties (bool isFitting) |
Computes all enabled properties of the object. | |
const std::vector< FitProperty * > & | properties () const |
Returns a list of fitting properties of this object. | |
void | listAllProperties (std::vector< FitProperty *> &list) const |
Builds a list of properties of this object and all its sub-objects. | |
FitProperty * | propertyById (const FPString &id) const |
Returns the property with the given ID. | |
const std::vector< DegreeOfFreedom * > & | DOF () const |
Returns a list of degrees of freedom of this object. | |
void | listAllDOF (std::vector< DegreeOfFreedom *> &list) const |
Builds a list of degrees of freedom of this object and all its sub-objects. | |
DegreeOfFreedom * | DOFById (const FPString &id, const FPString &tag=FPString()) const |
Returns the degree of freedom with the given ID (and tag). | |
const std::vector< FitObject * > & | fitObjects () const |
Returns the list of FitObjects which are part of this group. | |
void | registerSubObject (FitObject *subobject, bool deleteOnShutdown=false) |
Registers a sub-object. | |
virtual void | print (MsgLogger &stream) |
Outputs the name of the object. | |
bool | fitEnabled () const |
Returns whether this object and it's children are included in the fit. | |
void | setFitEnabled (bool enable) |
Sets whether this object and it's children are included in the fit. | |
bool | outputEnabled () const |
void | setOutputEnabled (bool enable) |
const FPString & | id () const |
Returns the identifier of this object instance. | |
void | setId (const FPString &id) |
Sets the main identification tag. | |
const FPString & | tag () const |
Returns the assigned tag string. | |
void | setTag (const FPString &tag) |
Sets the complementary identification tag. | |
FitJob * | job () const |
Returns a pointer to the job to which this object belongs. | |
FitObject * | parent () const |
Returns the parent of this object in the hierarchy. | |
![]() | |
template<typename DifferentialForm > | |
double | integrate (double a, double b, DifferentialForm diffForm) |
virtual double | integrate (double a, double b) |
virtual double | integrateSpherical (double a, double b) |
Static Public Member Functions | |
static std::shared_ptr< FunctionBase > | createAndParse (XML::Element functionElement, const FPString &id, FitJob *job) |
Parses an XML element and creates a function object out of it. | |
Protected Member Functions | |
virtual double | evaluateInternal (double r) override=0 |
virtual double | evaluateInternal (double r, double &deriv)=0 |
virtual std::vector< DegreeOfFreedom * > | DOFToExport () |
![]() | |
FitObject () | |
Default Constructor. | |
FitObject (const FPString &id, FitJob *job, const FPString &tag=FPString()) | |
Constructor. | |
void | registerProperty (FitProperty *prop, bool deleteOnShutdown=false) |
Registers a property of this object. | |
void | registerDOF (DegreeOfFreedom *dof) |
Registers a DOF of this object. | |
Protected Attributes | |
double | _cutoff |
The function cutoff. | |
double | _prefactor |
The constant prefactor used to normalize the function. | |
NormalizationMode | _normalizationMode |
Controls the type of normalization applied to the function. | |
std::shared_ptr< FunctionBase > | _screeningFunction |
Optional screening function. | |
![]() | |
bool | _fitEnabled = true |
Controls whether this object and it's children are included in the fit. | |
bool | _outputEnabled = true |
FitJob * | _job = nullptr |
Pointer to the job this object belongs to. | |
FPString | _id |
The identifier string of this object instance. | |
double | _relativeWeight = 1.0 |
The relative fit weight assigned to this object. | |
Base class for all one-dimensional functions that can be fitted.
Optionally, a function can be normalized by multiplying it with a constant pre-factor, and a screening function can be imposed.
double atomicrex::FunctionBase::centralDerivative | ( | double | r, |
double | h, | ||
double & | abserr_trunc, | ||
double & | abserr_round | ||
) |
Compute the numerical derivative at the given r using the 5-point rule ( ,
,
,
,
). Note that the value at the central point is not used.
void atomicrex::FunctionBase::checkDerivativeNumerically | ( | double | r | ) |
Performs a validation of the analytical derivative by comparing it to a numerically computed derivative at the given r. Throws an exception if the analytical derivative does not match.
void atomicrex::FunctionBase::computePrefactor | ( | ) |
Normalizes the function by computing the constant prefactor. This function is called once every time the parameters of the function have changed.
|
inline |
Returns the cutoff of this function. The function will evaluate to flat zero for positions beyond this cutoff.
|
inlineprotectedvirtual |
Returns the list of DOFs that should be exported as part of the <fit-dof> element. By default, all DOFs of the function are exported in this way. Subclasses may override this method to implement custom output formats for certain DOFs.
Reimplemented in atomicrex::FunctionSpline, and atomicrex::FunctionPoly.
|
inlineoverridevirtual |
This function is called by the DOFs of this object each time their value changes. Setting the prefactor to zero will trigger its recalculation next time evaluateNormalized() is called.
Reimplemented from atomicrex::FitObject.
Reimplemented in atomicrex::FunctionSpline, atomicrex::FunctionPoly, and atomicrex::ParsedFunction.
|
overrideprotectedpure virtual |
Evaluates the function at the given r. This does not include the constant pre-factor, or the optional screening function.
Implements atomicrex::NumericalIntegration.
Implemented in atomicrex::FunctionProduct, atomicrex::FunctionConstant, atomicrex::FunctionSum, atomicrex::FunctionInverseArgument, atomicrex::FunctionSpline, atomicrex::FunctionPoly, atomicrex::FunctionMorseC, atomicrex::FunctionMorseB, atomicrex::FunctionMorseA, atomicrex::FunctionExpGaussian, atomicrex::FunctionExpB, atomicrex::FunctionExpA, and atomicrex::ParsedFunction.
|
protectedpure virtual |
Evaluates the function and its derivative at the given r. This does not include the constant pre-factor, or the optional screening function.
Implemented in atomicrex::FunctionProduct, atomicrex::FunctionConstant, atomicrex::FunctionSum, atomicrex::FunctionInverseArgument, atomicrex::FunctionSpline, atomicrex::FunctionPoly, atomicrex::FunctionMorseC, atomicrex::FunctionMorseB, atomicrex::FunctionMorseA, atomicrex::FunctionExpGaussian, atomicrex::FunctionExpB, atomicrex::FunctionExpA, and atomicrex::ParsedFunction.
|
inline |
Sets the cutoff of this function. The function will evaluate to flat zero for positions beyond this cutoff.
|
inline |
Applies the given screening function to this function. This function becomes the owner of the screening function and will delete it when done.
void atomicrex::FunctionBase::verifyDerivative | ( | ) |
Makes sure that the analytical first derivative is correct by comparing its value at various point to the numeric first derivative.
void atomicrex::FunctionBase::writeTabulated | ( | std::ostream & | out, |
double | rmin, | ||
double | rmax, | ||
double | dr | ||
) |
Write tabulated function to stream for visualization with Gnuplot.
out[in] | output stream |
rmin[in] | lower limit of range for input variable |
rmax[in] | upper limit of range for input variable |
dr[in] | spacing of input variable |