Classes | Namespaces | Typedefs
TensorExpression.hpp File Reference

Defines class. More...

#include <array>
#include <cstddef>
#include "ErrorHandling/Assert.hpp"
#include "Utilities/Requires.hpp"
#include "Utilities/TMPL.hpp"
#include "Utilities/TypeTraits.hpp"

Go to the source code of this file.

Classes

struct  TensorIndex< I >
 Represents the indices in a TensorExpression. More...
 
struct  tt::is_tensor_index< T >
 Check if a type T is a TensorIndex used in TensorExpressions. More...
 
struct  tt::is_tensor_index< TensorIndex< I > >
 
struct  Expression
 Marks a class as being a TensorExpression. More...
 
struct  TensorExpression< Derived, DataType, Symm, IndexList, ArgsList< Args... > >
 The base class all tensor expression implementations derive from. More...
 

Namespaces

 tt
 A collection of useful type traits.
 

Typedefs

template<typename T >
using next_tensor_index = TensorIndex< T::value+1 >
 Given an TensorIndex<size_t> return TensorIndex<size_t + 1> More...
 
template<typename A , typename B >
using plus_tensor_index = TensorIndex< A::value+B::value >
 Metafunction to return the sum of two TensorIndex's.
 
template<typename Lhs , typename Rhs >
using rhs_elements_in_lhs = tmpl::fold< Rhs, tmpl::list<>, detail::rhs_elements_in_lhs_helper< tmpl::_state, tmpl::_element, tmpl::pin< Lhs > >>
 Returns a list of all the elements in the typelist Rhs that are also in the typelist Lhs. More...
 
template<typename Rhs , typename Lhs , typename RhsOnyWithLhs >
using generate_transformation = tmpl::enumerated_fold< Rhs, tmpl::list<>, detail::generate_transformation_impl< tmpl::_state, tmpl::_element, tmpl::_3, tmpl::pin< Lhs >, tmpl::pin< Rhs >, tmpl::pin< RhsOnyWithLhs > >>
 Generate transformation to account for index order difference in RHS and LHS. More...
 
template<typename List >
using repeated = tmpl::fold< List, tmpl::list<>, detail::repeated_helper< tmpl::pin< List >, tmpl::_state, tmpl::_element > >
 
template<typename List , typename ReplaceList >
using replace_indices = typename detail::replace_indices_impl< List, ReplaceList, 0 >::type
 
using ti_a_t = decltype(ti_a)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_A_t = decltype(ti_A)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_b_t = decltype(ti_b)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_B_t = decltype(ti_B)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_c_t = decltype(ti_c)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_C_t = decltype(ti_C)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_d_t = decltype(ti_d)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_D_t = decltype(ti_D)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_e_t = decltype(ti_e)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_E_t = decltype(ti_E)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_f_t = decltype(ti_f)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_F_t = decltype(ti_F)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_g_t = decltype(ti_g)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_G_t = decltype(ti_G)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_h_t = decltype(ti_h)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_H_t = decltype(ti_H)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_i_t = decltype(ti_i)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_I_t = decltype(ti_I)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_j_t = decltype(ti_j)
 The available TensorIndex's to use in a TensorExpression. More...
 
using ti_J_t = decltype(ti_J)
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 0 > ti_a
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 0 > ti_A
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 1 > ti_b
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 1 > ti_B
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 2 > ti_c
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 2 > ti_C
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 3 > ti_d
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 3 > ti_D
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 4 > ti_e
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 4 > ti_E
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 5 > ti_f
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 5 > ti_F
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 6 > ti_g
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 6 > ti_G
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 7 > ti_h
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 7 > ti_H
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 8 > ti_i
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 8 > ti_I
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 9 > ti_j
 The available TensorIndex's to use in a TensorExpression. More...
 
TensorIndex< 9 > ti_J
 The available TensorIndex's to use in a TensorExpression. More...
 

Detailed Description

Defines class.

Typedef Documentation

◆ ti_a_t

using ti_a_t = decltype(ti_a)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_A_t

using ti_A_t = decltype(ti_A)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_b_t

using ti_b_t = decltype(ti_b)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_B_t

using ti_B_t = decltype(ti_B)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_c_t

using ti_c_t = decltype(ti_c)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_C_t

using ti_C_t = decltype(ti_C)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_d_t

using ti_d_t = decltype(ti_d)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_D_t

using ti_D_t = decltype(ti_D)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_e_t

using ti_e_t = decltype(ti_e)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_E_t

using ti_E_t = decltype(ti_E)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_f_t

using ti_f_t = decltype(ti_f)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_F_t

using ti_F_t = decltype(ti_F)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_g_t

using ti_g_t = decltype(ti_g)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_G_t

using ti_G_t = decltype(ti_G)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_h_t

using ti_h_t = decltype(ti_h)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_H_t

using ti_H_t = decltype(ti_H)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_i_t

using ti_i_t = decltype(ti_i)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_I_t

using ti_I_t = decltype(ti_I)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_j_t

using ti_j_t = decltype(ti_j)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_J_t

using ti_J_t = decltype(ti_J)

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

Variable Documentation

◆ ti_A

TensorIndex<0> ti_A

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_b

TensorIndex<1> ti_b

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_B

TensorIndex<1> ti_B

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_c

TensorIndex<2> ti_c

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_C

TensorIndex<2> ti_C

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_d

TensorIndex<3> ti_d

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_D

TensorIndex<3> ti_D

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_e

TensorIndex<4> ti_e

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_E

TensorIndex<4> ti_E

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_f

TensorIndex<5> ti_f

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_F

TensorIndex<5> ti_F

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_g

TensorIndex<6> ti_g

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_G

TensorIndex<6> ti_G

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_h

TensorIndex<7> ti_h

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_H

TensorIndex<7> ti_H

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_i

TensorIndex<8> ti_i

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_I

TensorIndex<8> ti_I

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_j

TensorIndex<9> ti_j

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.

◆ ti_J

TensorIndex<9> ti_J

The available TensorIndex's to use in a TensorExpression.

Available tensor indices to use in a Tensor Expression.

auto Gll = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_a, ti_b));
auto Gll2 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(All(ti_a, ti_b) +
Hll(ti_b, ti_a));
auto Gll3 = TensorExpressions::evaluate<ti_a_t, ti_b_t>(
All(ti_a, ti_b) + Hll(ti_b, ti_a) + All(ti_b, ti_a) - Hll(ti_b, ti_a));
Note
Because these are never actually used as objects and only for type manipulation they do not need to be instantiated anywhere.