@@ -14,11 +14,11 @@ def __init__(self, owner):
1414
1515 @abstractmethod
1616 def evaluate_geometrical_parameters (self ):
17- """Evaluate and store geometry-dependent aerodynamic parameters."""
17+ """Evaluate and return geometry-dependent aerodynamic parameters."""
1818
1919 @abstractmethod
2020 def evaluate_shape (self ):
21- """Evaluate the shape vector used by plotting and outputs."""
21+ """Evaluate and return the shape vector used by plotting and outputs."""
2222
2323 def get_data (self , include_outputs = False ):
2424 """Return geometry-specific serialization data."""
@@ -48,9 +48,6 @@ def __init__(
4848 self ._tip_chord = tip_chord
4949 self ._sweep_length = sweep_length
5050 self ._sweep_angle = sweep_angle
51- self .owner ._tip_chord = self ._tip_chord
52- self .owner ._sweep_length = self ._sweep_length
53- self .owner ._sweep_angle = self ._sweep_angle
5451
5552 @property
5653 def tip_chord (self ):
@@ -59,7 +56,6 @@ def tip_chord(self):
5956 @tip_chord .setter
6057 def tip_chord (self , value ):
6158 self ._tip_chord = value
62- self .owner ._tip_chord = value
6359
6460 @property
6561 def sweep_length (self ):
@@ -68,7 +64,6 @@ def sweep_length(self):
6864 @sweep_length .setter
6965 def sweep_length (self , value ):
7066 self ._sweep_length = value
71- self .owner ._sweep_length = value
7267
7368 @property
7469 def sweep_angle (self ):
@@ -78,11 +73,9 @@ def sweep_angle(self):
7873 def sweep_angle (self , value ):
7974 self ._sweep_angle = value
8075 self ._sweep_length = np .tan (np .radians (value )) * self .owner .span
81- self .owner ._sweep_angle = self ._sweep_angle
82- self .owner ._sweep_length = self ._sweep_length
8376
8477 def evaluate_geometrical_parameters (self ):
85- """Calculates and saves trapezoidal fin geometric parameters."""
78+ """Calculate trapezoidal fin geometric parameters."""
8679 # pylint: disable=invalid-name
8780 owner = self .owner
8881 Yr = owner .root_chord + self .tip_chord
@@ -128,19 +121,31 @@ def evaluate_geometrical_parameters(self):
128121 + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
129122 )
130123
131- owner .Yr = Yr
132- owner .Af = Af
133- owner .AR = AR
134- owner .gamma_c = gamma_c
135- owner .Yma = Yma
136- owner .roll_geometrical_constant = roll_geometrical_constant
137- owner .tau = tau
138- owner .lift_interference_factor = lift_interference_factor
139- owner .λ = lambda_ # pylint: disable=non-ascii-name
140- owner .roll_damping_interference_factor = roll_damping_interference_factor
141- owner .roll_forcing_interference_factor = roll_forcing_interference_factor
124+ self .Yr = Yr
125+ self .Af = Af
126+ self .AR = AR
127+ self .gamma_c = gamma_c
128+ self .Yma = Yma
129+ self .roll_geometrical_constant = roll_geometrical_constant
130+ self .tau = tau
131+ self .lift_interference_factor = lift_interference_factor
132+ self .λ = lambda_ # pylint: disable=non-ascii-name
133+ self .roll_damping_interference_factor = roll_damping_interference_factor
134+ self .roll_forcing_interference_factor = roll_forcing_interference_factor
142135
143- self .evaluate_shape ()
136+ return {
137+ "Yr" : Yr ,
138+ "Af" : Af ,
139+ "AR" : AR ,
140+ "gamma_c" : gamma_c ,
141+ "Yma" : Yma ,
142+ "roll_geometrical_constant" : roll_geometrical_constant ,
143+ "tau" : tau ,
144+ "lift_interference_factor" : lift_interference_factor ,
145+ "λ" : lambda_ , # pylint: disable=non-ascii-name
146+ "roll_damping_interference_factor" : roll_damping_interference_factor ,
147+ "roll_forcing_interference_factor" : roll_forcing_interference_factor ,
148+ }
144149
145150 def evaluate_shape (self ):
146151 owner = self .owner
@@ -160,7 +165,9 @@ def evaluate_shape(self):
160165 ]
161166
162167 x_array , y_array = zip (* points )
163- owner .shape_vec = [np .array (x_array ), np .array (y_array )]
168+ shape_vec = [np .array (x_array ), np .array (y_array )]
169+ self .shape_vec = shape_vec
170+ return shape_vec
164171
165172 def get_data (self , include_outputs = False ):
166173 data = {
@@ -171,19 +178,23 @@ def get_data(self, include_outputs=False):
171178 if include_outputs :
172179 data .update (
173180 {
174- "shape_vec" : self .owner .shape_vec ,
175- "Af" : self .owner .Af ,
176- "AR" : self .owner .AR ,
177- "gamma_c" : self .owner .gamma_c ,
178- "Yma" : self .owner .Yma ,
179- "roll_geometrical_constant" : (self .owner .roll_geometrical_constant ),
180- "tau" : self .owner .tau ,
181- "lift_interference_factor" : (self .owner .lift_interference_factor ),
182- "roll_damping_interference_factor" : (
183- self .owner .roll_damping_interference_factor
181+ "shape_vec" : getattr (self , "shape_vec" , None ),
182+ "Af" : getattr (self , "Af" , None ),
183+ "AR" : getattr (self , "AR" , None ),
184+ "gamma_c" : getattr (self , "gamma_c" , None ),
185+ "Yma" : getattr (self , "Yma" , None ),
186+ "roll_geometrical_constant" : getattr (
187+ self , "roll_geometrical_constant" , None
188+ ),
189+ "tau" : getattr (self , "tau" , None ),
190+ "lift_interference_factor" : getattr (
191+ self , "lift_interference_factor" , None
184192 ),
185- "roll_forcing_interference_factor" : (
186- self .owner .roll_forcing_interference_factor
193+ "roll_damping_interference_factor" : getattr (
194+ self , "roll_damping_interference_factor" , None
195+ ),
196+ "roll_forcing_interference_factor" : getattr (
197+ self , "roll_forcing_interference_factor" , None
187198 ),
188199 }
189200 )
@@ -194,7 +205,7 @@ class _EllipticalGeometry(_FinGeometry):
194205 """Geometry strategy for elliptical fins."""
195206
196207 def evaluate_geometrical_parameters (self ): # pylint: disable=too-many-statements
197- """Calculates and saves elliptical fin geometric parameters."""
208+ """Calculate elliptical fin geometric parameters."""
198209 owner = self .owner
199210
200211 # pylint: disable=invalid-name
@@ -286,17 +297,27 @@ def evaluate_geometrical_parameters(self): # pylint: disable=too-many-statement
286297 + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
287298 )
288299
289- owner .Af = Af
290- owner .AR = AR
291- owner .gamma_c = gamma_c
292- owner .Yma = Yma
293- owner .roll_geometrical_constant = roll_geometrical_constant
294- owner .tau = tau
295- owner .lift_interference_factor = lift_interference_factor
296- owner .roll_damping_interference_factor = roll_damping_interference_factor
297- owner .roll_forcing_interference_factor = roll_forcing_interference_factor
300+ self .Af = Af
301+ self .AR = AR
302+ self .gamma_c = gamma_c
303+ self .Yma = Yma
304+ self .roll_geometrical_constant = roll_geometrical_constant
305+ self .tau = tau
306+ self .lift_interference_factor = lift_interference_factor
307+ self .roll_damping_interference_factor = roll_damping_interference_factor
308+ self .roll_forcing_interference_factor = roll_forcing_interference_factor
298309
299- self .evaluate_shape ()
310+ return {
311+ "Af" : Af ,
312+ "AR" : AR ,
313+ "gamma_c" : gamma_c ,
314+ "Yma" : Yma ,
315+ "roll_geometrical_constant" : roll_geometrical_constant ,
316+ "tau" : tau ,
317+ "lift_interference_factor" : lift_interference_factor ,
318+ "roll_damping_interference_factor" : roll_damping_interference_factor ,
319+ "roll_forcing_interference_factor" : roll_forcing_interference_factor ,
320+ }
300321
301322 def evaluate_shape (self ):
302323 owner = self .owner
@@ -305,24 +326,26 @@ def evaluate_shape(self):
305326 np .radians (angles )
306327 )
307328 y_array = owner .span * np .sin (np .radians (angles ))
308- owner .shape_vec = [x_array , y_array ]
329+ shape_vec = [x_array , y_array ]
330+ self .shape_vec = shape_vec
331+ return shape_vec
309332
310333 def get_data (self , include_outputs = False ):
311334 if not include_outputs :
312335 return {}
313336 return {
314- "Af" : self . owner . Af ,
315- "AR" : self . owner . AR ,
316- "gamma_c" : self . owner . gamma_c ,
317- "Yma" : self . owner . Yma ,
318- "roll_geometrical_constant" : self . owner . roll_geometrical_constant ,
319- "tau" : self . owner . tau ,
320- "lift_interference_factor" : self . owner . lift_interference_factor ,
321- "roll_damping_interference_factor" : (
322- self . owner . roll_damping_interference_factor
337+ "Af" : getattr ( self , "Af" , None ) ,
338+ "AR" : getattr ( self , "AR" , None ) ,
339+ "gamma_c" : getattr ( self , " gamma_c" , None ) ,
340+ "Yma" : getattr ( self , " Yma" , None ) ,
341+ "roll_geometrical_constant" : getattr ( self , " roll_geometrical_constant" , None ) ,
342+ "tau" : getattr ( self , " tau" , None ) ,
343+ "lift_interference_factor" : getattr ( self , " lift_interference_factor" , None ) ,
344+ "roll_damping_interference_factor" : getattr (
345+ self , " roll_damping_interference_factor" , None
323346 ),
324- "roll_forcing_interference_factor" : (
325- self . owner . roll_forcing_interference_factor
347+ "roll_forcing_interference_factor" : getattr (
348+ self , " roll_forcing_interference_factor" , None
326349 ),
327350 }
328351
@@ -357,7 +380,7 @@ def infer_dimensions(shape_points):
357380 def evaluate_geometrical_parameters (
358381 self ,
359382 ): # pylint: disable=too-many-statements,too-many-locals,invalid-name
360- """Calculates and saves free-form fin geometric parameters."""
383+ """Calculate free-form fin geometric parameters."""
361384 owner = self .owner
362385
363386 Af = 0
@@ -474,45 +497,65 @@ def evaluate_geometrical_parameters(
474497 mac_lead /= total_area
475498 cos_gamma = cos_gamma_sum / (points_per_line - 1 )
476499
477- owner .Af = Af
478- owner .AR = AR
479- owner .gamma_c = np .arccos (cos_gamma )
480- owner .Yma = mac_span
481- owner .mac_length = mac_length
482- owner .mac_lead = mac_lead
483- owner .tau = tau
484- owner .roll_geometrical_constant = roll_geometrical_constant
485- owner .lift_interference_factor = lift_interference_factor
486- owner .roll_forcing_interference_factor = roll_forcing_interference_factor
487- owner .roll_damping_interference_factor = 1 + (
500+ gamma_c = np .arccos (cos_gamma )
501+
502+ self .Af = Af
503+ self .AR = AR
504+ self .gamma_c = gamma_c
505+ self .Yma = mac_span
506+ self .mac_length = mac_length
507+ self .mac_lead = mac_lead
508+ self .tau = tau
509+ self .roll_geometrical_constant = roll_geometrical_constant
510+ self .lift_interference_factor = lift_interference_factor
511+ self .roll_forcing_interference_factor = roll_forcing_interference_factor
512+ self .roll_damping_interference_factor = 1 + (
488513 roll_damping_numerator / roll_damping_denominator
489514 )
490515
491- self .evaluate_shape ()
516+ return {
517+ "Af" : Af ,
518+ "AR" : AR ,
519+ "gamma_c" : gamma_c ,
520+ "Yma" : mac_span ,
521+ "mac_length" : mac_length ,
522+ "mac_lead" : mac_lead ,
523+ "tau" : tau ,
524+ "roll_geometrical_constant" : roll_geometrical_constant ,
525+ "lift_interference_factor" : lift_interference_factor ,
526+ "roll_forcing_interference_factor" : roll_forcing_interference_factor ,
527+ "roll_damping_interference_factor" : self .roll_damping_interference_factor ,
528+ }
492529
493530 def evaluate_shape (self ):
494531 x_array , y_array = zip (* self .shape_points )
495- self .owner .shape_vec = [np .array (x_array ), np .array (y_array )]
532+ shape_vec = [np .array (x_array ), np .array (y_array )]
533+ self .shape_vec = shape_vec
534+ return shape_vec
496535
497536 def get_data (self , include_outputs = False ):
498537 data = {"shape_points" : self .shape_points }
499538 if include_outputs :
500539 data .update (
501540 {
502- "Af" : self .owner .Af ,
503- "AR" : self .owner .AR ,
504- "gamma_c" : self .owner .gamma_c ,
505- "Yma" : self .owner .Yma ,
506- "mac_length" : self .owner .mac_length ,
507- "mac_lead" : self .owner .mac_lead ,
508- "roll_geometrical_constant" : (self .owner .roll_geometrical_constant ),
509- "tau" : self .owner .tau ,
510- "lift_interference_factor" : (self .owner .lift_interference_factor ),
511- "roll_forcing_interference_factor" : (
512- self .owner .roll_forcing_interference_factor
541+ "Af" : getattr (self , "Af" , None ),
542+ "AR" : getattr (self , "AR" , None ),
543+ "gamma_c" : getattr (self , "gamma_c" , None ),
544+ "Yma" : getattr (self , "Yma" , None ),
545+ "mac_length" : getattr (self , "mac_length" , None ),
546+ "mac_lead" : getattr (self , "mac_lead" , None ),
547+ "roll_geometrical_constant" : getattr (
548+ self , "roll_geometrical_constant" , None
549+ ),
550+ "tau" : getattr (self , "tau" , None ),
551+ "lift_interference_factor" : getattr (
552+ self , "lift_interference_factor" , None
553+ ),
554+ "roll_forcing_interference_factor" : getattr (
555+ self , "roll_forcing_interference_factor" , None
513556 ),
514- "roll_damping_interference_factor" : (
515- self . owner . roll_damping_interference_factor
557+ "roll_damping_interference_factor" : getattr (
558+ self , " roll_damping_interference_factor" , None
516559 ),
517560 }
518561 )
0 commit comments