Component tree replaced with subcomponent list

Commit
445a834e6a5e790a7f37730d6e5d8824b8f598f4
Author
blendoit <blendoit@gmail.com>
Author date
Committer
blendoit <blendoit@gmail.com>
Committer date
Changed files
creator/base.py
index f6342c83..5d90efd3 100644..100644
@@ -13,33 +13,23 @@
13 13 class Aircraft:
14 14 """This class tracks all sub-components and is fed to the evaluator."""
15 15 def __init__(self, evaluator, name):
16 Removed: self.tree = {name: None}
17 Removed: if type(self).__name__ not in evaluator.tree:
18 Removed: evaluator.tree[name] = self.tree
19 Removed: else:
20 Removed: evaluator.tree[name] = self.tree
16 Added: evaluator.aircrafts.append(self)
21 17 self.evaluator = evaluator
22 18 self.name = name
19 Added: self.fuselage = None
20 Added: self.propulsion = None
21 Added: self.wing = None
23 22
23 Added:
24 24 class Component:
25 25 """Basic component providing coordinates, tools and a component tree."""
26 26 def __init__(self, parent, name):
27 Removed: self.tree = {type(self).__name__: name}
28 Removed: # print(type(self).__name__)
29 Removed: if type(self).__name__ not in parent.tree:
30 Removed: parent.tree.update(self.tree)
31 Removed: else:
32 Removed: parent.tree[name] = self.tree
33 27 self.parent = parent
34 28 self.name = name
35 29 self.x = np.array([])
36 30 self.z = np.array([])
37 31 self.material = None
38 32 self.mass = float()
39 Removed:
40 Removed: def set_material(self, material):
41 Removed: """Set the component bulk material."""
42 Removed: self.material = material
43 33
44 34 def info_print(self, round):
45 35 """Print all the component's coordinates to the terminal."""
creator/wing.py
index cc7d29ad..472e9284 100644..100644
@@ -40,14 +40,21 @@
40 40 semi_span=150,
41 41 material=mt.aluminium):
42 42 super().__init__(parent, name)
43 Added: parent.wing = self
43 44 if chord > 20:
44 45 self.chord = chord
45 46 else:
46 47 self.chord = 20
47 48 logging.debug('Chord too small, using minimum value of 20.')
49 Added: parent
48 50 self.semi_span = semi_span
49 51 self.material = material
52 Added: self.spars = []
53 Added: self.stringers = []
50 54
55 Added: def __str__(self):
56 Added: return self.name
57 Added:
51 58 def add_naca(self, naca_num):
52 59 """Generate surface geometry for a NACA airfoil.
53 60
@@ -139,7 +146,8 @@
139 146 def __init__(self, parent, name, loc_percent=0.30, material=mt.aluminium):
140 147 """Set spar location as percent of chord length."""
141 148 super().__init__(parent, name)
142 Removed: super().set_material(material)
149 Added: parent.spars.append(self)
150 Added: self.material = material
143 151 self.cap_area = float()
144 152 # bi.bisect_left: returns index of first value in parent.x > loc
145 153 # This ensures that spar geom intersects with airfoil geom.
@@ -165,8 +173,17 @@
165 173
166 174 class Stringer(base.Component):
167 175 """Contains the coordinates of all stringers."""
168 Removed: def __init__(self):
176 Added: def __init__(self, parent, name, den_u, den_l, den_un, den_ul):
177 Added: """
178 Added: parameters:
179 Added:
180 Added: den_u: upper stringer density
181 Added: den_l: lower stringer density
182 Added: den_un: upper nose stringer density
183 Added: den_ul: upper nose stringer density
184 Added: """
169 185 super().__init__()
186 Added: parent.stringers.append(self)
170 187 self.x_start = []
171 188 self.x_end = []
172 189 self.z_start = []
evaluator/evaluator.py
index e6b55b40..680f2d79 100644..100644
@@ -17,21 +17,9 @@
17 17 Individual aircrafts must claim an Evaluator object as parent."""
18 18 def __init__(self, name):
19 19 self.name = name
20 Removed: self.tree = {} # Keys are component names, values are objects
20 Added: self.aircrafts = []
21 21 self.results = []
22 Removed: # # Evaluator knows all geometrical info from evaluated airfoil
23 Removed: # self.airfoil = self.get_airfoil(aircraft)
24 Removed: # self.spars = self.get_spars(aircraft)
25 Removed: # self.stringers = self.get_stringers(aircraft)
26 Removed: # # Lift
27 Removed: # self.lift_rectangular = []
28 Removed: # self.lift_elliptical = []
29 Removed: # self.lift_total = []
30 Removed: # # Drag
31 Removed: # self.drag = []
32 Removed: # # centroid
33 Removed: # self.centroid = []
34 Removed: # Inertia terms:
22 Added:
35 23 self.I_ = {'x': 0, 'z': 0, 'xz': 0}
36 24
37 25 def get_lift_rectangular(aircraft, lift):
example_airfoil.py
index 6c272a2e..9626f6f2 100644..100644
@@ -62,9 +62,11 @@
62 62 spar3 = creator.wing.Spar(af2, 'spar3', 0.23)
63 63 spar4 = creator.wing.Spar(af2, 'spar4', 0.67)
64 64
65 Removed: # eval.update_tree()
66 Removed: # ac2.update_tree()
67 Removed: print(ac2.tree)
65 Added: for aircraft in eval.aircrafts:
66 Added: print(aircraft.wing)
67 Added: for spar in aircraft.wing.spars:
68 Added: print(spar.material["name"])
69 Added:
68 70 # eval.info_print(2)
69 71
70 72 # # Create stringer instance