buffalo_wings.airfoil.CstAirfoil
- class buffalo_wings.airfoil.CstAirfoil(*, upper, lower, trailing_edge_thickness=0.0)[source]
Bases:
CstGeometryCanonical CST airfoil with fixed airfoil class exponents.
Notes
This runtime represents the airfoil-specific CST case with
n1 = 0.5andn2 = 1.0on both sides. UnlikeCstGeometry, the curve parameterization uses the canonical side parameterx = s**2with full-airfoil curve parameters = |u|. This keeps canonical curve-parameter derivatives finite at the leading edge while preserving the same geometric shape as the corresponding general CST geometry under the mapped parametertau = sign(u) * u**2.Methods
arc_length(u_s, u_e)Calculate the arc-length distance between two points on surface.
Return the breakpoint locations in arc-length coordinates.
breakpoint_parameter_limits(*, index)Return parameter limits for one breakpoint.
Return the boundary and leading-edge breakpoints.
camber_curve(*[, num_points, spacing])Return a camber-curve representation for this airfoil.
chord()Return the airfoil chord length.
curvature_from_xi(xi, *, surface)Return one-surface curvature values at surface-local
xilocations.d2ydx2(u)Return the second surface derivative at curve parameter locations.
demote_degree(*[, count, continuity])Lower the Bezier shape degree on both CST sides.
dydx(u)Return the surface slope at curve parameter locations.
k(u)Calculate the curvature at parameter location.
Return the leading-edge location.
normal(u)Calculate the unit normal at parameter location.
promote_degree(*[, count])Raise the Bezier shape degree on both CST sides.
slope_from_xi(xi, *, surface)Return one-surface slope values at surface-local
xilocations.tangent(u)Calculate the unit tangent at parameter location.
to_spec()Return the schema definition needed to recreate this airfoil.
Return the midpoint of the trailing-edge points.
u_from_s(s)Return curve parameters that correspond to arc length.
u_from_x(x, *, surface)Return curve parameters that correspond to
x.u_from_xi(xi, *, surface)Convert surface-local
xicoordinates to native parameters.xi_from_u(u)Convert native parameters to surface-local
xicoordinates.xy_from_s(s)Return curve coordinates at arc-length locations.
xy_from_u(u)Calculate canonical CST airfoil coordinates.
xy_from_xi(xi, *, surface)Return one-surface coordinates at surface-local
xilocations.xy_s(s)Calculate first derivatives at arc-length location.
xy_s_breakpoint(*, index)Return one-sided arc-length derivatives at one breakpoint index.
xy_ss(s)Calculate second derivatives at arc-length location.
xy_ss_breakpoint(*, index)Return one-sided arc-length second derivatives at one breakpoint.
xy_u(u)Calculate first derivatives with respect to the canonical parameter.
xy_u_breakpoint(*, index)Return one-sided first derivatives at one breakpoint index.
xy_uu(u)Calculate second derivatives with respect to the canonical parameter.
xy_uu_breakpoint(*, index)Return one-sided second derivatives at one breakpoint index.
Attributes
Return the full airfoil surface length.
Return the lower-side canonical CST geometry.
Return the schema definition used to create this airfoil.
Return the explicit trailing-edge thickness.
Return the upper-side canonical CST geometry.
- property upper: CstAirfoilSide
Return the upper-side canonical CST geometry.
This property exposes the upper-side canonical CST definition.
- property lower: CstAirfoilSide
Return the lower-side canonical CST geometry.
This property exposes the lower-side canonical CST definition.
- property spec: CstAirfoilSpec
Return the schema definition used to create this airfoil.
The returned schema reproduces the current runtime coefficients and trailing-edge thickness.
- xy_from_u(u)[source]
Calculate canonical CST airfoil coordinates.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed airfoil parameter values in[-1, 1].- Returns:
Tuple
(x, y)offloat64arrays.- Return type:
tuple[FloatArray,FloatArray]
Notes
This uses
x = u**2on each surface branch rather than the general CST geometry parameterizationx = |u|.
- xy_u(u)[source]
Calculate first derivatives with respect to the canonical parameter.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed airfoil parameter values in[-1, 1].- Returns:
Tuple
(dx/du, dy/du)offloat64arrays.- Return type:
tuple[FloatArray,FloatArray]
Notes
At listed breakpoints, this method returns the minus-side derivative so array-valued evaluations remain single-valued.
- xy_uu(u)[source]
Calculate second derivatives with respect to the canonical parameter.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed airfoil parameter values in[-1, 1].- Returns:
Tuple
(d2x/du2, d2y/du2)offloat64arrays.- Return type:
tuple[FloatArray,FloatArray]
Notes
At listed breakpoints, this method returns the minus-side second derivative so array-valued evaluations remain single-valued.
- xy_u_breakpoint(*, index)[source]
Return one-sided first derivatives at one breakpoint index.
Notes
Endpoint breakpoints return the same exact boundary value for both entries. The interior leading-edge breakpoint returns finite canonical one-sided derivatives in the
x = s**2parameterization.- Return type:
tuple[tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)], tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]]
- xy_uu_breakpoint(*, index)[source]
Return one-sided second derivatives at one breakpoint index.
Notes
Endpoint breakpoints return the same exact boundary value for both entries. The interior leading-edge breakpoint returns finite canonical one-sided second derivatives in the
x = s**2parameterization.- Return type:
tuple[tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)], tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]]
- arc_length(u_s, u_e)
Calculate the arc-length distance between two points on surface.
- Parameters:
u_s (
buffalo_core.typing.FloatScalar) – Start point of distance calculation.u_e (
buffalo_core.typing.FloatInput) – End point of distance calculation.
- Returns:
Distance from start point to end point.
- Return type:
buffalo_core.typing.FloatArray
- arc_length_breakpoints()
Return the breakpoint locations in arc-length coordinates.
- Returns:
Arc-length coordinates measured from the minimum native parameter.
- Return type:
list[FloatScalar]
Notes
These values include the two curve endpoints as boundary markers. Interior breakpoints correspond to the native-parameter interior breakpoints returned by
breakpoints().
- breakpoint_parameter_limits(*, index)
Return parameter limits for one breakpoint.
Notes
Endpoint breakpoints return the exact boundary parameter. Interior breakpoints return nearby one-sided parameters chosen within the neighboring breakpoint interval for the current generic breakpoint-side implementation. These limits exist to support the sampled fallback in the generic
*_breakpointmethods and should not be treated as the primary source of truth when a subclass can provide exact one-sided values directly.- Return type:
tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]
- breakpoints()
Return the boundary and leading-edge breakpoints.
- Returns:
Ordered parameter locations where surface branches meet or derivative one-sided limits may differ.
- Return type:
list[float]
- camber_curve(*, num_points=81, spacing='cosine')
Return a camber-curve representation for this airfoil.
- Parameters:
num_points (
int, default81) – Number of shared surface samples to use when an approximate camber line must be derived from the airfoil geometry.spacing (
{"uniform", "cosine"}, default"cosine") – Spacing rule used for the shared surface-local sample locations in the approximate extraction path.
- Returns:
Exact or approximate camber-curve result for this airfoil.
- Return type:
- Raises:
ValueError – If
num_pointsorspacingis invalid for the approximate extraction path.
- chord()
Return the airfoil chord length.
- Returns:
Distance between the leading-edge reference and trailing-edge midpoint reference.
- Return type:
buffalo_core.typing.FloatScalar
- curvature_from_xi(xi, *, surface)
Return one-surface curvature values at surface-local
xilocations.- Parameters:
xi (
buffalo_core.typing.FloatInput) – Surface-local coordinates in[0, 1]measured from the leading edge to the trailing edge.surface (
{"lower", "upper"}) – Surface to evaluate.
- Returns:
Surface-oriented curvature values on the selected surface.
- Return type:
buffalo_core.typing.FloatArray
- d2ydx2(u)
Return the second surface derivative at curve parameter locations.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Airfoil parameters.- Returns:
Second derivative values
d^2y/dx^2evaluated atu.- Return type:
buffalo_core.typing.FloatArray
- demote_degree(*, count=1, continuity='NOT_CONNECTED')
Lower the Bezier shape degree on both CST sides.
- Parameters:
count (
int, default1) – Number of Bezier degree-reduction steps applied to each side shape curve.continuity (
{"NOT_CONNECTED", "C0", "C1", "C2"},) – default=”NOT_CONNECTED” Symmetric endpoint continuity preserved during each side demotion step.
- Returns:
Rebuilt CST airfoil with reduced-degree side shape curves.
- Return type:
Notes
This operation is intentionally approximate unless the side shape curves are exactly reducible to the requested lower degree.
- dydx(u)
Return the surface slope at curve parameter locations.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Airfoil parameters.- Returns:
Surface slope values
dy/dxevaluated atu.- Return type:
buffalo_core.typing.FloatArray
- k(u)
Calculate the curvature at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Curvature of surface matching the normalized shape of
u.- Return type:
buffalo_core.typing.FloatArray
- leading_edge()
Return the leading-edge location.
- Returns:
(x, y)location of the leading-edge reference point.- Return type:
tuple[FloatScalar,FloatScalar]
- property length: buffalo_core.typing.FloatScalar
Return the full airfoil surface length.
- Returns:
Total airfoil surface length measured from the lower trailing edge to the upper trailing edge.
- Return type:
buffalo_core.typing.FloatScalar
- normal(u)
Calculate the unit normal at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Tuple
(n_x, n_y)offloat64arrays matching the normalized shape ofu.- Return type:
tuple[FloatArray,FloatArray]
- promote_degree(*, count=1)
Raise the Bezier shape degree on both CST sides.
- Parameters:
count (
int, default1) – Number of Bezier degree-elevation steps applied to each side shape curve.- Returns:
Rebuilt CST airfoil with exact elevated side shape curves.
- Return type:
- slope_from_xi(xi, *, surface)
Return one-surface slope values at surface-local
xilocations.- Parameters:
xi (
buffalo_core.typing.FloatInput) – Surface-local coordinates in[0, 1]measured from the leading edge to the trailing edge.surface (
{"lower", "upper"}) – Surface to evaluate.
- Returns:
Surface slope values
dy/dxon the selected surface.- Return type:
buffalo_core.typing.FloatArray
- tangent(u)
Calculate the unit tangent at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Tuple
(t_x, t_y)offloat64arrays matching the normalized shape ofu.- Return type:
tuple[FloatArray,FloatArray]
- to_spec()
Return the schema definition needed to recreate this airfoil.
- Returns:
Serialized airfoil definition that can recreate this runtime object.
- Return type:
AirfoilDefinitionSpec
Notes
For runtime families covered by the current schema round-trip contract, this returns the same schema content as
spec.
- trailing_edge()
Return the midpoint of the trailing-edge points.
- Returns:
(x, y)location of the trailing-edge midpoint reference.- Return type:
tuple[FloatScalar,FloatScalar]
- property trailing_edge_thickness: buffalo_core.typing.FloatScalar
Return the explicit trailing-edge thickness.
This property reports the explicit trailing-edge gap as a fraction of chord.
- u_from_s(s)
Return curve parameters that correspond to arc length.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc lengths measured from the lower trailing edge.- Returns:
Curve parameters corresponding to
s.- Return type:
buffalo_core.typing.FloatArray- Raises:
ValueError – When arc-length provided is larger than airfoil surface length.
- u_from_x(x, *, surface)
Return curve parameters that correspond to
x.- Parameters:
x (
buffalo_core.typing.FloatInput) – Chordwise coordinates in the normalized airfoil frame.surface (
{"lower", "upper"}) – Surface to solve on.
- Returns:
Curve parameters on the requested surface.
- Return type:
buffalo_core.typing.FloatArray- Raises:
ValueError – If any requested chordwise coordinate lies outside the reachable x-range of the selected surface.
- u_from_xi(xi, *, surface)
Convert surface-local
xicoordinates to native parameters.- Parameters:
xi (
buffalo_core.typing.FloatInput) – Surface-local coordinates in[0, 1]measured from the leading edge to the trailing edge.surface (
{"lower", "upper"}) – Surface to evaluate.
- Returns:
Signed native CST airfoil parameters matching
xion the selected surface.- Return type:
buffalo_core.typing.FloatArray
Notes
General CST geometry uses the linear mapping
u = +/- xi, with the sign determined bysurface.
- xi_from_u(u)
Convert native parameters to surface-local
xicoordinates.- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed native CST airfoil parameters in[-1, 1].- Returns:
Surface-local
xivalues and upper-surface membership flags.- Return type:
Notes
General CST geometry uses the linear mapping
xi = |u|.
- xy_from_s(s)
Return curve coordinates at arc-length locations.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(x, y)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
- xy_from_xi(xi, *, surface)
Return one-surface coordinates at surface-local
xilocations.- Parameters:
xi (
buffalo_core.typing.FloatInput) – Surface-local coordinates in[0, 1]measured from the leading edge to the trailing edge.surface (
{"lower", "upper"}) – Surface to evaluate.
- Returns:
Tuple
(x, y)offloat64arrays matching the normalized shape ofxi.- Return type:
tuple[FloatArray,FloatArray]
- xy_s(s)
Calculate first derivatives at arc-length location.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(dx/ds, dy/ds)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
Notes
If
smatches one ofarc_length_breakpoints()exactly, this method returns theminus-side derivative limit. Subclasses should overridexy_s_breakpoint()when exact one-sided breakpoint derivatives are available analytically.
- xy_s_breakpoint(*, index)
Return one-sided arc-length derivatives at one breakpoint index.
Notes
This method composes the exact arc-length tangent values from the exact native breakpoint derivatives returned by
xy_u_breakpoint().- Return type:
tuple[tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)], tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]]
- xy_ss(s)
Calculate second derivatives at arc-length location.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(d^2x/ds^2, d^2y/ds^2)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
Notes
If
smatches one ofarc_length_breakpoints()exactly, this method returns theminus-side derivative limit. Subclasses should overridexy_ss_breakpoint()when exact one-sided breakpoint second derivatives are available analytically.
- xy_ss_breakpoint(*, index)
Return one-sided arc-length second derivatives at one breakpoint.
Notes
This method composes the exact arc-length curvature-vector values from the exact native breakpoint derivatives returned by
xy_u_breakpoint()andxy_uu_breakpoint().- Return type:
tuple[tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)], tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]]