![]() |
v0.16.3 |
#include "users_modules/eshelbian_plasticity/src/LogarithmicDirectionalDerivatives.hpp"
Public Member Functions | |
| template<class A > | |
| SymmetricExponential (const A &a) | |
| SymmetricExponential | negated () const |
| Symmetric | first (const Symmetric &e) const |
| Symmetric | second (const Symmetric &e1, const Symmetric &e2) const |
| Symmetric | third (const Symmetric &e1, const Symmetric &e2, const Symmetric &e3) const |
| template<int N> | |
| void | fill (const Matrix< N > &argument, Matrix< N > &result) const |
Static Public Member Functions | |
| static Symmetric | symmetric (View block) |
Public Attributes | |
| FTensor::Tensor1< double, 3 > | values |
| FTensor::Tensor2< double, 3, 3 > | vectors |
| Symmetric | value |
Private Member Functions | |
| Tensor | toEigenbasis (const Symmetric &e) const |
| Symmetric | fromEigenbasis (const Tensor &t) const |
| Tensor | firstInBasis (const Tensor &x) const |
| Tensor | secondInBasis (const Tensor &x, const Tensor &y) const |
| Tensor | thirdInBasis (const Tensor &x, const Tensor &y, const Tensor &z) const |
| void | prepareDifferences () |
Static Private Member Functions | |
| static const EigenMatrix::Fun< double > & | expFun () |
Private Attributes | |
| double | second_ [3][3] |
| double | third_ [3][3][3] |
| double | fourth_ [3][3][3][3] |
Exponential of a symmetric matrix with its directional derivatives up to third order from the eigen-decomposition. The value is EigenMatrix::getMat (MatrixFunction.hpp). The derivatives use the divided-difference expansion in the eigenbasis (components X_ab of a direction, exp[...] divided differences of exp at the eigenvalues): (D exp[E])_ab = exp[l_a,l_b] E_ab, (D^2 exp[E,F])_ab = sum_c exp[l_a,l_c,l_b] (E_ac F_cb + F_ac E_cb), (D^3 exp[E,F,G])_ab = sum_{c,d} exp[l_a,l_c,l_d,l_b] sum_{perm (X,Y,Z) of (E,F,G)} X_ac Y_cd Z_db. The divided differences are evaluated as a short series when eigenvalues are close, so coincident and nearly coincident eigenvalues are exact; the confluent formulas of EigenMatrix::getDiffMat and getDiffDiffMat apply only to eigenvalues equal to 1e-14 and lose about eps/gap^2 in between. The decomposition and the difference tables are formed once per base and reused for every direction set.
Definition at line 227 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineexplicit |
Definition at line 228 of file LogarithmicDirectionalDerivatives.hpp.
|
inlinestaticprivate |
Definition at line 307 of file LogarithmicDirectionalDerivatives.hpp.
|
inline |
Fill the jet of exp at this base: block 0 the value, single-bit blocks the first derivatives in the (symmetric) direction blocks of argument, two-bit blocks the second and the three-bit block the third derivative. A zero direction block gives zero derivatives.
Definition at line 277 of file LogarithmicDirectionalDerivatives.hpp.
|
inline |
D exp(A)[e]
Definition at line 248 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Definition at line 334 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Definition at line 323 of file LogarithmicDirectionalDerivatives.hpp.
|
inline |
exp(-A) from the same eigenvectors, without a second diagonalisation.
Definition at line 238 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Divided differences of exp at the eigenvalues for every index tuple. The eigenvalues are ascending (LAPACK dsyev), so for a sorted tuple the extreme points are its first and last entry and the recursion exp[p_0..p_k] = (exp[p_1..p_k] - exp[p_0..p_{k-1}]) / (p_k - p_0) divides by the largest spread; tuples with a small spread use the series.
Definition at line 375 of file LogarithmicDirectionalDerivatives.hpp.
|
inline |
D^2 exp(A)[e1, e2]
Definition at line 253 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Definition at line 342 of file LogarithmicDirectionalDerivatives.hpp.
|
inline |
D^3 exp(A)[e1, e2, e3]
Definition at line 258 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Definition at line 354 of file LogarithmicDirectionalDerivatives.hpp.
|
inlineprivate |
Definition at line 314 of file LogarithmicDirectionalDerivatives.hpp.
|
private |
Definition at line 428 of file LogarithmicDirectionalDerivatives.hpp.
|
private |
exp[l_a,l_b], exp[l_a,l_b,l_c], exp[l_a,l_b,l_c,l_d].
Definition at line 426 of file LogarithmicDirectionalDerivatives.hpp.
|
private |
Definition at line 427 of file LogarithmicDirectionalDerivatives.hpp.
| Symmetric EshelbianPlasticity::LogarithmicDirectionalDerivatives::SymmetricExponential::value |
Definition at line 304 of file LogarithmicDirectionalDerivatives.hpp.
| FTensor::Tensor1<double, 3> EshelbianPlasticity::LogarithmicDirectionalDerivatives::SymmetricExponential::values |
Definition at line 301 of file LogarithmicDirectionalDerivatives.hpp.
| FTensor::Tensor2<double, 3, 3> EshelbianPlasticity::LogarithmicDirectionalDerivatives::SymmetricExponential::vectors |
Eigenvectors in rows (MoFEM convention).
Definition at line 303 of file LogarithmicDirectionalDerivatives.hpp.