CDT++ 1.0.0-rc3
Causal Dynamical Triangulations in C++
Loading...
Searching...
No Matches
cdt::manifolds::Manifold< 3 > Class Reference

3D Manifold More...

#include <Manifold.hpp>

Inheritance diagram for cdt::manifolds::Manifold< 3 >:
Collaboration diagram for cdt::manifolds::Manifold< 3 >:

Public Member Functions

 Manifold ()=default
 Default ctor.
 Manifold (Causal_vertices_t< 3 > const &causal_vertices, double const t_initial_radius=INITIAL_RADIUS, double const t_foliation_spacing=FOLIATION_SPACING)
 Construct manifold from Causal_vertices.
 Manifold (Int_precision const t_desired_simplices, Int_precision const t_desired_timeslices, cdt::Random &&generator, double const t_initial_radius=INITIAL_RADIUS, double const t_foliation_spacing=FOLIATION_SPACING)
 Construct from an explicit temporary initialization stream.
 Manifold (Int_precision const t_desired_simplices, Int_precision const t_desired_timeslices, cdt::Random &generator, double const t_initial_radius=INITIAL_RADIUS, double const t_foliation_spacing=FOLIATION_SPACING)
 Construct a manifold with a caller-owned initialization stream.
 Manifold (Manifold &&other) noexcept=default
 Default move ctor.
 Manifold (Manifold const &other)=default
 Default copy ctor.
 Manifold (Triangulation t_foliated_triangulation)
 Construct manifold from a Foliated triangulation.
 ~Manifold ()=default
 Default dtor.
auto check_simplices () const -> bool
auto check_vertices () const -> bool
auto delaunay_snapshot () const -> Delaunay_t< 3 >
auto dimensionality () const
auto edges () const
auto faces () const
auto foliation_spacing () const
auto geometry () const -> Geometry const &
auto initial_radius () const
auto is_correct () const -> bool
auto is_correct_with_diagnostics () const -> bool
auto is_delaunay () const -> bool
 Forwarding to FoliatedTriangulation.is_delaunay().
auto is_foliated () const -> bool
 Forwarding to FoliatedTriangulation_3.is_foliated().
auto is_structurally_correct () const -> bool
auto is_valid () const -> bool
 Forwarding to FoliatedTriangulation.is_tds_valid().
auto max_time () const
auto min_time () const
auto N0 () const
auto N1 () const
auto N1_SL () const
auto N1_TL () const
auto N2 () const
auto N3 () const
auto N3_13 () const
auto N3_22 () const
auto N3_31 () const
auto N3_31_13 () const
auto operator= (Manifold &&other) noexcept -> Manifold &
 Default move assignment.
auto operator= (Manifold const &other) -> Manifold &=default
 Default copy assignment.
void print () const
 Print manifold.
void print_cells () const
 Print timevalues of each vertex in the cell and the resulting cell->info().
void print_details () const
 Print details of the manifold.
void print_vertices () const
 Print values of a vertex->info().
void print_volume_per_timeslice () const
 Print the codimension 1 volume of simplices (faces) per timeslice.
auto simplices () const
auto spacelike_face_count (Int_precision const timevalue) const noexcept -> std::size_t
auto updated () const -> Manifold
 Return a manifold rebuilt from the current canonical topology.
auto vertices () const

Static Public Attributes

static constexpr int dimension = 3
 Dimensionality of the manifold.
static constexpr Topology topology = Topology::SPHERICAL
 Topology of the manifold.

Friends

void swap (Manifold &swap_from, Manifold &swap_into) noexcept
 Non-member swap function for Manifolds.

Detailed Description

3D Manifold

Definition at line 44 of file Manifold.hpp.

Constructor & Destructor Documentation

◆ Manifold() [1/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Manifold< 3 > const & other)
default

Default copy ctor.

Parameters
otherManifold to copy.

References Manifold().

◆ Manifold() [2/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Manifold< 3 > && other)
defaultnoexcept

Default move ctor.

Parameters
otherManifold whose state is transferred.

References Manifold().

◆ Manifold() [3/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Triangulation t_foliated_triangulation)
inlineexplicit

Construct manifold from a Foliated triangulation.

Parameters
t_foliated_triangulationTriangulation used to construct manifold

Definition at line 112 of file Manifold.hpp.

◆ Manifold() [4/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Int_precision const t_desired_simplices,
Int_precision const t_desired_timeslices,
cdt::Random & generator,
double const t_initial_radius = INITIAL_RADIUS,
double const t_foliation_spacing = FOLIATION_SPACING )
inline

Construct a manifold with a caller-owned initialization stream.

Parameters
t_desired_simplicesDesired number of simplices
t_desired_timeslicesDesired number of timeslices
generatorCaller-owned initialization stream whose state is advanced during construction
t_initial_radiusRadius of the first timeslice
t_foliation_spacingRadial separation between timeslices
Exceptions
std::invalid_argumentif the counts or geometry are invalid, the generated points are not unique, or construction produces no vertices.
std::out_of_rangeif a layer population cannot be represented.
Note
The caller-owned generator may have advanced if construction fails after sampling begins.

Definition at line 129 of file Manifold.hpp.

References Manifold(), cdt::FOLIATION_SPACING, and cdt::INITIAL_RADIUS.

◆ Manifold() [5/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Int_precision const t_desired_simplices,
Int_precision const t_desired_timeslices,
cdt::Random && generator,
double const t_initial_radius = INITIAL_RADIUS,
double const t_foliation_spacing = FOLIATION_SPACING )
inline

Construct from an explicit temporary initialization stream.

Parameters
t_desired_simplicesDesired number of simplices
t_desired_timeslicesDesired number of timeslices
generatorTemporary initialization stream whose state is consumed during construction
t_initial_radiusRadius of the first timeslice
t_foliation_spacingRadial separation between timeslices
Exceptions
std::invalid_argumentif the counts or geometry are invalid, the generated points are not unique, or construction produces no vertices.
std::out_of_rangeif a layer population cannot be represented.

Definition at line 149 of file Manifold.hpp.

References Manifold(), cdt::FOLIATION_SPACING, and cdt::INITIAL_RADIUS.

◆ Manifold() [6/6]

cdt::manifolds::Manifold< 3 >::Manifold ( Causal_vertices_t< 3 > const & causal_vertices,
double const t_initial_radius = INITIAL_RADIUS,
double const t_foliation_spacing = FOLIATION_SPACING )
inlineexplicit

Construct manifold from Causal_vertices.

Parameters
causal_verticesCausal_vertices to place into the Manifold
t_initial_radiusRadius of first timeslice
t_foliation_spacingRadial separation between timeslices
Precondition
t_initial_radius and t_foliation_spacing are finite and positive.
Exceptions
std::invalid_argumentif causal_vertices is empty or contains duplicate geometric points.

Definition at line 165 of file Manifold.hpp.

References Manifold(), cdt::FOLIATION_SPACING, and cdt::INITIAL_RADIUS.

Member Function Documentation

◆ check_simplices()

auto cdt::manifolds::Manifold< 3 >::check_simplices ( ) const -> bool
inlinenodiscard
Returns
True if all cells in triangulation are classified and match number in geometry

Definition at line 316 of file Manifold.hpp.

References N3(), and simplices().

◆ check_vertices()

auto cdt::manifolds::Manifold< 3 >::check_vertices ( ) const -> bool
inlinenodiscard
Returns
True if every vertex carries the expected timevalue

Definition at line 323 of file Manifold.hpp.

◆ delaunay_snapshot()

auto cdt::manifolds::Manifold< 3 >::delaunay_snapshot ( ) const -> Delaunay_t< 3 >
inlinenodiscard
Returns
An owning snapshot of the canonical Delaunay triangulation

Handles obtained from the snapshot cannot mutate this manifold or invalidate its derived geometry and topology caches.

Definition at line 196 of file Manifold.hpp.

◆ dimensionality()

auto cdt::manifolds::Manifold< 3 >::dimensionality ( ) const
inlinenodiscard
Returns
Run-time dimensionality of the triangulation data structure

Definition at line 232 of file Manifold.hpp.

◆ edges()

auto cdt::manifolds::Manifold< 3 >::edges ( ) const
inlinenodiscard
Returns
Number of 1D edges in triangulation data structure

Definition at line 291 of file Manifold.hpp.

◆ faces()

auto cdt::manifolds::Manifold< 3 >::faces ( ) const
inlinenodiscard
Returns
Number of 2D faces in triangulation data structure

Definition at line 275 of file Manifold.hpp.

◆ foliation_spacing()

auto cdt::manifolds::Manifold< 3 >::foliation_spacing ( ) const
inlinenodiscard
Returns
Radial separation between timeslices.

Definition at line 240 of file Manifold.hpp.

◆ geometry()

auto cdt::manifolds::Manifold< 3 >::geometry ( ) const -> Geometry const &
inlinenodiscard
Returns
A read-only reference to the Geometry

