Small class to compure switching functions.
More...
#include <SwitchingFunction.h>
|
double | do_rational (double rdist, double &dfunc, int nn, int mm) const |
| Low-level tool to compute rational functions. More...
|
|
Small class to compure 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.
◆ anonymous enum
Type of function.
Enumerator |
---|
rational | |
exponential | |
gaussian | |
smap | |
cubic | |
tanh | |
matheval | |
nativeq | |
◆ SwitchingFunction() [1/2]
PLMD::SwitchingFunction::SwitchingFunction |
( |
| ) |
|
◆ ~SwitchingFunction()
PLMD::SwitchingFunction::~SwitchingFunction |
( |
| ) |
|
◆ SwitchingFunction() [2/2]
◆ 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.
◆ do_rational()
double PLMD::SwitchingFunction::do_rational |
( |
double |
rdist, |
|
|
double & |
dfunc, |
|
|
int |
nn, |
|
|
int |
mm |
|
) |
| const |
|
private |
◆ get_d0()
double PLMD::SwitchingFunction::get_d0 |
( |
| ) |
const |
◆ get_dmax()
double PLMD::SwitchingFunction::get_dmax |
( |
| ) |
const |
◆ get_dmax2()
double PLMD::SwitchingFunction::get_dmax2 |
( |
| ) |
const |
◆ get_r0()
double PLMD::SwitchingFunction::get_r0 |
( |
| ) |
const |
◆ operator=()
◆ registerKeywords()
void PLMD::SwitchingFunction::registerKeywords |
( |
Keywords & |
keys | ) |
|
|
static |
◆ set() [1/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.
◆ set() [2/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
int PLMD::SwitchingFunction::a |
|
private |
Parameters for smap function.
int PLMD::SwitchingFunction::b |
|
private |
◆ beta
double PLMD::SwitchingFunction::beta |
|
private |
double PLMD::SwitchingFunction::c |
|
private |
double PLMD::SwitchingFunction::d |
|
private |
◆ d0
double PLMD::SwitchingFunction::d0 |
|
private |
Minimum distance (before this, function is one)
◆ dmax
double PLMD::SwitchingFunction::dmax |
|
private |
Maximum distance (after this, function is zero)
◆ dmax_2
double PLMD::SwitchingFunction::dmax_2 |
|
private |
◆ evaluator
std::vector<void*> PLMD::SwitchingFunction::evaluator |
|
private |
Evaluator for matheval:
- Warning
- Since evaluator is not thread safe, we should create one evaluator per thread.
◆ evaluator_deriv
std::vector<void*> PLMD::SwitchingFunction::evaluator_deriv |
|
private |
Evaluator for matheval:
- Warning
- Since evaluator is not thread safe, we should create one evaluator per thread.
◆ init
bool PLMD::SwitchingFunction::init |
|
private |
This is to check that switching function has been initialized.
◆ invr0
double PLMD::SwitchingFunction::invr0 |
|
private |
Inverse of scaling length.
We store the inverse to avoid a division
◆ invr0_2
double PLMD::SwitchingFunction::invr0_2 |
|
private |
◆ lambda
double PLMD::SwitchingFunction::lambda |
|
private |
◆ mm
int PLMD::SwitchingFunction::mm |
|
private |
◆ nn
int PLMD::SwitchingFunction::nn |
|
private |
Exponents for rational function.
◆ ref
double PLMD::SwitchingFunction::ref |
|
private |
◆ shift
double PLMD::SwitchingFunction::shift |
|
private |
◆ stretch
double PLMD::SwitchingFunction::stretch |
|
private |
Parameters for stretching the function to zero at d_max.
◆ type
enum { ... } PLMD::SwitchingFunction::type |
The documentation for this class was generated from the following files: