|
occ
|
Functions | |
| double | ipow (double x, int n) |
| constexpr double | fact (int n) |
| double | rotation_kernel (int t, int u, int v, int a, int b, int c, const Mat3 &M) |
| Compute the rotation kernel element R_l(tuv, abc; M). | |
| double | rotation_kernel_derivative (int t, int u, int v, int a, int b, int c, const Mat3 &M, const Mat3 &M1) |
| Compute the derivative of the rotation kernel w.r.t. | |
| double | rotation_kernel_second_derivative (int t, int u, int v, int a, int b, int c, const Mat3 &M, const Mat3 &M1k, const Mat3 &M1l, const Mat3 &M2kl) |
| Compute the second derivative of the rotation kernel w.r.t. | |
|
inlineconstexpr |
|
inline |
|
inline |
Compute the rotation kernel element R_l(tuv, abc; M).
For a symmetric rank-l Cartesian tensor, the rotation from body to lab involves summing over all 3x3 transportation matrices p with row sums (t,u,v) and column sums (a,b,c).
K = sum_p [t!/(pxx!pxy!pxz!) * u!/(pyx!pyy!pyz!) * v!/(pzx!pzy!pzz!)]
|
inline |
Compute the derivative of the rotation kernel w.r.t.
angle-axis parameter.
Given M1 = dM/dp_k, uses the product rule: dK/dp_k = sum_p mc * sum_{i,j: p(i,j)>0} [p(i,j) * M(i,j)^(p(i,j)-1) * M1(i,j)
|
inline |
Compute the second derivative of the rotation kernel w.r.t.
angle-axis parameters.
Given M1 = dM/dp_k and M2 = dM/dp_l and M12 = d²M/dp_k dp_l, uses the product rule to compute d²K/dp_k dp_l.
The kernel is: K = sum_p mc * prod_{i,j} M(i,j)^p(i,j)
The second derivative involves: