This class is used to define polynomial axisymmetric coarse-graining functions.
More...
|
| NORMALIZED_POLYNOMIAL () |
| Basic constructor; note that this does not determine the particular polynomial; one needs to call set_polynomial to define the coefficients. More...
|
|
void | set_polynomial (std::vector< Mdouble > new_coefficients, unsigned int new_dim) |
| Use this function to set the polynomial coefficients \(c_i\). This function calls finish_set_polynomial to normalize the coefficients. More...
|
|
void | set_polynomial (Mdouble *new_coefficients, unsigned int num_coeff, unsigned int new_dim) |
| Some as set_polynomial, but avoids the use of a vector. More...
|
|
void | setName (const char *new_name) |
| Use this function to change the name of the polynomial. More...
|
|
std::string | getName () |
| Returns name of the polynomial. More...
|
|
Mdouble | evaluate (Mdouble r) |
| Returns the value of the polynomial, \(p(r)=\sum_{i=0}^N c_i r^{N-i}\). More...
|
|
Mdouble | evaluateGradient (Mdouble r) |
| Returns the gradient of the polynomial, \(\partial_\alpha p(x,y,z)=\sum_{i=0}^N c_{i,\alpha} r^{N-i},\ \alpha=x,y,z\). More...
|
|
Mdouble | evaluateIntegral (Mdouble a, Mdouble b, Mdouble t) |
| Returns the value of the line integral along the normal P1P2 "from a to b" over the axisymmetric function. More...
|
|
int | getOrder (void) |
| Returns the order of the polynomial. More...
|
|
|
void | finish_set_polynomial () |
| Normalizes the polynomial coefficients \(c_i\) such that the integral over the unit sphere of the axisymmetric function \(p(r)\) is unity. More...
|
|
Mdouble | get_volume () |
| Returns the integral over the unit sphere of the axisymmetric function \(p(r)\). More...
|
|
Mdouble | evaluate_1D (Mdouble r) |
| Returns the value of the polynomial averaged over 2 dimensions. For StatType=X, \(r=|x|\). See also set_average_1D. More...
|
|
Mdouble | evaluate_2D (Mdouble r) |
| Returns the value of the polynomial averaged over 1 dimension. For StatType=XY, \(r=\sqrt{x^2+y^2}\). More...
|
|
void | set_average () |
| Sets averaged_coefficients. More...
|
|
void | set_average_1D () |
| Sets averaged_coefficients \(\bar{c}_i\) for StatType=X,Y,Z such that \(\sum_{i=0}^N \bar{c}_i x^{N-i} = \int\int_{|\vec{x}|\leq 1} p(|\vec{x}|) dy dz\). See evaluate_1D. More...
|
|
void | set_average_2D () |
| For StatType=XY,XZ,XZ, averaged_coefficients is not used since \(\bar{p}(r)\) can be evaluated as a function of \(c_i\). See evaluate_2D. More...
|
|
Mdouble | evaluateGradient_1D (Mdouble r) |
| Returns the value of the gradient averaged over 2 dimensions. More...
|
|
Mdouble | evaluateGradient_2D (Mdouble r) |
| Returns the value of the gradient averaged over 1 dimensions. More...
|
|
Mdouble | evaluateIntegral_1D (Mdouble a, Mdouble b, Mdouble t) |
| Returns the value of the line integral along the normal P1P2 "from a to b" over the axisymmetric function averaged over 2 dimensions. More...
|
|
Mdouble | evaluateIntegral_2D (Mdouble a, Mdouble b, Mdouble t) |
| Returns the value of the line integral along the normal P1P2 "from a to b" over the axisymmetric function averaged over 1 dimensions. More...
|
|
Mdouble | operator[] (int i) const |
| Access to the coefficients. More...
|
|
template<StatType T>
class NORMALIZED_POLYNOMIAL< T >
This class is used to define polynomial axisymmetric coarse-graining functions.
This class stores a polynomial, \(p(r)=\sum_{i=0}^N c_i r^{N-i}\), which is normalized such that the integral over the unit sphere of the axisymmetric function \(p(|\vec{x}|)\) is unity.
Use set_polynomial to define the polynomial. Use evaluate to evaluate the polynomial. Use evaluateGradient to evaluate the polynomial's gradient.
Calculations can be found in Src/docs/Polynomials.nb
This is used to define polynomial axisymmetric coarse-graining functions (see StatisticsVector).
Note: not everything is implemented yet: only dim=3 is working, no gradients are computed.
Returns the value of the polynomial, \(p(r)=\sum_{i=0}^N c_i r^{N-i}\).
For averaged StatType this function is templated. If averaging statistics are used, then an averaged function is stored as well; for averaging a over certain dimensions is stored as well.
For averaging over two dimensions, \((y_{max}-y_{min})\cdot (z_{max}-z_{min})\cdot \bar{p}(x)=\int_{\vec{x}\leq1} p(|\vec{x}|) dy\,dz = \sum_{i=0}^N \bar{c}_i r^{N-i}\).
For averaging over one dimensions, \((z_{max}-z_{min})\cdot \bar{p}(x,y)=\int_{\vec{x}\leq1} p(|\vec{x}|) dz = \sum_{i=0}^N \bar{c}_i r^{N-i}\).
Normalizes the polynomial coefficients \(c_i\) such that the integral over the unit sphere of the axisymmetric function \(p(r)\) is unity.
\(\int_0^1 f(r) p(r) dr = 1\), with \(f(r)=4\pi r^2\) for 3D, \(f(r)=2\pi r\) for 2D, \(f(r)=2\) for 1D systems.
Also sets averaged_coefficients
Assumes that dim and coefficients are already set.
Returns the integral over the unit sphere of the axisymmetric function \(p(r)\).
\(\int_{|\vec{x}|\leq1} p(|\vec{x}|) d\vec{x} = \int_0^1 f(r) p(r) dr = 1\), with \(f(r)=4\pi r^2\) for 3D, \(f(r)=2\pi r\) for 2D, \(f(r)=2\) for 1D systems.
For \(p(r)=\sum_{i=0}^{N-1} c_i r^{N-1-i}\), we obtain \(V = \sum_{i=0}^{N-1} 4\pi c_i/(2+N-i)\) for 3D, \(V = \sum_{i=0}^{N-1} 2\pi c_i/(1+N-i)\) for 2D, \(V = \sum_{i=0}^{N-1} 2 c_i/(N-i)\) for 1D systems.