v0.14.0
Loading...
Searching...
No Matches
Dg_times_generic.hpp
Go to the documentation of this file.
1/* Multiplies a Dg with a generic, yielding a Dg. */
2
3#pragma once
4
5namespace FTensor
6{
7 template <class A, class T, class U, int Dim01, int Dim2, char i, char j,
8 char k>
10 {
12 U d;
13
14 public:
15 typename promote<T, U>::V
16 operator()(const int N1, const int N2, const int N3) const
17 {
18 return iterA(N1, N2, N3) * d;
19 }
20
22 : iterA(a), d(d0)
23 {}
24 };
25
26 /* A(i,j,k)*d0->Dg */
27
28 template <class A, class T, class U, int Dim01, int Dim2, char i, char j,
29 char k>
30 Dg_Expr<Dg_times_generic<A, T, U, Dim01, Dim2, i, j, k>,
31 typename promote<T, U>::V, Dim01, Dim2, i, j, k>
33 {
35 return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim2, i, j, k>(
36 TensorExpr(a, d0));
37 }
38
39 /* d0*A(i,j,k)->Dg */
40
41 template <class A, class T, class U, int Dim01, int Dim2, char i, char j,
42 char k>
43 Dg_Expr<Dg_times_generic<A, T, U, Dim01, Dim2, i, j, k>,
44 typename promote<T, U>::V, Dim01, Dim2, i, j, k>
46 {
48 return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim2, i, j, k>(
49 TensorExpr(a, d0));
50 }
51}
static Number< 2 > N2
static Number< 1 > N1
constexpr double a
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Dg_times_generic(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const U &d0)
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
const double T
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