Tatooine
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
tatooine::rectilinear_grid< Dimensions > Class Template Reference

#include <rectilinear_grid.h>

Collaboration diagram for tatooine::rectilinear_grid< Dimensions >:
[legend]

Classes

struct  vtk_listener
 

Public Types

using this_type = rectilinear_grid< Dimensions... >
 
using real_type = common_type< typename Dimensions::value_type... >
 
using vec_type = vec< real_type, num_dimensions()>
 
using pos_type = vec_type
 
using sequence_type = std::make_index_sequence< num_dimensions()>
 
template<std::size_t I>
using dimension_type = variadic::ith_type< I, Dimensions... >
 
using dimensions_type = tuple< std::decay_t< Dimensions >... >
 
using vertex_container = detail::rectilinear_grid::vertex_container< Dimensions... >
 
using vertex_handle = detail::rectilinear_grid::vertex_handle< sizeof...(Dimensions)>
 
using cell_container = detail::rectilinear_grid::cell_container< Dimensions... >
 
using vertex_property_type = detail::rectilinear_grid::vertex_property< this_type >
 
template<typename ValueType , bool HasNonConstReference = false>
using typed_vertex_property_interface_type = detail::rectilinear_grid::typed_vertex_property_interface< this_type, ValueType, HasNonConstReference >
 
template<typename Container >
using typed_vertex_property_type = detail::rectilinear_grid::typed_vertex_property< this_type, typename Container::value_type, Container >
 
template<typename F >
using invoke_result_with_indices = std::invoke_result_t< F, decltype(((void) std::declval< Dimensions >(), std::declval< std::size_t >()))... >
 
using property_ptr_type = std::unique_ptr< vertex_property_type >
 
using property_container_type = std::map< std::string, property_ptr_type >
 

Public Member Functions

constexpr rectilinear_grid ()=default
 Default CTOR. More...
 
constexpr rectilinear_grid (rectilinear_grid const &other)
 Copy CTOR. More...
 
constexpr rectilinear_grid (rectilinear_grid &&other) noexcept
 Move CTOR. More...
 
template<floating_point_range... Dimensions_>
requires (sizeof...(Dimensions_) == sizeof...(Dimensions))
constexpr rectilinear_grid (Dimensions_ &&...dimensions)
 
template<typename Real , integral... Res>
requires (sizeof...(Res) == num_dimensions())
constexpr rectilinear_grid (axis_aligned_bounding_box< Real, num_dimensions()> const &bb, Res const ... res)
 
constexpr rectilinear_grid (integral auto const ... size)
 
 rectilinear_grid (filesystem::path const &path)
 Constructs a rectilinear grid by reading a file. More...
 
 ~rectilinear_grid ()=default
 
constexpr auto copy_without_properties () const
 Creates a copy of with any of the give properties. More...
 
constexpr auto operator= (rectilinear_grid const &other) -> rectilinear_grid &=default
 
constexpr auto operator= (rectilinear_grid &&other) noexcept -> rectilinear_grid &
 
template<std::size_t I>
requires (I < num_dimensions())
constexpr auto dimension () const -> auto const &
 
constexpr auto dimension (std::size_t const i) const -> auto const &requires(is_same< Dimensions... >) &&(num_dimensions()<=11)
 
constexpr auto dimensions () const -> auto const &
 
constexpr auto min () const
 
constexpr auto max () const
 
template<std::size_t I>
constexpr auto extent () const
 
constexpr auto extent () const
 
template<std::size_t DimensionIndex>
constexpr auto extent (std::size_t const cell_index) const
 
template<std::size_t I>
constexpr auto center () const
 
constexpr auto center () const
 
constexpr auto bounding_box () const
 
constexpr auto size () const
 
template<std::size_t I>
constexpr auto size () const
 
constexpr auto size (std::size_t const i) const
 
template<std::size_t I>
constexpr auto set_dimension (convertible_to< dimension_type< I > > auto &&dim)
 
template<std::size_t I>
constexpr auto push_back ()
 Inserts new discrete point in dimension I with extent of last cell. More...
 
template<std::size_t I>
requires requires(dimension_type<I> dim) { dim.pop_back(); }
constexpr auto pop_back ()
 Removes last discrete point in dimension I. More...
 
template<std::size_t I>
requires requires(dimension_type<I> dim) { dim.pop_back(); }
constexpr auto pop_front ()
 Removes first discrete point in dimension I. More...
 
template<arithmetic... Comps>
requires (num_dimensions() == sizeof...(Comps))
constexpr auto is_inside (Comps const ... comps) const
 Checks if point [comps...] is inside of grid. More...
 
constexpr auto is_inside (pos_type const &p) const
 Checks if point p is inside of grid. More...
 
constexpr auto is_inside (std::array< real_type, num_dimensions()> const &p) const
 Checks if point p is inside of grid. More...
 
template<std::size_t DimensionIndex>
auto cell_index (arithmetic auto x) const -> std::pair< std::size_t, real_type >
 
auto cell_index (arithmetic auto const ... xs) const
 
auto cell_index (fixed_size_vec< num_dimensions()> auto &&xs) const
 
auto finite_differences_coefficients (std::size_t const stencil_size, std::size_t const dim_index, std::size_t const i) const
 
auto create_finite_differences_coefficients (std::size_t const stencil_size) const
 Computes finite difference coefficients for given stencil size. More...
 
auto vertices () const
 
template<std::size_t... DIs, integral Int>
auto vertex_at (std::index_sequence< DIs... >, std::array< Int, num_dimensions()> const &is) const -> vec< real_type, num_dimensions()>
 
template<std::size_t... DIs>
auto vertex_at (std::index_sequence< DIs... >, integral auto const ... is) const -> vec< real_type, num_dimensions()>
 
auto vertex_at (integral auto const ... is) const
 
template<integral Int>
auto vertex_at (std::array< Int, num_dimensions()> const &is) const
 
auto vertex_at (vertex_handle const &h) const
 
auto operator[] (vertex_handle const &h) const
 
constexpr auto plain_index (integral auto const ... is)
 
auto cells () const
 
auto add_dimension (floating_point_range auto &&additional_dimension) const
 
auto has_vertex_property (std::string const &name)
 
auto remove_vertex_property (std::string const &name) -> void
 
auto rename_vertex_property (std::string const &current_name, std::string const &new_name) -> void
 
template<typename Container , typename... Args>
auto create_vertex_property (std::string const &name, Args &&...args) -> auto &
 
auto vertex_properties () const -> auto const &
 
auto vertex_properties () -> auto &
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_scalar_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_vec2_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_vec3_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_vec4_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_mat2_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_mat3_vertex_property (std::string const &name) -> auto &
 
template<typename IndexOrder = x_fastest>
auto insert_mat4_vertex_property (std::string const &name) -> auto &
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_contiguous_vertex_property (std::string const &name) -> auto &
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_chunked_vertex_property (std::string const &name, std::vector< std::size_t > const &chunk_size) -> auto &
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_chunked_vertex_property (std::string const &name, std::array< std::size_t, num_dimensions()> const &chunk_size) -> auto &
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_chunked_vertex_property (std::string const &name, integral auto const ... chunk_size) -> auto &requires(sizeof...(chunk_size)==num_dimensions())
 
template<typename T , typename IndexOrder = x_fastest>
auto insert_chunked_vertex_property (std::string const &name) -> auto &
 
template<typename T , bool HasNonConstReference = true>
auto vertex_property (std::string const &name) -> typed_vertex_property_interface_type< T, HasNonConstReference > &
 
template<typename T , bool HasNonConstReference = true>
auto vertex_property (std::string const &name) const -> typed_vertex_property_interface_type< T, HasNonConstReference > const &
 
template<bool HasNonConstReference = true>
auto scalar_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto scalar_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto vec2_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto vec2_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto vec3_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto vec3_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto vec4_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto vec4_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto mat2_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto mat2_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto mat3_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto mat3_vertex_property (std::string const &name) -> auto &
 
template<bool HasNonConstReference = true>
auto mat4_vertex_property (std::string const &name) const -> auto const &
 
template<bool HasNonConstReference = true>
auto mat4_vertex_property (std::string const &name) -> auto &
 
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto insert_lazy_vertex_property (filesystem::path const &path, std::string const &dataset_name) -> typed_vertex_property_interface_type< T, false > &
 
template<typename IndexOrder = x_fastest, typename T >
auto insert_vertex_property (hdf5::dataset< T > const &dataset) -> auto &
 
template<typename IndexOrder = x_fastest, typename T >
auto insert_vertex_property (hdf5::dataset< T > const &dataset, std::string const &name) -> auto &
 
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto insert_hdf5_lazy_vertex_property (filesystem::path const &path, std::string const &dataset_name) -> auto &
 
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto insert_lazy_vertex_property (hdf5::dataset< T > const &dataset) -> auto &
 
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto insert_lazy_vertex_property (hdf5::dataset< T > const &dataset, std::string const &name) -> auto &
 
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto insert_netcdf_lazy_vertex_property (filesystem::path const &path, std::string const &dataset_name) -> auto &
 
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto insert_lazy_vertex_property (netcdf::variable< T > const &dataset) -> auto &
 
