buffalo_wings.airfoil.EllipseAirfoil
- class buffalo_wings.airfoil.EllipseAirfoil(*, max_thickness)[source]
Bases:
AirfoilNormalized ellipse-based analytic airfoil.
Notes
The airfoil is defined in the standard normalized section frame with the leading edge at
(0, 0)and the nominal trailing-edge midpoint at(1, 0). The only free geometric parameter ismax_thickness.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 trailing-edge parameter locations.
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.
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.
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 the coordinates of the normalized ellipse airfoil.
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 exact one-sided arc-length derivatives at one breakpoint.
xy_ss(s)Calculate second derivatives at arc-length location.
xy_ss_breakpoint(*, index)Return exact one-sided arc-length second derivatives at one breakpoint.
xy_u(u)Calculate first derivatives with respect to the airfoil parameter.
xy_u_breakpoint(*, index)Return exact one-sided first derivatives at one breakpoint.
xy_uu(u)Return second derivatives of the ellipse coordinates.
xy_uu_breakpoint(*, index)Return exact one-sided second derivatives at one breakpoint.
Attributes
Return the full airfoil surface length.
Return the normalized maximum thickness.
Return the schema definition used to create this airfoil.
- property max_thickness: buffalo_core.typing.FloatScalar
Return the normalized maximum thickness.
This property stores the maximum thickness as a fraction of chord.
- property spec: EllipseAirfoilSpec
Return the schema definition used to create this airfoil.
The returned schema stores the serialized normalized ellipse definition.
- xy_from_u(u)[source]
Calculate the coordinates of the normalized ellipse airfoil.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed airfoil parameter values in[-1, 1].- Returns:
Tuple
(x, y)offloat64arrays matching the normalized shape ofu.- Return type:
tuple[FloatArray,FloatArray]
- xy_u(u)[source]
Calculate first derivatives with respect to the airfoil 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]
- xy_uu(u)[source]
Return second derivatives of the ellipse coordinates.
- 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]
- xy_u_breakpoint(*, index)[source]
Return exact one-sided first derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_u_minus, y_u_minus), (x_u_plus, y_u_plus)).- Return type:
tuple[tuple[FloatScalar,FloatScalar],tuple[FloatScalar,FloatScalar]]
Notes
The ellipse airfoil only reports endpoint breakpoints, so both sides return the same exact boundary value.
- xy_uu_breakpoint(*, index)[source]
Return exact one-sided second derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_uu_minus, y_uu_minus), (x_uu_plus, y_uu_plus)).- Return type:
tuple[tuple[FloatScalar,FloatScalar],tuple[FloatScalar,FloatScalar]]
Notes
The ellipse airfoil only reports endpoint breakpoints, so both sides return the same exact boundary value.
- xy_s_breakpoint(*, index)[source]
Return exact one-sided arc-length derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_s_minus, y_s_minus), (x_s_plus, y_s_plus)).- Return type:
tuple[tuple[FloatScalar,FloatScalar],tuple[FloatScalar,FloatScalar]]
Notes
The ellipse airfoil only reports endpoint breakpoints, so both sides return the same exact boundary value.
- xy_ss_breakpoint(*, index)[source]
Return exact one-sided arc-length second derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_ss_minus, y_ss_minus), (x_ss_plus, y_ss_plus)).- Return type:
tuple[tuple[FloatScalar,FloatScalar],tuple[FloatScalar,FloatScalar]]
Notes
The ellipse airfoil only reports endpoint breakpoints, so both sides return the same exact boundary value.
- u_from_xi(xi, *, surface)[source]
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 ellipse parameters matching
xion the selected surface.- Return type:
buffalo_core.typing.FloatArray
Notes
The ellipse runtime uses the linear mapping
u = +/- xi, with the sign determined bysurface.
- xi_from_u(u)[source]
Convert native parameters to surface-local
xicoordinates.- Parameters:
u (
buffalo_core.typing.FloatInput) – Signed native ellipse parameters in[-1, 1].- Returns:
Surface-local
xivalues and upper-surface membership flags.- Return type:
Notes
The ellipse runtime uses the linear mapping
xi = |u|.
- breakpoints()[source]
Return the trailing-edge parameter locations.
- Returns:
Ordered parameter values for the lower and upper trailing-edge endpoints.
- Return type:
list[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’)]
- 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
- 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]
- 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]
- 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.
- 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_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.