Tatooine
Public Types | Public Member Functions | Private Attributes | List of all members
tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op > Struct Template Reference

#include <binary_operation_field.h>

Inheritance diagram for tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >:
[legend]
Collaboration diagram for tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >:
[legend]

Public Types

using this_type = binary_operation_field< LHSInternalField, RHSInternalField, Op >
 
using parent_type = field< this_type, common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >, field_num_dimensions< LHSInternalField >, std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > > >
 
- Public Types inherited from tatooine::field< binary_operation_field< LHSInternalField, RHSInternalField, Op >, common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >, field_num_dimensions< LHSInternalField >, std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > > >
using this_type = field< binary_operation_field< LHSInternalField, RHSInternalField, Op >, common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >, NumDimensions, std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > > >
 
using parent_type = polymorphic::field< common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >, NumDimensions, std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > > >
 
using pos_type = vec< real_type, NumDimensions >
 
using real_type = common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >
 
using tensor_type = std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > >
 
- Public Types inherited from tatooine::polymorphic::field< Real, NumDimensions, Tensor >
using real_type = Real
 
using tensor_type = Tensor
 
using this_type = field< real_type, NumDimensions, Tensor >
 
using pos_type = vec< real_type, NumDimensions >
 

Public Member Functions

constexpr binary_operation_field (binary_operation_field const &other)
 
constexpr binary_operation_field (binary_operation_field &&other) noexcept
 
template<typename LHS , typename Rhs , typename Op_ >
constexpr binary_operation_field (LHS &&lhs, Rhs &&rhs, Op_ &&op)
 
constexpr auto operator= (binary_operation_field const &other) -> binary_operation_field &
 
constexpr auto operator= (binary_operation_field &&other) noexcept -> binary_operation_field &
 
 ~binary_operation_field () override=default
 
constexpr auto evaluate (pos_type const &x, real_type const t) const -> tensor_type final
 
auto lhs () const -> auto const &
 
auto rhs () const -> auto const &
 
auto set_v0 (LHSInternalField lhs) -> void requires(is_pointer< LHSInternalField >)
 
auto set_v1 (RHSInternalField rhs) -> void requires(is_pointer< RHSInternalField >)
 
auto fields_available () const -> bool requires(is_pointer< LHSInternalField > &&is_pointer< RHSInternalField >)
 
- Public Member Functions inherited from tatooine::field< binary_operation_field< LHSInternalField, RHSInternalField, Op >, common_type< field_real_type< LHSInternalField >, field_real_type< RHSInternalField > >, field_num_dimensions< LHSInternalField >, std::invoke_result_t< Op, field_tensor_type< LHSInternalField >, field_tensor_type< RHSInternalField > > >
 field ()=default
 
 field (field const &)=default
 
 field (field &&) noexcept=default
 
auto operator= (field const &) -> field &=default
 
auto operator= (field &&) noexcept -> field &=default
 
virtual ~field ()=default
 
auto as_derived () -> auto &
 
auto as_derived () const -> auto const &
 
auto evaluate (pos_type const &x, real_type const t) const -> tensor_type override
 
- Public Member Functions inherited from tatooine::polymorphic::field< Real, NumDimensions, Tensor >
constexpr field ()=default
 
constexpr field (field const &)=default
 
constexpr field (field &&) noexcept=default
 
constexpr auto operator= (field const &) -> field &=default
 
constexpr auto operator= (field &&) noexcept -> field &=default
 
virtual ~field ()=default
 
virtual constexpr auto evaluate (pos_type const &, real_type const) const -> tensor_type=0
 
constexpr auto evaluate (fixed_size_vec< NumDimensions > auto const &x) const -> tensor_type
 
constexpr auto operator() (fixed_size_vec< NumDimensions > auto const &x, real_type const t) const -> tensor_type
 
constexpr auto operator() (fixed_size_vec< NumDimensions > auto const &x) const -> tensor_type
 
constexpr auto operator() (arithmetic auto const ... xs) const -> tensor_type
 

Private Attributes

LHSInternalField m_lhs
 
RHSInternalField m_rhs
 
