Skip to main content

Module shock_expansion

Module shock_expansion 

Source
Expand description

The normal force of a pointed body of revolution faster than sound, by Syvertson and Dennis’s second-order shock-expansion method (NACA TN 3527, 1956, also NACA Report 1328).

Flown faster than sound for a pointed nose and the cylinders behind it since the milestone M1.8e2, the body’s supersonic normal force in flight, and for boattails and cylinders behind those since M1.8e4, and behind a blunt or vertical nose tip’s Newtonian cap (crate::blunt_tip) since M1.8e7, through crate::model::SupersonicBody. The guide’s Bodies faster than sound explains the method and how it was checked.

use hpr_aero::shock_expansion::{BodySegment, DEFAULT_ELEMENTS_PER_CURVE, ShockExpansionBody};
use hpr_design::{NoseShape, Profile};

// A cone five calibres long on a cylinder of four, 1 m across, at Mach 4.24.
let body = ShockExpansionBody::new(
    &[
        BodySegment::Profile {
            profile: Profile::nose(NoseShape::Conical {}, 5.0, 0.5)?,
        },
        BodySegment::Cylinder {
            length_m: 4.0,
            radius_m: 0.5,
        },
    ],
    DEFAULT_ELEMENTS_PER_CURVE,
)?;
let slope = body.slope(4.24, std::f64::consts::PI / 4.0)?;
// Slender-body theory: 2 per radian. TN 3527's own value: 2.91; its wind tunnel: 2.84.
assert!((slope.slope_per_rad - 2.922).abs() < 5e-4);

Slender-body theory gives a body’s nose C_Nα = 2 and its cylinder nothing, at every Mach number (B67 p. 18). Faster than sound the cylinder behind a nose carries lift too: the flow that expands around the shoulder recovers toward free-stream pressure along the cylinder, and at an angle of attack it recovers unevenly around it. The method computes that loading, at α → 0, for a pointed body whose flow is supersonic everywhere.

The tangent body. The profile is replaced by straight elements tangent to it (TN 3527 sketch (a), p. 6): the first tangent at the vertex, so the flow there is exactly a cone’s (Taylor–Maccoll), the rest meeting at corners. Around each corner the flow turns by Prandtl–Meyer; along each element the surface pressure relaxes exponentially from its value behind the corner toward the pressure on a cone tangent to the body there (eq. 8):

p = p_c − (p_c − p₂) e^(−η), η = (∂p/∂s)₂ (x − x₂) / ((p_c − p₂) cos δ₂) (eq. 9),

where the gradient just behind a corner comes from the one ahead of it (eq. 4, straight elements):

(∂p/∂s)₂ = (B₂/r)(Ω₁/Ω₂ · sin δ₁ − sin δ₂) + (B₂Ω₁)/(B₁Ω₂) · (∂p/∂s)₁,

with B = γpM²/(2(M² − 1)) (eq. 6), Ω the one-dimensional area ratio A/A* (eq. 7), and at the element’s end (∂p/∂s)₃ = (p_c − p₃)/(p_c − p₂) · (∂p/∂s)₂ (eq. 10).

The loading. Near α = 0 the lifting pressures follow the same law (eq. 19):

Λ = (1 − e^(−η)) tan δ · (dC_N/dα)_tc + (λ₂/λ₁) e^(−η) Λ₁, λ = 2γp / sin 2μ (eq. 5),

where (dC_N/dα)_tc is the tangent cone’s slope (Fig. 2, read by hand into cone_normal_force_slope) and Λ₁ the loading just ahead of the corner; on the vertex cone Λ = tan δ_v · (dC_N/dα)_tcv. The slope and moment follow by integration over the body (eqs. 14 and 21):

C_Nα = (2π/A_ref) ∫ Λ r dx, x_cp = ∫ Λ r x dx / ∫ Λ r dx (from the vertex).

A cylinder element’s tangent cone is the free stream (p_c = p₀, tan δ = 0), so its loading decays to zero. A boattail element has no tangent cone; footnote 8 (p. 12) takes p_c = p₀ and (dC_N/dα)_tc = 2, which the report found reasonable “for bodies having moderate amounts of boattail”. That is unvalidated here.

Limits. The report states the method for M/f_n (Mach number over nose fineness) from 0.4 to 2, within ±0.2 per radian and ±0.2 calibers of its measurements (Summary, p. 1). A pointed tip’s cone shock must be attached; a blunt or vertical tip (an infinite slope, or a BodySegment::SphericalCap) takes TN D-4865’s Newtonian cap and starts the march at its handover (crate::blunt_tip, HandoverStart). Fig. 2 spans Mach 3 to 10; below Mach 3 its Mach 3 curve is held, and above 10 its Mach 10 curve, both assumptions. Viscous crossflow is not part of it: the method is the slope at α → 0.

Structs§

AftFlow
The surface flow the march delivers to a body’s aft end (ShockExpansionBody::aft_flow): what a corner behind that body (the juncture of a flare, say) turns.
ConeFlow
The flow over a cone at zero angle of attack.
ElementFlowReport
The flow on one element of the tangent body (ShockExpansionBody::element_flows): its state just behind the element’s corner, the tangent cone it relaxes toward, and how fast it does so. At an axial distance x aft of its corner the pressure is p_c − (p_c − p₂) e^(−η) and the loading (1 − e^(−η)) Λ_c + e^(−η) Λ₂, with η = Self::decay_per_m · x (TN 3527 eqs. 8, 9 and 19). Pressures are over the free stream’s, p₀.
ReductionTurns
The two turns that bound where the second-order method’s exponential form does not hold at a corner behind a body (flare_reduction_turns_rad).
SegmentSlope
One segment’s share of the body’s normal-force slope at α → 0 (ShockExpansionBody::segment_slopes).
ShockExpansionBody
A body of revolution laid out for the second-order shock-expansion method: its segments and the straight elements of its tangent body. A pointed nose’s elements are laid out once; a blunt tip’s start at a handover that moves with the Mach number (crate::blunt_tip), so they are laid out at each.
ShockExpansionSlope
The body’s normal-force slope at α → 0 and where it acts.

Enums§

BodySegment
One piece of a body of revolution, listed from the nose aft.
HandoverStart
Where the method’s march starts behind a blunt tip’s Newtonian cap (crate::blunt_tip; the decision record on it, ADR-038).

Constants§

DEFAULT_ELEMENTS_PER_CURVE
The number of straight elements a curved segment’s tangent body gets by default: TN 3527’s own, tangent at x/l = 0, 0.1, …, 1.0 (“in all applications of the present method to curved bodies”, footnote 9, p. 15). Four times as many move the report’s ogive-cylinders by under 0.01 per radian and 0.01 calibers (test curved_elements_converge).
MAX_ELEMENTS_PER_CURVE
The most elements a curved segment may take, far past where the result stops changing.
SLENDER_CONE_RAD
Below this half-angle, 5e-4 rad (0.029°), cone_flow takes slender-cone theory; up to twice it, a blend.

Functions§

cone_flow
The flow over a cone of half-angle half_angle_rad at Mach mach and zero angle of attack: the Taylor–Maccoll equation (NACA Report 1135, 1953, eq. 177, p. 628) integrated from the shock to the surface, the shock angle found so the surface falls on the cone. The weak, attached solution.
cone_normal_force_slope
A cone’s normal-force slope at α → 0, per radian on its base area, interpolated linearly between the table’s angles and Mach numbers; below Mach 3 its Mach 3 row, above 10 its Mach 10 row. The slopes are TN 3527’s Fig. 2 to 24°, and NASA SP-3007’s tables of the same theory from there to 30° (ADR-042: cone slopes past Fig. 2’s edge).
flare_corner_limit_rad
The steepest turn the method reads at a flare’s corner, rad, where the surface flow reaching that corner is surface_mach (ShockExpansionBody::aft_flow): the largest deflection behind an attached plane oblique shock.
flare_reduction_turns_rad
Where the second-order shock-expansion method’s exponential form fails at a corner behind aft, the flow a body delivers to its aft end (ShockExpansionBody::aft_flow): the two turns between which the march reduces the element behind that corner to the generalized method.