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



# ----------------------------------------------------------------------
#  Imports
# ----------------------------------------------------------------------
import numpy as np
from RCAIDE.Library.Methods.Geometry.LOPA.compute_layout_of_passenger_accommodations import  compute_layout_of_passenger_accommodations

# ----------------------------------------------------------------------
#  Methods
# ----------------------------------------------------------------------

[docs] def fuselage_planform(fuselage, circular_cross_section = True): """Calculates fuselage geometry values Assumptions: None Source: http://adg.stanford.edu/aa241/drag/wettedarea.html Inputs: fuselage. num_coach_seats [-] fineness.nose [-] fineness.tail [-] width [m] heights.maximum [m] Outputs: fuselage. lengths.nose [m] lengths.tail [m] lengths.cabin [m] lengths.total [m] areas.wetted [m] areas.front_projected [m] effective_diameter [m] Properties Used: N/A """ # size cabins compute_layout_of_passenger_accommodations(fuselage) nose_fineness = fuselage.fineness.nose tail_fineness = fuselage.fineness.tail cabin_length = 0 fuselage_width = 0 for cabin in fuselage.cabins: cabin_length += cabin.length fuselage_width = np.maximum(fuselage_width, cabin.width) nose_length = nose_fineness * fuselage_width tail_length = tail_fineness * fuselage_width fuselage_length = cabin_length + nose_length + tail_length fuselage.lengths.total = fuselage_length if circular_cross_section: fuselage_height = fuselage_width else: fuselage_height = fuselage.heights.maximum wetted_area = 0.0 # model constant fuselage cross section as an ellipse # approximate circumference http://en.wikipedia.org/wiki/Ellipse#Circumference a = fuselage_width/2. b = fuselage_height/2. A = np.pi * a * b # area R = (a-b)/(a+b) # effective radius C = np.pi*(a+b)*(1.+ ( 3*R**2 )/( 10+np.sqrt(4.-3.*R**2) )) # circumference wetted_area += C * cabin_length cross_section_area = A # approximate nose and tail wetted area # http://adg.stanford.edu/aa241/drag/wettedarea.html Deff = (a+b)*(64.-3.*R**4)/(64.-16.*R**2) wetted_area += 0.75*np.pi*Deff * (nose_length + tail_length) # update fuselage.lengths.nose = nose_length fuselage.lengths.tail = tail_length fuselage.lengths.cabin = cabin_length fuselage.lengths.total = fuselage_length fuselage.areas.wetted = wetted_area fuselage.areas.front_projected = cross_section_area fuselage.effective_diameter = Deff return fuselage