Definition at line 200 of file Manifold.hpp.

◆ initial_radius()

auto cdt::manifolds::Manifold< 3 >::initial_radius ( ) const
inlinenodiscard
Returns
Initial radius of the first timeslice.

Definition at line 236 of file Manifold.hpp.

◆ is_correct()

auto cdt::manifolds::Manifold< 3 >::is_correct ( ) const -> bool
inlinenodiscard
Returns
Whether essential base-data invariants hold

Definition at line 223 of file Manifold.hpp.

References is_structurally_correct().

◆ is_correct_with_diagnostics()

auto cdt::manifolds::Manifold< 3 >::is_correct_with_diagnostics ( ) const -> bool
inlinenodiscard
Returns
Whether all invariants and derived caches are consistent

This opt-in diagnostic performs cache-rebuilding scans.

Definition at line 228 of file Manifold.hpp.

◆ is_delaunay()

auto cdt::manifolds::Manifold< 3 >::is_delaunay ( ) const -> bool
inlinenodiscard

Forwarding to FoliatedTriangulation.is_delaunay().

Returns
True if the Manifold triangulation is Delaunay

Definition at line 210 of file Manifold.hpp.

◆ is_foliated()

auto cdt::manifolds::Manifold< 3 >::is_foliated ( ) const -> bool
inlinenodiscard

Forwarding to FoliatedTriangulation_3.is_foliated().

Returns
True if the Manifold triangulation is foliated

Definition at line 205 of file Manifold.hpp.

◆ is_structurally_correct()

auto cdt::manifolds::Manifold< 3 >::is_structurally_correct ( ) const -> bool
inlinenodiscard
Returns
Whether essential structural and causal invariants hold

Definition at line 219 of file Manifold.hpp.

Referenced by is_correct().

◆ is_valid()

auto cdt::manifolds::Manifold< 3 >::is_valid ( ) const -> bool
inlinenodiscard

Forwarding to FoliatedTriangulation.is_tds_valid().

Returns
True if the TriangulationDataStructure is valid

Definition at line 215 of file Manifold.hpp.

◆ max_time()

auto cdt::manifolds::Manifold< 3 >::max_time ( ) const
inlinenodiscard
Returns
Maximum timeslice value in triangulation data structure

Definition at line 311 of file Manifold.hpp.

◆ min_time()

auto cdt::manifolds::Manifold< 3 >::min_time ( ) const
inlinenodiscard
Returns
Minimum timeslice value in triangulation data structure

Definition at line 307 of file Manifold.hpp.

◆ N0()

auto cdt::manifolds::Manifold< 3 >::N0 ( ) const
inlinenodiscard
Returns
Number of vertices in geometry data structure

Definition at line 298 of file Manifold.hpp.

Referenced by print().

◆ N1()

auto cdt::manifolds::Manifold< 3 >::N1 ( ) const
inlinenodiscard
Returns
Number of 1D edges in geometry data structure

Definition at line 282 of file Manifold.hpp.

Referenced by print().

◆ N1_SL()

auto cdt::manifolds::Manifold< 3 >::N1_SL ( ) const
inlinenodiscard
Returns
Number of spacelike edges in triangulation data structure

Definition at line 285 of file Manifold.hpp.

Referenced by print_details().

◆ N1_TL()

auto cdt::manifolds::Manifold< 3 >::N1_TL ( ) const
inlinenodiscard
Returns
Number of timelike edges in triangulation data structure

Definition at line 288 of file Manifold.hpp.

Referenced by print_details().

◆ N2()

auto cdt::manifolds::Manifold< 3 >::N2 ( ) const
inlinenodiscard
Returns
Number of 2D faces in geometry data structure

Definition at line 266 of file Manifold.hpp.

Referenced by print().

◆ N3()

auto cdt::manifolds::Manifold< 3 >::N3 ( ) const
inlinenodiscard
Returns
Number of 3D simplices in geometry data structure

Definition at line 244 of file Manifold.hpp.

Referenced by check_simplices(), and print().

◆ N3_13()

auto cdt::manifolds::Manifold< 3 >::N3_13 ( ) const
inlinenodiscard
Returns
Number of (1,3) simplices in geometry data structure

Definition at line 253 of file Manifold.hpp.

Referenced by print_details().

◆ N3_22()

auto cdt::manifolds::Manifold< 3 >::N3_22 ( ) const
inlinenodiscard
Returns
Number of (2,2) simplices in geometry data structure

Definition at line 250 of file Manifold.hpp.

Referenced by print_details().

◆ N3_31()

