"""Support descriptors for supported panel element geometries."""
from __future__ import annotations
from dataclasses import dataclass
[docs]
@dataclass(frozen=True, slots=True)
class SupportDescriptor:
"""
Describe one supported geometric support topology.
Instances of this dataclass identify the shape and dimensionality of the
geometric support on which a singularity family is defined.
Kernel lookup and formulation assembly use these descriptors to match
families with compatible geometric backends.
"""
name: str
"""Registry name used to identify this support in kernel lookups."""
topological_dimension: int
"""Intrinsic dimension of the support manifold."""
embedding_dimension: int
"""Dimension of the ambient Euclidean space containing the support."""
POINT_2D = SupportDescriptor("point2d", 0, 2)
"""Descriptor for a point support embedded in two-dimensional space."""
LINE_2D = SupportDescriptor("line2d", 1, 2)
"""Descriptor for a line support embedded in two-dimensional space."""
TRIANGLE_3D = SupportDescriptor("triangle3d", 2, 3)
"""Descriptor for a triangular surface support in three-dimensional space."""
QUAD_3D = SupportDescriptor("quad3d", 2, 3)
"""Descriptor for a quadrilateral surface support in three-dimensional space."""