v0.16.3
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation Struct Reference

#include "users_modules/eshelbian_plasticity/src/LogarithmicDirectionalDerivatives.hpp"

Collaboration diagram for EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation:
[legend]

Public Member Functions

 SplitRotation (const Vector &a, const Vector &q)
 
Tensor value () const
 
Tensor first (const Vector &da, const Vector &dq) const
 
auto firstTensor (const int mode) const
 
auto secondTensor (const int row_mode, const int col_mode) const
 
template<int N>
void fill (const Matrix< N > &a, const Matrix< N > &q, Matrix< N > &result) const
 

Public Attributes

RotationExponential constant
 
RotationExponential higher
 

Detailed Description

Product interpolation exp(skew(a)) exp(skew(q)). Used by L2 rotation kinematics and reduced curvature. Constant and higher directions stay distinct; the jet product supplies every mixed derivative.

Definition at line 505 of file LogarithmicDirectionalDerivatives.hpp.

Constructor & Destructor Documentation

◆ SplitRotation()

EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::SplitRotation ( const Vector &  a,
const Vector &  q 
)
inline

Member Function Documentation

◆ fill()

template<int N>
void EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::fill ( const Matrix< N > &  a,
const Matrix< N > &  q,
Matrix< N > &  result 
) const
inline

Definition at line 550 of file LogarithmicDirectionalDerivatives.hpp.

550 {
551 Matrix<N> A, Q;
552 constant.fill(a, A);
553 higher.fill(q, Q);
554 result = product(A, Q);
555 }
void product(const Matrix< N > &a, const Matrix< N > &b, Matrix< N > &result)
constexpr AssemblyType A

◆ first()

Tensor EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::first ( const Vector &  da,
const Vector &  dq 
) const
inline

Definition at line 515 of file LogarithmicDirectionalDerivatives.hpp.

515 {
516 FTENSOR_INDEXES(3, i, j, k);
517 const auto dA = constant.first(da), dQ = higher.first(dq);
518 Tensor result;
519 result(i, j) = dA(i, k) * higher.R(k, j) + constant.R(i, k) * dQ(k, j);
520 return result;
521 }
#define FTENSOR_INDEXES(DIM,...)
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k

◆ firstTensor()

auto EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::firstTensor ( const int  mode) const
inline

Coordinate derivative tensor for one of the two three-vector factors.

Definition at line 524 of file LogarithmicDirectionalDerivatives.hpp.

524 {
525 FTENSOR_INDEXES(3, i, j, k, m);
527 if (!mode)
528 result(i, j, k) = constant.dR(i, m, k) * higher.R(m, j);
529 else
530 result(i, j, k) = constant.R(i, m) * higher.dR(m, j, k);
531 return result;
532 }
FTensor::Index< 'm', 3 > m

◆ secondTensor()

auto EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::secondTensor ( const int  row_mode,
const int  col_mode 
) const
inline

Constant/constant, constant/higher, higher/constant or higher/higher.

Definition at line 535 of file LogarithmicDirectionalDerivatives.hpp.

535 {
536 FTENSOR_INDEXES(3, i, j, k, l, m);
538 if (!row_mode && !col_mode)
539 result(i, j, k, l) = constant.ddR(i, m, k, l) * higher.R(m, j);
540 else if (!row_mode)
541 result(i, j, k, l) = constant.dR(i, m, k) * higher.dR(m, j, l);
542 else if (!col_mode)
543 result(i, j, k, l) = constant.dR(i, m, l) * higher.dR(m, j, k);
544 else
545 result(i, j, k, l) = constant.R(i, m) * higher.ddR(m, j, k, l);
546 return result;
547 }
FTensor::Index< 'l', 3 > l

◆ value()

Tensor EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::value ( ) const
inline

Definition at line 508 of file LogarithmicDirectionalDerivatives.hpp.

508 {
509 FTENSOR_INDEXES(3, i, j, k);
510 Tensor result;
511 result(i, j) = constant.R(i, k) * higher.R(k, j);
512 return result;
513 }

Member Data Documentation

◆ constant

RotationExponential EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::constant

Definition at line 557 of file LogarithmicDirectionalDerivatives.hpp.

◆ higher

RotationExponential EshelbianPlasticity::LogarithmicDirectionalDerivatives::SplitRotation::higher

Definition at line 557 of file LogarithmicDirectionalDerivatives.hpp.


The documentation for this struct was generated from the following file: