RCAIDE.Library.Methods.Mass_Properties.Weight_Buildups.Conventional.General_Aviation.FLOPS.compute_wing_weight

compute_wing_weight#

compute_wing_weight(vehicle, wing, WPOD, complexity, settings, num_main_wings)[source]#
Calculate the wing weight using FLOPS methodology for general aviation aircraft. The wing weight consists of:
  • Bending Material Weight

  • Shear Material and Control Surface Weight

  • Miscellaneous Items Weight

Parameters:
  • vehicle (RCAIDE.Vehicle()) –

    Vehicle data structure containing:
    • reference_areafloat

      Wing surface area [m^2]

    • mass_properties.max_takeofffloat

      Maximum takeoff weight [kg]

    • flight_envelope.ultimate_loadfloat

      Ultimate load factor

    • fuselages.widthfloat

      Width of the fuselage [m]

    • networkslist

      List of propulsion networks

  • wing (RCAIDE.Component()) –

    Wing data structure containing:
    • taperfloat

      Wing taper ratio

    • sweeps.quarter_chordfloat

      Quarter chord sweep angle [deg]

    • thickness_to_chordfloat

      Thickness to chord ratio

    • spans.projectedfloat

      Wing span [m]

    • chords.rootfloat

      Root chord [m]

    • chords.tipfloat

      Tip chord [m]

    • twists.rootfloat

      Wing twist at root [deg]

    • twists.tipfloat

      Wing twist at tip [deg]

    • flap_ratiofloat

      Flap area to wing area ratio

  • WPOD (float) – Weight of engine pod including nacelle [kg]

  • complexity (str) – Wing weight method, either “simple” or “complex”

  • settings (Data()) –

    Settings containing:
    • FLOPS.aeroelastic_tailoring_factorfloat

      Aeroelastic tailoring factor [0-1]

    • FLOPS.strut_braced_wing_factorfloat

      Strut braced wing factor [0-1]

    • advanced_compositesbool

      Flag for composite construction

  • num_main_wings (int) – Number of main wings

Returns:

wing_weight – Total wing weight [kg]

Return type:

float

Notes

The function implements two FLOPS methods: a simple and a complex approach. The complex method uses detailed spanwise integration for more accurate results.

Major Assumptions
  • Wing is elliptically loaded

  • Gloved wing area is 0

  • Load between multiple main wings is distributed equally

  • Wing sweep is fixed

  • For complex method: 500 integration stations used

Theory

Simple Method: .. math:

W_w = W_1 + W_2 + W_3
Where:

W_1 (Bending material):

\[W_1 = \frac{DG * CAYE * W_{1NIR} + W_2 + W_3}{1 + W_{1NIR}} - W_2 - W_3\]

W_2 (Shear material): .. math:

W_2 = A_2 * (1 - 0.17F_{comp}) * S_{flap}^{A_3} * DG^{A_4}

W_3 (Miscellaneous): .. math:

W_3 = A_5 * (1 - 0.3F_{comp}) * S_w^{A_6}
Where:
  • W_w is total wing weight [lb]

  • DG is design gross weight [lb]

  • CAYE is engine weight relief factor

  • F_comp is composite utilization factor

  • S_flap is flap area [ft^2]

  • S_w is wing area [ft^2]

  • A_i are empirical constants

Complex Method: Uses numerical integration of spanwise loads with 500 stations. The complex method accounts for:

  • Actual wing geometry through detailed station data

  • Engine weight relief effects

  • Sweep angle variations

  • Thickness distribution

  • Chord distribution

  • Actual load distribution

The process follows:

1. Spanwise Load Distribution: .. math:

P(y) = \sqrt{1 - (\frac{y}{b/2})^2}

2. Local Loads and Moments: .. math:

\Delta P = \frac{\Delta y}{6}[c_0(2P_0 + P_1) + c_1(2P_1 + P_0)]

\Delta M = \frac{\Delta y^2}{12}[c_0(3P_0 + P_1) + c_1(P_1 + P_0)]

3. Cumulative Loads: .. math:

L(y) = \sum_{i=y}^{b/2} \Delta P_i

M(y) = \sum_{i=y}^{b/2} (\Delta M_i + \Delta y L_i) \sec(\Lambda_i)

4. Bending Material Area: .. math:

BMA(y) = \frac{M(y)}{c(y)t(y)} \sec(\Lambda)

5. Engine Effects: .. math:

