Loading...
Searching...
No Matches
PLMD::SwitchingFunctionAccelerable Class Reference

Small class to compute switching functions. More...

#include <SwitchingFunction.h>

Public Member Functions

double calculate (double x, double &df) const
 Compute the switching function.
 
double calculateSqr (double distance2, double &dfunc) const
 Compute the switching function.
 
std::string description () const
 Returns a string with a description of the switching function.
 
double get_d0 () const
 Returns d0.
 
const switchContainers::Dataget_data () const
 Return the settings of the switching function.
 
double get_dmax () const
 Return dmax.
 
double get_dmax2 () const
 Return dmax squared.
 
double get_r0 () const
 Returns r0.
 
void removeFromACCDevice () const
 
void set (const std::string &definition, std::string &errormsg)
 Set an arbitrary switching function.
 
void set (int nn, int mm, double r_0, double d_0)
 Set a "rational" switching function.
 
void toACCDevice () const
 

Static Public Member Functions

static void registerKeywords (Keywords &keys)
 

Private Attributes

switchContainers::Data switchData
 
switchContainers::switchType type =switchContainers::switchType::not_initialized
 

Detailed Description

Small class to compute switching functions.

Switching functions are created using set() and then can be used with function calculate() or calculateSqr(). Since this is typically computed on a distance vector, the second all (calculateSqr()) allows to skip the calculation of a square root in some case, thus potentially increasing performances.

Member Function Documentation

◆ calculate()

double PLMD::SwitchingFunctionAccelerable::calculate ( double x,
double & df ) const

Compute the switching function.

Returns s(x). df will be set to the value of the derivative of the switching function _divided_by_x

◆ calculateSqr()

double PLMD::SwitchingFunctionAccelerable::calculateSqr ( double distance2,
double & dfunc ) const

Compute the switching function.

Returns \( s(\sqrt{x})\) . df will be set to the \( \frac{1}{\sqrt{x}}\frac{ds}{d\sqrt{x}}= 2 \frac{ds}{dx}\) (same as calculate()). The advantage is that in some case the expensive square root can be avoided (namely for rational functions, if nn and mm are even and d0 is zero)

◆ description()

std::string PLMD::SwitchingFunctionAccelerable::description ( ) const

Returns a string with a description of the switching function.

◆ get_d0()

double PLMD::SwitchingFunctionAccelerable::get_d0 ( ) const

Returns d0.

◆ get_data()

const switchContainers::Data & PLMD::SwitchingFunctionAccelerable::get_data ( ) const

Return the settings of the switching function.

◆ get_dmax()

double PLMD::SwitchingFunctionAccelerable::get_dmax ( ) const

Return dmax.

◆ get_dmax2()

double PLMD::SwitchingFunctionAccelerable::get_dmax2 ( ) const

Return dmax squared.

◆ get_r0()

double PLMD::SwitchingFunctionAccelerable::get_r0 ( ) const

Returns r0.

◆ registerKeywords()

void PLMD::SwitchingFunctionAccelerable::registerKeywords ( Keywords & keys)
static

◆ removeFromACCDevice()

void PLMD::SwitchingFunctionAccelerable::removeFromACCDevice ( ) const

◆ set() [1/2]

void PLMD::SwitchingFunctionAccelerable::set ( const std::string & definition,
std::string & errormsg )

Set an arbitrary switching function.

Parse the string in definition and possibly returns errors in the errormsg string

◆ set() [2/2]

void PLMD::SwitchingFunctionAccelerable::set ( int nn,
int mm,
double r_0,
double d_0 )

Set a "rational" switching function.

Notice that a d_max is set automatically to a value such that f(d_max)=0.00001.

◆ toACCDevice()

void PLMD::SwitchingFunctionAccelerable::toACCDevice ( ) const

Member Data Documentation

◆ switchData

switchContainers::Data PLMD::SwitchingFunctionAccelerable::switchData
private

◆ type

switchContainers::switchType PLMD::SwitchingFunctionAccelerable::type =switchContainers::switchType::not_initialized
private

The documentation for this class was generated from the following files: