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

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

Collaboration diagram for EigenMatrix::SecondMatrixDirectiveImpl< E, C >:
[legend]

Public Types

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

Public Member Functions

 SecondMatrixDirectiveImpl (E &e)
 
template<int a, int i, int j, int k, int l, int m, int n>
term1 () const
 
template<int a, int i, int j, int k, int l, int m, int n>
term2 () const
 
template<int a, int i, int j, int k, int l, int m, int n>
term3 () const
 
template<int a, int i, int j, int k, int l, int m, int n>
term () const
 
template<int nb, int i, int j, int k, int l, int m, int n>
eval (const Number< nb > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int i, int j, int k, int l, int m, int n>
eval (const Number< 1 > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 

Public Attributes

Fdd4MImpl< E, C > r
 
Ee
 

Detailed Description

template<typename E, typename C>
struct EigenMatrix::SecondMatrixDirectiveImpl< E, C >

Definition at line 419 of file MatrixFunctionTemplate.hpp.

Member Typedef Documentation

◆ Fun

template<typename E , typename C >
using EigenMatrix::SecondMatrixDirectiveImpl< E, C >::Fun = typename E::Fun

Definition at line 422 of file MatrixFunctionTemplate.hpp.

◆ Number

template<typename E , typename C >
template<int N>
using EigenMatrix::SecondMatrixDirectiveImpl< E, C >::Number = FTensor::Number<N>

Definition at line 426 of file MatrixFunctionTemplate.hpp.

◆ NumberDim

template<typename E , typename C >
using EigenMatrix::SecondMatrixDirectiveImpl< E, C >::NumberDim = typename E::NumberDim

Definition at line 424 of file MatrixFunctionTemplate.hpp.

◆ Val

template<typename E , typename C >
using EigenMatrix::SecondMatrixDirectiveImpl< E, C >::Val = typename E::Val

Definition at line 420 of file MatrixFunctionTemplate.hpp.

◆ Vec

template<typename E , typename C >
using EigenMatrix::SecondMatrixDirectiveImpl< E, C >::Vec = typename E::Vec

Definition at line 421 of file MatrixFunctionTemplate.hpp.

Constructor & Destructor Documentation

◆ SecondMatrixDirectiveImpl()

template<typename E , typename C >
EigenMatrix::SecondMatrixDirectiveImpl< E, C >::SecondMatrixDirectiveImpl ( E e)
inline

Definition at line 428 of file MatrixFunctionTemplate.hpp.

428 : r(e), e(e) {}

Member Function Documentation

◆ eval() [1/2]

template<typename E , typename C >
template<int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::eval ( const Number< 1 > &  ,
const Number< i > &  ,
const Number< j > &  ,
const Number< k > &  ,
const Number< l > &  ,
const Number< m > &  ,
const Number< n > &   
) const
inline

Definition at line 485 of file MatrixFunctionTemplate.hpp.

487  {
488  return term<0, i, j, k, l, m, n>();
489  }

◆ eval() [2/2]

template<typename E , typename C >
template<int nb, int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::eval ( const Number< nb > &  ,
const Number< i > &  ,
const Number< j > &  ,
const Number< k > &  ,
const Number< l > &  ,
const Number< m > &  ,
const Number< n > &   
) const
inline

Definition at line 473 of file MatrixFunctionTemplate.hpp.

475  {
476  return term<nb - 1, i, j, k, l, m, n>()
477 
478  +
479 
480  eval(Number<nb - 1>(), Number<i>(), Number<j>(), Number<k>(),
481  Number<l>(), Number<m>(), Number<n>());
482  }

◆ term()

template<typename E , typename C >
template<int a, int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::term ( ) const
inline

Definition at line 451 of file MatrixFunctionTemplate.hpp.

451  {
452 
453  return
454 
455  (term1<a, i, j, k, l, m, n>() + term2<a, i, j, k, l, m, n>() +
456  term3<a, i, j, k, l, m, n>()) *
457  0.5
458 
459  +
460 
461  (e.aMM[a][a](Number<i>(), Number<j>(), Number<k>(), Number<l>()) *
462  e.aM[a](Number<m>(), Number<n>())) *
463  e.ddfVal(a)
464 
465  +
466 
467  r.eval(typename E::NumberDim(), Number<a>(), Number<i>(), Number<j>(),
468  Number<k>(), Number<l>(), Number<m>(), Number<n>()) *
469  0.25;
470  }

◆ term1()

template<typename E , typename C >
template<int a, int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::term1 ( ) const
inline

Definition at line 433 of file MatrixFunctionTemplate.hpp.

433  {
434  return e.d2MType0[a][get_sym_index(Number<k>(), Number<l>(), NumberDim())](
435  Number<i>(), Number<j>(), Number<m>(), Number<n>());
436  };

◆ term2()

template<typename E , typename C >
template<int a, int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::term2 ( ) const
inline

Definition at line 439 of file MatrixFunctionTemplate.hpp.

439  {
440  return e.d2MType0[a][get_sym_index(Number<i>(), Number<j>(), NumberDim())](
441  Number<k>(), Number<l>(), Number<m>(), Number<n>());
442  }

◆ term3()

template<typename E , typename C >
template<int a, int i, int j, int k, int l, int m, int n>
C EigenMatrix::SecondMatrixDirectiveImpl< E, C >::term3 ( ) const
inline

Definition at line 445 of file MatrixFunctionTemplate.hpp.

445  {
446  return e.d2MType0[a][get_sym_index(Number<n>(), Number<m>(), NumberDim())](
447  Number<i>(), Number<j>(), Number<k>(), Number<l>());
448  }

Member Data Documentation

◆ e

template<typename E , typename C >
E& EigenMatrix::SecondMatrixDirectiveImpl< E, C >::e

Definition at line 430 of file MatrixFunctionTemplate.hpp.

◆ r

template<typename E , typename C >
Fdd4MImpl<E, C> EigenMatrix::SecondMatrixDirectiveImpl< E, C >::r

Definition at line 429 of file MatrixFunctionTemplate.hpp.


The documentation for this struct was generated from the following file:
EigenMatrix::SecondMatrixDirectiveImpl::eval
C eval(const Number< nb > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
Definition: MatrixFunctionTemplate.hpp:473
EigenMatrix::get_sym_index
auto get_sym_index(const Number< N1 > &, const Number< N2 > &, const Number< Dim > &)
Definition: MatrixFunctionTemplate.hpp:58
EigenMatrix::SecondMatrixDirectiveImpl::NumberDim
typename E::NumberDim NumberDim
Definition: MatrixFunctionTemplate.hpp:424
a
constexpr double a
Definition: approx_sphere.cpp:30
EigenMatrix::SecondMatrixDirectiveImpl::e
E & e
Definition: MatrixFunctionTemplate.hpp:430
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
convert.n
n
Definition: convert.py:82
j
FTensor::Index< 'j', 3 > j
Definition: matrix_function.cpp:19
EigenMatrix::SecondMatrixDirectiveImpl::r
Fdd4MImpl< E, C > r
Definition: MatrixFunctionTemplate.hpp:429
m
FTensor::Index< 'm', 3 > m
Definition: shallow_wave.cpp:80
k
FTensor::Index< 'k', 3 > k
Definition: matrix_function.cpp:20
EigenMatrix::SecondMatrixDirectiveImpl::term
C term() const
Definition: MatrixFunctionTemplate.hpp:451
l
FTensor::Index< 'l', 3 > l
Definition: matrix_function.cpp:21