Op m_op
 

Additional Inherited Members

- Static Public Member Functions inherited from tatooine::polymorphic::field< Real, NumDimensions, Tensor >
static auto constexpr ood_tensor ()
 
static auto constexpr ood_position ()
 
static constexpr auto is_field ()
 
static constexpr auto is_scalarfield ()
 
static constexpr auto is_vectorfield ()
 
static constexpr auto is_matrixfield ()
 
static constexpr auto num_dimensions () -> std::size_t
 
static constexpr auto num_tensor_components ()
 
static constexpr auto tensor_rank ()
 
static constexpr auto tensor_dimension (std::size_t i)
 

Member Typedef Documentation

◆ parent_type

template<typename LHSInternalField , typename RHSInternalField , typename Op >
using tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::parent_type = field<this_type, common_type<field_real_type<LHSInternalField>, field_real_type<RHSInternalField> >, field_num_dimensions<LHSInternalField>, std::invoke_result_t<Op, field_tensor_type<LHSInternalField>, field_tensor_type<RHSInternalField> >>

◆ this_type

template<typename LHSInternalField , typename RHSInternalField , typename Op >
using tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::this_type = binary_operation_field<LHSInternalField, RHSInternalField, Op>

Constructor & Destructor Documentation

◆ binary_operation_field() [1/3]

template<typename LHSInternalField , typename RHSInternalField , typename Op >
constexpr tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::binary_operation_field ( binary_operation_field< LHSInternalField, RHSInternalField, Op > const &  other)
inlineconstexpr

◆ binary_operation_field() [2/3]

template<typename LHSInternalField , typename RHSInternalField , typename Op >
constexpr tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::binary_operation_field ( binary_operation_field< LHSInternalField, RHSInternalField, Op > &&  other)
inlineconstexprnoexcept

◆ binary_operation_field() [3/3]

template<typename LHSInternalField , typename RHSInternalField , typename Op >
template<typename LHS , typename Rhs , typename Op_ >
constexpr tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::binary_operation_field ( LHS &&  lhs,
Rhs &&  rhs,
Op_ &&  op 
)
inlineconstexpr

◆ ~binary_operation_field()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::~binary_operation_field ( )
overridedefault

Member Function Documentation

◆ evaluate()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
constexpr auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::evaluate ( pos_type const &  x,
real_type const  t 
) const -> tensor_type
inlineconstexprfinal

◆ fields_available()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::fields_available ( ) const -> bool requires( is_pointer<LHSInternalField>&& is_pointer<RHSInternalField>)
inline

◆ lhs()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::lhs ( ) const -> auto const&
inline

◆ operator=() [1/2]

template<typename LHSInternalField , typename RHSInternalField , typename Op >
constexpr auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::operator= ( binary_operation_field< LHSInternalField, RHSInternalField, Op > &&  other) -> binary_operation_field&
inlineconstexprnoexcept

◆ operator=() [2/2]

template<typename LHSInternalField , typename RHSInternalField , typename Op >
constexpr auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::operator= ( binary_operation_field< LHSInternalField, RHSInternalField, Op > const &  other) -> binary_operation_field&
inlineconstexpr

◆ rhs()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::rhs ( ) const -> auto const&
inline

◆ set_v0()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::set_v0 ( LHSInternalField  lhs) -> void requires(is_pointer<LHSInternalField>)
inline

◆ set_v1()

template<typename LHSInternalField , typename RHSInternalField , typename Op >
auto tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::set_v1 ( RHSInternalField  rhs) -> void requires(is_pointer<RHSInternalField>)
inline

Member Data Documentation

◆ m_lhs

template<typename LHSInternalField , typename RHSInternalField , typename Op >
LHSInternalField tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::m_lhs
private

◆ m_op

template<typename LHSInternalField , typename RHSInternalField , typename Op >
Op tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::m_op
private

◆ m_rhs

template<typename LHSInternalField , typename RHSInternalField , typename Op >
RHSInternalField tatooine::binary_operation_field< LHSInternalField, RHSInternalField, Op >::m_rhs
private

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