auto cdt::manifolds::Manifold< 3 >::N3_31 ( ) const
inlinenodiscard
Returns
Number of (3,1) simplices in geometry data structure

Definition at line 247 of file Manifold.hpp.

Referenced by print_details().

◆ N3_31_13()

auto cdt::manifolds::Manifold< 3 >::N3_31_13 ( ) const
inlinenodiscard
Returns
Number of (3,1) and (1,3) simplices in geometry data structure

Definition at line 256 of file Manifold.hpp.

◆ operator=() [1/2]

auto cdt::manifolds::Manifold< 3 >::operator= ( Manifold< 3 > && other) -> Manifold &
inlinenoexcept

Default move assignment.

Parameters
otherManifold whose state is transferred.
Returns
This manifold after replacement.

Definition at line 93 of file Manifold.hpp.

References Manifold(), and swap.

◆ operator=() [2/2]

auto cdt::manifolds::Manifold< 3 >::operator= ( Manifold< 3 > const & other) -> Manifold &=default
default

Default copy assignment.

Parameters
otherManifold to copy.
Returns
This manifold after replacement.

References Manifold().

◆ print()

void cdt::manifolds::Manifold< 3 >::print ( ) const
inline

Print manifold.

Definition at line 340 of file Manifold.hpp.

References N0(), N1(), N2(), and N3().

Referenced by main().

◆ print_cells()

void cdt::manifolds::Manifold< 3 >::print_cells ( ) const
inline

Print timevalues of each vertex in the cell and the resulting cell->info().

Definition at line 337 of file Manifold.hpp.

◆ print_details()

void cdt::manifolds::Manifold< 3 >::print_details ( ) const
inline

Print details of the manifold.

Definition at line 355 of file Manifold.hpp.

References N1_SL(), N1_TL(), N3_13(), N3_22(), and N3_31().

Referenced by main().

◆ print_vertices()

void cdt::manifolds::Manifold< 3 >::print_vertices ( ) const
inline

Print values of a vertex->info().

Definition at line 333 of file Manifold.hpp.

◆ print_volume_per_timeslice()

void cdt::manifolds::Manifold< 3 >::print_volume_per_timeslice ( ) const
inline

Print the codimension 1 volume of simplices (faces) per timeslice.

Definition at line 327 of file Manifold.hpp.

Referenced by main().

◆ simplices()

auto cdt::manifolds::Manifold< 3 >::simplices ( ) const
inlinenodiscard
Returns
Number of 3D simplices in triangulation data structure

Definition at line 259 of file Manifold.hpp.

Referenced by check_simplices().

◆ spacelike_face_count()

auto cdt::manifolds::Manifold< 3 >::spacelike_face_count ( Int_precision const timevalue) const -> std::size_t
inlinenodiscardnoexcept
Parameters
timevalueTimeslice whose faces are counted.
Returns
Number of spacelike faces on the requested timeslice.

Definition at line 270 of file Manifold.hpp.

◆ updated()

auto cdt::manifolds::Manifold< 3 >::updated ( ) const -> Manifold
inlinenodiscard

Return a manifold rebuilt from the current canonical topology.

The source remains unchanged. The returned triangulation caches and geometry are constructed together, so failure cannot publish a partially updated state.

Returns
A rebuilt manifold with mutually consistent topology and geometry caches.

Definition at line 180 of file Manifold.hpp.

References Manifold(), and CDT_PRETTY_FUNCTION.

◆ vertices()

auto cdt::manifolds::Manifold< 3 >::vertices ( ) const
inlinenodiscard
Returns
Number of vertices in triangulation data structure

Definition at line 301 of file Manifold.hpp.

◆ swap

void swap ( Manifold< 3 > & swap_from,
Manifold< 3 > & swap_into )
friend

Non-member swap function for Manifolds.

Used for noexcept updates of manifolds after moves.

Parameters
swap_fromThe value to be swapped from. Assumed to be discarded.
swap_intoThe value to be swapped into.

Definition at line 103 of file Manifold.hpp.

References Manifold(), and swap.

Referenced by operator=(), and swap.

Member Data Documentation

◆ dimension

int cdt::manifolds::Manifold< 3 >::dimension = 3
staticconstexpr

Dimensionality of the manifold.

Used to determine the manifold dimension at compile-time

Definition at line 66 of file Manifold.hpp.

◆ topology

Topology cdt::manifolds::Manifold< 3 >::topology = Topology::SPHERICAL
staticconstexpr

Topology of the manifold.

Definition at line 69 of file Manifold.hpp.


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