Tatooine
Namespaces | Classes | Functions
tatooine::detail Namespace Reference

Namespaces

namespace  autonomous_particle
 
namespace  for_loop
 
namespace  geometry
 
namespace  line
 
namespace  linspace
 
namespace  pointset
 
namespace  rectilinear_grid
 
namespace  structured_grid
 
namespace  unstructured_simplicial_grid
 
namespace  vortex_core_lines
 

Classes

struct  aabb_ray_intersectable_parent
 
struct  celltree_parent
 
struct  celltree_parent< Celltree, real_type, 3, 3 >
 

Functions

template<typename MeshCont >
auto write_unstructured_triangular_grid_container_to_vtk (MeshCont const &grids, std::filesystem::path const &path, std::string const &title="tatooine grids")
 
auto write_unstructured_triangular_grid_container_to_vtp (range auto const &grids, std::filesystem::path const &path)
 
template<typename Real , typename T0 , typename T1 , typename T2 , typename T3 >
constexpr auto eval_bilinear (base_tensor< T0, Real, 2 > const &v00, base_tensor< T1, Real, 2 > const &v10, base_tensor< T2, Real, 2 > const &v01, base_tensor< T3, Real, 2 > const &v11, Real const s, Real const t)
 
template<typename Real , typename T0 , typename T1 , typename T2 , typename T3 >
auto solve_bilinear (base_tensor< T0, Real, 2 > const &v00, base_tensor< T1, Real, 2 > const &v10, base_tensor< T2, Real, 2 > const &v01, base_tensor< T3, Real, 2 > const &v11)
 
template<typename Real , invocable< Vec3< Real > >... Preds>
constexpr auto pv_on_tri (Vec3< Real > const &p0, Vec3< Real > const &v0, Vec3< Real > const &w0, Vec3< Real > const &p1, Vec3< Real > const &v1, Vec3< Real > const &w1, Vec3< Real > const &p2, Vec3< Real > const &v2, Vec3< Real > const &w2, Preds &&... preds) -> std::optional< Vec3< Real > >
 
template<typename Real >
static auto check_tet (std::optional< Vec3< Real > > const &tri0, std::optional< Vec3< Real > > const &tri1, std::optional< Vec3< Real > > const &tri2, std::optional< Vec3< Real > > const &tri3, std::vector< Line3< Real > > &lines)
 
auto constexpr is_even (integral auto const i)
 
template<signed_integral Int = int>
auto constexpr sign (bool pred) -> Int
 
auto constexpr turned (integral auto const ... is) -> bool
 
auto check_turned_cube (auto const &x_faces, auto const &y_faces, auto const &z_faces, auto const &inner_faces, auto &ls, auto const ix, auto const iy)
 
auto check_unturned_cube (auto const &x_faces, auto const &y_faces, auto const &z_faces, auto const &inner_faces, auto &ls, auto const ix, auto const iy)
 
auto check_cube (auto const &x_faces, auto const &y_faces, auto const &z_faces, auto const &inner_faces, auto &ls, auto const ix, auto const iy, auto const iz)
 
template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto calc_parallel_vectors (GetV &&getv, GetW &&getw, tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &g, execution_policy::parallel_t const policy, Preds &&... preds) -> std::vector< Line3< Real > >
 
template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto calc_parallel_vectors (GetV &&getv, GetW &&getw, tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &g, execution_policy::sequential_t const policy, Preds &&... preds)
 
template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto calc_parallel_vectors (GetV &&getv, GetW &&getw, tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &g, execution_policy_tag auto const policy, Preds &&... preds)
 

Function Documentation

◆ calc_parallel_vectors() [1/3]

template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto tatooine::detail::calc_parallel_vectors ( GetV &&  getv,
GetW &&  getw,
tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &  g,
execution_policy::parallel_t const  policy,
Preds &&...  preds 
) -> std::vector<Line3<Real>>

Framework for calculating PV Operator.

Parameters
getvfunction for getting value for V field
getwfunction for getting value for W field

The algorithm processes z-slabs in parallel. For each slab all constant x-faces, all constant y-faces and all faces of each inner cube's tetrahedron are stored in a 2-D arrays. To be able to compute the cells of the grid both sides of the constant z-faces are needed. These are being stored ping-pong-wise.

◆ calc_parallel_vectors() [2/3]

template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto tatooine::detail::calc_parallel_vectors ( GetV &&  getv,
GetW &&  getw,
tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &  g,
execution_policy::sequential_t const  policy,
Preds &&...  preds 
)

Framework for calculating PV Operator.

Parameters
getvfunction for getting value for V field
getwfunction for getting value for W field

The algorithm processes z-slabs sequentially. For each slab all constant x-faces, all constant y-faces and all faces of each inner cube's tetrahedron are stored in a 2-D arrays. To be able to compute the cells of the grid both sides of the constant z-faces are needed. These are being stored ping-pong-wise.

◆ calc_parallel_vectors() [3/3]

template<typename Real , typename GetV , typename GetW , typename XDomain , typename YDomain , typename ZDomain , invocable< Vec3< Real > >... Preds>
auto tatooine::detail::calc_parallel_vectors ( GetV &&  getv,
GetW &&  getw,
tatooine::rectilinear_grid< XDomain, YDomain, ZDomain > const &  g,
execution_policy_tag auto const  policy,
Preds &&...  preds 
)

Framework for calculating PV Operator.

Parameters
getvfunction for getting value for V field
getwfunction for getting value for W field

◆ check_cube()

auto tatooine::detail::check_cube ( auto const &  x_faces,
auto const &  y_faces,
auto const &  z_faces,
auto const &  inner_faces,
auto &  ls,
auto const  ix,
auto const  iy,
auto const  iz 
)

◆ check_tet()

template<typename Real >
static auto tatooine::detail::check_tet ( std::optional< Vec3< Real > > const &  tri0,
std::optional< Vec3< Real > > const &  tri1,
std::optional< Vec3< Real > > const &  tri2,
std::optional< Vec3< Real > > const &  tri3,
std::vector< Line3< Real > > &  lines 
)
static

◆ check_turned_cube()

auto tatooine::detail::check_turned_cube ( auto const &  x_faces,
auto const &  y_faces,
auto const &  z_faces,
auto const &  inner_faces,
auto &  ls,
auto const  ix,
auto const  iy 
)

◆ check_unturned_cube()

auto tatooine::detail::check_unturned_cube ( auto const &  x_faces,
auto const &  y_faces,
auto const &  z_faces,
auto const &  inner_faces,
auto &  ls,
auto const  ix,
auto const  iy 
)

◆ eval_bilinear()

template<typename Real , typename T0 , typename T1 , typename T2 , typename T3 >
constexpr auto tatooine::detail::eval_bilinear ( base_tensor< T0, Real, 2 > const &  v00,
base_tensor< T1, Real, 2 > const &  v10,
base_tensor< T2, Real, 2 > const &  v01,
base_tensor< T3, Real, 2 > const &  v11,
Real const  s,
Real const  t 
)
constexpr

◆ is_even()

auto constexpr tatooine::detail::is_even ( integral auto const  i)
constexpr

◆ pv_on_tri()

template<typename Real , invocable< Vec3< Real > >... Preds>
constexpr auto tatooine::detail::pv_on_tri ( Vec3< Real > const &  p0,
Vec3< Real > const &  v0,
Vec3< Real > const &  w0,
Vec3< Real > const &  p1,
Vec3< Real > const &  v1,
Vec3< Real > const &  w1,
Vec3< Real > const &  p2,
Vec3< Real > const &  v2,
Vec3< Real > const &  w2,
Preds &&...  preds 
) -> std::optional<Vec3<Real>>
constexpr
Returns
Position where vf and wf are parallel otherwise nothing.

◆ sign()

template<signed_integral Int = int>
auto constexpr tatooine::detail::sign ( bool  pred) -> Int
constexpr

◆ solve_bilinear()

template<typename Real , typename T0 , typename T1 , typename T2 , typename T3 >
auto tatooine::detail::solve_bilinear ( base_tensor< T0, Real, 2 > const &  v00,
base_tensor< T1, Real, 2 > const &  v10,
base_tensor< T2, Real, 2 > const &  v01,
base_tensor< T3, Real, 2 > const &  v11 
)

◆ turned()

auto constexpr tatooine::detail::turned ( integral auto const ...  is) -> bool
constexpr

◆ write_unstructured_triangular_grid_container_to_vtk()

template<typename MeshCont >
auto tatooine::detail::write_unstructured_triangular_grid_container_to_vtk ( MeshCont const &  grids,
std::filesystem::path const &  path,
std::string const &  title = "tatooine grids" 
)

◆ write_unstructured_triangular_grid_container_to_vtp()

auto tatooine::detail::write_unstructured_triangular_grid_container_to_vtp ( range auto const &  grids,
std::filesystem::path const &  path 
)