M_e(y) = \sum_{i=y}^{b/2} \Delta y_i E(y_i) \sec(\Lambda_i)

BMA_e(y) = \frac{M_e(y)}{c(y)t(y)} \sec(\Lambda)

6. Final Wing Weight: .. math:

W_w = W_1 + W_2 + W_3
Where:
  • y is spanwise station location

  • b is wing span

  • c is local chord

  • t is local thickness

  • P is normalized pressure loading

  • Λ is local sweep angle

  • E(y) is engine weight relief

  • W_1 is bending material weight

  • W_2 is shear material weight

  • W_3 is miscellaneous items weight

References

[1] NASA. (1979). The Flight Optimization System Weights Estimation Method.

NASA Technical Report.

generate_wing_stations(fuselage_width, wing)[source]#
Divides half the wing in sections, using the defined sections

and adding a section at the intersection of wing and fuselage

Assumptions:

Source:

The Flight Optimization System Weight Estimation Method

Inputs:

fuselage_width: fuselage width [m] wing: data dictionary with wing properties

-.taper: taper ration wing -.sweeps.quarter_chord: quarter chord sweep angle [deg] -.thickness_to_chord: thickness to chord -.spans.projected: wing span [m] -.chords.root: root chord [m] -.tip.root: tip chord [m] -.twists.root: twist of wing at root [deg] -.twists.tip: twist of wing at tip [deg] -.Segments: trapezoidal segments of the wing

Outputs:

ETA: spanwise location of the sections normalized by half span C: chord lengths at every spanwise location in ETA normalized by half span T: thickness to chord ratio at every span wise location in ETA SWP: quarter chord sweep angle at every span wise location in ETA

Properties Used:

N/A

generate_int_stations(NSD, ETA)[source]#

Divides half of the wing in integration stations

Assumptions:

Source:

The Flight Optimization System Weight Estimation Method

Inputs:

NSD: number of integration stations requested ETA: list of spanwise locations of all sections of the wing

Outputs:

NS: actual number of integration stations Y: spanwise locations of the integrations stations normalized by half span

Properties Used:

N/A

calculate_load(ETA)[source]#

Returns load factor assuming elliptical load distribution

Assumptions:

Source:

The Flight Optimization System Weight Estimation Method

Inputs:

ETA: list of spanwise locations of all sections of the wing

Outputs:

PS: load factor at every location in ETA assuming elliptical load distribution

Properties Used:

N/A

find_sweep(y, lst_y, swp)[source]#

Finds sweep angle for a certain y-location along the wing

Assumptions:

Source:

The Flight Optimization System Weight Estimation Method

Inputs:

y: spanwise location lst_y: list of spanwise stations where sweep is known (eg sections) swp: list of quarter chord sweep angles at the locations listed in lst_y

Outputs:

swps: sweep angle at y

Properties Used:

N/A

get_spanwise_engine(networks, SEMISPAN)[source]#

Returns EETA for the engine locations along the wing

Assumptions:

Source:

The Flight Optimization System Weight Estimation Method

Inputs:
networks: data dictionary with all the engine properties

-.wing_mounted: list of boolean if engine is mounted to wing -.number_of_engines: number of engines -.origin: origin of the engine

SEMISPAN: half span [m]

Outputs:

EETA: span wise locations of the engines mounted to the wing normalized by the half span

Properties Used:

N/A

wing_weight_constants_FLOPS()[source]#

Defines wing weight constants as defined by FLOPS Inputs: ac_type - determines type of instruments, electronics, and operating items based on types:

“short-range”, “medium-range”, “long-range”, “business”, “cargo”, “commuter”, “sst”

Outputs: list of coefficients used in weight estimations

determine_fuselage_chord(fuselage_width, wing)[source]#

Determine chord at wing and fuselage intersection

Assumptions:

Fuselage side of body is between first and second wing segments.

Source:

The Flight Optimization System Weight Estimation Method

Inputs:

fuselage_width: width of fuselage [m] wing: data dictionary with wing properties

-.taper: taper ratio -.sweeps.quarter_chord: quarter chord sweep angle [deg] -.thickness_to_chord: thickness to chord -.spans.projected: wing span [m] -.chords.root: root chord [m]

-.fuselages.fuselage.width: fuselage width [m]

Outputs:

chord: chord length of wing where wing intersects the fuselage wall [ft]

Properties Used:

N/A