Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
Feel::FunctionExpr< FunctionType, Order, FunctionArgsTupleType >::tensor< Geo_t, Basis_i_t, Basis_j_t > Struct Template Reference
+ Collaboration diagram for Feel::FunctionExpr< FunctionType, Order, FunctionArgsTupleType >::tensor< Geo_t, Basis_i_t, Basis_j_t >:

Classes

struct  is_zero
 
struct  shapeType
 
struct  shapeType< T, false >
 
struct  shapeType< T, true >
 

Public Types

using args_eval_tuple_type = decltype(hana::transform(std::declval< args_tensors_tuple_type >(), arg_expr_eval_type))
 
using args_tensors_tuple_type = decltype(hana::transform(std::declval< args_tuple_type >(), arg_expr_tensor_type))
 
typedef self_type expr_type
 
using function_invoke_result_type = std::invoke_result_t< decltype(hana::unpack), args_eval_tuple_type, function_type >
 
typedef gmc_type::gm_type gm_type
 
typedef std::shared_ptr< gmc_type > gmc_ptrtype
 
typedef fusion::result_of::value_at_key< Geo_t, key_type >::type::element_type gmc_type
 
typedef mpl::if_< fusion::result_of::has_key< Geo_t, vf::detail::gmc< 0 > >, mpl::identity< vf::detail::gmc< 0 > >, mpl::identity< vf::detail::gmc< 1 > > >::type::type key_type
 
typedef Eigen::Matrix< value_type, shape::M, shape::N > matrix_shape_type
 
typedef shapeType< function_invoke_result_type, std::is_arithmetic_v< function_invoke_result_type > >::type shape
 
using value_type = typename expr_type::value_type
 

Public Member Functions

value_type evalijq (uint16_type, uint16_type, uint16_type c1, uint16_type c2, uint16_type q) const
 
matrix_shape_type const & evalijq (uint16_type, uint16_type, uint16_type q) const
 
value_type evaliq (uint16_type, uint16_type c1, uint16_type c2, uint16_type q) const
 
matrix_shape_type const & evaliq (uint16_type, uint16_type q) const
 
value_type evalq (uint16_type c1, uint16_type c2, uint16_type q) const
 
matrix_shape_type const & evalq (uint16_type q) const
 
template<typename IM >
void init (IM const &im)
 
 tensor (expr_type const &expr, Geo_t const &geom)
 
 tensor (expr_type const &expr, Geo_t const &geom, Basis_i_t const &fev)
 
 tensor (expr_type const &expr, Geo_t const &geom, Basis_i_t const &fev, Basis_j_t const &feu)
 
 tensor (tensor const &)=default
 
void update (Geo_t const &geom)
 
void update (Geo_t const &geom, Basis_i_t const &)
 
void update (Geo_t const &geom, Basis_i_t const &, Basis_j_t const &)
 
void update (Geo_t const &geom, uint16_type face)
 

Static Public Attributes

static constexpr auto arg_expr_eval_type
 
static constexpr auto arg_expr_tensor_type
 

Member Data Documentation

◆ arg_expr_eval_type

template<typename FunctionType , int Order, typename FunctionArgsTupleType >
template<typename Geo_t , typename Basis_i_t , typename Basis_j_t >
constexpr auto Feel::FunctionExpr< FunctionType, Order, FunctionArgsTupleType >::tensor< Geo_t, Basis_i_t, Basis_j_t >::arg_expr_eval_type
staticconstexpr
Initial value:
= []( auto const& argTensor ) {
typedef Feel::decay_type<decltype(argTensor)> arg_tensor_type;
if constexpr( arg_tensor_type::shape::is_scalar )
{
return argTensor->evalq( 0, 0, 0 );
}
else
{
typedef Feel::eigen_matrix_type<arg_tensor_type::shape::M, arg_tensor_type::shape::N, typename arg_tensor_type::value_type> tensor_eval_type;
tensor_eval_type evalq;
return evalq;
}
}

◆ arg_expr_tensor_type

template<typename FunctionType , int Order, typename FunctionArgsTupleType >
template<typename Geo_t , typename Basis_i_t , typename Basis_j_t >
constexpr auto Feel::FunctionExpr< FunctionType, Order, FunctionArgsTupleType >::tensor< Geo_t, Basis_i_t, Basis_j_t >::arg_expr_tensor_type
staticconstexpr
Initial value:
= []( auto argExpr ) {
typedef std::decay_t<decltype(argExpr)> arg_expr_type;
typedef typename arg_expr_type::template tensor<Geo_t, Basis_i_t, Basis_j_t> arg_tensor_type;
return std::make_shared<arg_tensor_type>( argExpr, Geo_t{} );
}