![]() |
v0.16.3 |
Mixed directional derivatives of matrix exponentials for the reduced Hessian of the logarithmic plastic parametrisation. More...
Go to the source code of this file.
Namespaces | |
| namespace | EshelbianPlasticity |
| namespace | EshelbianPlasticity::LogarithmicDirectionalDerivatives |
| namespace | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail |
Functions | |
| template<int N> | |
| void | EshelbianPlasticity::LogarithmicDirectionalDerivatives::product (const Matrix< N > &a, const Matrix< N > &b, Matrix< N > &result) |
| template<int N> | |
| Matrix< N > | EshelbianPlasticity::LogarithmicDirectionalDerivatives::product (const Matrix< N > &a, const Matrix< N > &b) |
| template<class V > | |
| Tensor | EshelbianPlasticity::LogarithmicDirectionalDerivatives::skew (const V &v) |
| Vector | EshelbianPlasticity::LogarithmicDirectionalDerivatives::axial (View block) |
| constexpr std::array< double, factorialTableSize > | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail::inverseFactorials () |
| template<std::size_t K> | |
| double | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail::expDividedDifferenceSeries (const std::array< double, K > &points) |
| DeviatorCurvature | EshelbianPlasticity::LogarithmicDirectionalDerivatives::deviatorCurvature (double c10, const Symmetric &h, const Symmetric &p, const Symmetric &s) |
Variables | |
| constexpr int | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail::factorialTableSize = 32 |
| constexpr auto | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail::inverseFactorial = inverseFactorials() |
| constexpr double | EshelbianPlasticity::LogarithmicDirectionalDerivatives::detail::closeSpread = 0.1 |
Mixed directional derivatives of matrix exponentials for the reduced Hessian of the logarithmic plastic parametrisation.
A jet, Matrix<N>, holds exp(A) together with its derivatives in up to N = 3 directions. Block mask is the mixed derivative in the directions whose bits are set, block 0 is the value; for N = 3 with directions (p, s, e), block 3 is D^2 exp(A)[p, s] and block 7 is D^3 exp(A)[p, s, e]. Jets form an algebra: product() of the jets of two factors is the jet of their product, which gives the mixed derivatives of F = R U F^p from the jets of the three exponentials without differentiating the product by hand.
The exponentials themselves are closed-form:
Usage. Directions are written into the single-bit blocks of an argument jet, the base into block 0, and fill() writes the complete jet:
A zero direction block gives zero derivatives, so the same argument jet can be reused with one direction changed. A base object is constructed once per quadrature point and its fill() is called for every direction set; the cost of fill() is a few hundred flops.
Definition in file LogarithmicDirectionalDerivatives.hpp.