v0.14.0
Loading...
Searching...
No Matches
Ddg_and_Ddg.hpp
Go to the documentation of this file.
1/* Subtracts Ddg-Ddg -> Riemann */
2
3#pragma once
4
5namespace FTensor
6{
7 /* A(i,j,k,l) - B(i,l,k,j) */
8
9 template <class A, class B, class T, class U, int Dim, char i, char j,
10 char k, char l>
12 {
15
16 public:
17 typename promote<T, U>::V
18 operator()(const int N1, const int N2, const int N3, const int N4) const
19 {
20 return iterA(N1, N3, N2, N4) - iterB(N1, N4, N3, N2);
21 }
22
25 : iterA(a), iterB(b)
26 {}
27 };
28
29 template <class A, class B, class T, class U, int Dim, char i, char j,
30 char k, char l>
31 Riemann_Expr<Ddg_and_Ddg0321<A, B, T, U, Dim, i, j, k, l>,
32 typename promote<T, U>::V, Dim, i, j, k, l>
35 {
38 TensorExpr(a, b));
39 }
40
41 /* A(i,k,l,j) - B(i,l,k,j) */
42
43 template <class A, class B, class T, class U, int Dim, char i, char j,
44 char k, char l>
46 {
49
50 public:
51 typename promote<T, U>::V
52 operator()(const int N1, const int N2, const int N3, const int N4) const
53 {
54 return iterA(N1, N3, N4, N2) - iterB(N1, N4, N3, N2);
55 }
56
59 : iterA(a), iterB(b)
60 {}
61 };
62
63 template <class A, class B, class T, class U, int Dim, char i, char j,
64 char k, char l>
65 Riemann_Expr<Ddg_and_Ddg0213<A, B, T, U, Dim, i, j, k, l>,
66 typename promote<T, U>::V, Dim, i, j, k, l>
69 {
72 TensorExpr(a, b));
73 }
74}
static Number< 2 > N2
static Number< 1 > N1
constexpr double a
Ddg_Expr< B, U, Dim, Dim, i, l, k, j > iterB
Definition: Ddg_and_Ddg.hpp:48
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
Definition: Ddg_and_Ddg.hpp:52
Ddg_Expr< A, T, Dim, Dim, i, k, l, j > iterA
Definition: Ddg_and_Ddg.hpp:47
Ddg_and_Ddg0213(const Ddg_Expr< A, T, Dim, Dim, i, k, l, j > &a, const Ddg_Expr< B, U, Dim, Dim, i, l, k, j > &b)
Definition: Ddg_and_Ddg.hpp:57
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
Definition: Ddg_and_Ddg.hpp:18
Ddg_Expr< A, T, Dim, Dim, i, k, j, l > iterA
Definition: Ddg_and_Ddg.hpp:13
Ddg_Expr< B, U, Dim, Dim, i, l, k, j > iterB
Definition: Ddg_and_Ddg.hpp:14
Ddg_and_Ddg0321(const Ddg_Expr< A, T, Dim, Dim, i, k, j, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, l, k, j > &b)
Definition: Ddg_and_Ddg.hpp:23
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
const double T
Tensors class implemented by Walter Landry.
Definition: FTensor.hpp:51
Riemann_Expr< Ddg_and_Ddg0321< A, B, T, U, Dim, i, j, k, l >, typename promote< T, U >::V, Dim, i, j, k, l > operator&&(const Ddg_Expr< A, T, Dim, Dim, i, k, j, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, l, k, j > &b)
Definition: Ddg_and_Ddg.hpp:33
constexpr AssemblyType A