template<typename F >
requires invocable_with_n_integrals<F, num_dimensions()> || invocable<F, pos_type>
auto sample_to_vertex_property (F &&f, std::string const &name) -> auto &
 
template<typename F >
requires invocable_with_n_integrals<F, num_dimensions()> || invocable<F, pos_type>
auto sample_to_vertex_property (F &&f, std::string const &name, execution_policy_tag auto tag) -> auto &
 
auto read (filesystem::path const &path)
 
auto read_vtk (filesystem::path const &path)
 

Static Public Member Functions

static constexpr auto num_dimensions () -> std::size_t
 

Static Public Attributes

static constexpr bool is_uniform
 

Private Types

using finite_difference_coefficents_list_type = std::vector< real_type >
 

Private Member Functions

template<typename Real , integral... Res, std::size_t... Seq>
constexpr rectilinear_grid (axis_aligned_bounding_box< Real, num_dimensions()> const &bb, std::index_sequence< Seq... >, Res const ... res)
 
template<std::size_t... Ds>
constexpr auto copy_without_properties (std::index_sequence< Ds... >) const
 
template<std::size_t... Seq>
constexpr auto min (std::index_sequence< Seq... >) const
 
template<std::size_t... Seq>
constexpr auto max (std::index_sequence< Seq... >) const
 
template<std::size_t... Is>
constexpr auto extent (std::index_sequence< Is... >) const
 
template<std::size_t... Is>
constexpr auto center (std::index_sequence< Is... >) const
 
template<std::size_t... Seq>
requires (sizeof...(Seq) == num_dimensions())
constexpr auto bounding_box (std::index_sequence< Seq... >) const
 
template<std::size_t... Seq>
requires (sizeof...(Seq) == num_dimensions())
constexpr auto size (std::index_sequence< Seq... >) const
 
auto resize_vertex_properties ()
 
template<arithmetic... Comps, std::size_t... Seq>
requires (num_dimensions() == sizeof...(Comps))
constexpr auto is_inside (std::index_sequence< Seq... >, Comps const ... comps) const
 Checks if point [comps...] is inside of grid. More...
 
template<std::size_t... Seq>
constexpr auto is_inside (pos_type const &p, std::index_sequence< Seq... >) const
 Checks if point p is inside of grid. More...
 
template<std::size_t... Seq>
constexpr auto is_inside (std::array< real_type, num_dimensions()> const &p, std::index_sequence< Seq... >) const
 Checks if point p is inside of grid. More...
 
template<std::size_t... DimensionIndex>
auto cell_index (std::index_sequence< DimensionIndex... >, arithmetic auto const ... xs) const -> std::array< std::pair< std::size_t, double >, num_dimensions()>
 returns cell indices and factors for each dimension for interpolaton More...
 
template<std::size_t... Is>
auto add_dimension (floating_point_range auto &&additional_dimension, std::index_sequence< Is... >) const
 
template<invocable_with_n_integrals< num_dimensions()> F, std::size_t... Is>
auto sample_to_vertex_property_indices (F &&f, std::string const &name, execution_policy_tag auto tag, std::index_sequence< Is... >) -> auto &
 
template<invocable< pos_type > F>
auto sample_to_vertex_property_pos (F &&f, std::string const &name, execution_policy_tag auto tag) -> auto &
 

Private Attributes

std::mutex m_finite_difference_coefficients_mutex = {}
 
dimensions_type m_dimensions
 
property_container_type m_vertex_properties
 
std::vector< std::array< finite_difference_coefficents_list_type, num_dimensions()> > m_finite_difference_coefficients = {}
 
std::size_t m_chunk_size_for_lazy_properties = 2
 

Member Typedef Documentation

◆ cell_container

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::cell_container = detail::rectilinear_grid::cell_container<Dimensions...>

◆ dimension_type

template<floating_point_range... Dimensions>
template<std::size_t I>
using tatooine::rectilinear_grid< Dimensions >::dimension_type = variadic::ith_type<I, Dimensions...>

◆ dimensions_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::dimensions_type = tuple<std::decay_t<Dimensions>...>

◆ finite_difference_coefficents_list_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::finite_difference_coefficents_list_type = std::vector<real_type>
private

◆ invoke_result_with_indices

template<floating_point_range... Dimensions>
template<typename F >
using tatooine::rectilinear_grid< Dimensions >::invoke_result_with_indices = std::invoke_result_t<F, decltype(((void)std::declval<Dimensions>(), std::declval<std::size_t>()))...>

◆ pos_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::pos_type = vec_type

◆ property_container_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::property_container_type = std::map<std::string, property_ptr_type>

◆ property_ptr_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::property_ptr_type = std::unique_ptr<vertex_property_type>

◆ real_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::real_type = common_type<typename Dimensions::value_type...>

