Geometry and Fields API

Geometry surfaces for stiffness embedding.

SurfacePoint dataclass

Differential geometry data at a parametric surface point.

curvature instance-attribute

frame instance-attribute

jacobian instance-attribute

metadata = field(default_factory=dict) class-attribute instance-attribute

metric instance-attribute

min_radius instance-attribute

position instance-attribute

principal_curvatures instance-attribute

tangent_u instance-attribute

tangent_v instance-attribute

u instance-attribute

v instance-attribute

__init__(u, v, position, tangent_u, tangent_v, metric, curvature, frame, jacobian, principal_curvatures, min_radius, metadata=dict())

__post_init__()

Surface

Bases: Protocol

Protocol for parametric shell midsurfaces.

point_at(u, v)

Return differential geometry data at parametric coordinates (u, v).

FlatPlate dataclass

Flat plate parameterized by Cartesian coordinates (u, v).

e1 = field(default_factory=(lambda: np.array([1.0, 0.0, 0.0]))) class-attribute instance-attribute

e2 = field(default_factory=(lambda: np.array([0.0, 1.0, 0.0]))) class-attribute instance-attribute

label = 'flat_plate' class-attribute instance-attribute

origin = field(default_factory=(lambda: np.array([0.0, 0.0, 0.0]))) class-attribute instance-attribute

__init__(origin=(lambda: np.array([0.0, 0.0, 0.0]))(), e1=(lambda: np.array([1.0, 0.0, 0.0]))(), e2=(lambda: np.array([0.0, 1.0, 0.0]))(), label='flat_plate')

__post_init__()

point_at(u, v)

Cylinder dataclass

Circular cylinder parameterized by axial coordinate and angle (x, theta).

The local frame has e1 in the axial direction, e2 in the circumferential direction, and n outward.

label = 'cylinder' class-attribute instance-attribute

length = None class-attribute instance-attribute

radius instance-attribute

__init__(radius, length=None, label='cylinder')

__post_init__()

point_at(u, v)

Sphere dataclass

Spherical surface parameterized by polar angle and azimuth (phi, theta).

The single chart excludes both poles. Use SphericalCap when a partial spherical domain is a better model for the physical shell.

label = 'sphere' class-attribute instance-attribute

radius instance-attribute

__init__(radius, label='sphere')

__post_init__()

point_at(u, v)

SphericalCap dataclass

Spherical surface parameterized by polar angle and azimuth (phi, theta).

The pole and cap boundary are singular for the current coordinate chart and are rejected by point_at.

half_angle_rad = np.pi class-attribute instance-attribute

label = 'spherical_cap' class-attribute instance-attribute

radius instance-attribute

__init__(radius, half_angle_rad=np.pi, label='spherical_cap')

__post_init__()

point_at(u, v)

ConicalFrustum dataclass

Circular conical frustum parameterized by axial coordinate and angle.

Coordinates are (x, theta). The local frame uses e1 along increasing axial station/generator direction, e2 opposite the positive theta tangent, and n outward. The apex is not part of the supported smooth midsurface domain.

label = 'conical_frustum' class-attribute instance-attribute

length instance-attribute

radius_end instance-attribute

radius_start instance-attribute

slope property

Return dr/dx for the linear radius stiffness.

__init__(radius_start, radius_end, length, label='conical_frustum')

__post_init__()

point_at(u, v)

radius_at(u)

Return the local radius at axial coordinate u.

Ellipsoid dataclass

Triaxial ellipsoid parameterized by polar angle and azimuth (phi, theta).

a instance-attribute

b instance-attribute

c instance-attribute

label = 'ellipsoid' class-attribute instance-attribute

__init__(a, b, c, label='ellipsoid')

__post_init__()

point_at(u, v)

Stiffness fields and atlases.

StiffnessField

Bases: Protocol

Protocol for objects that provide an ABD stiffness over a surface.

stiffness_at(surface, u, v)

Return the ABD stiffness at parametric coordinates (u, v).

ConstantStiffnessField dataclass

Uniform ABD stiffness bound pointwise to a surface frame.

stiffness instance-attribute

__init__(stiffness)

stiffness_at(surface, u, v)

HomogenizedStiffnessField dataclass

Stiffness field that builds and homogenizes a local cell at each surface point.

cache = None class-attribute instance-attribute

cell_factory instance-attribute

homogenizer instance-attribute

surface instance-attribute

validity_context_factory = None class-attribute instance-attribute

__init__(surface, cell_factory, homogenizer, cache=None, validity_context_factory=None)

stiffness_at(surface, u, v)

StiffnessCache dataclass

Mutable pointwise stiffness cache keyed by rounded parametric coordinates.

precision = 12 class-attribute instance-attribute

size property

__init__(precision=12, _items=dict())

__post_init__()

clear()

get(u, v)

key(u, v)

set(u, v, stiffness)

ABDAtlas dataclass

Rectangular bilinear atlas of sampled linear ABD stiffnesses.

metadata = field(default_factory=dict) class-attribute instance-attribute

stiffnesses instance-attribute

surface instance-attribute

u_values instance-attribute

v_values instance-attribute

__init__(surface, u_values, v_values, stiffnesses, metadata=dict())

__post_init__()

from_field(surface, field, *, u_values, v_values, metadata=None) classmethod

stiffness_at(surface, u, v)