Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
PLMD::SwitchingFunction Class Reference

#include <SwitchingFunction.h>

Public Member Functions

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

Static Public Member Functions

static void registerKeywords (Keywords &keys)
 

Private Attributes

std::unique_ptr< switchContainers::baseSwitchfunction
 
bool init =false
 This is to check that switching function has been initialized. More...
 

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::SwitchingFunction::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::SwitchingFunction::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::SwitchingFunction::description ( ) const

Returns a string with a description of the switching function.

◆ get_d0()

double PLMD::SwitchingFunction::get_d0 ( ) const

Returns d0.

◆ get_dmax()

double PLMD::SwitchingFunction::get_dmax ( ) const

Return dmax.

◆ get_dmax2()

double PLMD::SwitchingFunction::get_dmax2 ( ) const

Return dmax squared.

◆ get_r0()

double PLMD::SwitchingFunction::get_r0 ( ) const

Returns r0.

◆ registerKeywords()

void PLMD::SwitchingFunction::registerKeywords ( Keywords keys)
static

◆ set() [1/2]

void PLMD::SwitchingFunction::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::SwitchingFunction::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.

Member Data Documentation

◆ function

std::unique_ptr<switchContainers::baseSwitch> PLMD::SwitchingFunction::function
private

◆ init

bool PLMD::SwitchingFunction::init =false
private

This is to check that switching function has been initialized.


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