v0.14.0
Public Types | Public Member Functions | Public Attributes | List of all members
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > > Struct Template Reference

#include <src/ftensor/src/MatrixFunctionTemplate.hpp>

Collaboration diagram for EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >:
[legend]

Public Types

using Val = typename E::Val
 
using Vec = typename E::Vec
 
using Fun = typename E::Fun
 
using NumberNb = typename E::NumberNb
 
using NumberDim = typename E::NumberDim
 
template<int N>
using Number = FTensor::Number< N >
 

Public Member Functions

 GetDiffDiffMatImpl (E &e, T1 &t_a, FTensor::Tensor2_symmetric< VT2, DimT2 > &t_S)
 
template<int I, int J, int K, int L, int M, int N>
auto add (const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &, const Number< M > &, const Number< N > &)
 
template<int I, int J, int K, int L, int M>
auto add (const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &, const Number< M > &, const Number< 1 > &)
 
template<int I, int J, int K, int L>
auto add (const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &, const Number< 1 > &, const Number< 1 > &)
 
template<int I, int J, int K, int L>
void set (const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &)
 
template<int I, int J, int K>
void set (const Number< I > &, const Number< J > &, const Number< K > &, const Number< 0 > &)
 
template<int I, int J>
void set (const Number< I > &, const Number< J > &, const Number< 0 > &, const Number< 0 > &)
 
template<int I, int K>
void set (const Number< I > &, const Number< 0 > &, const Number< K > &, const Number< 0 > &)
 
void set (const Number< 0 > &, const Number< 0 > &, const Number< 0 > &, const Number< 0 > &)
 

Public Attributes

SecondMatrixDirectiveImpl< E, C > r
 
Ee
 
T1 & tA
 
FTensor::Tensor2_symmetric< VT2, DimT2 > & tS
 

Detailed Description

template<typename E, typename C, typename T1, typename VT2, int DimT2>
struct EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >

Definition at line 695 of file MatrixFunctionTemplate.hpp.

Member Typedef Documentation

◆ Fun

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::Fun = typename E::Fun

Definition at line 698 of file MatrixFunctionTemplate.hpp.

◆ Number

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int N>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::Number = FTensor::Number<N>

Definition at line 703 of file MatrixFunctionTemplate.hpp.

◆ NumberDim

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::NumberDim = typename E::NumberDim

Definition at line 701 of file MatrixFunctionTemplate.hpp.

◆ NumberNb

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::NumberNb = typename E::NumberNb

Definition at line 700 of file MatrixFunctionTemplate.hpp.

◆ Val

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::Val = typename E::Val

Definition at line 696 of file MatrixFunctionTemplate.hpp.

◆ Vec

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::Vec = typename E::Vec

Definition at line 697 of file MatrixFunctionTemplate.hpp.

Constructor & Destructor Documentation

◆ GetDiffDiffMatImpl()

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::GetDiffDiffMatImpl ( E e,
T1 &  t_a,
FTensor::Tensor2_symmetric< VT2, DimT2 > &  t_S 
)
inline

Definition at line 705 of file MatrixFunctionTemplate.hpp.

706  : r(e), e(e), tA(t_a), tS(t_S) {}

Member Function Documentation

◆ add() [1/3]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J, int K, int L>
auto EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::add ( const Number< I > &  ,
const Number< J > &  ,
const Number< K > &  ,
const Number< L > &  ,
const Number< 1 > &  ,
const Number< 1 > &   
)
inline

Definition at line 753 of file MatrixFunctionTemplate.hpp.

754  {
755  return tS(Number<0>(), Number<0>()) *
756  r.eval(NumberDim(), Number<0>(), Number<0>(), Number<I - 1>(),
757  Number<J - 1>(), Number<K - 1>(), Number<L - 1>());
758  }

◆ add() [2/3]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J, int K, int L, int M>
auto EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::add ( const Number< I > &  ,
const Number< J > &  ,
const Number< K > &  ,
const Number< L > &  ,
const Number< M > &  ,
const Number< 1 > &   
)
inline

Definition at line 739 of file MatrixFunctionTemplate.hpp.

740  {
741  return (2 * tS(Number<M - 1>(), Number<0>())) *
742  r.eval(NumberDim(), Number<M - 1>(), Number<0>(),
743  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
744  Number<L - 1>())
745 
746  +
747 
748  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
749  Number<M - 1>(), Number<M - 1>());
750  }

◆ add() [3/3]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J, int K, int L, int M, int N>
auto EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::add ( const Number< I > &  ,
const Number< J > &  ,
const Number< K > &  ,
const Number< L > &  ,
const Number< M > &  ,
const Number< N > &   
)
inline

Definition at line 713 of file MatrixFunctionTemplate.hpp.

714  {
715 
716  if constexpr (N != M)
717  return (2 * tS(Number<M - 1>(), Number<N - 1>())) *
718  r.eval(NumberDim(), Number<M - 1>(), Number<N - 1>(),
719  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
720  Number<L - 1>())
721 
722  +
723 
724  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
725  Number<M>(), Number<N - 1>());
726  else
727  return tS(Number<M - 1>(), Number<N - 1>()) *
728  r.eval(NumberDim(), Number<M - 1>(), Number<N - 1>(),
729  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
730  Number<L - 1>())
731 
732  +
733 
734  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
735  Number<M>(), Number<N - 1>());
736  }

◆ set() [1/5]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set ( const Number< 0 > &  ,
const Number< 0 > &  ,
const Number< 0 > &  ,
const Number< 0 > &   
)
inline

Definition at line 795 of file MatrixFunctionTemplate.hpp.

796  {}

◆ set() [2/5]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int K>
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set ( const Number< I > &  ,
const Number< 0 > &  ,
const Number< K > &  ,
const Number< 0 > &   
)
inline

Definition at line 790 of file MatrixFunctionTemplate.hpp.

791  {
792  set(Number<I - 1>(), Number<I - 1>(), Number<I - 1>(), Number<I - 1>());
793  }

◆ set() [3/5]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J>
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set ( const Number< I > &  ,
const Number< J > &  ,
const Number< 0 > &  ,
const Number< 0 > &   
)
inline

Definition at line 784 of file MatrixFunctionTemplate.hpp.

785  {
786  set(Number<I>(), Number<J - 1>(), Number<I>(), Number<J - 1>());
787  }

◆ set() [4/5]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J, int K>
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set ( const Number< I > &  ,
const Number< J > &  ,
const Number< K > &  ,
const Number< 0 > &   
)
inline

Definition at line 778 of file MatrixFunctionTemplate.hpp.

779  {
780  set(Number<I>(), Number<J>(), Number<K - 1>(), Number<K - 1>());
781  }

◆ set() [5/5]

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
template<int I, int J, int K, int L>
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set ( const Number< I > &  ,
const Number< J > &  ,
const Number< K > &  ,
const Number< L > &   
)
inline

Definition at line 761 of file MatrixFunctionTemplate.hpp.

762  {
763 
764  set(Number<I>(), Number<J>(), Number<K>(), Number<L - 1>());
765 
766  tA(Number<I - 1>(), Number<J - 1>(), Number<K - 1>(), Number<L - 1>()) =
767  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(), NumberDim(),
768  NumberDim());
769 
770  // Major symmetry
771  if constexpr (K != I || L != J)
772  tA(Number<K - 1>(), Number<L - 1>(), Number<I - 1>(), Number<J - 1>()) =
773  tA(Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
774  Number<L - 1>());
775  }

Member Data Documentation

◆ e

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
E& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::e

Definition at line 708 of file MatrixFunctionTemplate.hpp.

◆ r

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
SecondMatrixDirectiveImpl<E, C> EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::r

Definition at line 707 of file MatrixFunctionTemplate.hpp.

◆ tA

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
T1& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::tA

Definition at line 709 of file MatrixFunctionTemplate.hpp.

◆ tS

template<typename E , typename C , typename T1 , typename VT2 , int DimT2>
FTensor::Tensor2_symmetric<VT2, DimT2>& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::tS

Definition at line 710 of file MatrixFunctionTemplate.hpp.


The documentation for this struct was generated from the following file:
MoFEM::K
VectorDouble K
Definition: Projection10NodeCoordsOnField.cpp:125
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::e
E & e
Definition: MatrixFunctionTemplate.hpp:708
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::r
SecondMatrixDirectiveImpl< E, C > r
Definition: MatrixFunctionTemplate.hpp:707
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::NumberDim
typename E::NumberDim NumberDim
Definition: MatrixFunctionTemplate.hpp:701
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::add
auto add(const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &, const Number< M > &, const Number< N > &)
Definition: MatrixFunctionTemplate.hpp:713
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::tA
T1 & tA
Definition: MatrixFunctionTemplate.hpp:709
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::set
void set(const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &)
Definition: MatrixFunctionTemplate.hpp:761
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
PlasticOps::M
FTensor::Index< 'M', 3 > M
Definition: PlasticOps.hpp:117
MoFEM::L
VectorDouble L
Definition: Projection10NodeCoordsOnField.cpp:124
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, FTensor::Tensor2_symmetric< VT2, DimT2 > >::tS
FTensor::Tensor2_symmetric< VT2, DimT2 > & tS
Definition: MatrixFunctionTemplate.hpp:710
N
const int N
Definition: speed_test.cpp:3