Skip to content

ENH: Tube Fins #816

Description

@AlexKari

I'm attempting to simulate the design for my Level 3 to try and find the maximum velocity, however rocketpy lacks any settings for tube fins.

Can there be tube fins added similar to how openrocket does it?

Activity

  1. Gui-FernandesBR commented on May 12, 2025

    @Gui-FernandesBR
    Member

    @AlexKari no, there's no direct equivalence to tube fins on rocketpy.

    I recommend you to use the Generic Aero surfaces instead.

  2. added
    Help wantedExtra attention is needed
    EnhancementNew feature or request, including adjustments in current codes
    on Nov 29, 2025
  3. ting-hong-shieh commented on Aug 13, 2026

    @ting-hong-shieh

    Hi, I'd be interested in working on this. Since the issue is still open and labeled Help wanted, could you confirm whether a built-in tube-fin model is still wanted, or whether GenericSurface is now the intended solution?

    I compared RocketPy's current aerodynamic-surface API with the linked OpenRocket calculator. Two differences affect the scope:

    • OpenRocket makes the tube-fin center of pressure Mach-dependent: quarter-chord at Mach 0.5 and below, a polynomial through the transonic range, and an empirical expression at Mach 2 and above. RocketPy currently stores a fixed center of pressure for each Barrowman surface.
    • OpenRocket also includes component friction and pressure drag. RocketPy's current Barrowman surfaces do not add axial drag; vehicle drag is supplied through the rocket's power-on and power-off drag curves.

    If a dedicated model is welcome, would the following be an acceptable first PR?

    • Add a TubeFins surface defined by tube count, length, inner radius, outer radius, and rocket radius.
    • Implement the Ribner-based normal-force slope, OpenRocket's 20-degree angle-of-attack cap, and a fixed quarter-chord center of pressure for the documented subsonic range (Mach <= 0.5).
    • Initially support tangent, non-overlapping, uncanted tube sets only, with validation for unsupported geometry.
    • Add Rocket.add_tube_fins, serialization, focused unit tests, and documentation of the model limits.
    • Defer Mach-dependent center of pressure, component drag, separated or overlapping tubes, cant, and side-force/yaw behavior.

    This would keep the first change within RocketPy's current surface architecture. If full Mach-range CP or component drag is required for initial support, I can revise the proposal before starting implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

EnhancementNew feature or request, including adjustments in current codesHelp wantedExtra attention is needed

Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions