|
CDT++ 1.0.0
Causal Dynamical Triangulations in C++
|
Create foliated spherical triangulations. More...
#include <CGAL/Bbox_3.h>#include <CGAL/Random.h>#include <algorithm>#include <array>#include <cassert>#include <cmath>#include <concepts>#include <functional>#include <iterator>#include <limits>#include <map>#include <memory>#include <numeric>#include <optional>#include <ranges>#include <set>#include <span>#include <stdexcept>#include <type_traits>#include <unordered_set>#include <utility>#include <vector>#include "Random.hpp"#include "Triangulation_traits.hpp"#include "Utilities.hpp"Go to the source code of this file.
Classes | |
| class | cdt::foliated_triangulations::FoliatedTriangulation< 3 > |
| 3D Foliated triangulation More... | |
Namespaces | |
| namespace | cdt |
| clang-15 does not support std::format | |
| namespace | cdt::foliated_triangulations |
| Supported construction, inspection, classification, and repair operations for foliated Delaunay triangulations. | |
Concepts | |
| concept | cdt::ConstForwardRange |
| A multi-pass range whose const-qualified value can be traversed by classification and materialization helpers. | |
Typedefs | |
| template<int dimension> | |
| using | cdt::Causal_vertices_t |
| Point/time-label pairs used to build a causal triangulation. | |
| template<int dimension> | |
| using | cdt::Cell_handle_t |
| Mutable CGAL cell handle for a triangulation dimension. | |
| template<int dimension> | |
| using | cdt::Delaunay_t = typename detail::TriangulationTraits<dimension>::Delaunay |
| Delaunay triangulation type for dimension spatial dimensions. | |
| template<int dimension> | |
| using | cdt::Edge_handle_t |
| CGAL edge descriptor for a triangulation dimension. | |
| template<int dimension> | |
| using | cdt::Facet_t = typename detail::TriangulationTraits<dimension>::Facet |
| CGAL facet descriptor for a triangulation dimension. | |
| using | cdt::foliated_triangulations::FoliatedTriangulation_3 = FoliatedTriangulation<3> |
| Three-dimensional foliated Delaunay triangulation. | |
| template<int dimension> | |
| using | cdt::Point_t = typename detail::TriangulationTraits<dimension>::Point |
| Cartesian point type used by a triangulation dimension. | |
| template<int dimension> | |
| using | cdt::Spherical_points_generator_t |
| CGAL random point generator on a sphere of matching dimension. | |
| template<int dimension> | |
| using | cdt::Vertex_handle_t |
| Mutable CGAL vertex handle for a triangulation dimension. | |
Enumerations | |
| enum class | cdt::CellType { cdt::THREE_ONE = 31 , cdt::TWO_TWO = 22 , cdt::ONE_THREE = 13 , cdt::ACAUSAL = 99 , cdt::UNCLASSIFIED = 0 } |
| (n,m) is number of vertices on (lower, higher) timeslice More... | |
| enum class | cdt::EdgeType { cdt::SPACELIKE , cdt::TIMELIKE } |
| Causal classification of an edge by its endpoint timeslices. More... | |
Functions | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::check_cells (Delaunay_t< dimension > const &t_triangulation) -> bool |
| Check all finite cells in the Delaunay triangulation. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::check_vertices (Delaunay_t< dimension > const &t_triangulation, double t_initial_radius, double t_foliation_spacing) |
| Check if vertices have the correct timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::classify_edge (Edge_handle_t< dimension > const &t_edge) -> EdgeType |
| Predicate to classify edge as timelike or spacelike. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::collect_cells (Delaunay_t< dimension > const &t_triangulation) -> std::vector< Cell_handle_t< dimension > > |
| Obtain all finite cells in the Delaunay triangulation. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::collect_edges (Delaunay_t< dimension > const &delaunay) |
| Returns a container of all the finite edges in the triangulation. | |
| template<int dimension, detail::ConstForwardRange Container> | |
| auto | cdt::foliated_triangulations::collect_spacelike_facets (Container const &t_facets) -> std::vector< std::pair< Int_precision, Facet_t< dimension > > > |
| Collect spacelike facets into a contiguous container ordered by time value. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::collect_vertices (Delaunay_t< dimension > const &t_triangulation) |
| Obtain all finite vertices in the Delaunay triangulation. | |
| template<int dimension, detail::ConstForwardRange Container> | |
| void | cdt::foliated_triangulations::debug_print_cells (Container const &t_cells) |
| Write to debug log timevalues of each vertex in the cell and the resulting cell->info. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::expected_cell_type (Cell_handle_t< dimension > const &t_cell) |
| Classifies cells by their timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::expected_timevalue (Vertex_handle_t< dimension > const &t_vertex, double t_initial_radius, double t_foliation_spacing) -> Int_precision |
| Find the expected timevalue for a vertex. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::filter_cells (std::vector< Cell_handle_t< dimension > > const &t_cells, CellType const &t_cell_type) -> std::vector< Cell_handle_t< dimension > > |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::filter_edges (std::vector< Edge_handle_t< dimension > > const &t_edges, EdgeType const edge_type) -> std::vector< Edge_handle_t< dimension > > |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_bad_vertex (Cell_handle_t< dimension > const &cell) -> Vertex_handle_t< dimension > |
| Find the vertex that is causing a cell's foliation to be invalid. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_cell (Delaunay_t< dimension > const &delaunay, Vertex_handle_t< dimension > const &vh1, Vertex_handle_t< dimension > const &vh2, Vertex_handle_t< dimension > const &vh3, Vertex_handle_t< dimension > const &vh4) -> std::optional< Cell_handle_t< dimension > > |
| Returns the cell containing the vertices. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_incorrect_cells (Delaunay_t< dimension > const &t_triangulation) |
| Check all finite cells in the Delaunay triangulation. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_incorrect_vertices (Delaunay_t< dimension > const &t_triangulation, double t_initial_radius, double t_foliation_spacing) |
| Obtain vertices with incorrect timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_incorrect_vertices (std::vector< Cell_handle_t< dimension > > const &t_cells, double t_initial_radius, double t_foliation_spacing) |
| Obtain vertices with incorrect timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_invalid_timevalue_cells (Delaunay_t< dimension > const &t_triangulation) -> std::vector< Cell_handle_t< dimension > > |
| Find cells whose vertex timevalues violate foliation. | |
| template<int dimension, detail::ConstForwardRange Container> | |
| auto | cdt::foliated_triangulations::find_max_timevalue (Container const &t_vertices) -> Int_precision |
| template<int dimension, detail::ConstForwardRange Container> | |
| auto | cdt::foliated_triangulations::find_min_timevalue (Container const &t_vertices) -> Int_precision |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::find_vertex (Delaunay_t< dimension > const &delaunay, Point_t< dimension > const &point) -> std::optional< Vertex_handle_t< dimension > > |
| Find the vertex whose stored point equals the requested point. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::fix_cells (Delaunay_t< dimension > &t_triangulation) -> bool |
| Fix simplices with the wrong type. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::fix_timevalues (Delaunay_t< dimension > &t_triangulation) -> bool |
| Fix the vertices of a cell to be consistent with the foliation. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::fix_vertices (Delaunay_t< dimension > &t_triangulation, double const t_initial_radius, double const t_foliation_spacing) -> bool |
| Fix vertices with incorrect timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::fix_vertices (std::vector< Cell_handle_t< dimension > > const &t_cells, double t_initial_radius, double t_foliation_spacing) |
| Fix vertices with incorrect timevalues. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::get_vertices_from_cells (std::vector< Cell_handle_t< dimension > > const &t_cells) |
| Extracts vertices from cells. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::has_valid_timevalues (Delaunay_t< dimension > const &triangulation) -> bool |
| Check whether all cell timevalues form a valid foliation. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::is_cell_type_correct (Cell_handle_t< dimension > const &t_cell) -> bool |
| Checks if a cell is classified correctly. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::is_vertex_timevalue_correct (Vertex_handle_t< dimension > const &t_vertex, double const t_initial_radius, double const t_foliation_spacing) -> bool |
| Checks if vertex timevalue is correct. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::make_causal_vertices (std::span< Point_t< dimension > const > vertices, std::span< size_t const > timevalues) -> Causal_vertices_t< dimension > |
| Create causal vertices from vertices and timevalues. | |
| template<int dimension, std::uniform_random_bit_generator Generator> | |
| auto | cdt::foliated_triangulations::make_foliated_ball (Int_precision const t_simplices, Int_precision const t_timeslices, double const initial_radius, double const foliation_spacing, Generator &generator) |
| Make foliated ball. | |
| template<int dimension, std::uniform_random_bit_generator Generator> | |
| auto | cdt::foliated_triangulations::make_triangulation (Int_precision const t_simplices, Int_precision t_timeslices, double const initial_radius, double const foliation_spacing, Generator &generator) -> Delaunay_t< dimension > |
| Make a Delaunay triangulation. | |
| template<int dimension> | |
| void | cdt::foliated_triangulations::print_cell (Cell_handle_t< dimension > cell) |
| Print a cell in the triangulation. | |
| template<int dimension, detail::ConstForwardRange Container> | |
| void | cdt::foliated_triangulations::print_cells (Container const &t_cells) |
| Print timevalues of each vertex in the cell and the resulting cell->info(). | |
| template<int dimension> | |
| void | cdt::foliated_triangulations::print_edge (Edge_handle_t< dimension > const &t_edge) |
| Print edge. | |
| template<int dimension> | |
| void | cdt::foliated_triangulations::print_neighboring_cells (Cell_handle_t< dimension > cell) |
| Print neighboring cells. | |
| template<int dimension> | |
| auto | cdt::foliated_triangulations::squared_radius (Vertex_handle_t< dimension > const &t_vertex) -> double |
| Calculate the squared radius from the origin. | |
| template<int dimension, detail::ConstForwardRange Container> | |
| auto | cdt::foliated_triangulations::volume_per_timeslice (Container const &t_facets) -> std::multimap< Int_precision, Facet_t< dimension > > |
| Collect spacelike facets into a container indexed by time value. | |
Variables | |
| template<int dimension> | |
| constexpr auto | cdt::foliated_triangulations::compare_v_info |
| constexpr int | cdt::detail::MAX_FIX_PASSES = 50 |
Create foliated spherical triangulations.
Extends CGAL's Delaunay_triangulation_3 and Triangulation_3 classes to create foliated spherical triangulations of a given dimension.
The dimensionality, number of desired simplices, and number of desired timeslices is given. Successive spheres are created with increasing radii, parameterized by INITIAL_RADIUS and RADIAL_FACTOR. Each vertex at a given radius is assigned a timeslice so that the entire triangulation will have a defined foliation of time.
Definition in file Foliated_triangulation.hpp.
|
inlineconstexpr |
Definition at line 116 of file Foliated_triangulation.hpp.