Tatooine
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
tatooine::regular_flowmap_discretization< Real, NumDimensions > Struct Template Reference

Samples a flow map by advecting particles from a uniform rectilinear grid. More...

#include <regular_flowmap_discretization.h>

Collaboration diagram for tatooine::regular_flowmap_discretization< Real, NumDimensions >:
[legend]

Classes

struct  grid_type_creator
 
struct  grid_type_creator< 0, Ts... >
 

Public Types

using real_type = Real
 
using vec_type = vec< Real, NumDimensions >
 
using pos_type = vec_type
 
using forward_grid_type = pointset< Real, NumDimensions >
 
using forward_grid_vertex_property_type = typename forward_grid_type::template typed_vertex_property_type< pos_type >
 
using forward_grid_vertex_property_sampler_type = typename forward_grid_type::template natural_neighbor_coordinates_sampler_type< pos_type >
 
using backward_grid_type = pointset< Real, NumDimensions >
 
using backward_grid_vertex_property_type = typename backward_grid_type::template typed_vertex_property_type< pos_type >
 
using backward_grid_vertex_property_sampler_type = typename backward_grid_type::template natural_neighbor_coordinates_sampler_type< pos_type >
 

Public Member Functions

 regular_flowmap_discretization ()
 
 regular_flowmap_discretization (filesystem::path const &p)
 
template<typename Flowmap , typename ExecutionPolicy >
 regular_flowmap_discretization (Flowmap &&flowmap, ExecutionPolicy execution_policy, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, integral auto const ... resolution)
 
template<typename Flowmap , typename ExecutionPolicy , integral Int>
 regular_flowmap_discretization (Flowmap &&flowmap, ExecutionPolicy execution_policy, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, vec< Int, NumDimensions > const &resolution)
 
template<typename Flowmap >
 regular_flowmap_discretization (Flowmap &&flowmap, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, integral auto const ... resolution)
 
template<typename Flowmap , integral Int>
 regular_flowmap_discretization (Flowmap &&flowmap, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, vec< Int, NumDimensions > const &resolution)
 
 regular_flowmap_discretization (regular_flowmap_discretization &&other) noexcept
 
auto read (filesystem::path const &)
 
auto write (filesystem::path const &)
 
auto sample (pos_type const &x, forward_or_backward_tag auto const direction) const
 
auto grid (forward_tag const) const -> auto const &
 
auto grid (forward_tag const) -> auto &
 
auto grid (backward_tag const) const -> auto const &
 
auto grid (backward_tag const) -> auto &
 
auto sampler (forward_tag const) const -> auto const &
 
auto sampler (forward_tag const) -> auto &
 
auto sampler (backward_tag const) const -> auto const &
 
auto sampler (backward_tag const) -> auto &
 
auto flowmap (forward_tag const) -> auto const &
 
auto flowmap (backward_tag const) -> auto const &
 

Static Public Member Functions

static auto constexpr num_dimensions ()
 

Private Member Functions

template<typename Flowmap , typename ExecutionPolicy , integral Int, std::size_t... Is>
 regular_flowmap_discretization (std::index_sequence< Is... > seq, Flowmap &&flowmap, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, ExecutionPolicy execution_policy, vec< Int, NumDimensions > const &resolution)
 
template<typename Flowmap , typename ExecutionPolicy , std::size_t... Is>
 regular_flowmap_discretization (std::index_sequence< Is... >, Flowmap &&flowmap, arithmetic auto const t0, arithmetic auto const tau, pos_type const &min, pos_type const &max, ExecutionPolicy, integral auto const ... resolution)
 

Private Attributes

Real m_t0 = Real{}
 
Real m_t1 = Real{}
 
Real m_tau = Real{}
 
forward_grid_type m_forward_grid = forward_grid_type{}
 
forward_grid_vertex_property_typem_forward_flowmap_discretization = nullptr
 
std::unique_ptr< forward_grid_vertex_property_sampler_typem_forward_sampler
 
backward_grid_type m_backward_grid = backward_grid_type{}
 
backward_grid_vertex_property_typem_backward_flowmap_discretization
 
std::unique_ptr< backward_grid_vertex_property_sampler_typem_backward_sampler = nullptr
 

Static Private Attributes

static constexpr auto default_execution_policy = execution_policy::parallel
 

Detailed Description

template<typename Real, std::size_t NumDimensions>
struct tatooine::regular_flowmap_discretization< Real, NumDimensions >

Samples a flow map by advecting particles from a uniform rectilinear grid.

Member Typedef Documentation

◆ backward_grid_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::backward_grid_type = pointset<Real, NumDimensions>

◆ backward_grid_vertex_property_sampler_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::backward_grid_vertex_property_sampler_type = typename backward_grid_type:: template natural_neighbor_coordinates_sampler_type<pos_type>

◆ backward_grid_vertex_property_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::backward_grid_vertex_property_type = typename backward_grid_type::template typed_vertex_property_type< pos_type>

◆ forward_grid_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::forward_grid_type = pointset<Real, NumDimensions>

◆ forward_grid_vertex_property_sampler_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::forward_grid_vertex_property_sampler_type = typename forward_grid_type:: template natural_neighbor_coordinates_sampler_type<pos_type>

◆ forward_grid_vertex_property_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::forward_grid_vertex_property_type = typename forward_grid_type::template typed_vertex_property_type<pos_type>

◆ pos_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::pos_type = vec_type

◆ real_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::real_type = Real

◆ vec_type

