v0.15.0
Loading...
Searching...
No Matches
Riemann_times_Tensor2_symmetric.hpp
Go to the documentation of this file.
1/* This file has all of the declarations for expressions like
2 Riemann*Tensor2_symmetric and
3 Tensor2_symmetric*Riemann, yielding a Tensor2_symmetric. */
4
5#pragma once
6
7namespace FTensor
8{
9 /* A(i,j,k,l)*B(i,k) */
10
11 template <class A, class B, class T, class U, int Dim, char i, char j,
12 char k, char l>
14 {
17
18 public:
24 typename promote<T, U>::V operator()(const int N1, const int N2) const
25 {
26 return iterA(0, N1, 0, N2) * iterB(0, 0)
27 + iterA(0, N1, 1, N2) * iterB(0, 1)
28 + iterA(0, N1, 2, N2) * iterB(0, 2)
29 + iterA(1, N1, 0, N2) * iterB(1, 0)
30 + iterA(1, N1, 1, N2) * iterB(1, 1)
31 + iterA(1, N1, 2, N2) * iterB(1, 2)
32 + iterA(2, N1, 0, N2) * iterB(2, 0)
33 + iterA(2, N1, 1, N2) * iterB(2, 1)
34 + iterA(2, N1, 2, N2) * iterB(2, 2);
35 }
36 };
37
38 template <class A, class B, class T, class U, int Dim, char i, char j,
39 char k, char l>
40 Tensor2_symmetric_Expr<
41 Riemann_times_Tensor2_symmetric_0<A, B, T, U, Dim, i, j, k, l>,
42 typename promote<T, U>::V, Dim, j, l>
51
52 /* B(i,k)*A(i,j,k,l) */
53
54 template <class A, class B, class T, class U, int Dim, char i, char j,
55 char k, char l>
56 Tensor2_symmetric_Expr<
57 Riemann_times_Tensor2_symmetric_0<A, B, T, U, Dim, i, j, k, l>,
58 typename promote<T, U>::V, Dim, j, l>
67}
constexpr double a
Tensor2_symmetric_Expr< B, U, Dim, i, k > iterB
promote< T, U >::V operator()(const int N1, const int N2) const
Riemann_times_Tensor2_symmetric_0(const Riemann_Expr< A, T, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, i, k > &b)
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
Tensors class implemented by Walter Landry.
Definition FTensor.hpp:51
promote< T, U >::V operator*(const Ddg_Expr< A, T, Dim, Dim, i, j, k, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, k, j, l > &b)
constexpr AssemblyType A