Tatooine
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | List of all members
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type Struct Reference

#include <structured_grid.h>

Inheritance diagram for tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type:
[legend]
Collaboration diagram for tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type:
[legend]

Public Types

using this_type = hierarchy_type
 
using real_type = Real
 
using index_order_t = IndexOrder
 
using grid_type = structured_grid< Real, NumDimensions, IndexOrder >
 
using parent_type = base_uniform_tree_hierarchy< Real, NumDimensions, this_type >
 
using cell_t = std::array< std::size_t, NumDimensions >
 
- Public Types inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
using real_type = Real
 
using this_type = base_uniform_tree_hierarchy< Real, NumDims, hierarchy_type >
 
using parent_type = aabb< Real, NumDims >
 
using vec_type = vec< Real, NumDimensions >
 
- Public Types inherited from tatooine::axis_aligned_bounding_box< Real, NumDimensions >
using real_type = Real
 
using this_type = axis_aligned_bounding_box< Real, NumDimensions >
 
using vec_type = vec< Real, NumDimensions >
 
using pos_type = vec_type
 
- Public Types inherited from tatooine::detail::aabb_ray_intersectable_parent< axis_aligned_bounding_box< Real, NumDimensions >, Real, NumDimensions >
using parent_type = ray_intersectable< Real, NumDimensions >
 
using intersection_type = intersection< real_type, NumDimensions >
 
using optional_intersection_type = std::optional< intersection_type >
 
using ray_type = ray< real_type, NumDimensions >
 
- Public Types inherited from tatooine::ray_intersectable< Real, NumDimensions >
using real_type = Real
 
using intersection_type = intersection< real_type, NumDimensions >
 
using optional_intersection_type = std::optional< intersection_type >
 
using ray_type = ray< real_type, NumDimensions >
 

Public Member Functions

 hierarchy_type ()=default
 
 hierarchy_type (hierarchy_type const &)=default
 
 hierarchy_type (hierarchy_type &&) noexcept=default
 
auto operator= (hierarchy_type const &) -> hierarchy_type &=default
 
auto operator= (hierarchy_type &&) noexcept -> hierarchy_type &=default
 
virtual ~hierarchy_type ()=default
 
 hierarchy_type (grid_type const &grid)
 
 hierarchy_type (grid_type const &grid, size_t const max_depth=parent_type::default_max_depth)
 
 hierarchy_type (vec_type const &min, vec_type const &max, grid_type const &grid, size_t const max_depth=parent_type::default_max_depth)
 
auto grid () const -> auto const &
 
auto constexpr holds_cells () const
 
auto num_cell_handles () const
 
constexpr auto is_cell_inside (integral auto const ... is) const
 
template<typename... Indices>
auto insert_cell (Indices const ... is) -> bool
 
auto distribute ()
 
auto construct (vec_type const &min, vec_type const &max, size_t const level, size_t const max_depth) const
 
auto distribute_cell (integral auto const ... is)
 
template<std::size_t... Is>
auto distribute_cell (std::array< std::size_t, NumDimensions > const &is, std::index_sequence< Is... >)
 
auto distribute_cell (std::array< std::size_t, NumDimensions > const &is)
 
auto collect_nearby_cells (vec_type const &pos, std::set< cell_t > &cells) const -> void
 
auto nearby_cells (pos_type const &pos) const
 
auto children () const -> auto const &
 
constexpr auto is_at_max_depth () const
 
constexpr auto is_splitted () const
 
auto split_and_distribute ()
 
- Public Member Functions inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
 base_uniform_tree_hierarchy ()=default
 
 base_uniform_tree_hierarchy (base_uniform_tree_hierarchy const &)=default
 
 base_uniform_tree_hierarchy (base_uniform_tree_hierarchy &&) noexcept=default
 
 base_uniform_tree_hierarchy (std::size_t const max_depth=default_max_depth)
 
 base_uniform_tree_hierarchy (vec_type const &min, vec_type const &max, std::size_t const max_depth=default_max_depth)
 
auto operator= (base_uniform_tree_hierarchy const &) -> base_uniform_tree_hierarchy &=default
 
auto operator= (base_uniform_tree_hierarchy &&) noexcept -> base_uniform_tree_hierarchy &=default
 
virtual ~base_uniform_tree_hierarchy ()=default
 
constexpr auto is_splitted () const
 
constexpr auto level () const
 
constexpr auto is_at_max_depth () const
 
auto children () const -> auto const &
 
auto child_at (integral auto const ... is) const -> auto const &
 
auto split (std::index_sequence< Seq... > seq)
 
auto split ()
 
auto distribute ()
 
auto construct (vec_type const &min, vec_type const &max, std::size_t const level, std::size_t const max_depth) const -> std::unique_ptr< hierarchy_type >
 
auto split_and_distribute ()
 
auto constexpr center () const
 
auto constexpr center (std::size_t const i) const
 
auto constexpr is_inside (pos_type const &p) const
 