◆ sequence_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::sequence_type = std::make_index_sequence<num_dimensions()>

◆ this_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::this_type = rectilinear_grid<Dimensions...>

◆ typed_vertex_property_interface_type

template<floating_point_range... Dimensions>
template<typename ValueType , bool HasNonConstReference = false>
using tatooine::rectilinear_grid< Dimensions >::typed_vertex_property_interface_type = detail::rectilinear_grid::typed_vertex_property_interface< this_type, ValueType, HasNonConstReference>

◆ typed_vertex_property_type

template<floating_point_range... Dimensions>
template<typename Container >
using tatooine::rectilinear_grid< Dimensions >::typed_vertex_property_type = detail::rectilinear_grid::typed_vertex_property< this_type, typename Container::value_type, Container>

◆ vec_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::vec_type = vec<real_type, num_dimensions()>

◆ vertex_container

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::vertex_container = detail::rectilinear_grid::vertex_container<Dimensions...>

◆ vertex_handle

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::vertex_handle = detail::rectilinear_grid::vertex_handle<sizeof...(Dimensions)>

◆ vertex_property_type

template<floating_point_range... Dimensions>
using tatooine::rectilinear_grid< Dimensions >::vertex_property_type = detail::rectilinear_grid::vertex_property<this_type>

Constructor & Destructor Documentation

◆ rectilinear_grid() [1/8]

template<floating_point_range... Dimensions>
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( )
constexprdefault

Default CTOR.

◆ rectilinear_grid() [2/8]

template<floating_point_range... Dimensions>
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( rectilinear_grid< Dimensions > const &  other)
inlineconstexpr

Copy CTOR.

◆ rectilinear_grid() [3/8]

template<floating_point_range... Dimensions>
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( rectilinear_grid< Dimensions > &&  other)
inlineconstexprnoexcept

Move CTOR.

◆ rectilinear_grid() [4/8]

template<floating_point_range... Dimensions>
template<floating_point_range... Dimensions_>
requires (sizeof...(Dimensions_) == sizeof...(Dimensions))
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( Dimensions_ &&...  dimensions)
inlineconstexpr
Parameters
dimensionsList of dimensions / axes of the rectilinear grid

◆ rectilinear_grid() [5/8]

template<floating_point_range... Dimensions>
template<typename Real , integral... Res, std::size_t... Seq>
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( axis_aligned_bounding_box< Real, num_dimensions()> const &  bb,
std::index_sequence< Seq... >  ,
Res const ...  res 
)
inlineconstexprprivate

◆ rectilinear_grid() [6/8]

template<floating_point_range... Dimensions>
template<typename Real , integral... Res>
requires (sizeof...(Res) == num_dimensions())
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( axis_aligned_bounding_box< Real, num_dimensions()> const &  bb,
Res const ...  res 
)
inlineconstexpr

Constructs a uniform grid from a tatooine::axis_aligned_bounding_box and a resolution.

◆ rectilinear_grid() [7/8]

template<floating_point_range... Dimensions>
constexpr tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( integral auto const ...  size)
inlineconstexpr

Constructs a rectilinear grid in the range of [0 .. 1] with given resolution.

Parameters
sizeResolution of grid.

◆ rectilinear_grid() [8/8]

template<floating_point_range... Dimensions>
tatooine::rectilinear_grid< Dimensions >::rectilinear_grid ( filesystem::path const &  path)
inline

Constructs a rectilinear grid by reading a file.

◆ ~rectilinear_grid()

template<floating_point_range... Dimensions>
tatooine::rectilinear_grid< Dimensions >::~rectilinear_grid ( )
default

Member Function Documentation

◆ add_dimension() [1/2]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::add_dimension ( floating_point_range auto &&  additional_dimension) const
inline

◆ add_dimension() [2/2]

template<floating_point_range... Dimensions>
template<std::size_t... Is>
auto tatooine::rectilinear_grid< Dimensions >::add_dimension ( floating_point_range auto &&  additional_dimension,
std::index_sequence< Is... >   
) const
inlineprivate

