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

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

Collaboration diagram for EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >:
[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, T2 &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
 
T2 & tS
 

Detailed Description

template<typename E, typename C, typename T1, typename T2>
struct EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >

Definition at line 596 of file MatrixFunctionTemplate.hpp.

Member Typedef Documentation

◆ Fun

template<typename E , typename C , typename T1 , typename T2 >
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::Fun = typename E::Fun

Definition at line 599 of file MatrixFunctionTemplate.hpp.

◆ Number

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

Definition at line 604 of file MatrixFunctionTemplate.hpp.

◆ NumberDim

template<typename E , typename C , typename T1 , typename T2 >
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::NumberDim = typename E::NumberDim

Definition at line 602 of file MatrixFunctionTemplate.hpp.

◆ NumberNb

template<typename E , typename C , typename T1 , typename T2 >
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::NumberNb = typename E::NumberNb

Definition at line 601 of file MatrixFunctionTemplate.hpp.

◆ Val

template<typename E , typename C , typename T1 , typename T2 >
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::Val = typename E::Val

Definition at line 597 of file MatrixFunctionTemplate.hpp.

◆ Vec

template<typename E , typename C , typename T1 , typename T2 >
using EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::Vec = typename E::Vec

Definition at line 598 of file MatrixFunctionTemplate.hpp.

Constructor & Destructor Documentation

◆ GetDiffDiffMatImpl()

template<typename E , typename C , typename T1 , typename T2 >
EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::GetDiffDiffMatImpl ( E e,
T1 &  t_a,
T2 &  t_S 
)
inline

Definition at line 606 of file MatrixFunctionTemplate.hpp.

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

Member Function Documentation

◆ add() [1/3]

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

Definition at line 654 of file MatrixFunctionTemplate.hpp.

655  {
656  return tS(0, 0) * r.eval(NumberDim(), Number<0>(), Number<0>(),
657  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
658  Number<L - 1>());
659  }

◆ add() [2/3]

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

Definition at line 638 of file MatrixFunctionTemplate.hpp.

639  {
640  return (tS(M - 1, 0) + tS(0, M - 1)) *
641  r.eval(NumberDim(), Number<M - 1>(), Number<0>(),
642  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
643  Number<L - 1>())
644 
645  +
646 
647  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
648  Number<M - 1>(), Number<M - 1>());
649 
650  ;
651  }

◆ add() [3/3]

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

Definition at line 613 of file MatrixFunctionTemplate.hpp.

614  {
615  if constexpr (N != M)
616  return (tS(M - 1, N - 1) + tS(N - 1, M - 1)) *
617  r.eval(NumberDim(), Number<M - 1>(), Number<N - 1>(),
618  Number<I - 1>(), Number<J - 1>(), Number<K - 1>(),
619  Number<L - 1>())
620 
621  +
622 
623  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
624  Number<M>(), Number<N - 1>());
625  else
626  return tS(M - 1, N - 1) * r.eval(NumberDim(), Number<M - 1>(),
627  Number<N - 1>(), Number<I - 1>(),
628  Number<J - 1>(), Number<K - 1>(),
629  Number<L - 1>())
630 
631  +
632 
633  add(Number<I>(), Number<J>(), Number<K>(), Number<L>(),
634  Number<M>(), Number<N - 1>());
635  }

◆ set() [1/5]

template<typename E , typename C , typename T1 , typename T2 >
void EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::set ( const Number< 0 > &  ,
const Number< 0 > &  ,
const Number< 0 > &  ,
const Number< 0 > &   
)
inline

Definition at line 690 of file MatrixFunctionTemplate.hpp.

691  {}

◆ set() [2/5]

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

Definition at line 685 of file MatrixFunctionTemplate.hpp.

686  {
687  set(Number<I - 1>(), Number<I - 1>(), Number<I - 1>(), Number<I - 1>());
688  }

◆ set() [3/5]

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

Definition at line 679 of file MatrixFunctionTemplate.hpp.

680  {
681  set(Number<I>(), Number<J - 1>(), Number<I>(), Number<J - 1>());
682  }

◆ set() [4/5]

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

Definition at line 673 of file MatrixFunctionTemplate.hpp.

674  {
675  set(Number<I>(), Number<J>(), Number<K - 1>(), Number<K - 1>());
676  }

◆ set() [5/5]

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

Definition at line 662 of file MatrixFunctionTemplate.hpp.

663  {
664  set(Number<I>(), Number<J>(), Number<K>(), Number<L - 1>());
665  tA(I - 1, J - 1, K - 1, L - 1) = add(Number<I>(), Number<J>(), Number<K>(),
666  Number<L>(), NumberDim(), NumberDim());
667  // Major symmetry
668  if constexpr (K != I || L != J)
669  tA(K - 1, L - 1, I - 1, J - 1) = tA(I - 1, J - 1, K - 1, L - 1);
670  }

Member Data Documentation

◆ e

template<typename E , typename C , typename T1 , typename T2 >
E& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::e

Definition at line 608 of file MatrixFunctionTemplate.hpp.

◆ r

template<typename E , typename C , typename T1 , typename T2 >
SecondMatrixDirectiveImpl<E, C> EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::r

Definition at line 607 of file MatrixFunctionTemplate.hpp.

◆ tA

template<typename E , typename C , typename T1 , typename T2 >
T1& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::tA

Definition at line 609 of file MatrixFunctionTemplate.hpp.

◆ tS

template<typename E , typename C , typename T1 , typename T2 >
T2& EigenMatrix::GetDiffDiffMatImpl< E, C, T1, T2 >::tS

Definition at line 610 of file MatrixFunctionTemplate.hpp.


The documentation for this struct was generated from the following file:
MoFEM::K
VectorDouble K
Definition: Projection10NodeCoordsOnField.cpp:125
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
PlasticOps::M
FTensor::Index< 'M', 3 > M
Definition: PlasticOps.hpp:117
EigenMatrix::GetDiffDiffMatImpl::e
E & e
Definition: MatrixFunctionTemplate.hpp:608
EigenMatrix::GetDiffDiffMatImpl::r
SecondMatrixDirectiveImpl< E, C > r
Definition: MatrixFunctionTemplate.hpp:607
EigenMatrix::GetDiffDiffMatImpl::tS
T2 & tS
Definition: MatrixFunctionTemplate.hpp:610
MoFEM::L
VectorDouble L
Definition: Projection10NodeCoordsOnField.cpp:124
N
const int N
Definition: speed_test.cpp:3
EigenMatrix::GetDiffDiffMatImpl::set
void set(const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &)
Definition: MatrixFunctionTemplate.hpp:662
EigenMatrix::GetDiffDiffMatImpl::add
auto add(const Number< I > &, const Number< J > &, const Number< K > &, const Number< L > &, const Number< M > &, const Number< N > &)
Definition: MatrixFunctionTemplate.hpp:613
EigenMatrix::GetDiffDiffMatImpl::NumberDim
typename E::NumberDim NumberDim
Definition: MatrixFunctionTemplate.hpp:602
EigenMatrix::GetDiffDiffMatImpl::tA
T1 & tA
Definition: MatrixFunctionTemplate.hpp:609