Rodin::Geometry::Point class final

Concrete implementation of a spatial point on a mesh.

This class provides a complete implementation of PointBase with storage for reference coordinates. Points can be constructed with various combinations of reference and physical coordinates.

Usage Examples

// Create a point at the centroid of a cell in reference coordinates
Math::SpatialPoint rc(3);
rc << 0.25, 0.25, 0.25;  // Barycentric coords for tetrahedron
Point p(cell, rc);

// Access physical coordinates
std::cout << "x = " << p.x() << ", y = " << p.y() << ", z = " << p.z() << std::endl;

// Compute Jacobian information
const auto& J = p.getJacobian();
Real detJ = p.getJacobianDeterminant();

Thread Safety

Not thread-safe. Each thread should use separate Point instances.

Base classes

class PointBase
Base class for spatial points on a discrete mesh.

Public types

using Parent = PointBase
Parent class type.

Constructors, destructors, conversion operators

Point(const Polytope& polytope, const Math::SpatialPoint& rc) explicit
Constructs a point with reference coordinates.
Point(const Polytope& polytope, const Math::SpatialPoint& rc, const Math::SpatialPoint& pc) explicit
Constructs with both reference and physical coordinates.
Point(const Math::SpatialMatrix<Real>& jacobian, const Polytope& polytope, const Math::SpatialPoint& rc)
Constructs a reference point with a precomputed geometric Jacobian.
Point(const Math::SpatialMatrix<Real>& jacobian, const Polytope& polytope, const QF::QuadratureFormulaBase& qf, size_t qp)
Constructs an owned reference sample with lazy physical coordinates.
Point(const Point& other)
Copy constructor.
Point(Point&& other)
Move constructor.

Public functions

auto getReferenceCoordinates() const -> const Math::SpatialPoint& override
Gets the reference coordinates.

Function documentation

Rodin::Geometry::Point::Point(const Polytope& polytope, const Math::SpatialPoint& rc) explicit

Constructs a point with reference coordinates.

Parameters
polytope in Polytope containing the point
rc in Reference coordinates

Rodin::Geometry::Point::Point(const Polytope& polytope, const Math::SpatialPoint& rc, const Math::SpatialPoint& pc) explicit

Constructs with both reference and physical coordinates.

Parameters
polytope in Polytope containing the point
rc in Reference coordinates
pc in Physical coordinates

Rodin::Geometry::Point::Point(const Math::SpatialMatrix<Real>& jacobian, const Polytope& polytope, const Math::SpatialPoint& rc)

Constructs a reference point with a precomputed geometric Jacobian.

Parameters
jacobian in Jacobian of the polytope transformation at rc.
polytope in Polytope containing the point.
rc in Reference coordinates at which the Jacobian was evaluated.

No reference to a formula or reference tabulation is retained. Copies and moves preserve the owned geometric data independently of the quadrature object that constructed the point. The distinct Jacobian-first signature preserves existing construction from Eigen coordinate expressions without conversion ambiguity.

Rodin::Geometry::Point::Point(const Math::SpatialMatrix<Real>& jacobian, const Polytope& polytope, const QF::QuadratureFormulaBase& qf, size_t qp)

Constructs an owned reference sample with lazy physical coordinates.

Parameters
jacobian Geometric Jacobian at sample qp.
polytope Polytope containing the mapped sample.
qf Formula supplying the reference coordinates.
qp Sample index in the formula.

Reference coordinates are copied from the formula, so their logical provenance is established by construction. A retained point remains valid after formula destruction or reference-table eviction.

Rodin::Geometry::Point::Point(const Point& other)

Copy constructor.

Parameters
other Object to copy from.

Rodin::Geometry::Point::Point(Point&& other)

Move constructor.

Parameters
other Object to move from.

const Math::SpatialPoint& Rodin::Geometry::Point::getReferenceCoordinates() const override

Gets the reference coordinates.

Returns Reference coordinate vector