summaryrefslogtreecommitdiff
path: root/aircraftstudio/evaluator/inertia.py
diff options
context:
space:
mode:
authorblendoit <blendoit@gmail.com>2019-11-01 18:12:34 -0700
committerblendoit <blendoit@gmail.com>2019-11-01 18:12:34 -0700
commit8b6f11119790c8c930734894a37d2a4aaa42462d (patch)
tree9d6b9013ad4522f9a5598f30b4d3a0fcd26810ac /aircraftstudio/evaluator/inertia.py
parent5ab73817371c1b4fedbd98838d3cf28984d73004 (diff)
Start work on optimized multiprocessing random a/c gen. & eval.HEADmaster
Diffstat (limited to 'aircraftstudio/evaluator/inertia.py')
-rw-r--r--aircraftstudio/evaluator/inertia.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/aircraftstudio/evaluator/inertia.py b/aircraftstudio/evaluator/inertia.py
new file mode 100644
index 0000000..f047766
--- /dev/null
+++ b/aircraftstudio/evaluator/inertia.py
@@ -0,0 +1,66 @@
+def get_centroid(aircraft):
+ """Return the coordinates of the centroid."""
+ # stringer_area = aircraft.wing.stringers.area
+ # cap_area = aircraft.wing.spars.cap_area
+
+ # TODO: Fix this
+ # caps_x = [value for spar in aircraft.wing.spars.x for value in spar]
+ # caps_z = [value for spar in aircraft.wing.spars.z for value in spar]
+ # stringers_x = aircraft.wing.stringers.x
+ # stringers_z = aircraft.wing.stringers.z
+
+ # denominator = float(
+ # len(caps_x) * cap_area + len(stringers_x) * stringer_area)
+
+ # centroid_x = float(
+ # sum([x * cap_area
+ # for x in caps_x]) + sum([x * stringer_area for x in stringers_x]))
+ # centroid_x = centroid_x / denominator
+
+ # centroid_z = float(
+ # sum([z * cap_area
+ # for z in caps_z]) + sum([z * stringer_area for z in stringers_z]))
+ # centroid_z = centroid_z / denominator
+
+ # return (centroid_x, centroid_z)
+ return (200, 420)
+
+
+def get_inertia_terms(self):
+ """Obtain all inertia terms."""
+ stringer_area = self.stringer.area
+ cap_area = self.spar.cap_area
+
+ # Adds upper and lower components' coordinates to list
+ x_stringers = self.stringer.x
+ z_stringers = self.stringer.z
+ x_spars = self.spar.x[:][0] + self.spar.x[:][1]
+ z_spars = self.spar.z[:][0] + self.spar.z[:][1]
+ stringer_count = range(len(x_stringers))
+ spar_count = range(len(self.spar.x))
+
+ # I_x is the sum of the contributions of the spar caps and stringers
+ # TODO: replace list indices with dictionary value
+ I_x = sum(
+ [cap_area * (z_spars[i] - self.centroid[1])**2 for i in spar_count])
+ I_x += sum([
+ stringer_area * (z_stringers[i] - self.centroid[1])**2
+ for i in stringer_count
+ ])
+
+ I_z = sum(
+ [cap_area * (x_spars[i] - self.centroid[0])**2 for i in spar_count])
+ I_z += sum([
+ stringer_area * (x_stringers[i] - self.centroid[0])**2
+ for i in stringer_count
+ ])
+
+ I_xz = sum([
+ cap_area * (x_spars[i] - self.centroid[0]) *
+ (z_spars[i] - self.centroid[1]) for i in spar_count
+ ])
+ I_xz += sum([
+ stringer_area * (x_stringers[i] - self.centroid[0]) *
+ (z_stringers[i] - self.centroid[1]) for i in stringer_count
+ ])
+ return (I_x, I_z, I_xz)
Copyright 2019--2024 Marius PETER