Skip to content

Shock Shape

This module computes the shock shape for the detached shock of a blunt body for a calorically perfect gas (\(\gamma=1.4\)).

The solutions follow that of Billig as described in 1-2)

High-level API

minuteman.cpg.shock_shape.estimate_coords_cylinder_wedge

estimate_coords_cylinder_wedge(
    y: ArraylikeFloat, mach: Floatlike, nose_radius: Floatlike, half_angle: Floatlike
) -> ShockShapeSolution

Estimate the shock-shape for a cylinder-wedge at a given freestream Mach number.

Parameters:

  • y (ArraylikeFloat) –

    y-coordinates \(y\). A value of \(y=0\) is defined at the axis of symmetry. Bounds: \([0, \infty)\)

  • mach (Floatlike) –

    Freestream Mach number \(M\). Bounds: \((1, \infty)\)

  • nose_radius (Floatlike) –

    Nose radius \(R\). Bounds: \((0, \infty)\)

  • half_angle (Floatlike) –

    Wedge half angle \(\theta\) [radians]. Bounds: \((0, \pi/2)\)

Returns:

minuteman.cpg.shock_shape.estimate_coords_sphere_cone

estimate_coords_sphere_cone(
    y: ArraylikeFloat, mach: Floatlike, nose_radius: Floatlike, half_angle: Floatlike
) -> ShockShapeSolution

Estimate the shock-shape for a sphere-cone at a given freestream Mach number.

Parameters:

  • y (ArraylikeFloat) –

    y-coordinates \(y\). A value of \(y=0\) is defined at the axis of symmetry. Bounds: \([0, \infty)\)

  • mach (Floatlike) –

    Freestream Mach number \(M\). Bounds: \((1, \infty)\)

  • nose_radius (Floatlike) –

    Nose radius \(R\). Bounds: \((0, \infty)\)

  • half_angle (Floatlike) –

    Cone half angle \(\theta_c\) [radians]. Bounds: \((0, \pi/2)\)

Returns:

Low-level API

minuteman.cpg.shock_shape.curvature_radius_sphere_cone

curvature_radius_sphere_cone(mach: ArraylikeFloat, nose_radius: ArraylikeFloat) -> NDArrayFloat

Compute the vertex radius of curvature for a sphere-cone, \(R_c\).

Parameters:

Returns:

minuteman.cpg.shock_shape.curvature_radius_cylinder_wedge

curvature_radius_cylinder_wedge(mach: ArraylikeFloat, nose_radius: ArraylikeFloat) -> NDArrayFloat

Compute the vertex radius of curvature for a cylinder-wedge, \(R_c\).

Parameters:

Returns:

minuteman.cpg.shock_shape.standoff_distance_cylinder_wedge

standoff_distance_cylinder_wedge(mach: ArraylikeFloat, nose_radius: ArraylikeFloat) -> NDArrayFloat

Compute the shock standoff distance \(\Delta\) for a cylinder-wedge.

Parameters:

Returns:

minuteman.cpg.shock_shape.standoff_distance_sphere_cone

standoff_distance_sphere_cone(mach: ArraylikeFloat, nose_radius: ArraylikeFloat) -> NDArrayFloat

Compute the shock standoff distance \(\Delta\) for a sphere-cone.

Parameters:

Returns:

minuteman.cpg.shock_shape.x_coordinates

x_coordinates(
    y: ArraylikeFloat,
    shock_angle: Floatlike,
    nose_radius: Floatlike,
    standoff_distance: Floatlike,
    curvature_radius: Floatlike,
) -> NDArrayFloat

Compute the x-coordinates of the shock shape of a blunt body \(x\) for a given set of y-coordinates.

Differing from the relation this function is based on, the positive x-axis is defined downstream of the vehicle, with \(x=0\) centered at the nose tip, not the center of curvature

Parameters:

  • y (ArraylikeFloat) –

    y-coordinates \(y\). A value of \(y=0\) is defined at the axis of symmetry.

  • shock_angle (Floatlike) –

    attached shock angle \(\theta\) for a cone or wedge [radians]

  • nose_radius (Floatlike) –

    nose radius \(R\)

  • standoff_distance (Floatlike) –

    shock standoff distance \(\Delta\)

  • curvature_radius (Floatlike) –

    vertex radius of curvature \(R_c\)

Returns:

Data Structures

minuteman.cpg.shock_shape.BluntBodyType

Bases: Enum

Blunt body type (sphere-cone or cylinder-wedge)

sphere_cone = auto() class-attribute instance-attribute

Sphere-cone shape

cylinder_wedge = auto() class-attribute instance-attribute

Cylinder-wedge shape

minuteman.cpg.shock_shape.ShockShapeSolution dataclass

Shock shape solution for a calorically perfect gas

x: NDArrayFloat instance-attribute

x-coordinates, \(x\). Zero is defined at the tip of the nose.

y: NDArrayFloat instance-attribute

y-coordinates, \(y\). Zero is defined at the axis of symmetry.

mach: float instance-attribute

Upstream Mach number, \(M\).

nose_radius: float instance-attribute

Nose radius \(R\)

shock_angle: float instance-attribute

Attached shock angle \(\theta\) [radians]

half_angle: float instance-attribute

Wedge or cone half angle [radians]

standoff_distance: float instance-attribute

Shock standoff distance \(\Delta\)

curvature_radius: float instance-attribute

Vertex radius of curvature \(R_c\)

body_type: BluntBodyType instance-attribute

Blunt body type

References

  1. Anderson, J. D. (1989). Hypersonic and high temperature gas dynamics. AIAA.
  2. Billig, F. S. (1967). Shock-wave shapes around spherical-and cylindrical-nosed bodies. Journal of Spacecraft and Rockets, 4(6), 822-823.