Tatooine
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Attributes | List of all members
tatooine::numerically_differentiated_field< InternalField > Struct Template Reference

#include <differentiated_field.h>

Inheritance diagram for tatooine::numerically_differentiated_field< InternalField >:
[legend]
Collaboration diagram for tatooine::numerically_differentiated_field< InternalField >:
[legend]

Public Types

using raw_internal_field_t = std::decay_t< std::remove_pointer_t< InternalField > >
 
using this_type = numerically_differentiated_field< InternalField >
 
using parent_type = field< this_type, typename raw_internal_field_t::real_type, raw_internal_field_t::num_dimensions(), tensor_add_dimension_right< raw_internal_field_t::num_dimensions(), typename raw_internal_field_t::tensor_type > >
 
using vec_type = vec< real_type, num_dimensions()>
 
- Public Types inherited from tatooine::field< numerically_differentiated_field< InternalField >, field_real_type< InternalField >, field_num_dimensions< InternalField >, tensor_add_dimension_right< field_num_dimensions< InternalField >, field_tensor_type< InternalField > > >
using this_type = field< numerically_differentiated_field< InternalField >, field_real_type< InternalField >, NumDimensions, tensor_add_dimension_right< field_num_dimensions< InternalField >, field_tensor_type< InternalField > > >
 
using parent_type = polymorphic::field< field_real_type< InternalField >, NumDimensions, tensor_add_dimension_right< field_num_dimensions< InternalField >, field_tensor_type< InternalField > > >
 
using pos_type = vec< real_type, NumDimensions >
 
using real_type = field_real_type< InternalField >
 
using tensor_type = tensor_add_dimension_right< field_num_dimensions< InternalField >, field_tensor_type< InternalField > >
 
- 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< InternalField > Field_, arithmetic Eps>
 numerically_differentiated_field (Field_ &&f, Eps const eps)
 
 numerically_differentiated_field (vec_type const &eps=vec_type::ones() *1e-7)
 
template<convertible_to< InternalField > Field_>
 numerically_differentiated_field (Field_ &&f, vec_type const &eps)
 
template<convertible_to< InternalField > Field_, arithmetic Real>
 numerically_differentiated_field (Field_ &&f, vec< Real, num_dimensions()> const &eps)
 
constexpr auto evaluate (pos_type const &x, real_type const t) const -> tensor_type
 
auto set_eps (vec_type const &eps)
 
auto set_eps (vec_type &&eps)
 
auto set_eps (real_type eps)
 
auto eps () -> auto &
 
auto eps () const -> auto const &
 
auto eps (std::size_t i) -> auto &
 
auto eps (std::size_t i) const
 
auto internal_field () const -> auto const &
 
auto set_internal_field (InternalField f) -> void requires(holds_field_pointer)
 
- Public Member Functions inherited from tatooine::field< numerically_differentiated_field< InternalField >, field_real_type< InternalField >, field_num_dimensions< InternalField >, tensor_add_dimension_right< field_num_dimensions< InternalField >, field_tensor_type< InternalField > > >
 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
 

Static Public Member Functions

static constexpr auto num_dimensions () -> std::size_t
 
- 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)
 

Static Public Attributes

static constexpr auto holds_field_pointer = is_pointer<InternalField>
 

Private Attributes

InternalField m_internal_field
 
vec_type m_eps
 

Member Typedef Documentation

◆ parent_type

template<field_concept InternalField>
using tatooine::numerically_differentiated_field< InternalField >::parent_type = field< this_type, typename raw_internal_field_t::real_type, raw_internal_field_t::num_dimensions(), tensor_add_dimension_right<raw_internal_field_t::num_dimensions(), typename raw_internal_field_t::tensor_type> >

◆ raw_internal_field_t

template<field_concept InternalField>
using tatooine::numerically_differentiated_field< InternalField >::raw_internal_field_t = std::decay_t<std::remove_pointer_t<InternalField> >

◆ this_type

template<field_concept InternalField>
using tatooine::numerically_differentiated_field< InternalField >::this_type = numerically_differentiated_field<InternalField>

◆ vec_type

template<field_concept InternalField>
using tatooine::numerically_differentiated_field< InternalField >::vec_type = vec<real_type, num_dimensions()>

Constructor & Destructor Documentation

◆ numerically_differentiated_field() [1/4]

template<field_concept InternalField>
template<convertible_to< InternalField > Field_, arithmetic Eps>
tatooine::numerically_differentiated_field< InternalField >::numerically_differentiated_field ( Field_ &&  f,
Eps const  eps 
)
inline

◆ numerically_differentiated_field() [2/4]

template<field_concept InternalField>
tatooine::numerically_differentiated_field< InternalField >::numerically_differentiated_field ( vec_type const &  eps = vec_type::ones() * 1e-7)
inlineexplicit

◆ numerically_differentiated_field() [3/4]

template<field_concept InternalField>
template<convertible_to< InternalField > Field_>
tatooine::numerically_differentiated_field< InternalField >::numerically_differentiated_field ( Field_ &&  f,
vec_type const &  eps 
)
inline

◆ numerically_differentiated_field() [4/4]

template<field_concept InternalField>
template<convertible_to< InternalField > Field_, arithmetic Real>
tatooine::numerically_differentiated_field< InternalField >::numerically_differentiated_field ( Field_ &&  f,
vec< Real, num_dimensions()> const &  eps 
)
inline

Member Function Documentation

◆ eps() [1/4]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::eps ( ) -> auto&
inline

◆ eps() [2/4]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::eps ( ) const -> auto const&
inline

◆ eps() [3/4]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::eps ( std::size_t  i) -> auto&
inline

◆ eps() [4/4]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::eps ( std::size_t  i) const
inline

◆ evaluate()

template<field_concept InternalField>
constexpr auto tatooine::numerically_differentiated_field< InternalField >::evaluate ( pos_type const &  x,
real_type const  t 
) const -> tensor_type
inlineconstexpr

◆ internal_field()

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::internal_field ( ) const -> auto const&
inline

◆ num_dimensions()

template<field_concept InternalField>
static constexpr auto tatooine::numerically_differentiated_field< InternalField >::num_dimensions ( ) -> std::size_t
inlinestaticconstexpr

◆ set_eps() [1/3]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::set_eps ( real_type  eps)
inline

◆ set_eps() [2/3]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::set_eps ( vec_type &&  eps)
inline

◆ set_eps() [3/3]

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::set_eps ( vec_type const &  eps)
inline

◆ set_internal_field()

template<field_concept InternalField>
auto tatooine::numerically_differentiated_field< InternalField >::set_internal_field ( InternalField  f) -> void requires(holds_field_pointer)
inline

Member Data Documentation

◆ holds_field_pointer

template<field_concept InternalField>
constexpr auto tatooine::numerically_differentiated_field< InternalField >::holds_field_pointer = is_pointer<InternalField>
staticconstexpr

◆ m_eps

template<field_concept InternalField>
vec_type tatooine::numerically_differentiated_field< InternalField >::m_eps
private

◆ m_internal_field

template<field_concept InternalField>
InternalField tatooine::numerically_differentiated_field< InternalField >::m_internal_field
private

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