auto constexpr max () const -> auto const &
 
auto constexpr max () -> auto &
 
auto constexpr max (std::size_t i) const -> auto const &
 
auto constexpr max (std::size_t i) -> auto &
 
auto constexpr min () const -> auto const &
 
auto constexpr min () -> auto &
 
auto constexpr min (std::size_t i) const -> auto const &
 
auto constexpr min (std::size_t i) -> auto &
 
- Public Member Functions inherited from tatooine::axis_aligned_bounding_box< Real, NumDimensions >
constexpr axis_aligned_bounding_box ()
 
constexpr axis_aligned_bounding_box (axis_aligned_bounding_box const &other)=default
 
constexpr axis_aligned_bounding_box (axis_aligned_bounding_box &&other) noexcept=default
 
constexpr auto operator= (axis_aligned_bounding_box const &other) -> axis_aligned_bounding_box &=default
 
constexpr auto operator= (axis_aligned_bounding_box &&other) noexcept -> axis_aligned_bounding_box &=default
 
 ~axis_aligned_bounding_box ()=default
 
template<typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (vec< Real0, NumDimensions > &&min, vec< Real1, NumDimensions > &&max) noexcept
 
template<typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (vec< Real0, NumDimensions > const &min, vec< Real1, NumDimensions > const &max)
 
template<typename Tensor0 , typename Tensor1 , typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (base_tensor< Tensor0, Real0, NumDimensions > const &min, base_tensor< Tensor1, Real1, NumDimensions > const &max)
 
auto constexpr min () const -> auto const &
 
auto constexpr min () -> auto &
 
auto constexpr min (std::size_t i) const -> auto const &
 
auto constexpr min (std::size_t i) -> auto &
 
auto constexpr max () const -> auto const &
 
auto constexpr max () -> auto &
 
auto constexpr max (std::size_t i) const -> auto const &
 
auto constexpr max (std::size_t i) -> auto &
 
auto constexpr extents () const
 
auto constexpr extent (std::size_t i) const
 
auto constexpr area () const
 
auto constexpr volume () const
 
auto constexpr center () const
 
auto constexpr center (std::size_t const i) const
 
auto constexpr is_inside (pos_type const &p) const
 
constexpr auto is_rectangle_inside (vec< Real, 2 > x0, vec< Real, 2 > x1, vec< Real, 2 > x2, vec< Real, 2 > x3) const
 
constexpr auto is_simplex_inside (vec< Real, 2 > const &x0, vec< Real, 2 > const &x1, vec< Real, 2 > const &x2) const
 
constexpr auto is_simplex_inside (vec< Real, 3 > x0, vec< Real, 3 > x1, vec< Real, 3 > x2) const
 
constexpr auto is_simplex_inside (vec< Real, 3 > x0, vec< Real, 3 > x1, vec< Real, 3 > x2, vec< Real, 3 > x3) const
 
constexpr auto operator+= (pos_type const &point)
 
constexpr auto reset ()
 
constexpr auto add_dimension (Real const min, Real const max) const
 
template<typename RandomEngine = std::mt19937_64>
auto random_point (RandomEngine &&random_engine=RandomEngine{ std::random_device{}()}) const
 
auto write_vtk (filesystem::path const &path)
 
- Public Member Functions inherited from tatooine::detail::aabb_ray_intersectable_parent< axis_aligned_bounding_box< Real, NumDimensions >, Real, NumDimensions >
auto as_aabb () const -> auto const &
 
auto check_intersection (ray_type const &r, Real const=0) const -> optional_intersection_type override
 
- Public Member Functions inherited from tatooine::ray_intersectable< Real, NumDimensions >
virtual ~ray_intersectable ()=default
 
virtual auto check_intersection (ray_type const &r, real_type const min_t) const -> optional_intersection_type=0
 

Static Public Member Functions

static constexpr auto num_dimensions () -> std::size_t
 
- Static Public Member Functions inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
static constexpr auto num_dimensions () -> std::size_t
 
static constexpr auto num_children () -> std::size_t
 
static constexpr auto index (integral auto const ... is)
 
- Static Public Member Functions inherited from tatooine::axis_aligned_bounding_box< Real, NumDimensions >
static constexpr auto num_dimensions () -> std::size_t
 
static constexpr auto infinite ()
 

Public Attributes

grid_type const * m_grid = nullptr
 
std::vector< cell_tm_cell_handles
 
- Public Attributes inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
std::size_t m_level
 
std::size_t m_max_depth
 
std::array< std::unique_ptr< hierarchy_type >, num_children()> m_children
 

Private Member Functions

 hierarchy_type (vec_type const &min, vec_type const &max, size_t const level, size_t const max_depth, grid_type const &grid)
 
constexpr auto is_cell_inside_2 (std::size_t const ix, std::size_t const iy) const
 
constexpr auto is_cell_inside_3 (std::size_t const ix, std::size_t const iy, std::size_t const iz) const
 

Additional Inherited Members

