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

#include <unary_operation_field.h>

Inheritance diagram for tatooine::unary_operation_field< Field, Op >:
[legend]
Collaboration diagram for tatooine::unary_operation_field< Field, Op >:
[legend]

Public Types

using this_type = unary_operation_field< Field, Op >
 
using internal_field_type = Field
 
using parent_type = field< this_type, field_real_type< Field >, field_num_dimensions< Field >, std::invoke_result_t< Op, field_tensor_type< Field > > >
 
using pos_type = vec< real_type, NumDimensions >
 
using real_type = Real
 
using tensor_type = Tensor
 
- Public Types inherited from tatooine::field< unary_operation_field< Field, Op >, field_real_type< Field >, field_num_dimensions< Field >, std::invoke_result_t< Op, field_tensor_type< Field > > >
using this_type = field< unary_operation_field< Field, Op >, field_real_type< Field >, NumDimensions, std::invoke_result_t< Op, field_tensor_type< Field > > >
 
using parent_type = polymorphic::field< field_real_type< Field >, NumDimensions, std::invoke_result_t< Op, field_tensor_type< Field > > >
 
using pos_type = vec< real_type, NumDimensions >
 
using real_type = field_real_type< Field >
 
using tensor_type = std::invoke_result_t< Op, field_tensor_type< Field > >
 
- 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

template<convertible_to< Field > Field_, convertible_to< Op > Op_>
constexpr unary_operation_field (Field_ &&field, Op_ &&op)
 
template<convertible_to< Op > Op_>
requires std::is_pointer_v<std::decay_t<Field>>
constexpr unary_operation_field (Op_ &&op)
 
constexpr unary_operation_field (unary_operation_field const &)=default
 
constexpr unary_operation_field (unary_operation_field &&) noexcept=default
 
constexpr auto operator= (unary_operation_field const &) -> unary_operation_field &=default
 
constexpr auto operator= (unary_operation_field &&) noexcept -> unary_operation_field &=default
 
 ~unary_operation_field () override=default
 
constexpr auto evaluate (pos_type const &x, real_type const t) const -> tensor_type
 
auto internal_field () const -> decltype(auto)
 
auto internal_field () -> decltype(auto)
 
- Public Member Functions inherited from tatooine::field< unary_operation_field< Field, Op >, field_real_type< Field >, field_num_dimensions< Field >, std::invoke_result_t< Op, field_tensor_type< Field > > >
 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

Field m_field
 
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

◆ internal_field_type

template<typename Field , typename Op >
using tatooine::unary_operation_field< Field, Op >::internal_field_type = Field

◆ parent_type

template<typename Field , typename Op >
using tatooine::unary_operation_field< Field, Op >::parent_type = field<this_type, field_real_type<Field>, field_num_dimensions<Field>, std::invoke_result_t<Op, field_tensor_type<Field> >>

◆ pos_type

template<typename Field , typename Op >
using tatooine::polymorphic::field< Real, NumDimensions, Tensor >::pos_type = vec<real_type, NumDimensions>

◆ real_type

template<typename Field , typename Op >
using tatooine::polymorphic::field< Real, NumDimensions, Tensor >::real_type = Real

◆ tensor_type

template<typename Field , typename Op >
using tatooine::polymorphic::field< Real, NumDimensions, Tensor >::tensor_type = Tensor

◆ this_type

template<typename Field , typename Op >
using tatooine::unary_operation_field< Field, Op >::this_type = unary_operation_field<Field, Op>

Constructor & Destructor Documentation

◆ unary_operation_field() [1/4]

template<typename Field , typename Op >
template<convertible_to< Field > Field_, convertible_to< Op > Op_>
constexpr tatooine::unary_operation_field< Field, Op >::unary_operation_field ( Field_ &&  field,
Op_ &&  op 
)
inlineconstexpr

◆ unary_operation_field() [2/4]

template<typename Field , typename Op >
template<convertible_to< Op > Op_>
requires std::is_pointer_v<std::decay_t<Field>>
constexpr tatooine::unary_operation_field< Field, Op >::unary_operation_field ( Op_ &&  op)
inlineconstexpr

◆ unary_operation_field() [3/4]

template<typename Field , typename Op >
constexpr tatooine::unary_operation_field< Field, Op >::unary_operation_field ( unary_operation_field< Field, Op > const &  )
constexprdefault

◆ unary_operation_field() [4/4]

template<typename Field , typename Op >
constexpr tatooine::unary_operation_field< Field, Op >::unary_operation_field ( unary_operation_field< Field, Op > &&  )
constexprdefaultnoexcept

◆ ~unary_operation_field()

template<typename Field , typename Op >
tatooine::unary_operation_field< Field, Op >::~unary_operation_field ( )
overridedefault

Member Function Documentation

◆ evaluate()

template<typename Field , typename Op >
constexpr auto tatooine::unary_operation_field< Field, Op >::evaluate ( pos_type const &  x,
real_type const  t 
) const -> tensor_type
inlineconstexprvirtual

◆ internal_field() [1/2]

template<typename Field , typename Op >
auto tatooine::unary_operation_field< Field, Op >::internal_field ( ) -> decltype(auto)
inline

◆ internal_field() [2/2]

template<typename Field , typename Op >
auto tatooine::unary_operation_field< Field, Op >::internal_field ( ) const -> decltype(auto)
inline

◆ operator=() [1/2]

template<typename Field , typename Op >
constexpr auto tatooine::unary_operation_field< Field, Op >::operator= ( unary_operation_field< Field, Op > &&  ) -> unary_operation_field &=default
constexprdefaultnoexcept

◆ operator=() [2/2]

template<typename Field , typename Op >
constexpr auto tatooine::unary_operation_field< Field, Op >::operator= ( unary_operation_field< Field, Op > const &  ) -> unary_operation_field &=default
constexprdefault

Member Data Documentation

◆ m_field

template<typename Field , typename Op >
Field tatooine::unary_operation_field< Field, Op >::m_field
private

◆ m_op

template<typename Field , typename Op >
Op tatooine::unary_operation_field< Field, Op >::m_op
private

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