v0.15.0
Loading...
Searching...
No Matches
EigenMatrix::Fdd4MImpl< E, C > Struct Template Reference

#include "src/ftensor/src/MatrixFunctionTemplate.hpp"

Collaboration diagram for EigenMatrix::Fdd4MImpl< E, C >:
[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
 

Public Member Functions

 Fdd4MImpl (E &e)
 
template<int A, int a, int b, int I, int J, int K, int L>
auto fd2M () const
 
template<int a, int b, int i, int j, int k, int l, int m, int n>
auto term_fd2S (const Number< a > &, const Number< b > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int NB, int a, int b, int i, int j, int k, int l, int m, int n>
term_SM (const Number< a > &, const Number< b > &, const Number< NB > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int nb, int a, int i, int j, int k, int l, int m, int n>
eval_fdS2 (const Number< nb > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int a, int i, int j, int k, int l, int m, int n>
eval_fdS2 (const Number< 1 > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int nb, int a, int i, int j, int k, int l, int m, int n>
eval_SM (const Number< nb > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int a, int i, int j, int k, int l, int m, int n>
eval_SM (const Number< 1 > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 
template<int nb, int a, int i, int j, int k, int l, int m, int n>
eval (const Number< nb > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
 

Public Attributes

Ee
 

Detailed Description

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

Definition at line 165 of file MatrixFunctionTemplate.hpp.

Member Typedef Documentation

◆ Fun

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

Definition at line 168 of file MatrixFunctionTemplate.hpp.

◆ NumberDim

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

Definition at line 174 of file MatrixFunctionTemplate.hpp.

◆ NumberNb

template<typename E , typename C >
using EigenMatrix::Fdd4MImpl< E, C >::NumberNb = typename E::NumberNb

Definition at line 173 of file MatrixFunctionTemplate.hpp.

◆ Val

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

Definition at line 166 of file MatrixFunctionTemplate.hpp.

◆ Vec

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

Definition at line 167 of file MatrixFunctionTemplate.hpp.

Constructor & Destructor Documentation

◆ Fdd4MImpl()

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

Definition at line 170 of file MatrixFunctionTemplate.hpp.

Member Function Documentation

◆ eval()

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

Definition at line 340 of file MatrixFunctionTemplate.hpp.

342 {
343 return
344
345 (2 * e.fVal(a)) * eval_SM(NumberDim(), Number<a>(), Number<i>(),
347 Number<m>(), Number<n>())
348
349 +
350
353 }
constexpr double a
FTensor::Number< N > Number
typename E::NumberDim NumberDim
C eval_SM(const Number< nb > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const
C eval_fdS2(const Number< nb > &, const Number< a > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const

◆ eval_fdS2() [1/2]

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

Definition at line 301 of file MatrixFunctionTemplate.hpp.

303 {
304 if constexpr (a != 0)
305 return term_fd2S(Number<a>(), Number<0>(), Number<i>(), Number<j>(),
307 else
308 return 0;
309 }
auto term_fd2S(const Number< a > &, const Number< b > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const

◆ eval_fdS2() [2/2]

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

Definition at line 287 of file MatrixFunctionTemplate.hpp.

289 {
290 if constexpr (a != nb - 1)
295 else
298 }

◆ eval_SM() [1/2]

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

Definition at line 328 of file MatrixFunctionTemplate.hpp.

330 {
331 if constexpr (a != 0)
332 return term_SM(Number<a>(), Number<0>(), NumberNb(), Number<i>(),
334 Number<n>());
335 else
336 return 0;
337 }
C term_SM(const Number< a > &, const Number< b > &, const Number< NB > &, const Number< i > &, const Number< j > &, const Number< k > &, const Number< l > &, const Number< m > &, const Number< n > &) const

◆ eval_SM() [2/2]

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

Definition at line 312 of file MatrixFunctionTemplate.hpp.

314 {
315 if constexpr (a != nb - 1)
318 Number<n>()) +
321
322 else
325 }

◆ fd2M()

template<typename E , typename C >
template<int A, int a, int b, int I, int J, int K, int L>
auto EigenMatrix::Fdd4MImpl< E, C >::fd2M ( ) const
inline

Definition at line 178 of file MatrixFunctionTemplate.hpp.

178 {
179 return e.d2MType1[b][get_sym_index(Number<A>(), Number<a>(), NumberDim())](
181 }
auto get_sym_index(const Number< N1 > &, const Number< N2 > &, const Number< Dim > &)

◆ term_fd2S()

template<typename E , typename C >
template<int a, int b, int i, int j, int k, int l, int m, int n>
auto EigenMatrix::Fdd4MImpl< E, C >::term_fd2S ( const Number< a > & ,
const Number< b > & ,
const Number< i > & ,
const Number< j > & ,
const Number< k > & ,
const Number< l > & ,
const Number< m > & ,
const Number< n > &  ) const
inline

Definition at line 184 of file MatrixFunctionTemplate.hpp.

186 {
187 if constexpr (i == j && k == l) {
188 return 4 *
189 (
190
192
193 +
194
196
197 );
198
199 } else if constexpr (i == j)
200 return 2 *
201 (
202
204 e.aM[b](Number<j>(), Number<l>()) +
206
207 +
208
210 e.aM[a](Number<j>(), Number<l>()) +
212
213 );
214 else if constexpr (k == l)
215 return 2 *
216 (
217
219 e.aM[b](Number<j>(), Number<l>()) +
221 e.aM[a](Number<i>(), Number<k>()) +
222
223 +
224
226 e.aM[a](Number<j>(), Number<l>()) +
228
229 );
230 else
231 return fd2M<a, a, b, i, k, m, n>() * e.aM[b](Number<j>(), Number<l>()) +
235
236 +
237
242 }
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k

◆ term_SM()

template<typename E , typename C >
template<int NB, int a, int b, int i, int j, int k, int l, int m, int n>
C EigenMatrix::Fdd4MImpl< E, C >::term_SM ( const Number< a > & ,
const Number< b > & ,
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 245 of file MatrixFunctionTemplate.hpp.

248 {
249
250 if constexpr (NB == 1) {
251 return 0;
252
253 } else if constexpr (NB == 2) {
254
255 if constexpr (a == 1 || b == 1) {
256 return
257
258 e.aF2(Number<a>(), Number<b>()) *
265
266 } else {
267 return 0;
268 }
269
270 } else {
271
272 return
273
274 e.aF2(Number<a>(), Number<b>()) *
281 }
282
283 return 0;
284 }
auto get_nodiag_index(const Number< N1 > &, const Number< N2 > &, const Number< Dim > &)

Member Data Documentation

◆ e

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

Definition at line 171 of file MatrixFunctionTemplate.hpp.


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