- Static Public Attributes inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
static constexpr std::size_t default_max_depth
 
- Protected Member Functions inherited from tatooine::base_uniform_tree_hierarchy< Real, NumDimensions, hierarchy_type >
 base_uniform_tree_hierarchy (vec_type const &min, vec_type const &max, std::size_t const level, std::size_t const max_depth)
 

Member Typedef Documentation

◆ cell_t

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::cell_t = std::array<std::size_t, NumDimensions>

◆ grid_type

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::grid_type = structured_grid<Real, NumDimensions, IndexOrder>

◆ index_order_t

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::index_order_t = IndexOrder

◆ parent_type

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::parent_type = base_uniform_tree_hierarchy<Real, NumDimensions, this_type>

◆ real_type

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::real_type = Real

◆ this_type

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
using tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::this_type = hierarchy_type

Constructor & Destructor Documentation

◆ hierarchy_type() [1/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( )
default

◆ hierarchy_type() [2/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( hierarchy_type const &  )
default

◆ hierarchy_type() [3/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( hierarchy_type &&  )
defaultnoexcept

◆ ~hierarchy_type()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
virtual tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::~hierarchy_type ( )
virtualdefault

◆ hierarchy_type() [4/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( grid_type const &  grid)
inlineexplicit

◆ hierarchy_type() [5/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( grid_type const &  grid,
size_t const  max_depth = parent_type::default_max_depth 
)
inlineexplicit

◆ hierarchy_type() [6/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( vec_type const &  min,
vec_type const &  max,
grid_type const &  grid,
size_t const  max_depth = parent_type::default_max_depth 
)
inline

◆ hierarchy_type() [7/7]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::hierarchy_type ( vec_type const &  min,
vec_type const &  max,
size_t const  level,
size_t const  max_depth,
grid_type const &  grid 
)
inlineprivate

Member Function Documentation

◆ children()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::base_uniform_tree_hierarchy< Real, NumDims, Derived >::children ( ) const -> auto const&
inline

◆ collect_nearby_cells()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::collect_nearby_cells ( vec_type const &  pos,
std::set< cell_t > &  cells 
) const -> void
inline

◆ construct()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::construct ( vec_type const &  min,
vec_type const &  max,
size_t const  level,
size_t const  max_depth 
) const
inline

◆ distribute()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::distribute ( )
inline

◆ distribute_cell() [1/3]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::distribute_cell ( integral auto const ...  is)
inline

◆ distribute_cell() [2/3]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::distribute_cell ( std::array< std::size_t, NumDimensions > const &  is)
inline

◆ distribute_cell() [3/3]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
template<std::size_t... Is>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::distribute_cell ( std::array< std::size_t, NumDimensions > const &  is,
std::index_sequence< Is... >   
)
inline

◆ grid()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::grid ( ) const -> auto const&
inline

◆ holds_cells()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto constexpr tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::holds_cells ( ) const
inlineconstexpr

◆ insert_cell()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
template<typename... Indices>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::insert_cell ( Indices const ...  is) -> bool
inline

◆ is_at_max_depth()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
constexpr auto tatooine::base_uniform_tree_hierarchy< Real, NumDims, Derived >::is_at_max_depth ( ) const
inlineconstexpr

◆ is_cell_inside()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
constexpr auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::is_cell_inside ( integral auto const ...  is) const
inlineconstexpr

◆ is_cell_inside_2()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
constexpr auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::is_cell_inside_2 ( std::size_t const  ix,
std::size_t const  iy 
) const
inlineconstexprprivate

◆ is_cell_inside_3()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
constexpr auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::is_cell_inside_3 ( std::size_t const  ix,
std::size_t const  iy,
std::size_t const  iz 
) const
inlineconstexprprivate

◆ is_splitted()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
constexpr auto tatooine::base_uniform_tree_hierarchy< Real, NumDims, Derived >::is_splitted ( ) const
inlineconstexpr

◆ nearby_cells()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::nearby_cells ( pos_type const &  pos) const
inline

◆ num_cell_handles()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::num_cell_handles ( ) const
inline

◆ num_dimensions()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
static constexpr auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::num_dimensions ( ) -> std::size_t
inlinestaticconstexpr

◆ operator=() [1/2]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::operator= ( hierarchy_type &&  ) -> hierarchy_type &=default
defaultnoexcept

◆ operator=() [2/2]

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::operator= ( hierarchy_type const &  ) -> hierarchy_type &=default
default

◆ split_and_distribute()

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
auto tatooine::base_uniform_tree_hierarchy< Real, NumDims, Derived >::split_and_distribute ( )
inline

Member Data Documentation

◆ m_cell_handles

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
std::vector<cell_t> tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::m_cell_handles

◆ m_grid

template<typename Real , std::size_t NumDimensions, typename IndexOrder = x_fastest>
grid_type const* tatooine::structured_grid< Real, NumDimensions, IndexOrder >::hierarchy_type::m_grid = nullptr

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