template<typename Real , std::size_t NumDimensions>
using tatooine::regular_flowmap_discretization< Real, NumDimensions >::vec_type = vec<Real, NumDimensions>

Constructor & Destructor Documentation

◆ regular_flowmap_discretization() [1/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap , typename ExecutionPolicy , integral Int, std::size_t... Is>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( std::index_sequence< Is... >  seq,
Flowmap &&  flowmap,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
ExecutionPolicy  execution_policy,
vec< Int, NumDimensions > const &  resolution 
)
inlineprivate

◆ regular_flowmap_discretization() [2/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap , typename ExecutionPolicy , std::size_t... Is>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( std::index_sequence< Is... >  ,
Flowmap &&  flowmap,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
ExecutionPolicy  ,
integral auto const ...  resolution 
)
inlineprivate

◆ regular_flowmap_discretization() [3/9]

template<typename Real , std::size_t NumDimensions>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( )
inline

◆ regular_flowmap_discretization() [4/9]

template<typename Real , std::size_t NumDimensions>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( filesystem::path const &  p)
inline

◆ regular_flowmap_discretization() [5/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap , typename ExecutionPolicy >
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( Flowmap &&  flowmap,
ExecutionPolicy  execution_policy,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
integral auto const ...  resolution 
)
inline

◆ regular_flowmap_discretization() [6/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap , typename ExecutionPolicy , integral Int>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( Flowmap &&  flowmap,
ExecutionPolicy  execution_policy,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
vec< Int, NumDimensions > const &  resolution 
)
inline

◆ regular_flowmap_discretization() [7/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap >
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( Flowmap &&  flowmap,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
integral auto const ...  resolution 
)
inline

◆ regular_flowmap_discretization() [8/9]

template<typename Real , std::size_t NumDimensions>
template<typename Flowmap , integral Int>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( Flowmap &&  flowmap,
arithmetic auto const  t0,
arithmetic auto const  tau,
pos_type const &  min,
pos_type const &  max,
vec< Int, NumDimensions > const &  resolution 
)
inline

◆ regular_flowmap_discretization() [9/9]

template<typename Real , std::size_t NumDimensions>
tatooine::regular_flowmap_discretization< Real, NumDimensions >::regular_flowmap_discretization ( regular_flowmap_discretization< Real, NumDimensions > &&  other)
inlinenoexcept

Member Function Documentation

◆ flowmap() [1/2]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::flowmap ( backward_tag const  ) -> auto const&
inline

◆ flowmap() [2/2]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::flowmap ( forward_tag const  ) -> auto const&
inline

◆ grid() [1/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::grid ( backward_tag const  ) -> auto&
inline

◆ grid() [2/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::grid ( backward_tag const  ) const -> auto const&
inline

◆ grid() [3/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::grid ( forward_tag const  ) -> auto&
inline

◆ grid() [4/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::grid ( forward_tag const  ) const -> auto const&
inline

◆ num_dimensions()

template<typename Real , std::size_t NumDimensions>
static auto constexpr tatooine::regular_flowmap_discretization< Real, NumDimensions >::num_dimensions ( )
inlinestaticconstexpr

◆ read()

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::read ( filesystem::path const &  )
inline

◆ sample()

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::sample ( pos_type const &  x,
forward_or_backward_tag auto const  direction 
) const
inline

Evaluates flow map in direction at time t0 with maximal available advection time.

Parameters
xposition
Returns
phi(x, t0, t1 - t0)

◆ sampler() [1/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::sampler ( backward_tag const  ) -> auto&
inline

◆ sampler() [2/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::sampler ( backward_tag const  ) const -> auto const&
inline

◆ sampler() [3/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::sampler ( forward_tag const  ) -> auto&
inline

◆ sampler() [4/4]

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::sampler ( forward_tag const  ) const -> auto const&
inline

◆ write()

template<typename Real , std::size_t NumDimensions>
auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::write ( filesystem::path const &  )
inline

Member Data Documentation

◆ default_execution_policy

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::regular_flowmap_discretization< Real, NumDimensions >::default_execution_policy = execution_policy::parallel
staticconstexprprivate

◆ m_backward_flowmap_discretization

template<typename Real , std::size_t NumDimensions>
backward_grid_vertex_property_type* tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_backward_flowmap_discretization
private
Initial value:
=
nullptr

◆ m_backward_grid

template<typename Real , std::size_t NumDimensions>
backward_grid_type tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_backward_grid = backward_grid_type{}
private

◆ m_backward_sampler

template<typename Real , std::size_t NumDimensions>
std::unique_ptr<backward_grid_vertex_property_sampler_type> tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_backward_sampler = nullptr
private

◆ m_forward_flowmap_discretization

template<typename Real , std::size_t NumDimensions>
forward_grid_vertex_property_type* tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_forward_flowmap_discretization = nullptr
private

◆ m_forward_grid

template<typename Real , std::size_t NumDimensions>
forward_grid_type tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_forward_grid = forward_grid_type{}
private

◆ m_forward_sampler

template<typename Real , std::size_t NumDimensions>
std::unique_ptr<forward_grid_vertex_property_sampler_type> tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_forward_sampler
private
Initial value:
=
nullptr

◆ m_t0

template<typename Real , std::size_t NumDimensions>
Real tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_t0 = Real{}
private

◆ m_t1

template<typename Real , std::size_t NumDimensions>
Real tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_t1 = Real{}
private

◆ m_tau

template<typename Real , std::size_t NumDimensions>
Real tatooine::regular_flowmap_discretization< Real, NumDimensions >::m_tau = Real{}
private

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