◆ bounding_box() [1/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::bounding_box ( ) const
inlineconstexpr
Returns
Axis aligned bounding box of grid

◆ bounding_box() [2/2]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
requires (sizeof...(Seq) == num_dimensions())
constexpr auto tatooine::rectilinear_grid< Dimensions >::bounding_box ( std::index_sequence< Seq... >  ) const
inlineconstexprprivate
Returns
Axis aligned bounding box of grid

◆ cell_index() [1/4]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::cell_index ( arithmetic auto const ...  xs) const
inline

◆ cell_index() [2/4]

template<floating_point_range... Dimensions>
template<std::size_t DimensionIndex>
auto tatooine::rectilinear_grid< Dimensions >::cell_index ( arithmetic auto  x) const -> std::pair<std::size_t, real_type>
inline

returns cell index and factor for interpolation of position x in dimension DimensionIndex.

◆ cell_index() [3/4]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::cell_index ( fixed_size_vec< num_dimensions()> auto &&  xs) const
inline

◆ cell_index() [4/4]

template<floating_point_range... Dimensions>
template<std::size_t... DimensionIndex>
auto tatooine::rectilinear_grid< Dimensions >::cell_index ( std::index_sequence< DimensionIndex... >  ,
arithmetic auto const ...  xs 
) const -> std::array<std::pair<std::size_t, double>, num_dimensions()>
inlineprivate

returns cell indices and factors for each dimension for interpolaton

◆ cells()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::cells ( ) const
inline

◆ center() [1/3]

template<floating_point_range... Dimensions>
template<std::size_t I>
constexpr auto tatooine::rectilinear_grid< Dimensions >::center ( ) const
inlineconstexpr

◆ center() [2/3]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::center ( ) const
inlineconstexpr

◆ center() [3/3]

template<floating_point_range... Dimensions>
template<std::size_t... Is>
constexpr auto tatooine::rectilinear_grid< Dimensions >::center ( std::index_sequence< Is... >  ) const
inlineconstexprprivate

◆ copy_without_properties() [1/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::copy_without_properties ( ) const
inlineconstexpr

Creates a copy of with any of the give properties.

◆ copy_without_properties() [2/2]

template<floating_point_range... Dimensions>
template<std::size_t... Ds>
constexpr auto tatooine::rectilinear_grid< Dimensions >::copy_without_properties ( std::index_sequence< Ds... >  ) const
inlineconstexprprivate

◆ create_finite_differences_coefficients()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::create_finite_differences_coefficients ( std::size_t const  stencil_size) const
inline

Computes finite difference coefficients for given stencil size.

On the borders of the grid the position for which the coefficients are being computed may not be in the center of the stencil. The stencil is adjusted so that the stencil size keeps constant.

◆ create_vertex_property()

template<floating_point_range... Dimensions>
template<typename Container , typename... Args>
auto tatooine::rectilinear_grid< Dimensions >::create_vertex_property ( std::string const &  name,
Args &&...  args 
) -> auto &
inline

◆ dimension() [1/2]

template<floating_point_range... Dimensions>
template<std::size_t I>
requires (I < num_dimensions())
constexpr auto tatooine::rectilinear_grid< Dimensions >::dimension ( ) const -> auto const &
inlineconstexpr

Returns a constant reference to the dimension of index I.

Template Parameters
IIndex of dimension

◆ dimension() [2/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::dimension ( std::size_t const  i) const -> auto const & requires(is_same<Dimensions...>) && (num_dimensions() <= 11)
inlineconstexpr

Returns a constant reference to the dimension of index I. This runtime version is only available if all dimensions are of the same type.

Parameters
iIndex of dimension

◆ dimensions()

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::dimensions ( ) const -> auto const &
inlineconstexpr
Returns
Constant reference to all dimensions stored in a tuple.

◆ extent() [1/4]

template<floating_point_range... Dimensions>
template<std::size_t I>
constexpr auto tatooine::rectilinear_grid< Dimensions >::extent ( ) const
inlineconstexpr
Returns
Extent of dimension of index I

◆ extent() [2/4]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::extent ( ) const
inlineconstexpr
Returns
Extent in all dimesions

◆ extent() [3/4]

template<floating_point_range... Dimensions>
template<std::size_t... Is>
constexpr auto tatooine::rectilinear_grid< Dimensions >::extent ( std::index_sequence< Is... >  ) const
inlineconstexprprivate
Returns
Extent in all dimesions

◆ extent() [4/4]

template<floating_point_range... Dimensions>
template<std::size_t DimensionIndex>
constexpr auto tatooine::rectilinear_grid< Dimensions >::extent ( std::size_t const  cell_index) const
inlineconstexpr
Returns
Extent cell with index cell_index in dimension with Index DimensionIndex.

◆ finite_differences_coefficients()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::finite_differences_coefficients ( std::size_t const  stencil_size,
std::size_t const  dim_index,
std::size_t const  i 
) const
inline

◆ has_vertex_property()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::has_vertex_property ( std::string const &  name)
inline

◆ insert_chunked_vertex_property() [1/4]

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_chunked_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_chunked_vertex_property() [2/4]

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_chunked_vertex_property ( std::string const &  name,
integral auto const ...  chunk_size 
) -> auto & requires(sizeof...(chunk_size) == num_dimensions())
inline

◆ insert_chunked_vertex_property() [3/4]

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_chunked_vertex_property ( std::string const &  name,
std::array< std::size_t, num_dimensions()> const &  chunk_size 
) -> auto &
inline

◆ insert_chunked_vertex_property() [4/4]

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_chunked_vertex_property ( std::string const &  name,
std::vector< std::size_t > const &  chunk_size 
) -> auto &
inline

◆ insert_contiguous_vertex_property()

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_contiguous_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_hdf5_lazy_vertex_property()

template<floating_point_range... Dimensions>
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::rectilinear_grid< Dimensions >::insert_hdf5_lazy_vertex_property ( filesystem::path const &  path,
std::string const &  dataset_name 
) -> auto &
inline

◆ insert_lazy_vertex_property() [1/4]

template<floating_point_range... Dimensions>
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::rectilinear_grid< Dimensions >::insert_lazy_vertex_property ( filesystem::path const &  path,
std::string const &  dataset_name 
) -> typed_vertex_property_interface_type<T, false> &
inline

◆ insert_lazy_vertex_property() [2/4]

template<floating_point_range... Dimensions>
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto tatooine::rectilinear_grid< Dimensions >::insert_lazy_vertex_property ( hdf5::dataset< T > const &  dataset) -> auto &
inline

◆ insert_lazy_vertex_property() [3/4]

template<floating_point_range... Dimensions>
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto tatooine::rectilinear_grid< Dimensions >::insert_lazy_vertex_property ( hdf5::dataset< T > const &  dataset,
std::string const &  name 
) -> auto &
inline

◆ insert_lazy_vertex_property() [4/4]

template<floating_point_range... Dimensions>
template<typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder, typename T >
auto tatooine::rectilinear_grid< Dimensions >::insert_lazy_vertex_property ( netcdf::variable< T > const &  dataset) -> auto &
inline

◆ insert_mat2_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_mat2_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_mat3_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_mat3_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_mat4_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_mat4_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_netcdf_lazy_vertex_property()

template<floating_point_range... Dimensions>
template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::rectilinear_grid< Dimensions >::insert_netcdf_lazy_vertex_property ( filesystem::path const &  path,
std::string const &  dataset_name 
) -> auto &
inline

◆ insert_scalar_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_scalar_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_vec2_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_vec2_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_vec3_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_vec3_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_vec4_vertex_property()

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_vec4_vertex_property ( std::string const &  name) -> auto &
inline

◆ insert_vertex_property() [1/3]

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest, typename T >
auto tatooine::rectilinear_grid< Dimensions >::insert_vertex_property ( hdf5::dataset< T > const &  dataset) -> auto &
inline

◆ insert_vertex_property() [2/3]

template<floating_point_range... Dimensions>
template<typename IndexOrder = x_fastest, typename T >
auto tatooine::rectilinear_grid< Dimensions >::insert_vertex_property ( hdf5::dataset< T > const &  dataset,
std::string const &  name 
) -> auto &
inline

◆ insert_vertex_property() [3/3]

template<floating_point_range... Dimensions>
template<typename T , typename IndexOrder = x_fastest>
auto tatooine::rectilinear_grid< Dimensions >::insert_vertex_property ( std::string const &  name) -> auto &
inline

◆ is_inside() [1/6]

template<floating_point_range... Dimensions>
template<arithmetic... Comps>
requires (num_dimensions() == sizeof...(Comps))
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( Comps const ...  comps) const
inlineconstexpr

Checks if point [comps...] is inside of grid.

◆ is_inside() [2/6]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( pos_type const &  p) const
inlineconstexpr

Checks if point p is inside of grid.

◆ is_inside() [3/6]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( pos_type const &  p,
std::index_sequence< Seq... >   
) const
inlineconstexprprivate

Checks if point p is inside of grid.

◆ is_inside() [4/6]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( std::array< real_type, num_dimensions()> const &  p) const
inlineconstexpr

Checks if point p is inside of grid.

◆ is_inside() [5/6]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( std::array< real_type, num_dimensions()> const &  p,
std::index_sequence< Seq... >   
) const
inlineconstexprprivate

Checks if point p is inside of grid.

◆ is_inside() [6/6]

template<floating_point_range... Dimensions>
template<arithmetic... Comps, std::size_t... Seq>
requires (num_dimensions() == sizeof...(Comps))
constexpr auto tatooine::rectilinear_grid< Dimensions >::is_inside ( std::index_sequence< Seq... >  ,
Comps const ...  comps 
) const
inlineconstexprprivate

Checks if point [comps...] is inside of grid.

◆ mat2_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat2_vertex_property ( std::string const &  name) -> auto &
inline

◆ mat2_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat2_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ mat3_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat3_vertex_property ( std::string const &  name) -> auto &
inline

◆ mat3_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat3_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ mat4_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat4_vertex_property ( std::string const &  name) -> auto &
inline

◆ mat4_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::mat4_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ max() [1/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::max ( ) const
inlineconstexpr
Returns
Maximal point in all dimensions.

◆ max() [2/2]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
constexpr auto tatooine::rectilinear_grid< Dimensions >::max ( std::index_sequence< Seq... >  ) const
inlineconstexprprivate

◆ min() [1/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::min ( ) const
inlineconstexpr
Returns
Minimal point in all dimensions.

◆ min() [2/2]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
constexpr auto tatooine::rectilinear_grid< Dimensions >::min ( std::index_sequence< Seq... >  ) const
inlineconstexprprivate

◆ num_dimensions()

template<floating_point_range... Dimensions>
static constexpr auto tatooine::rectilinear_grid< Dimensions >::num_dimensions ( ) -> std::size_t
inlinestaticconstexpr

◆ operator=() [1/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::operator= ( rectilinear_grid< Dimensions > &&  other) -> rectilinear_grid &
inlineconstexprnoexcept

◆ operator=() [2/2]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::operator= ( rectilinear_grid< Dimensions > const &  other) -> rectilinear_grid &=default
constexprdefault

◆ operator[]()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::operator[] ( vertex_handle const &  h) const
inline

◆ plain_index()

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::plain_index ( integral auto const ...  is)
inlineconstexpr

◆ pop_back()

template<floating_point_range... Dimensions>
template<std::size_t I>
requires requires(dimension_type<I> dim) { dim.pop_back(); }
constexpr auto tatooine::rectilinear_grid< Dimensions >::pop_back ( )
inlineconstexpr

Removes last discrete point in dimension I.

◆ pop_front()

template<floating_point_range... Dimensions>
template<std::size_t I>
requires requires(dimension_type<I> dim) { dim.pop_back(); }
constexpr auto tatooine::rectilinear_grid< Dimensions >::pop_front ( )
inlineconstexpr

Removes first discrete point in dimension I.

◆ push_back()

template<floating_point_range... Dimensions>
template<std::size_t I>
constexpr auto tatooine::rectilinear_grid< Dimensions >::push_back ( )
inlineconstexpr

Inserts new discrete point in dimension I with extent of last cell.

◆ read()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::read ( filesystem::path const &  path)
inline

◆ read_vtk()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::read_vtk ( filesystem::path const &  path)
inline

◆ remove_vertex_property()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::remove_vertex_property ( std::string const &  name) -> void
inline

◆ rename_vertex_property()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::rename_vertex_property ( std::string const &  current_name,
std::string const &  new_name 
) -> void
inline

◆ resize_vertex_properties()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::resize_vertex_properties ( )
inlineprivate

◆ sample_to_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<typename F >
requires invocable_with_n_integrals<F, num_dimensions()> || invocable<F, pos_type>
auto tatooine::rectilinear_grid< Dimensions >::sample_to_vertex_property ( F &&  f,
std::string const &  name 
) -> auto &
inline

◆ sample_to_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<typename F >
requires invocable_with_n_integrals<F, num_dimensions()> || invocable<F, pos_type>
auto tatooine::rectilinear_grid< Dimensions >::sample_to_vertex_property ( F &&  f,
std::string const &  name,
execution_policy_tag auto  tag 
) -> auto &
inline

◆ sample_to_vertex_property_indices()

template<floating_point_range... Dimensions>
template<invocable_with_n_integrals< num_dimensions()> F, std::size_t... Is>
auto tatooine::rectilinear_grid< Dimensions >::sample_to_vertex_property_indices ( F &&  f,
std::string const &  name,
execution_policy_tag auto  tag,
std::index_sequence< Is... >   
) -> auto &
inlineprivate

◆ sample_to_vertex_property_pos()

template<floating_point_range... Dimensions>
template<invocable< pos_type > F>
auto tatooine::rectilinear_grid< Dimensions >::sample_to_vertex_property_pos ( F &&  f,
std::string const &  name,
execution_policy_tag auto  tag 
) -> auto &
inlineprivate

◆ scalar_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::scalar_vertex_property ( std::string const &  name) -> auto &
inline

◆ scalar_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::scalar_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ set_dimension()

template<floating_point_range... Dimensions>
template<std::size_t I>
constexpr auto tatooine::rectilinear_grid< Dimensions >::set_dimension ( convertible_to< dimension_type< I > > auto &&  dim)
inlineconstexpr

◆ size() [1/4]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::size ( ) const
inlineconstexpr
Returns
Resolution of grid

◆ size() [2/4]

template<floating_point_range... Dimensions>
template<std::size_t I>
constexpr auto tatooine::rectilinear_grid< Dimensions >::size ( ) const
inlineconstexpr
Returns
Resolution of of dimension I
Template Parameters
IIndex of dimensions

◆ size() [3/4]

template<floating_point_range... Dimensions>
template<std::size_t... Seq>
requires (sizeof...(Seq) == num_dimensions())
constexpr auto tatooine::rectilinear_grid< Dimensions >::size ( std::index_sequence< Seq... >  ) const
inlineconstexprprivate
Returns
Resolution of grid

◆ size() [4/4]

template<floating_point_range... Dimensions>
constexpr auto tatooine::rectilinear_grid< Dimensions >::size ( std::size_t const  i) const
inlineconstexpr
Returns
Resolution of of dimension i Note: i needs to be <= 10
Template Parameters
iIndex of dimensions

◆ vec2_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec2_vertex_property ( std::string const &  name) -> auto &
inline

◆ vec2_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec2_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ vec3_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec3_vertex_property ( std::string const &  name) -> auto &
inline

◆ vec3_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec3_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ vec4_vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec4_vertex_property ( std::string const &  name) -> auto &
inline

◆ vec4_vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vec4_vertex_property ( std::string const &  name) const -> auto const &
inline

◆ vertex_at() [1/5]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::vertex_at ( integral auto const ...  is) const
inline

◆ vertex_at() [2/5]

template<floating_point_range... Dimensions>
template<integral Int>
auto tatooine::rectilinear_grid< Dimensions >::vertex_at ( std::array< Int, num_dimensions()> const &  is) const
inline

◆ vertex_at() [3/5]

template<floating_point_range... Dimensions>
template<std::size_t... DIs>
auto tatooine::rectilinear_grid< Dimensions >::vertex_at ( std::index_sequence< DIs... >  ,
integral auto const ...  is 
) const -> vec<real_type, num_dimensions()>
inline

◆ vertex_at() [4/5]

template<floating_point_range... Dimensions>
template<std::size_t... DIs, integral Int>
auto tatooine::rectilinear_grid< Dimensions >::vertex_at ( std::index_sequence< DIs... >  ,
std::array< Int, num_dimensions()> const &  is 
) const -> vec<real_type, num_dimensions()>
inline

◆ vertex_at() [5/5]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::vertex_at ( vertex_handle const &  h) const
inline

◆ vertex_properties() [1/2]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::vertex_properties ( ) -> auto &
inline

◆ vertex_properties() [2/2]

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::vertex_properties ( ) const -> auto const &
inline

◆ vertex_property() [1/2]

template<floating_point_range... Dimensions>
template<typename T , bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vertex_property ( std::string const &  name) -> typed_vertex_property_interface_type<T, HasNonConstReference> &
inline
Returns
Reference to a polymorphic vertex property.

◆ vertex_property() [2/2]

template<floating_point_range... Dimensions>
template<typename T , bool HasNonConstReference = true>
auto tatooine::rectilinear_grid< Dimensions >::vertex_property ( std::string const &  name) const -> typed_vertex_property_interface_type<T, HasNonConstReference> const &
inline

◆ vertices()

template<floating_point_range... Dimensions>
auto tatooine::rectilinear_grid< Dimensions >::vertices ( ) const
inline

Member Data Documentation

◆ is_uniform

template<floating_point_range... Dimensions>
constexpr bool tatooine::rectilinear_grid< Dimensions >::is_uniform
staticconstexpr
Initial value:
=
(is_linspace<std::decay_t<Dimensions>> && ...)

◆ m_chunk_size_for_lazy_properties

template<floating_point_range... Dimensions>
std::size_t tatooine::rectilinear_grid< Dimensions >::m_chunk_size_for_lazy_properties = 2
private

◆ m_dimensions

template<floating_point_range... Dimensions>
dimensions_type tatooine::rectilinear_grid< Dimensions >::m_dimensions
private

◆ m_finite_difference_coefficients

template<floating_point_range... Dimensions>
std::vector< std::array<finite_difference_coefficents_list_type, num_dimensions()> > tatooine::rectilinear_grid< Dimensions >::m_finite_difference_coefficients = {}
mutableprivate

◆ m_finite_difference_coefficients_mutex

template<floating_point_range... Dimensions>
std::mutex tatooine::rectilinear_grid< Dimensions >::m_finite_difference_coefficients_mutex = {}
mutableprivate

◆ m_vertex_properties

template<floating_point_range... Dimensions>
property_container_type tatooine::rectilinear_grid< Dimensions >::m_vertex_properties
private

The documentation for this class was generated from the following files: