SpECTRE  v2024.05.11
tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > > Struct Template Reference

Public Types

using type = X
 The type of the data being stored in the result of the expression.
 
using symmetry = typename detail::TensorAsExpressionSymm< Symm< SymmValues... >, IndexList< Indices... >, ArgsList< Args... > >::type
 The list of TensorIndexTypes of the result of the expression.
 
using index_list = IndexList< Indices... >
 The list of TensorIndexTypes of the result of the expression.
 
using args_list = ArgsList< Args... >
 The list of generic TensorIndexs of the result of the expression.
 

Public Member Functions

 TensorAsExpression (const Tensor< X, Symm< SymmValues... >, IndexList< Indices... > > &t)
 Construct an expression from a Tensor.
 
template<typename LhsTensor >
void assert_lhs_tensor_not_in_rhs_expression (const gsl::not_null< LhsTensor * > lhs_tensor) const
 Assert that the LHS tensor of the equation is not equal to the Tensor represented by this expression.
 
template<typename LhsTensorIndices , typename LhsTensor >
void assert_lhs_tensorindices_same_in_rhs (const gsl::not_null< LhsTensor * > lhs_tensor) const
 If the LHS tensor is the tensor represented by this expression, assert that the order of the generic indices are the same. More...
 
size_t get_rhs_tensor_component_size () const
 Get the size of a component from the Tensor contained by this expression. More...
 
decltype(auto) get (const std::array< size_t, num_tensor_indices > &multi_index) const
 Returns the value of the contained tensor's multi-index. More...
 
template<typename ResultType >
decltype(auto) get_primary (const ResultType &, const std::array< size_t, num_tensor_indices > &multi_index) const
 Returns the value of the contained tensor's multi-index. More...
 
template<typename ResultType >
void evaluate_primary_subtree (ResultType &result_component, const std::array< size_t, num_tensor_indices > &) const =delete
 
type operator[] (const size_t i) const
 Retrieve the i'th entry of the Tensor being held.
 

Static Public Attributes

static constexpr auto num_tensor_indices = tmpl::size<index_list>::value
 The number of tensor indices in the result of the expression.
 
static constexpr size_t num_ops_left_child = 0
 The number of arithmetic tensor operations done in the subtree for the left operand, which is 0 because this is a leaf expression.
 
static constexpr size_t num_ops_right_child = 0
 The number of arithmetic tensor operations done in the subtree for the right operand, which is 0 because this is a leaf expression.
 
static constexpr size_t num_ops_subtree = 0
 The total number of arithmetic tensor operations done in this expression's whole subtree, which is 0 because this is a leaf expression.
 
static constexpr size_t height_relative_to_closest_tensor_leaf_in_subtree = 0
 The height of this expression's node in the expression tree relative to the closest TensorAsExpression leaf in its subtree. Because this expression type is that leaf, the height for this type will always be 0.
 
static constexpr bool is_primary_end = true
 If on the primary path, whether or not the expression is an ending point of a leg.
 
static constexpr size_t num_ops_to_evaluate_primary_left_child = 0
 If on the primary path, this is the remaining number of arithmetic tensor operations that need to be done in the subtree of the child along the primary path, given that we will have already computed the whole subtree at the next lowest leg's starting point. This is just 0 because this expression is a leaf.
 
static constexpr size_t num_ops_to_evaluate_primary_right_child = 0
 If on the primary path, this is the remaining number of arithmetic tensor operations that need to be done in the right operand's subtree. This is just 0 because this expression is a leaf.
 
static constexpr size_t num_ops_to_evaluate_primary_subtree = 0
 If on the primary path, this is the remaining number of arithmetic tensor operations that need to be done for this expression's subtree, given that we will have already computed the subtree at the next lowest leg's starting point. This is just 0 because this expression is a leaf.
 
static constexpr bool is_primary_start = false
 If on the primary path, whether or not the expression is a starting point of a leg.
 
static constexpr bool primary_child_subtree_contains_primary_start = false
 If on the primary path, whether or not the expression's child along the primary path is a subtree that contains a starting point of a leg along the primary path. This is always falls because this expression is a leaf.
 
static constexpr bool primary_subtree_contains_primary_start
 If on the primary path, whether or not this subtree contains a starting point of a leg along the primary path. More...
 

Member Function Documentation

◆ assert_lhs_tensorindices_same_in_rhs()

template<typename X , template< typename... > class Symm, typename... SymmValues, template< typename... > class IndexList, typename... Indices, template< typename... > class ArgsList, typename... Args>
template<typename LhsTensorIndices , typename LhsTensor >
void tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > >::assert_lhs_tensorindices_same_in_rhs ( const gsl::not_null< LhsTensor * >  lhs_tensor) const
inline

If the LHS tensor is the tensor represented by this expression, assert that the order of the generic indices are the same.

Template Parameters
LhsTensorIndicesthe list of generic TensorIndexs of the LHS result Tensor being computed
Parameters
lhs_tensorthe LHS result Tensor being computed

◆ get()

template<typename X , template< typename... > class Symm, typename... SymmValues, template< typename... > class IndexList, typename... Indices, template< typename... > class ArgsList, typename... Args>
decltype(auto) tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > >::get ( const std::array< size_t, num_tensor_indices > &  multi_index) const
inline

Returns the value of the contained tensor's multi-index.

Parameters
multi_indexthe multi-index of the tensor component to retrieve

Returns: the value of the component at multi_index in the tensor

◆ get_primary()

template<typename X , template< typename... > class Symm, typename... SymmValues, template< typename... > class IndexList, typename... Indices, template< typename... > class ArgsList, typename... Args>
template<typename ResultType >
decltype(auto) tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > >::get_primary ( const ResultType &  ,
const std::array< size_t, num_tensor_indices > &  multi_index 
) const
inline

Returns the value of the contained tensor's multi-index.

Parameters
multi_indexthe multi-index of the tensor component to retrieve

Returns: the value of the component at multi_index in the tensor

◆ get_rhs_tensor_component_size()

template<typename X , template< typename... > class Symm, typename... SymmValues, template< typename... > class IndexList, typename... Indices, template< typename... > class ArgsList, typename... Args>
size_t tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > >::get_rhs_tensor_component_size ( ) const
inline

Get the size of a component from the Tensor contained by this expression.

Returns: the size of a component from the Tensor contained by this expression

Member Data Documentation

◆ primary_subtree_contains_primary_start

template<typename X , template< typename... > class Symm, typename... SymmValues, template< typename... > class IndexList, typename... Indices, template< typename... > class ArgsList, typename... Args>
constexpr bool tenex::TensorAsExpression< Tensor< X, Symm< SymmValues... >, IndexList< Indices... > >, ArgsList< Args... > >::primary_subtree_contains_primary_start
staticconstexpr
Initial value:
=
static constexpr bool is_primary_start
If on the primary path, whether or not the expression is a starting point of a leg.
Definition: TensorAsExpression.hpp:261

If on the primary path, whether or not this subtree contains a starting point of a leg along the primary path.


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