View raw

1 def get_centroid(aircraft): 2 """Return the coordinates of the centroid.""" 3 # stringer_area = aircraft.wing.stringers.area 4 # cap_area = aircraft.wing.spars.cap_area 5 6 # TODO: Fix this 7 # caps_x = [value for spar in aircraft.wing.spars.x for value in spar] 8 # caps_z = [value for spar in aircraft.wing.spars.z for value in spar] 9 # stringers_x = aircraft.wing.stringers.x 10 # stringers_z = aircraft.wing.stringers.z 11 12 # denominator = float( 13 # len(caps_x) * cap_area + len(stringers_x) * stringer_area) 14 15 # centroid_x = float( 16 # sum([x * cap_area 17 # for x in caps_x]) + sum([x * stringer_area for x in stringers_x])) 18 # centroid_x = centroid_x / denominator 19 20 # centroid_z = float( 21 # sum([z * cap_area 22 # for z in caps_z]) + sum([z * stringer_area for z in stringers_z])) 23 # centroid_z = centroid_z / denominator 24 25 # return (centroid_x, centroid_z) 26 return (200, 420) 27 28 29 def get_inertia_terms(self): 30 """Obtain all inertia terms.""" 31 stringer_area = self.stringer.area 32 cap_area = self.spar.cap_area 33 34 # Adds upper and lower components' coordinates to list 35 x_stringers = self.stringer.x 36 z_stringers = self.stringer.z 37 x_spars = self.spar.x[:][0] + self.spar.x[:][1] 38 z_spars = self.spar.z[:][0] + self.spar.z[:][1] 39 stringer_count = range(len(x_stringers)) 40 spar_count = range(len(self.spar.x)) 41 42 # I_x is the sum of the contributions of the spar caps and stringers 43 # TODO: replace list indices with dictionary value 44 I_x = sum( 45 [cap_area * (z_spars[i] - self.centroid[1])**2 for i in spar_count]) 46 I_x += sum([ 47 stringer_area * (z_stringers[i] - self.centroid[1])**2 48 for i in stringer_count 49 ]) 50 51 I_z = sum( 52 [cap_area * (x_spars[i] - self.centroid[0])**2 for i in spar_count]) 53 I_z += sum([ 54 stringer_area * (x_stringers[i] - self.centroid[0])**2 55 for i in stringer_count 56 ]) 57 58 I_xz = sum([ 59 cap_area * (x_spars[i] - self.centroid[0]) * 60 (z_spars[i] - self.centroid[1]) for i in spar_count 61 ]) 62 I_xz += sum([ 63 stringer_area * (x_stringers[i] - self.centroid[0]) * 64 (z_stringers[i] - self.centroid[1]) for i in stringer_count 65 ]) 66 return (I_x, I_z, I_xz) 67