Source code for RCAIDE.Library.Methods.Geometry.Planform.wing_planform



# ----------------------------------------------------------------------
#  Imports
# ----------------------------------------------------------------------

import numpy as np

# ----------------------------------------------------------------------
#  Methods
# ----------------------------------------------------------------------
[docs] def wing_planform(wing): """Computes standard wing planform values. Assumptions: Trapezoidal wing with no leading/trailing edge extensions Source: None Inputs: wing. areas.reference [m^2] taper [-] sweeps.quarter_chord [radians] aspect_ratio [-] thickness_to_chord [-] dihedral [radians] vertical <boolean> Determines if wing is vertical symmetric <boolean> Determines if wing is symmetric origin [m] x, y, and z position high_lift <boolean> Determines if wing is in a high lift configuration flaps. Flap values are only used if high lift is True span_start [-] Span start position (.1 is 10% span) span_end [-] Span end position (.1 is 10% span) chord [-] Portion of wing chord used (.1 is 10% chord) Outputs: wing. chords.root [m] chords.tip [m] chords.mean_aerodynamics [m] chords.mean_geometric [m] areas.wetted [m^2] areas.affected [m^2] spans.projected [m] aerodynamic_center [m] x, y, and z location flaps.chord_dimensional [m] flaps.area [m^2] Properties Used: N/A """ # unpack sref = wing.areas.reference taper = wing.taper sweep = wing.sweeps.quarter_chord ar = wing.aspect_ratio t_c_w = wing.thickness_to_chord dihedral = wing.dihedral vertical = wing.vertical symmetric = wing.symmetric origin = wing.origin # calculate span = (ar*sref)**.5 span_total = span/np.cos(dihedral) chord_root = 2*sref/span/(1+taper) chord_tip = taper * chord_root mgc = (chord_root+chord_tip)/2 swet = 2.*span/2.*(chord_root+chord_tip) * (1.0 + 0.2*t_c_w) mac = 2./3.*( chord_root+chord_tip - chord_root*chord_tip/(chord_root+chord_tip) ) # calculate leading edge sweep le_sweep = np.arctan( np.tan(sweep) - (4./ar)*(0.-0.25)*(1.-taper)/(1.+taper) ) # estimating aerodynamic center coordinates y_coord = span / 6. * (( 1. + 2. * taper ) / (1. + taper)) x_coord = mac * 0.25 + y_coord * np.tan(le_sweep) z_coord = y_coord * np.tan(dihedral) if vertical: temp = y_coord * 1. y_coord = z_coord * 1. z_coord = temp if symmetric: y_coord = 0 # Total length calculation total_length = np.tan(le_sweep)*span/2. + chord_tip # Computing flap geometry affected_area = 0. if wing.high_lift: flap = wing.control_surfaces.flap #compute wing chords at flap start and end delta_chord = chord_tip - chord_root wing_chord_flap_start = chord_root + delta_chord * flap.span_fraction_start wing_chord_flap_end = chord_root + delta_chord * flap.span_fraction_end wing_mac_flap = 2./3.*( wing_chord_flap_start+wing_chord_flap_end - \ wing_chord_flap_start*wing_chord_flap_end/ \ (wing_chord_flap_start+wing_chord_flap_end) ) flap.chord_dimensional = wing_mac_flap * flap.chord_fraction flap_chord_start = wing_chord_flap_start * flap.chord_fraction flap_chord_end = wing_chord_flap_end * flap.chord_fraction flap.area = (flap_chord_start + flap_chord_end) * (flap.span_fraction_end- flap.span_fraction_start)*span / 2. affected_area = (wing_chord_flap_start + wing_chord_flap_end) * (flap.span_fraction_end- flap.span_fraction_start)*span / 2. # update wing.chords.root = chord_root wing.chords.tip = chord_tip wing.chords.mean_aerodynamic = mac wing.chords.mean_geometric = mgc wing.sweeps.leading_edge = le_sweep wing.areas.wetted = swet wing.areas.affected = affected_area wing.spans.projected = span wing.spans.total = span_total wing.aerodynamic_center = [x_coord , y_coord, z_coord] wing.total_length = total_length return wing