[Python] Design & build airplanes from your specifications.
Start work on optimized multiprocessing random a/c gen. & eval.
Changed files
- Pipfile
- Pipfile.lock
- aircraftstudio/__init__.py
- aircraftstudio/creator/__init__.py
- aircraftstudio/creator/base.py
- aircraftstudio/creator/fuselage.py
- aircraftstudio/creator/propulsion.py
- aircraftstudio/creator/wing.py
- aircraftstudio/evaluator/__init__.py
- aircraftstudio/evaluator/dP.py
- aircraftstudio/evaluator/drag.py
- aircraftstudio/evaluator/evaluator.py
- aircraftstudio/evaluator/inertia.py
- aircraftstudio/evaluator/lift.py
- aircraftstudio/evaluator/mass.py
- aircraftstudio/generator/__init__.py
- aircraftstudio/generator/generator.py
- creator/__init__.py
- creator/__init__.pyc
- creator/base.py
- creator/fuselage.py
- creator/log_base.txt
- creator/propulsion.py
- creator/wing.py
- evaluator/__init__.py
- evaluator/dP.py
- evaluator/drag.py
- evaluator/evaluator.py
- evaluator/inertia.py
- evaluator/lift.py
- evaluator/mass.py
- example.py
- generator/__init__.py
- generator/generator.py
- log_base.txt
- setup.py
- test/creator_test.py
Pipfile
@@ -6,8 +6,6 @@
6
6
[dev-packages]
7
7
8
8
[packages]
9
Removed:
numpy = "*"
10
Removed:
matplotlib = "*"
11
9
12
10
[requires]
13
Removed:
python_version = "3.7"
11
Added:
python_version = "3.6"
Pipfile.lock
@@ -1,11 +1,11 @@
1
1
{
2
2
"_meta": {
3
3
"hash": {
4
Removed:
"sha256": "a67dca5f16ddc46fb13b6e907c6a3a310410154c905c1fbffcc496db0d7ccd87"
4
Added:
"sha256": "415dfdcb118dd9bdfef17671cb7dcd78dbd69b6ae7d4f39e8b44e71d60ca72e7"
5
5
},
6
6
"pipfile-spec": 6,
7
7
"requires": {
8
Removed:
"python_version": "3.7"
8
Added:
"python_version": "3.6"
9
9
},
10
10
"sources": [
11
11
{
@@ -15,110 +15,6 @@
15
15
}
16
16
]
17
17
},
18
Removed:
"default": {
19
Removed:
"cycler": {
20
Removed:
"hashes": [
21
Removed:
"sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d",
22
Removed:
"sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
23
Removed:
],
24
Removed:
"version": "==0.10.0"
25
Removed:
},
26
Removed:
"kiwisolver": {
27
Removed:
"hashes": [
28
Removed:
"sha256:05b5b061e09f60f56244adc885c4a7867da25ca387376b02c1efc29cc16bcd0f",
29
Removed:
"sha256:26f4fbd6f5e1dabff70a9ba0d2c4bd30761086454aa30dddc5b52764ee4852b7",
30
Removed:
"sha256:3b2378ad387f49cbb328205bda569b9f87288d6bc1bf4cd683c34523a2341efe",
31
Removed:
"sha256:400599c0fe58d21522cae0e8b22318e09d9729451b17ee61ba8e1e7c0346565c",
32
Removed:
"sha256:47b8cb81a7d18dbaf4fed6a61c3cecdb5adec7b4ac292bddb0d016d57e8507d5",
33
Removed:
"sha256:53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75",
34
Removed:
"sha256:58e626e1f7dfbb620d08d457325a4cdac65d1809680009f46bf41eaf74ad0187",
35
Removed:
"sha256:5a52e1b006bfa5be04fe4debbcdd2688432a9af4b207a3f429c74ad625022641",
36
Removed:
"sha256:5c7ca4e449ac9f99b3b9d4693debb1d6d237d1542dd6a56b3305fe8a9620f883",
37
Removed:
"sha256:682e54f0ce8f45981878756d7203fd01e188cc6c8b2c5e2cf03675390b4534d5",
38
Removed:
"sha256:79bfb2f0bd7cbf9ea256612c9523367e5ec51d7cd616ae20ca2c90f575d839a2",
39
Removed:
"sha256:7f4dd50874177d2bb060d74769210f3bce1af87a8c7cf5b37d032ebf94f0aca3",
40
Removed:
"sha256:8944a16020c07b682df861207b7e0efcd2f46c7488619cb55f65882279119389",
41
Removed:
"sha256:8aa7009437640beb2768bfd06da049bad0df85f47ff18426261acecd1cf00897",
42
Removed:
"sha256:939f36f21a8c571686eb491acfffa9c7f1ac345087281b412d63ea39ca14ec4a",
43
Removed:
"sha256:9733b7f64bd9f807832d673355f79703f81f0b3e52bfce420fc00d8cb28c6a6c",
44
Removed:
"sha256:a02f6c3e229d0b7220bd74600e9351e18bc0c361b05f29adae0d10599ae0e326",
45
Removed:
"sha256:a0c0a9f06872330d0dd31b45607197caab3c22777600e88031bfe66799e70bb0",
46
Removed:
"sha256:acc4df99308111585121db217681f1ce0eecb48d3a828a2f9bbf9773f4937e9e",
47
Removed:
"sha256:b64916959e4ae0ac78af7c3e8cef4becee0c0e9694ad477b4c6b3a536de6a544",
48
Removed:
"sha256:d3fcf0819dc3fea58be1fd1ca390851bdb719a549850e708ed858503ff25d995",
49
Removed:
"sha256:d52e3b1868a4e8fd18b5cb15055c76820df514e26aa84cc02f593d99fef6707f",
50
Removed:
"sha256:db1a5d3cc4ae943d674718d6c47d2d82488ddd94b93b9e12d24aabdbfe48caee",
51
Removed:
"sha256:e3a21a720791712ed721c7b95d433e036134de6f18c77dbe96119eaf7aa08004",
52
Removed:
"sha256:e8bf074363ce2babeb4764d94f8e65efd22e6a7c74860a4f05a6947afc020ff2",
53
Removed:
"sha256:f16814a4a96dc04bf1da7d53ee8d5b1d6decfc1a92a63349bb15d37b6a263dd9",
54
Removed:
"sha256:f2b22153870ca5cf2ab9c940d7bc38e8e9089fa0f7e5856ea195e1cf4ff43d5a",
55
Removed:
"sha256:f790f8b3dff3d53453de6a7b7ddd173d2e020fb160baff578d578065b108a05f"
56
Removed:
],
57
Removed:
"version": "==1.1.0"
58
Removed:
},
59
Removed:
"matplotlib": {
60
Removed:
"hashes": [
61
Removed:
"sha256:1febd22afe1489b13c6749ea059d392c03261b2950d1d45c17e3aed812080c93",
62
Removed:
"sha256:31a30d03f39528c79f3a592857be62a08595dec4ac034978ecd0f814fa0eec2d",
63
Removed:
"sha256:4442ce720907f67a79d45de9ada47be81ce17e6c2f448b3c64765af93f6829c9",
64
Removed:
"sha256:796edbd1182cbffa7e1e7a97f1e141f875a8501ba8dd834269ae3cd45a8c976f",
65
Removed:
"sha256:934e6243df7165aad097572abf5b6003c77c9b6c480c3c4de6f2ef1b5fdd4ec0",
66
Removed:
"sha256:bab9d848dbf1517bc58d1f486772e99919b19efef5dd8596d4b26f9f5ee08b6b",
67
Removed:
"sha256:c1fe1e6cdaa53f11f088b7470c2056c0df7d80ee4858dadf6cbe433fcba4323b",
68
Removed:
"sha256:e5b8aeca9276a3a988caebe9f08366ed519fff98f77c6df5b64d7603d0e42e36",
69
Removed:
"sha256:ec6bd0a6a58df3628ff269978f4a4b924a0d371ad8ce1f8e2b635b99e482877a"
70
Removed:
],
71
Removed:
"index": "pypi",
72
Removed:
"version": "==3.1.1"
73
Removed:
},
74
Removed:
"numpy": {
75
Removed:
"hashes": [
76
Removed:
"sha256:0b0dd8f47fb177d00fa6ef2d58783c4f41ad3126b139c91dd2f7c4b3fdf5e9a5",
77
Removed:
"sha256:25ffe71f96878e1da7e014467e19e7db90ae7d4e12affbc73101bcf61785214e",
78
Removed:
"sha256:26efd7f7d755e6ca966a5c0ac5a930a87dbbaab1c51716ac26a38f42ecc9bc4b",
79
Removed:
"sha256:28b1180c758abf34a5c3fea76fcee66a87def1656724c42bb14a6f9717a5bdf7",
80
Removed:
"sha256:2e418f0a59473dac424f888dd57e85f77502a593b207809211c76e5396ae4f5c",
81
Removed:
"sha256:30c84e3a62cfcb9e3066f25226e131451312a044f1fe2040e69ce792cb7de418",
82
Removed:
"sha256:4650d94bb9c947151737ee022b934b7d9a845a7c76e476f3e460f09a0c8c6f39",
83
Removed:
"sha256:4dd830a11e8724c9c9379feed1d1be43113f8bcce55f47ea7186d3946769ce26",
84
Removed:
"sha256:4f2a2b279efde194877aff1f76cf61c68e840db242a5c7169f1ff0fd59a2b1e2",
85
Removed:
"sha256:62d22566b3e3428dfc9ec972014c38ed9a4db4f8969c78f5414012ccd80a149e",
86
Removed:
"sha256:669795516d62f38845c7033679c648903200980d68935baaa17ac5c7ae03ae0c",
87
Removed:
"sha256:75fcd60d682db3e1f8fbe2b8b0c6761937ad56d01c1dc73edf4ef2748d5b6bc4",
88
Removed:
"sha256:9395b0a41e8b7e9a284e3be7060db9d14ad80273841c952c83a5afc241d2bd98",
89
Removed:
"sha256:9e37c35fc4e9410093b04a77d11a34c64bf658565e30df7cbe882056088a91c1",
90
Removed:
"sha256:a0678793096205a4d784bd99f32803ba8100f639cf3b932dc63b21621390ea7e",
91
Removed:
"sha256:b46554ad4dafb2927f88de5a1d207398c5385edbb5c84d30b3ef187c4a3894d8",
92
Removed:
"sha256:c867eeccd934920a800f65c6068acdd6b87e80d45cd8c8beefff783b23cdc462",
93
Removed:
"sha256:dd0667f5be56fb1b570154c2c0516a528e02d50da121bbbb2cbb0b6f87f59bc2",
94
Removed:
"sha256:de2b1c20494bdf47f0160bd88ed05f5e48ae5dc336b8de7cfade71abcc95c0b9",
95
Removed:
"sha256:f1df7b2b7740dd777571c732f98adb5aad5450aee32772f1b39249c8a50386f6",
96
Removed:
"sha256:ffca69e29079f7880c5392bf675eb8b4146479d976ae1924d01cd92b04cccbcc"
97
Removed:
],
98
Removed:
"index": "pypi",
99
Removed:
"version": "==1.17.3"
100
Removed:
},
101
Removed:
"pyparsing": {
102
Removed:
"hashes": [
103
Removed:
"sha256:6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80",
104
Removed:
"sha256:d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4"
105
Removed:
],
106
Removed:
"version": "==2.4.2"
107
Removed:
},
108
Removed:
"python-dateutil": {
109
Removed:
"hashes": [
110
Removed:
"sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb",
111
Removed:
"sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"
112
Removed:
],
113
Removed:
"version": "==2.8.0"
114
Removed:
},
115
Removed:
"six": {
116
Removed:
"hashes": [
117
Removed:
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
118
Removed:
"sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
119
Removed:
],
120
Removed:
"version": "==1.12.0"
121
Removed:
}
122
Removed:
},
18
Added:
"default": {},
123
19
"develop": {}
124
20
}
aircraftstudio/__init__.py
@@ -0,0 +1,1 @@
1
Added:
from . import creator, evaluator, generator
aircraftstudio/creator/__init__.py
@@ -0,0 +1,4 @@
1
Added:
from . import base
2
Added:
from . import fuselage
3
Added:
from . import propulsion
4
Added:
from . import wing
aircraftstudio/creator/base.py
@@ -0,0 +1,112 @@
1
Added:
"""The base.py module contains parent classes for components."""
2
Added:
3
Added:
import numpy as np
4
Added:
import os.path
5
Added:
import random
6
Added:
import logging
7
Added:
8
Added:
from aircraftstudio import creator
9
Added:
10
Added:
logging.basicConfig(filename='log_base.txt',
11
Added:
level=logging.DEBUG,
12
Added:
format='%(asctime)s - %(levelname)s - %(message)s')
13
Added:
14
Added:
15
Added:
class Aircraft:
16
Added:
"""This class tracks all sub-components and is fed to the evaluator."""
17
Added:
name = None
18
Added:
fuselage = None
19
Added:
propulsion = None
20
Added:
wing = None
21
Added:
properties = {}
22
Added:
23
Added:
naca = [2412, 3412, 2420]
24
Added:
25
Added:
def __init__(self):
26
Added:
self.results = {}
27
Added:
28
Added:
def __str__(self):
29
Added:
return self.name
30
Added:
31
Added:
@classmethod
32
Added:
def from_default(cls):
33
Added:
aircraft = Aircraft()
34
Added:
aircraft.name = 'default_aircraft_' + str(random.randrange(1000, 9999))
35
Added:
airfoil = creator.wing.Airfoil(aircraft, 'default_airfoil')
36
Added:
airfoil.add_naca(2412)
37
Added:
soar1 = creator.wing.Spar(airfoil, 'default_spar_1', 0.30)
38
Added:
soar2 = creator.wing.Spar(airfoil, 'default_spar_2', 0.60)
39
Added:
stringer = creator.wing.Stringer(airfoil, 'default_stringer')
40
Added:
return aircraft
41
Added:
42
Added:
@classmethod
43
Added:
def from_random(cls):
44
Added:
aircraft = Aircraft()
45
Added:
aircraft.name = 'random_aircraft_' + str(random.randrange(1000, 9999))
46
Added:
airfoil = creator.wing.Airfoil(aircraft, 'random_airfoil')
47
Added:
airfoil.add_naca(random.choice(cls.naca))
48
Added:
soar1 = creator.wing.Spar(airfoil, 'random_spar_1',
49
Added:
random.randrange(20, 80) / 100)
50
Added:
soar2 = creator.wing.Spar(airfoil, 'random_spar_2',
51
Added:
random.randrange(20, 80) / 100)
52
Added:
stringer = creator.wing.Stringer(airfoil, 'random_stringer',
53
Added:
random.randint(1, 10),
54
Added:
random.randint(1, 10),
55
Added:
random.randint(1, 10),
56
Added:
random.randint(1, 10))
57
Added:
return aircraft
58
Added:
59
Added:
60
Added:
class Component:
61
Added:
"""Basic component providing coordinates, tools and a component tree."""
62
Added:
def __init__(self, parent, name):
63
Added:
self.parent = parent
64
Added:
self.name = name
65
Added:
self.x = np.array([])
66
Added:
self.z = np.array([])
67
Added:
self.y = np.array([])
68
Added:
self.material = None
69
Added:
self.mass = float()
70
Added:
self.properties = {}
71
Added:
72
Added:
def __str__(self):
73
Added:
return self.name
74
Added:
75
Added:
def info_print(self, round):
76
Added:
"""Print all the component's coordinates to the terminal."""
77
Added:
name = f' CREATOR DATA FOR {str(self).upper()} '
78
Added:
num_of_dashes = len(name)
79
Added:
print(num_of_dashes * '-')
80
Added:
print(name)
81
Added:
for k, v in self.__dict__.items():
82
Added:
if type(v) is not np.ndarray:
83
Added:
print(f'{k}:\n', v)
84
Added:
print(num_of_dashes * '-')
85
Added:
for k, v in self.__dict__.items():
86
Added:
if type(v) is np.ndarray:
87
Added:
print(f'{k}:\n', np.around(v, round))
88
Added:
return None
89
Added:
90
Added:
def info_save(self,
91
Added:
save_path='/home/blendux/Projects/Aircraft_Studio/save'):
92
Added:
"""Save all the object's coordinates (must be full path)."""
93
Added:
file_name = f'{self.name}_info.txt'
94
Added:
full_path = os.path.join(save_path, file_name)
95
Added:
try:
96
Added:
with open(full_path, 'w') as f:
97
Added:
for k, v in self.__dict__.items():
98
Added:
if type(v) is not np.ndarray:
99
Added:
f.write(f'{k}=\n')
100
Added:
f.write(str(v))
101
Added:
f.write("\n")
102
Added:
# print(num_of_dashes * '-')
103
Added:
for k, v in self.__dict__.items():
104
Added:
if type(v) is np.ndarray:
105
Added:
f.write(f'{k}=\n')
106
Added:
f.write(str(v))
107
Added:
f.write("\n")
108
Added:
logging.debug(f'Successfully wrote to file {full_path}')
109
Added:
except IOError:
110
Added:
print(f'Unable to write {file_name} to specified directory.\n',
111
Added:
'Was the full path passed to the function?')
112
Added:
return None
aircraftstudio/creator/fuselage.py
aircraftstudio/creator/propulsion.py
aircraftstudio/creator/wing.py
@@ -0,0 +1,312 @@
1
Added:
"""
2
Added:
The wing.py module contains class definitions for and various components
3
Added:
we add to an airfoil (spars, stringers, and ribs).
4
Added:
5
Added:
Classes:
6
Added:
Airfoil: instantiated with class method to provide coordinates to heirs.
7
Added:
Spar: inherits from Airfoil.
8
Added:
Stringer: also inherits from Airfoil.
9
Added:
10
Added:
Functions:
11
Added:
plot_geom(airfoil): generates a 2D plot of the airfoil & any components.
12
Added:
"""
13
Added:
14
Added:
import logging
15
Added:
import numpy as np
16
Added:
from math import sin, cos, atan
17
Added:
import bisect as bi
18
Added:
import matplotlib.pyplot as plt
19
Added:
20
Added:
from aircraftstudio.creator import base
21
Added:
import resources.materials as mt
22
Added:
23
Added:
24
Added:
class Airfoil(base.Component):
25
Added:
"""This class represents a single NACA airfoil.
26
Added:
27
Added:
The coordinates are saved as two np.arrays
28
Added:
for the x- and z-coordinates. The coordinates start at
29
Added:
the leading edge, travel over the airfoil's upper edge,
30
Added:
then loop back to the leading edge via the lower edge.
31
Added:
32
Added:
This method was chosen for easier future exports
33
Added:
to 3D CAD packages like SolidWorks, which can import such
34
Added:
geometry as coordinates written in a CSV file.
35
Added:
"""
36
Added:
def __init__(self,
37
Added:
parent,
38
Added:
name,
39
Added:
chord=68,
40
Added:
semi_span=150,
41
Added:
material=mt.aluminium):
42
Added:
super().__init__(parent, name)
43
Added:
parent.wing = self
44
Added:
if chord > 20:
45
Added:
self.chord = chord
46
Added:
else:
47
Added:
self.chord = 20
48
Added:
logging.debug('Chord too small, using minimum value of 20.')
49
Added:
parent
50
Added:
self.semi_span = semi_span
51
Added:
self.material = material
52
Added:
self.spars = []
53
Added:
self.stringers = []
54
Added:
55
Added:
def add_naca(self, naca_num=2412):
56
Added:
"""Generate surface geometry for a NACA airfoil.
57
Added:
58
Added:
The nested functions perform the required steps to generate geometry,
59
Added:
and can be called to solve the geometry y-coordinate for any 'x' input.
60
Added:
Equation coefficients were retrieved from Wikipedia.org.
61
Added:
62
Added:
Parameters:
63
Added:
naca_num: 4-digit NACA wing
64
Added:
65
Added:
Return:
66
Added:
None
67
Added:
"""
68
Added:
self.naca_num = naca_num
69
Added:
# Variables extracted from naca_num argument passed to the function
70
Added:
m = int(str(naca_num)[0]) / 100
71
Added:
p = int(str(naca_num)[1]) / 10
72
Added:
t = int(str(naca_num)[2:]) / 100
73
Added:
# x-coordinate of maximum camber
74
Added:
p_c = p * self.chord
75
Added:
76
Added:
def get_camber(x):
77
Added:
"""
78
Added:
Returns camber z-coordinate from 1 'x' along the airfoil chord.
79
Added:
"""
80
Added:
z_c = float()
81
Added:
if 0 <= x < p_c:
82
Added:
z_c = (m / (p**2)) * (2 * p * (x / self.chord) -
83
Added:
(x / self.chord)**2)
84
Added:
elif p_c <= x <= self.chord:
85
Added:
z_c = (m /
86
Added:
((1 - p)**2)) * ((1 - 2 * p) + 2 * p *
87
Added:
(x / self.chord) - (x / self.chord)**2)
88
Added:
return (z_c * self.chord)
89
Added:
90
Added:
def get_thickness(x):
91
Added:
"""Return thickness from 1 'x' along the airfoil chord."""
92
Added:
x = 0 if x < 0 else x
93
Added:
z_t = 5 * t * self.chord * (+0.2969 *
94
Added:
(x / self.chord)**0.5 - 0.1260 *
95
Added:
(x / self.chord)**1 - 0.3516 *
96
Added:
(x / self.chord)**2 + 0.2843 *
97
Added:
(x / self.chord)**3 - 0.1015 *
98
Added:
(x / self.chord)**4)
99
Added:
return z_t
100
Added:
101
Added:
def get_theta(x):
102
Added:
dz_c = float()
103
Added:
if 0 <= x < p_c:
104
Added:
dz_c = ((2 * m) / p**2) * (p - x / self.chord)
105
Added:
elif p_c <= x <= self.chord:
106
Added:
dz_c = (2 * m) / ((1 - p)**2) * (p - x / self.chord)
107
Added:
108
Added:
theta = atan(dz_c)
109
Added:
return theta
110
Added:
111
Added:
def get_coord_u(x):
112
Added:
x = x - get_thickness(x) * sin(get_theta(x))
113
Added:
z = get_camber(x) + get_thickness(x) * cos(get_theta(x))
114
Added:
return (x, z)
115
Added:
116
Added:
def get_coord_l(x):
117
Added:
x = x + get_thickness(x) * sin(get_theta(x))
118
Added:
z = get_camber(x) - get_thickness(x) * cos(get_theta(x))
119
Added:
return (x, z)
120
Added:
121
Added:
# Densify x-coordinates 10 times for first 1/4 chord length
122
Added:
x_chord_25_percent = round(self.chord / 4)
123
Added:
x_chord = [i / 10 for i in range(x_chord_25_percent * 10)]
124
Added:
x_chord.extend(i for i in range(x_chord_25_percent, self.chord + 1))
125
Added:
# Generate our airfoil skin geometry from previous sub-functions
126
Added:
self.x_c = np.array([])
127
Added:
self.z_c = np.array([])
128
Added:
# Upper surface and camber line
129
Added:
for x in x_chord:
130
Added:
self.x_c = np.append(self.x_c, x)
131
Added:
self.z_c = np.append(self.z_c, get_camber(x))
132
Added:
self.x = np.append(self.x, get_coord_u(x)[0])
133
Added:
self.z = np.append(self.z, get_coord_u(x)[1])
134
Added:
# Lower surface
135
Added:
for x in x_chord[::-1]:
136
Added:
self.x = np.append(self.x, get_coord_l(x)[0])
137
Added:
self.z = np.append(self.z, get_coord_l(x)[1])
138
Added:
return None
139
Added:
140
Added:
141
Added:
class Spar(base.Component):
142
Added:
"""Contains a single spar's data."""
143
Added:
def __init__(self, parent, name, loc_percent=0.30, material=mt.aluminium):
144
Added:
"""Set spar location as percent of chord length."""
145
Added:
super().__init__(parent, name)
146
Added:
parent.spars.append(self)
147
Added:
self.material = material
148
Added:
self.cap_area = float()
149
Added:
# bi.bisect_left: returns index of first value in parent.x > loc
150
Added:
# This ensures that spar geom intersects with airfoil geom.
151
Added:
loc = loc_percent * parent.chord
152
Added:
# Spar upper coordinates
153
Added:
spar_u = bi.bisect_left(parent.x, loc) - 1
154
Added:
self.x = np.append(self.x, parent.x[spar_u])
155
Added:
self.z = np.append(self.z, parent.z[spar_u])
156
Added:
# Spar lower coordinates
157
Added:
spar_l = bi.bisect_left(parent.x[::-1], loc)
158
Added:
self.x = np.append(self.x, parent.x[-spar_l])
159
Added:
self.z = np.append(self.z, parent.z[-spar_l])
160
Added:
return None
161
Added:
162
Added:
def set_cap_area(self, cap_area):
163
Added:
self.cap_area = cap_area
164
Added:
return None
165
Added:
166
Added:
def set_mass(self, mass):
167
Added:
self.mass = mass
168
Added:
return None
169
Added:
170
Added:
171
Added:
class Stringer(base.Component):
172
Added:
"""Contains the coordinates of all stringers."""
173
Added:
def __init__(self,
174
Added:
parent,
175
Added:
name,
176
Added:
den_u_1=4,
177
Added:
den_u_2=4,
178
Added:
den_l_1=4,
179
Added:
den_l_2=4):
180
Added:
"""Add equally distributed stringers to four airfoil locations
181
Added:
(upper nose, lower nose, upper surface, lower surface).
182
Added:
183
Added:
den_u_1: upper nose number of stringers
184
Added:
den_u_2: upper surface number of stringers
185
Added:
den_l_1: lower nose number of stringers
186
Added:
den_l_2: lower surface number of stringers
187
Added:
"""
188
Added:
super().__init__(parent, name)
189
Added:
parent.stringers = self
190
Added:
self.x_start = []
191
Added:
self.x_end = []
192
Added:
self.z_start = []
193
Added:
self.z_end = []
194
Added:
self.diameter = float()
195
Added:
self.area = float()
196
Added:
197
Added:
# Find distance between leading edge and first upper stringer
198
Added:
# interval = self.parent.spars[0].x[0] / (den_u_1 + 1)
199
Added:
interval = 2
200
Added:
# initialise first self.stringer_x at first interval
201
Added:
x = interval
202
Added:
# Add upper stringers from leading edge until first spar.
203
Added:
for _ in range(0, den_u_1):
204
Added:
# Index of the first value of airfoil.x > x
205
Added:
i = bi.bisect_left(self.parent.x, x)
206
Added:
self.x = np.append(self.x, self.parent.x[i])
207
Added:
self.z = np.append(self.z, self.parent.z[i])
208
Added:
x += interval
209
Added:
# Add upper stringers from first spar until last spar
210
Added:
interval = (self.parent.spars[-1].x[0] -
211
Added:
self.parent.spars[0].x[0]) / (den_u_2 + 1)
212
Added:
x = interval + self.parent.spars[0].x[0]
213
Added:
for _ in range(0, den_u_2):
214
Added:
i = bi.bisect_left(self.parent.x, x)
215
Added:
self.x = np.append(self.x, self.parent.x[i])
216
Added:
self.z = np.append(self.z, self.parent.z[i])
217
Added:
x += interval
218
Added:
219
Added:
# Find distance between leading edge and first lower stringer
220
Added:
interval = self.parent.spars[0].x[1] / (den_l_1 + 1)
221
Added:
x = interval
222
Added:
# Add lower stringers from leading edge until first spar.
223
Added:
for _ in range(0, den_l_1):
224
Added:
i = bi.bisect_left(self.parent.x[::-1], x)
225
Added:
self.x = np.append(self.x, self.parent.x[-i])
226
Added:
self.z = np.append(self.z, self.parent.z[-i])
227
Added:
x += interval
228
Added:
# Add lower stringers from first spar until last spar
229
Added:
interval = (self.parent.spars[-1].x[1] -
230
Added:
self.parent.spars[0].x[1]) / (den_l_2 + 1)
231
Added:
x = interval + self.parent.spars[0].x[1]
232
Added:
for _ in range(0, den_l_2):
233
Added:
i = bi.bisect_left(self.parent.x[::-1], x)
234
Added:
self.x = np.append(self.x, self.parent.x[-i])
235
Added:
self.z = np.append(self.z, self.parent.z[-i])
236
Added:
x += interval
237
Added:
return None
238
Added:
239
Added:
def add_area(self, area):
240
Added:
self.area = area
241
Added:
return None
242
Added:
243
Added:
def add_mass(self, mass):
244
Added:
self.mass = len(self.x) * mass + len(self.x) * mass
245
Added:
return None
246
Added:
247
Added:
def add_webs(self, thickness):
248
Added:
"""Add webs to stringers."""
249
Added:
for _ in range(len(self.x) // 2):
250
Added:
self.x_start.append(self.x[_])
251
Added:
self.x_end.append(self.x[_ + 1])
252
Added:
self.z_start.append(self.z[_])
253
Added:
self.z_end.append(self.z[_ + 1])
254
Added:
self.thickness = thickness
255
Added:
return None
256
Added:
257
Added:
def info_print(self, round=2):
258
Added:
super().info_print(round)
259
Added:
print('Stringer Area:\n', np.around(self.area, round))
260
Added:
return None
261
Added:
262
Added:
263
Added:
def plot_geom(airfoil):
264
Added:
"""This function plots the airfoil's + sub-components' geometry."""
265
Added:
fig, ax = plt.subplots()
266
Added:
267
Added:
# Plot chord
268
Added:
x = [0, airfoil.chord]
269
Added:
y = [0, 0]
270
Added:
ax.plot(x, y, linewidth='1')
271
Added:
# Plot quarter chord
272
Added:
ax.plot(airfoil.chord / 4,
273
Added:
0,
274
Added:
'.',
275
Added:
color='g',
276
Added:
markersize=24,
277
Added:
label='Quarter-chord')
278
Added:
# Plot mean camber line
279
Added:
ax.plot(airfoil.x_c,
280
Added:
airfoil.z_c,
281
Added:
'-.',
282
Added:
color='r',
283
Added:
linewidth='2',
284
Added:
label='Mean camber line')
285
Added:
# Plot airfoil surfaces
286
Added:
ax.plot(airfoil.x, airfoil.z, color='b', linewidth='1')
287
Added:
288
Added:
try: # Plot spars
289
Added:
for spar in airfoil.spars:
290
Added:
x = (spar.x)
291
Added:
y = (spar.z)
292
Added:
ax.plot(x, y, '-', color='y', linewidth='4')
293
Added:
except AttributeError:
294
Added:
print('No spars to plot.')
295
Added:
try: # Plot stringers
296
Added:
for i in range(len(airfoil.stringers.x)):
297
Added:
x = airfoil.stringers.x[i]
298
Added:
y = airfoil.stringers.z[i]
299
Added:
ax.plot(x, y, '.', color='y', markersize=12)
300
Added:
except AttributeError:
301
Added:
print('No stringers to plot.')
302
Added:
303
Added:
ax.set(title='NACA ' + str(airfoil.naca_num) + ' airfoil',
304
Added:
xlabel='X axis',
305
Added:
ylabel='Z axis')
306
Added:
307
Added:
plt.grid(axis='both', linestyle=':', linewidth=1)
308
Added:
plt.gca().set_aspect('equal', adjustable='box')
309
Added:
plt.gca().legend(bbox_to_anchor=(1, 1),
310
Added:
bbox_transform=plt.gcf().transFigure)
311
Added:
plt.show()
312
Added:
return fig, ax
aircraftstudio/evaluator/__init__.py
@@ -0,0 +1,1 @@
1
Added:
from .evaluator import *
aircraftstudio/evaluator/dP.py
@@ -0,0 +1,18 @@
1
Added:
def get_dx(self, component):
2
Added:
return [x - self.centroid[0] for x in component.x_start]
3
Added:
4
Added:
5
Added:
def get_dz(self, component):
6
Added:
return [x - self.centroid[1] for x in component.x_start]
7
Added:
8
Added:
9
Added:
def get_dP(self, xDist, zDist, V_x, V_z, area):
10
Added:
I_x = self.I_['x']
11
Added:
I_z = self.I_['z']
12
Added:
I_xz = self.I_['xz']
13
Added:
denom = float(I_x * I_z - I_xz**2)
14
Added:
z = float()
15
Added:
for _ in range(len(xDist)):
16
Added:
z += float(-area * xDist[_] * (I_x * V_x - I_xz * V_z) / denom -
17
Added:
area * zDist[_] * (I_z * V_z - I_xz * V_x) / denom)
18
Added:
return z
aircraftstudio/evaluator/drag.py
@@ -0,0 +1,18 @@
1
Added:
import random
2
Added:
3
Added:
def get_drag(aircraft, drag):
4
Added:
# Transform semi-span integer into list
5
Added:
semi_span = [x for x in range(0, aircraft.wing.semi_span)]
6
Added:
7
Added:
# Drag increases after 80% of the semi_span
8
Added:
cutoff = round(0.8 * aircraft.wing.span)
9
Added:
10
Added:
# Drag increases by 25% after 80% of the semi_span
11
Added:
F_x = [drag for x in semi_span[0:cutoff]]
12
Added:
F_x.extend([1.25 * drag for x in semi_span[cutoff:]])
13
Added:
return F_x
14
Added:
15
Added:
16
Added:
def get_drag_total(aircraft):
17
Added:
"""Get total drag force acting on the aircraft."""
18
Added:
return random.random() * 100
aircraftstudio/evaluator/evaluator.py
@@ -0,0 +1,195 @@
1
Added:
"""
2
Added:
The evaluator.py module contains functions
3
Added:
that return calculated data for an aircraft.
4
Added:
Plotting aircraft components is also possible.
5
Added:
"""
6
Added:
7
Added:
import os.path
8
Added:
import concurrent.futures
9
Added:
import matplotlib.pyplot as plt
10
Added:
11
Added:
from . import drag, inertia, lift, mass
12
Added:
13
Added:
14
Added:
def analyze(aircraft):
15
Added:
"""Analyze a single aircraft."""
16
Added:
results = {
17
Added:
'Lift': lift.get_lift_total(aircraft),
18
Added:
'Drag': drag.get_drag_total(aircraft),
19
Added:
'Mass': mass.get_mass_total(aircraft),
20
Added:
'Centroid': inertia.get_centroid(aircraft)
21
Added:
}
22
Added:
aircraft.results = results
23
Added:
return aircraft.name, results
24
Added:
25
Added:
26
Added:
def analyze_all(population):
27
Added:
"""Analyze all aircraft in a given population."""
28
Added:
# for aircraft in population.aircrafts:
29
Added:
# print(analyze(aircraft))
30
Added:
with concurrent.futures.ProcessPoolExecutor() as executor:
31
Added:
results = executor.map(analyze, population.aircrafts)
32
Added:
for result in results:
33
Added:
print(result)
34
Added:
return None
35
Added:
36
Added:
# def analysis(self, V_x, V_z):
37
Added:
# """Perform all analysis calculations and store in class instance."""
38
Added:
39
Added:
# self.drag = self.get_drag(10)
40
Added:
# self.lift_rectangular = self.get_lift_rectangular(13.7)
41
Added:
# self.lift_elliptical = self.get_lift_elliptical(15)
42
Added:
# self.lift_total = self.get_lift_total()
43
Added:
# self.mass_dist = self.get_mass_distribution(self.mass_total)
44
Added:
# self.centroid = self.get_centroid()
45
Added:
# self.I_['x'] = self.get_inertia_terms()[0]
46
Added:
# self.I_['z'] = self.get_inertia_terms()[1]
47
Added:
# self.I_['xz'] = self.get_inertia_terms()[2]
48
Added:
# spar_dx = self.get_dx(self.spar)
49
Added:
# spar_dz = self.get_dz(self.spar)
50
Added:
# self.spar.dP_x = self.get_dP(spar_dx, spar_dz, V_x, 0,
51
Added:
# self.spar.cap_area)
52
Added:
# self.spar.dP_z = self.get_dP(spar_dx, spar_dz, 0, V_z,
53
Added:
# self.spar.cap_area)
54
Added:
# print("yayyyyy")
55
Added:
# return None
56
Added:
57
Added:
# print(f"Analysis results for {aircraft.name}:\n", results)
58
Added:
# self.results = self.get_lift_total(aircraft)
59
Added:
60
Added:
# self.drag = self.get_drag(10)
61
Added:
# self.lift_rectangular = self.get_lift_rectangular(13.7)
62
Added:
# self.lift_elliptical = self.get_lift_elliptical(15)
63
Added:
# self.lift_total = self.get_lift_total()
64
Added:
# self.mass_dist = self.get_mass_distribution(self.mass_total)
65
Added:
# self.centroid = self.get_centroid()
66
Added:
# self.I_['x'] = self.get_inertia_terms()[0]
67
Added:
# self.I_['z'] = self.get_inertia_terms()[1]
68
Added:
# self.I_['xz'] = self.get_inertia_terms()[2]
69
Added:
# spar_dx = self.get_dx(self.spar)
70
Added:
# spar_dz = self.get_dz(self.spar)
71
Added:
# self.spar.dP_x = self.get_dP(spar_dx, spar_dz, V_x, 0,
72
Added:
# self.spar.cap_area)
73
Added:
# self.spar.dP_z = self.get_dP(spar_dx, spar_dz, 0, V_z,
74
Added:
# self.spar.cap_area)
75
Added:
# return None
76
Added:
77
Added:
def tree_print(self, population):
78
Added:
"""Print the list of subcomponents."""
79
Added:
name = f" TREE FOR {[i.name for i in population.aircraft]} IN {self.name} "
80
Added:
num_of_dashes = len(name)
81
Added:
print(num_of_dashes * '-')
82
Added:
print(name)
83
Added:
for aircraft in population:
84
Added:
print(".")
85
Added:
print(f"`-- {aircraft}")
86
Added:
print(f" |--{aircraft.wing}")
87
Added:
print(f" | |-- {aircraft.wing.stringers}")
88
Added:
for spar in aircraft.wing.spars[:-1]:
89
Added:
print(f" | |-- {spar}")
90
Added:
print(f" | `-- {aircraft.wing.spars[-1]}")
91
Added:
print(f" |-- {aircraft.fuselage}")
92
Added:
print(f" `-- {aircraft.propulsion}")
93
Added:
print(num_of_dashes * '-')
94
Added:
return None
95
Added:
96
Added:
def tree_save(self,
97
Added:
population,
98
Added:
save_path='/home/blendux/Projects/Aircraft_Studio/save'):
99
Added:
"""Save the evaluator's tree to a file."""
100
Added:
for aircraft in population.aircraft:
101
Added:
file_name = f"{aircraft.name}_tree.txt"
102
Added:
full_path = os.path.join(save_path, file_name)
103
Added:
with open(full_path, 'w') as f:
104
Added:
try:
105
Added:
f.write(".\n")
106
Added:
f.write(f"`-- {aircraft}\n")
107
Added:
f.write(f" |--{aircraft.wing}\n")
108
Added:
for spar in aircraft.wing.spars[:-1]:
109
Added:
f.write(f" | |-- {spar}\n")
110
Added:
f.write(f" | `-- {aircraft.wing.spars[-1]}\n")
111
Added:
f.write(f" |-- {aircraft.fuselage}\n")
112
Added:
f.write(f" `-- {aircraft.propulsion}\n")
113
Added:
logging.debug(f'Successfully wrote to file {full_path}')
114
Added:
115
Added:
except IOError:
116
Added:
print(
117
Added:
f'Unable to write {file_name} to specified directory.',
118
Added:
'Was the full path passed to the function?')
119
Added:
return None
120
Added:
121
Added:
122
Added:
def plot_geom(evaluator):
123
Added:
"""This function plots analysis results over the airfoil's geometry."""
124
Added:
# Plot chord
125
Added:
x_chord = [0, evaluator.chord]
126
Added:
y_chord = [0, 0]
127
Added:
plt.plot(x_chord, y_chord, linewidth='1')
128
Added:
# Plot quarter chord
129
Added:
plt.plot(evaluator.chord / 4,
130
Added:
0,
131
Added:
'.',
132
Added:
color='g',
133
Added:
markersize=24,
134
Added:
label='Quarter-chord')
135
Added:
# Plot airfoil surfaces
136
Added:
x = [0.98 * x for x in evaluator.airfoil.x]
137
Added:
y = [0.98 * z for z in evaluator.airfoil.z]
138
Added:
plt.fill(x, y, color='w', linewidth='1', fill=False)
139
Added:
x = [1.02 * x for x in evaluator.airfoil.x]
140
Added:
y = [1.02 * z for z in evaluator.airfoil.z]
141
Added:
plt.fill(x, y, color='b', linewidth='1', fill=False)
142
Added:
143
Added:
# Plot spars
144
Added:
try:
145
Added:
for _ in range(len(evaluator.spar.x)):
146
Added:
x = (evaluator.spar.x[_])
147
Added:
y = (evaluator.spar.z[_])
148
Added:
plt.plot(x, y, '-', color='b')
149
Added:
except AttributeError:
150
Added:
print('No spars to plot.')
151
Added:
# Plot stringers
152
Added:
try:
153
Added:
for _ in range(0, len(evaluator.stringer.x)):
154
Added:
x = evaluator.stringer.x[_]
155
Added:
y = evaluator.stringer.z[_]
156
Added:
plt.plot(x, y, '.', color='y', markersize=12)
157
Added:
except AttributeError:
158
Added:
print('No stringers to plot.')
159
Added:
160
Added:
# Plot centroid
161
Added:
x = evaluator.centroid[0]
162
Added:
y = evaluator.centroid[1]
163
Added:
plt.plot(x, y, '.', color='r', markersize=24, label='centroid')
164
Added:
165
Added:
# Graph formatting
166
Added:
plt.xlabel('X axis')
167
Added:
plt.ylabel('Z axis')
168
Added:
169
Added:
plot_bound = max(evaluator.airfoil.x)
170
Added:
plt.xlim(-0.10 * plot_bound, 1.10 * plot_bound)
171
Added:
plt.ylim(-(1.10 * plot_bound / 2), (1.10 * plot_bound / 2))
172
Added:
plt.gca().set_aspect('equal', adjustable='box')
173
Added:
plt.gca().legend()
174
Added:
plt.grid(axis='both', linestyle=':', linewidth=1)
175
Added:
plt.show()
176
Added:
return None
177
Added:
178
Added:
179
Added:
def plot_lift(evaluator):
180
Added:
x = range(evaluator.semi_span)
181
Added:
y_1 = evaluator.lift_rectangular
182
Added:
y_2 = evaluator.lift_elliptical
183
Added:
y_3 = evaluator.lift_total
184
Added:
plt.plot(x, y_1, '.', color='b', markersize=4, label='Rectangular lift')
185
Added:
plt.plot(x, y_2, '.', color='g', markersize=4, label='Elliptical lift')
186
Added:
plt.plot(x, y_3, '.', color='r', markersize=4, label='Total lift')
187
Added:
188
Added:
# Graph formatting
189
Added:
plt.xlabel('Semi-span location')
190
Added:
plt.ylabel('Lift')
191
Added:
192
Added:
plt.gca().legend()
193
Added:
plt.grid(axis='both', linestyle=':', linewidth=1)
194
Added:
plt.show()
195
Added:
return None
aircraftstudio/evaluator/inertia.py
@@ -0,0 +1,66 @@
1
Added:
def get_centroid(aircraft):
2
Added:
"""Return the coordinates of the centroid."""
3
Added:
# stringer_area = aircraft.wing.stringers.area
4
Added:
# cap_area = aircraft.wing.spars.cap_area
5
Added:
6
Added:
# TODO: Fix this
7
Added:
# caps_x = [value for spar in aircraft.wing.spars.x for value in spar]
8
Added:
# caps_z = [value for spar in aircraft.wing.spars.z for value in spar]
9
Added:
# stringers_x = aircraft.wing.stringers.x
10
Added:
# stringers_z = aircraft.wing.stringers.z
11
Added:
12
Added:
# denominator = float(
13
Added:
# len(caps_x) * cap_area + len(stringers_x) * stringer_area)
14
Added:
15
Added:
# centroid_x = float(
16
Added:
# sum([x * cap_area
17
Added:
# for x in caps_x]) + sum([x * stringer_area for x in stringers_x]))
18
Added:
# centroid_x = centroid_x / denominator
19
Added:
20
Added:
# centroid_z = float(
21
Added:
# sum([z * cap_area
22
Added:
# for z in caps_z]) + sum([z * stringer_area for z in stringers_z]))
23
Added:
# centroid_z = centroid_z / denominator
24
Added:
25
Added:
# return (centroid_x, centroid_z)
26
Added:
return (200, 420)
27
Added:
28
Added:
29
Added:
def get_inertia_terms(self):
30
Added:
"""Obtain all inertia terms."""
31
Added:
stringer_area = self.stringer.area
32
Added:
cap_area = self.spar.cap_area
33
Added:
34
Added:
# Adds upper and lower components' coordinates to list
35
Added:
x_stringers = self.stringer.x
36
Added:
z_stringers = self.stringer.z
37
Added:
x_spars = self.spar.x[:][0] + self.spar.x[:][1]
38
Added:
z_spars = self.spar.z[:][0] + self.spar.z[:][1]
39
Added:
stringer_count = range(len(x_stringers))
40
Added:
spar_count = range(len(self.spar.x))
41
Added:
42
Added:
# I_x is the sum of the contributions of the spar caps and stringers
43
Added:
# TODO: replace list indices with dictionary value
44
Added:
I_x = sum(
45
Added:
[cap_area * (z_spars[i] - self.centroid[1])**2 for i in spar_count])
46
Added:
I_x += sum([
47
Added:
stringer_area * (z_stringers[i] - self.centroid[1])**2
48
Added:
for i in stringer_count
49
Added:
])
50
Added:
51
Added:
I_z = sum(
52
Added:
[cap_area * (x_spars[i] - self.centroid[0])**2 for i in spar_count])
53
Added:
I_z += sum([
54
Added:
stringer_area * (x_stringers[i] - self.centroid[0])**2
55
Added:
for i in stringer_count
56
Added:
])
57
Added:
58
Added:
I_xz = sum([
59
Added:
cap_area * (x_spars[i] - self.centroid[0]) *
60
Added:
(z_spars[i] - self.centroid[1]) for i in spar_count
61
Added:
])
62
Added:
I_xz += sum([
63
Added:
stringer_area * (x_stringers[i] - self.centroid[0]) *
64
Added:
(z_stringers[i] - self.centroid[1]) for i in stringer_count
65
Added:
])
66
Added:
return (I_x, I_z, I_xz)
aircraftstudio/evaluator/lift.py
@@ -0,0 +1,30 @@
1
Added:
import numpy as np
2
Added:
from math import sqrt
3
Added:
4
Added:
5
Added:
def _get_lift_rectangular(aircraft, lift=50):
6
Added:
L_prime = np.array([
7
Added:
lift / (aircraft.wing.semi_span * 2)
8
Added:
for _ in range(aircraft.wing.semi_span)
9
Added:
])
10
Added:
return L_prime
11
Added:
12
Added:
13
Added:
def _get_lift_elliptical(aircraft, L_0=3.2):
14
Added:
L_prime = np.array([
15
Added:
0.5 * L_0 / (aircraft.wing.semi_span * 2) *
16
Added:
sqrt(1 - (y / aircraft.wing.semi_span)**2)
17
Added:
for y in range(aircraft.wing.semi_span)
18
Added:
])
19
Added:
return L_prime
20
Added:
21
Added:
22
Added:
def get_lift_total(aircraft):
23
Added:
"""Combination of rectangular and elliptical lift."""
24
Added:
# F_z = self._get_lift_rectangular(aircraft) + self._get_lift_elliptical(
25
Added:
# aircraft)
26
Added:
# F_z = self._get_lift_rectangular(
27
Added:
# aircraft) + self._get_lift_elliptical(aircraft) / 2
28
Added:
# F_z = [i + j for i, j in self._get_lift_rectangular]
29
Added:
# return F_z
30
Added:
return 400
aircraftstudio/evaluator/mass.py
@@ -0,0 +1,8 @@
1
Added:
def get_mass_distribution(self, total_mass):
2
Added:
F_z = [total_mass / self.semi_span for x in range(0, self.semi_span)]
3
Added:
return F_z
4
Added:
5
Added:
6
Added:
def get_mass_total(aircraft):
7
Added:
"""Get the total aircraft mass."""
8
Added:
return 2000
aircraftstudio/generator/__init__.py
@@ -0,0 +1,1 @@
1
Added:
from .generator import *
aircraftstudio/generator/generator.py
@@ -0,0 +1,43 @@
1
Added:
"""
2
Added:
The generator.py module contains classes describing genetic populations
3
Added:
and methods to generate default aircraft.
4
Added:
"""
5
Added:
6
Added:
from aircraftstudio import creator
7
Added:
8
Added:
9
Added:
def default_fuselage():
10
Added:
pass
11
Added:
12
Added:
13
Added:
def default_propulsion():
14
Added:
pass
15
Added:
16
Added:
17
Added:
class Population():
18
Added:
"""Represents a collection of aircraft."""
19
Added:
def __init__(self, size):
20
Added:
self.aircrafts = []
21
Added:
for _ in range(size):
22
Added:
self.aircrafts.append(creator.base.Aircraft.from_random())
23
Added:
self.size = size
24
Added:
self.results = None
25
Added:
self.gen_number = 0 # incremented for every generation
26
Added:
27
Added:
#TODO class methods for default and random population
28
Added:
# def from_default(self, size):
29
Added:
# for i in range(size):
30
Added:
# self.aircrafts.append(creator.base.Aircraft.from_default())
31
Added:
32
Added:
# def from_random(self, size):
33
Added:
# for i in range(size):
34
Added:
# self.aircrafts.append(creator.base.Aircraft.from_random())
35
Added:
36
Added:
def mutate(self, prob_mt):
37
Added:
"""Randomly mutate the genes of prob_mt % of the population."""
38
Added:
def crossover(self, prob_cx):
39
Added:
"""Combine the genes of prob_cx % of the population."""
40
Added:
def reproduce(self, prob_rp):
41
Added:
"""Pass on the genes of the fittest prob_rp % of the population."""
42
Added:
def fitness():
43
Added:
"""Rate the fitness of an individual on a relative scale (0-100)"""
creator/__init__.py
@@ -1,4 +0,0 @@
1
Removed:
from . import base
2
Removed:
from . import fuselage
3
Removed:
from . import propulsion
4
Removed:
from . import wing
creator/__init__.pyc
Binary files differ
creator/base.py
@@ -1,93 +0,0 @@
1
Removed:
"""The base.py module contains parent classes for components."""
2
Removed:
3
Removed:
import numpy as np
4
Removed:
import os.path
5
Removed:
import random
6
Removed:
import logging
7
Removed:
8
Removed:
import creator
9
Removed:
10
Removed:
logging.basicConfig(filename='log_base.txt',
11
Removed:
level=logging.DEBUG,
12
Removed:
format='%(asctime)s - %(levelname)s - %(message)s')
13
Removed:
14
Removed:
15
Removed:
class Aircraft:
16
Removed:
"""This class tracks all sub-components and is fed to the evaluator."""
17
Removed:
name = None
18
Removed:
fuselage = None
19
Removed:
propulsion = None
20
Removed:
wing = None
21
Removed:
properties = {}
22
Removed:
23
Removed:
def __init__(self):
24
Removed:
self.results = {}
25
Removed:
26
Removed:
def __str__(self):
27
Removed:
return self.name
28
Removed:
29
Removed:
@classmethod
30
Removed:
def from_default(cls):
31
Removed:
aircraft = creator.base.Aircraft()
32
Removed:
aircraft.name = 'default_aircraft_' + str(random.randrange(1000, 9999))
33
Removed:
airfoil = creator.wing.Airfoil(aircraft, 'default_airfoil')
34
Removed:
airfoil.add_naca(2412)
35
Removed:
soar1 = creator.wing.Spar(airfoil, 'default_spar_1', 0.30)
36
Removed:
soar2 = creator.wing.Spar(airfoil, 'default_spar_2', 0.60)
37
Removed:
stringer = creator.wing.Stringer(airfoil, 'default_stringer')
38
Removed:
return aircraft
39
Removed:
40
Removed:
41
Removed:
class Component:
42
Removed:
"""Basic component providing coordinates, tools and a component tree."""
43
Removed:
def __init__(self, parent, name):
44
Removed:
self.parent = parent
45
Removed:
self.name = name
46
Removed:
self.x = np.array([])
47
Removed:
self.z = np.array([])
48
Removed:
self.y = np.array([])
49
Removed:
self.material = None
50
Removed:
self.mass = float()
51
Removed:
self.properties = {}
52
Removed:
53
Removed:
def __str__(self):
54
Removed:
return self.name
55
Removed:
56
Removed:
def info_print(self, round):
57
Removed:
"""Print all the component's coordinates to the terminal."""
58
Removed:
name = f' CREATOR DATA FOR {str(self).upper()} '
59
Removed:
num_of_dashes = len(name)
60
Removed:
print(num_of_dashes * '-')
61
Removed:
print(name)
62
Removed:
for k, v in self.__dict__.items():
63
Removed:
if type(v) is not np.ndarray:
64
Removed:
print(f'{k}:\n', v)
65
Removed:
print(num_of_dashes * '-')
66
Removed:
for k, v in self.__dict__.items():
67
Removed:
if type(v) is np.ndarray:
68
Removed:
print(f'{k}:\n', np.around(v, round))
69
Removed:
return None
70
Removed:
71
Removed:
def info_save(self,
72
Removed:
save_path='/home/blendux/Projects/Aircraft_Studio/save'):
73
Removed:
"""Save all the object's coordinates (must be full path)."""
74
Removed:
file_name = f'{self.name}_info.txt'
75
Removed:
full_path = os.path.join(save_path, file_name)
76
Removed:
try:
77
Removed:
with open(full_path, 'w') as f:
78
Removed:
for k, v in self.__dict__.items():
79
Removed:
if type(v) is not np.ndarray:
80
Removed:
f.write(f'{k}=\n')
81
Removed:
f.write(str(v))
82
Removed:
f.write("\n")
83
Removed:
# print(num_of_dashes * '-')
84
Removed:
for k, v in self.__dict__.items():
85
Removed:
if type(v) is np.ndarray:
86
Removed:
f.write(f'{k}=\n')
87
Removed:
f.write(str(v))
88
Removed:
f.write("\n")
89
Removed:
logging.debug(f'Successfully wrote to file {full_path}')
90
Removed:
except IOError:
91
Removed:
print(f'Unable to write {file_name} to specified directory.\n',
92
Removed:
'Was the full path passed to the function?')
93
Removed:
return None
creator/fuselage.py
creator/log_base.txt
creator/propulsion.py
creator/wing.py
@@ -1,312 +0,0 @@
1
Removed:
"""
2
Removed:
The wing.py module contains class definitions for and various components
3
Removed:
we add to an airfoil (spars, stringers, and ribs).
4
Removed:
5
Removed:
Classes:
6
Removed:
Airfoil: instantiated with class method to provide coordinates to heirs.
7
Removed:
Spar: inherits from Airfoil.
8
Removed:
Stringer: also inherits from Airfoil.
9
Removed:
10
Removed:
Functions:
11
Removed:
plot_geom(airfoil): generates a 2D plot of the airfoil & any components.
12
Removed:
"""
13
Removed:
14
Removed:
import logging
15
Removed:
import numpy as np
16
Removed:
from math import sin, cos, atan
17
Removed:
import bisect as bi
18
Removed:
import matplotlib.pyplot as plt
19
Removed:
20
Removed:
import creator.base as base
21
Removed:
import resources.materials as mt
22
Removed:
23
Removed:
24
Removed:
class Airfoil(base.Component):
25
Removed:
"""This class represents a single NACA airfoil.
26
Removed:
27
Removed:
The coordinates are saved as two np.arrays
28
Removed:
for the x- and z-coordinates. The coordinates start at
29
Removed:
the leading edge, travel over the airfoil's upper edge,
30
Removed:
then loop back to the leading edge via the lower edge.
31
Removed:
32
Removed:
This method was chosen for easier future exports
33
Removed:
to 3D CAD packages like SolidWorks, which can import such
34
Removed:
geometry as coordinates written in a CSV file.
35
Removed:
"""
36
Removed:
def __init__(self,
37
Removed:
parent,
38
Removed:
name,
39
Removed:
chord=68,
40
Removed:
semi_span=150,
41
Removed:
material=mt.aluminium):
42
Removed:
super().__init__(parent, name)
43
Removed:
parent.wing = self
44
Removed:
if chord > 20:
45
Removed:
self.chord = chord
46
Removed:
else:
47
Removed:
self.chord = 20
48
Removed:
logging.debug('Chord too small, using minimum value of 20.')
49
Removed:
parent
50
Removed:
self.semi_span = semi_span
51
Removed:
self.material = material
52
Removed:
self.spars = []
53
Removed:
self.stringers = []
54
Removed:
55
Removed:
def add_naca(self, naca_num=2412):
56
Removed:
"""Generate surface geometry for a NACA airfoil.
57
Removed:
58
Removed:
The nested functions perform the required steps to generate geometry,
59
Removed:
and can be called to solve the geometry y-coordinate for any 'x' input.
60
Removed:
Equation coefficients were retrieved from Wikipedia.org.
61
Removed:
62
Removed:
Parameters:
63
Removed:
naca_num: 4-digit NACA wing
64
Removed:
65
Removed:
Return:
66
Removed:
None
67
Removed:
"""
68
Removed:
self.naca_num = naca_num
69
Removed:
# Variables extracted from naca_num argument passed to the function
70
Removed:
m = int(str(naca_num)[0]) / 100
71
Removed:
p = int(str(naca_num)[1]) / 10
72
Removed:
t = int(str(naca_num)[2:]) / 100
73
Removed:
# x-coordinate of maximum camber
74
Removed:
p_c = p * self.chord
75
Removed:
76
Removed:
def get_camber(x):
77
Removed:
"""
78
Removed:
Returns camber z-coordinate from 1 'x' along the airfoil chord.
79
Removed:
"""
80
Removed:
z_c = float()
81
Removed:
if 0 <= x < p_c:
82
Removed:
z_c = (m / (p**2)) * (2 * p * (x / self.chord) -
83
Removed:
(x / self.chord)**2)
84
Removed:
elif p_c <= x <= self.chord:
85
Removed:
z_c = (m /
86
Removed:
((1 - p)**2)) * ((1 - 2 * p) + 2 * p *
87
Removed:
(x / self.chord) - (x / self.chord)**2)
88
Removed:
return (z_c * self.chord)
89
Removed:
90
Removed:
def get_thickness(x):
91
Removed:
"""Return thickness from 1 'x' along the airfoil chord."""
92
Removed:
x = 0 if x < 0 else x
93
Removed:
z_t = 5 * t * self.chord * (+0.2969 *
94
Removed:
(x / self.chord)**0.5 - 0.1260 *
95
Removed:
(x / self.chord)**1 - 0.3516 *
96
Removed:
(x / self.chord)**2 + 0.2843 *
97
Removed:
(x / self.chord)**3 - 0.1015 *
98
Removed:
(x / self.chord)**4)
99
Removed:
return z_t
100
Removed:
101
Removed:
def get_theta(x):
102
Removed:
dz_c = float()
103
Removed:
if 0 <= x < p_c:
104
Removed:
dz_c = ((2 * m) / p**2) * (p - x / self.chord)
105
Removed:
elif p_c <= x <= self.chord:
106
Removed:
dz_c = (2 * m) / ((1 - p)**2) * (p - x / self.chord)
107
Removed:
108
Removed:
theta = atan(dz_c)
109
Removed:
return theta
110
Removed:
111
Removed:
def get_coord_u(x):
112
Removed:
x = x - get_thickness(x) * sin(get_theta(x))
113
Removed:
z = get_camber(x) + get_thickness(x) * cos(get_theta(x))
114
Removed:
return (x, z)
115
Removed:
116
Removed:
def get_coord_l(x):
117
Removed:
x = x + get_thickness(x) * sin(get_theta(x))
118
Removed:
z = get_camber(x) - get_thickness(x) * cos(get_theta(x))
119
Removed:
return (x, z)
120
Removed:
121
Removed:
# Densify x-coordinates 10 times for first 1/4 chord length
122
Removed:
x_chord_25_percent = round(self.chord / 4)
123
Removed:
x_chord = [i / 10 for i in range(x_chord_25_percent * 10)]
124
Removed:
x_chord.extend(i for i in range(x_chord_25_percent, self.chord + 1))
125
Removed:
# Generate our airfoil skin geometry from previous sub-functions
126
Removed:
self.x_c = np.array([])
127
Removed:
self.z_c = np.array([])
128
Removed:
# Upper surface and camber line
129
Removed:
for x in x_chord:
130
Removed:
self.x_c = np.append(self.x_c, x)
131
Removed:
self.z_c = np.append(self.z_c, get_camber(x))
132
Removed:
self.x = np.append(self.x, get_coord_u(x)[0])
133
Removed:
self.z = np.append(self.z, get_coord_u(x)[1])
134
Removed:
# Lower surface
135
Removed:
for x in x_chord[::-1]:
136
Removed:
self.x = np.append(self.x, get_coord_l(x)[0])
137
Removed:
self.z = np.append(self.z, get_coord_l(x)[1])
138
Removed:
return None
139
Removed:
140
Removed:
141
Removed:
class Spar(base.Component):
142
Removed:
"""Contains a single spar's data."""
143
Removed:
def __init__(self, parent, name, loc_percent=0.30, material=mt.aluminium):
144
Removed:
"""Set spar location as percent of chord length."""
145
Removed:
super().__init__(parent, name)
146
Removed:
parent.spars.append(self)
147
Removed:
self.material = material
148
Removed:
self.cap_area = float()
149
Removed:
# bi.bisect_left: returns index of first value in parent.x > loc
150
Removed:
# This ensures that spar geom intersects with airfoil geom.
151
Removed:
loc = loc_percent * parent.chord
152
Removed:
# Spar upper coordinates
153
Removed:
spar_u = bi.bisect_left(parent.x, loc) - 1
154
Removed:
self.x = np.append(self.x, parent.x[spar_u])
155
Removed:
self.z = np.append(self.z, parent.z[spar_u])
156
Removed:
# Spar lower coordinates
157
Removed:
spar_l = bi.bisect_left(parent.x[::-1], loc)
158
Removed:
self.x = np.append(self.x, parent.x[-spar_l])
159
Removed:
self.z = np.append(self.z, parent.z[-spar_l])
160
Removed:
return None
161
Removed:
162
Removed:
def set_cap_area(self, cap_area):
163
Removed:
self.cap_area = cap_area
164
Removed:
return None
165
Removed:
166
Removed:
def set_mass(self, mass):
167
Removed:
self.mass = mass
168
Removed:
return None
169
Removed:
170
Removed:
171
Removed:
class Stringer(base.Component):
172
Removed:
"""Contains the coordinates of all stringers."""
173
Removed:
def __init__(self,
174
Removed:
parent,
175
Removed:
name,
176
Removed:
den_u_1=4,
177
Removed:
den_u_2=4,
178
Removed:
den_l_1=4,
179
Removed:
den_l_2=4):
180
Removed:
"""Add equally distributed stringers to four airfoil locations
181
Removed:
(upper nose, lower nose, upper surface, lower surface).
182
Removed:
183
Removed:
den_u_1: upper nose number of stringers
184
Removed:
den_u_2: upper surface number of stringers
185
Removed:
den_l_1: lower nose number of stringers
186
Removed:
den_l_2: lower surface number of stringers
187
Removed:
"""
188
Removed:
super().__init__(parent, name)
189
Removed:
parent.stringers = self
190
Removed:
self.x_start = []
191
Removed:
self.x_end = []
192
Removed:
self.z_start = []
193
Removed:
self.z_end = []
194
Removed:
self.diameter = float()
195
Removed:
self.area = float()
196
Removed:
197
Removed:
# Find distance between leading edge and first upper stringer
198
Removed:
# interval = self.parent.spars[0].x[0] / (den_u_1 + 1)
199
Removed:
interval = 2
200
Removed:
# initialise first self.stringer_x at first interval
201
Removed:
x = interval
202
Removed:
# Add upper stringers from leading edge until first spar.
203
Removed:
for _ in range(0, den_u_1):
204
Removed:
# Index of the first value of airfoil.x > x
205
Removed:
i = bi.bisect_left(self.parent.x, x)
206
Removed:
self.x = np.append(self.x, self.parent.x[i])
207
Removed:
self.z = np.append(self.z, self.parent.z[i])
208
Removed:
x += interval
209
Removed:
# Add upper stringers from first spar until last spar
210
Removed:
interval = (self.parent.spars[-1].x[0] -
211
Removed:
self.parent.spars[0].x[0]) / (den_u_2 + 1)
212
Removed:
x = interval + self.parent.spars[0].x[0]
213
Removed:
for _ in range(0, den_u_2):
214
Removed:
i = bi.bisect_left(self.parent.x, x)
215
Removed:
self.x = np.append(self.x, self.parent.x[i])
216
Removed:
self.z = np.append(self.z, self.parent.z[i])
217
Removed:
x += interval
218
Removed:
219
Removed:
# Find distance between leading edge and first lower stringer
220
Removed:
interval = self.parent.spars[0].x[1] / (den_l_1 + 1)
221
Removed:
x = interval
222
Removed:
# Add lower stringers from leading edge until first spar.
223
Removed:
for _ in range(0, den_l_1):
224
Removed:
i = bi.bisect_left(self.parent.x[::-1], x)
225
Removed:
self.x = np.append(self.x, self.parent.x[-i])
226
Removed:
self.z = np.append(self.z, self.parent.z[-i])
227
Removed:
x += interval
228
Removed:
# Add lower stringers from first spar until last spar
229
Removed:
interval = (self.parent.spars[-1].x[1] -
230
Removed:
self.parent.spars[0].x[1]) / (den_l_2 + 1)
231
Removed:
x = interval + self.parent.spars[0].x[1]
232
Removed:
for _ in range(0, den_l_2):
233
Removed:
i = bi.bisect_left(self.parent.x[::-1], x)
234
Removed:
self.x = np.append(self.x, self.parent.x[-i])
235
Removed:
self.z = np.append(self.z, self.parent.z[-i])
236
Removed:
x += interval
237
Removed:
return None
238
Removed:
239
Removed:
def add_area(self, area):
240
Removed:
self.area = area
241
Removed:
return None
242
Removed:
243
Removed:
def add_mass(self, mass):
244
Removed:
self.mass = len(self.x) * mass + len(self.x) * mass
245
Removed:
return None
246
Removed:
247
Removed:
def add_webs(self, thickness):
248
Removed:
"""Add webs to stringers."""
249
Removed:
for _ in range(len(self.x) // 2):
250
Removed:
self.x_start.append(self.x[_])
251
Removed:
self.x_end.append(self.x[_ + 1])
252
Removed:
self.z_start.append(self.z[_])
253
Removed:
self.z_end.append(self.z[_ + 1])
254
Removed:
self.thickness = thickness
255
Removed:
return None
256
Removed:
257
Removed:
def info_print(self, round=2):
258
Removed:
super().info_print(round)
259
Removed:
print('Stringer Area:\n', np.around(self.area, round))
260
Removed:
return None
261
Removed:
262
Removed:
263
Removed:
def plot_geom(airfoil):
264
Removed:
"""This function plots the airfoil's + sub-components' geometry."""
265
Removed:
fig, ax = plt.subplots()
266
Removed:
267
Removed:
# Plot chord
268
Removed:
x = [0, airfoil.chord]
269
Removed:
y = [0, 0]
270
Removed:
ax.plot(x, y, linewidth='1')
271
Removed:
# Plot quarter chord
272
Removed:
ax.plot(airfoil.chord / 4,
273
Removed:
0,
274
Removed:
'.',
275
Removed:
color='g',
276
Removed:
markersize=24,
277
Removed:
label='Quarter-chord')
278
Removed:
# Plot mean camber line
279
Removed:
ax.plot(airfoil.x_c,
280
Removed:
airfoil.z_c,
281
Removed:
'-.',
282
Removed:
color='r',
283
Removed:
linewidth='2',
284
Removed:
label='Mean camber line')
285
Removed:
# Plot airfoil surfaces
286
Removed:
ax.plot(airfoil.x, airfoil.z, color='b', linewidth='1')
287
Removed:
288
Removed:
try: # Plot spars
289
Removed:
for spar in airfoil.spars:
290
Removed:
x = (spar.x)
291
Removed:
y = (spar.z)
292
Removed:
ax.plot(x, y, '-', color='y', linewidth='4')
293
Removed:
except AttributeError:
294
Removed:
print('No spars to plot.')
295
Removed:
try: # Plot stringers
296
Removed:
for i in range(len(airfoil.stringers.x)):
297
Removed:
x = airfoil.stringers.x[i]
298
Removed:
y = airfoil.stringers.z[i]
299
Removed:
ax.plot(x, y, '.', color='y', markersize=12)
300
Removed:
except AttributeError:
301
Removed:
print('No stringers to plot.')
302
Removed:
303
Removed:
ax.set(title='NACA ' + str(airfoil.naca_num) + ' airfoil',
304
Removed:
xlabel='X axis',
305
Removed:
ylabel='Z axis')
306
Removed:
307
Removed:
plt.grid(axis='both', linestyle=':', linewidth=1)
308
Removed:
plt.gca().set_aspect('equal', adjustable='box')
309
Removed:
plt.gca().legend(bbox_to_anchor=(1, 1),
310
Removed:
bbox_transform=plt.gcf().transFigure)
311
Removed:
plt.show()
312
Removed:
return fig, ax
evaluator/__init__.py
@@ -1,1 +0,0 @@
1
Removed:
from .evaluator import *
evaluator/dP.py
@@ -1,18 +0,0 @@
1
Removed:
def get_dx(self, component):
2
Removed:
return [x - self.centroid[0] for x in component.x_start]
3
Removed:
4
Removed:
5
Removed:
def get_dz(self, component):
6
Removed:
return [x - self.centroid[1] for x in component.x_start]
7
Removed:
8
Removed:
9
Removed:
def get_dP(self, xDist, zDist, V_x, V_z, area):
10
Removed:
I_x = self.I_['x']
11
Removed:
I_z = self.I_['z']
12
Removed:
I_xz = self.I_['xz']
13
Removed:
denom = float(I_x * I_z - I_xz**2)
14
Removed:
z = float()
15
Removed:
for _ in range(len(xDist)):
16
Removed:
z += float(-area * xDist[_] * (I_x * V_x - I_xz * V_z) / denom -
17
Removed:
area * zDist[_] * (I_z * V_z - I_xz * V_x) / denom)
18
Removed:
return z
evaluator/drag.py
@@ -1,18 +0,0 @@
1
Removed:
import random
2
Removed:
3
Removed:
def get_drag(aircraft, drag):
4
Removed:
# Transform semi-span integer into list
5
Removed:
semi_span = [x for x in range(0, aircraft.wing.semi_span)]
6
Removed:
7
Removed:
# Drag increases after 80% of the semi_span
8
Removed:
cutoff = round(0.8 * aircraft.wing.span)
9
Removed:
10
Removed:
# Drag increases by 25% after 80% of the semi_span
11
Removed:
F_x = [drag for x in semi_span[0:cutoff]]
12
Removed:
F_x.extend([1.25 * drag for x in semi_span[cutoff:]])
13
Removed:
return F_x
14
Removed:
15
Removed:
16
Removed:
def get_drag_total(aircraft):
17
Removed:
"""Get total drag force acting on the aircraft."""
18
Removed:
return random.random() * 100
evaluator/evaluator.py
@@ -1,195 +0,0 @@
1
Removed:
"""
2
Removed:
The evaluator.py module contains functions
3
Removed:
that return calculated data for an aircraft.
4
Removed:
Plotting aircraft components is also possible.
5
Removed:
"""
6
Removed:
7
Removed:
import os.path
8
Removed:
import concurrent.futures
9
Removed:
import matplotlib.pyplot as plt
10
Removed:
11
Removed:
from . import drag, inertia, lift, mass
12
Removed:
13
Removed:
14
Removed:
def analyze(aircraft):
15
Removed:
"""Analyze a single aircraft."""
16
Removed:
results = {
17
Removed:
'Lift': lift.get_lift_total(aircraft),
18
Removed:
'Drag': drag.get_drag_total(aircraft),
19
Removed:
'Mass': mass.get_mass_total(aircraft),
20
Removed:
'Centroid': inertia.get_centroid(aircraft)
21
Removed:
}
22
Removed:
aircraft.results = results
23
Removed:
return aircraft.name, results
24
Removed:
25
Removed:
26
Removed:
def analyze_all(population):
27
Removed:
"""Analyze all aircraft in a given population."""
28
Removed:
# for aircraft in population.aircrafts:
29
Removed:
# print(analyze(aircraft))
30
Removed:
with concurrent.futures.ProcessPoolExecutor() as executor:
31
Removed:
results = executor.map(analyze, population.aircrafts)
32
Removed:
for result in results:
33
Removed:
print(result)
34
Removed:
return None
35
Removed:
36
Removed:
# def analysis(self, V_x, V_z):
37
Removed:
# """Perform all analysis calculations and store in class instance."""
38
Removed:
39
Removed:
# self.drag = self.get_drag(10)
40
Removed:
# self.lift_rectangular = self.get_lift_rectangular(13.7)
41
Removed:
# self.lift_elliptical = self.get_lift_elliptical(15)
42
Removed:
# self.lift_total = self.get_lift_total()
43
Removed:
# self.mass_dist = self.get_mass_distribution(self.mass_total)
44
Removed:
# self.centroid = self.get_centroid()
45
Removed:
# self.I_['x'] = self.get_inertia_terms()[0]
46
Removed:
# self.I_['z'] = self.get_inertia_terms()[1]
47
Removed:
# self.I_['xz'] = self.get_inertia_terms()[2]
48
Removed:
# spar_dx = self.get_dx(self.spar)
49
Removed:
# spar_dz = self.get_dz(self.spar)
50
Removed:
# self.spar.dP_x = self.get_dP(spar_dx, spar_dz, V_x, 0,
51
Removed:
# self.spar.cap_area)
52
Removed:
# self.spar.dP_z = self.get_dP(spar_dx, spar_dz, 0, V_z,
53
Removed:
# self.spar.cap_area)
54
Removed:
# print("yayyyyy")
55
Removed:
# return None
56
Removed:
57
Removed:
# print(f"Analysis results for {aircraft.name}:\n", results)
58
Removed:
# self.results = self.get_lift_total(aircraft)
59
Removed:
60
Removed:
# self.drag = self.get_drag(10)
61
Removed:
# self.lift_rectangular = self.get_lift_rectangular(13.7)
62
Removed:
# self.lift_elliptical = self.get_lift_elliptical(15)
63
Removed:
# self.lift_total = self.get_lift_total()
64
Removed:
# self.mass_dist = self.get_mass_distribution(self.mass_total)
65
Removed:
# self.centroid = self.get_centroid()
66
Removed:
# self.I_['x'] = self.get_inertia_terms()[0]
67
Removed:
# self.I_['z'] = self.get_inertia_terms()[1]
68
Removed:
# self.I_['xz'] = self.get_inertia_terms()[2]
69
Removed:
# spar_dx = self.get_dx(self.spar)
70
Removed:
# spar_dz = self.get_dz(self.spar)
71
Removed:
# self.spar.dP_x = self.get_dP(spar_dx, spar_dz, V_x, 0,
72
Removed:
# self.spar.cap_area)
73
Removed:
# self.spar.dP_z = self.get_dP(spar_dx, spar_dz, 0, V_z,
74
Removed:
# self.spar.cap_area)
75
Removed:
# return None
76
Removed:
77
Removed:
def tree_print(self, population):
78
Removed:
"""Print the list of subcomponents."""
79
Removed:
name = f" TREE FOR {[i.name for i in population.aircraft]} IN {self.name} "
80
Removed:
num_of_dashes = len(name)
81
Removed:
print(num_of_dashes * '-')
82
Removed:
print(name)
83
Removed:
for aircraft in population:
84
Removed:
print(".")
85
Removed:
print(f"`-- {aircraft}")
86
Removed:
print(f" |--{aircraft.wing}")
87
Removed:
print(f" | |-- {aircraft.wing.stringers}")
88
Removed:
for spar in aircraft.wing.spars[:-1]:
89
Removed:
print(f" | |-- {spar}")
90
Removed:
print(f" | `-- {aircraft.wing.spars[-1]}")
91
Removed:
print(f" |-- {aircraft.fuselage}")
92
Removed:
print(f" `-- {aircraft.propulsion}")
93
Removed:
print(num_of_dashes * '-')
94
Removed:
return None
95
Removed:
96
Removed:
def tree_save(self,
97
Removed:
population,
98
Removed:
save_path='/home/blendux/Projects/Aircraft_Studio/save'):
99
Removed:
"""Save the evaluator's tree to a file."""
100
Removed:
for aircraft in population.aircraft:
101
Removed:
file_name = f"{aircraft.name}_tree.txt"
102
Removed:
full_path = os.path.join(save_path, file_name)
103
Removed:
with open(full_path, 'w') as f:
104
Removed:
try:
105
Removed:
f.write(".\n")
106
Removed:
f.write(f"`-- {aircraft}\n")
107
Removed:
f.write(f" |--{aircraft.wing}\n")
108
Removed:
for spar in aircraft.wing.spars[:-1]:
109
Removed:
f.write(f" | |-- {spar}\n")
110
Removed:
f.write(f" | `-- {aircraft.wing.spars[-1]}\n")
111
Removed:
f.write(f" |-- {aircraft.fuselage}\n")
112
Removed:
f.write(f" `-- {aircraft.propulsion}\n")
113
Removed:
logging.debug(f'Successfully wrote to file {full_path}')
114
Removed:
115
Removed:
except IOError:
116
Removed:
print(
117
Removed:
f'Unable to write {file_name} to specified directory.',
118
Removed:
'Was the full path passed to the function?')
119
Removed:
return None
120
Removed:
121
Removed:
122
Removed:
def plot_geom(evaluator):
123
Removed:
"""This function plots analysis results over the airfoil's geometry."""
124
Removed:
# Plot chord
125
Removed:
x_chord = [0, evaluator.chord]
126
Removed:
y_chord = [0, 0]
127
Removed:
plt.plot(x_chord, y_chord, linewidth='1')
128
Removed:
# Plot quarter chord
129
Removed:
plt.plot(evaluator.chord / 4,
130
Removed:
0,
131
Removed:
'.',
132
Removed:
color='g',
133
Removed:
markersize=24,
134
Removed:
label='Quarter-chord')
135
Removed:
# Plot airfoil surfaces
136
Removed:
x = [0.98 * x for x in evaluator.airfoil.x]
137
Removed:
y = [0.98 * z for z in evaluator.airfoil.z]
138
Removed:
plt.fill(x, y, color='w', linewidth='1', fill=False)
139
Removed:
x = [1.02 * x for x in evaluator.airfoil.x]
140
Removed:
y = [1.02 * z for z in evaluator.airfoil.z]
141
Removed:
plt.fill(x, y, color='b', linewidth='1', fill=False)
142
Removed:
143
Removed:
# Plot spars
144
Removed:
try:
145
Removed:
for _ in range(len(evaluator.spar.x)):
146
Removed:
x = (evaluator.spar.x[_])
147
Removed:
y = (evaluator.spar.z[_])
148
Removed:
plt.plot(x, y, '-', color='b')
149
Removed:
except AttributeError:
150
Removed:
print('No spars to plot.')
151
Removed:
# Plot stringers
152
Removed:
try:
153
Removed:
for _ in range(0, len(evaluator.stringer.x)):
154
Removed:
x = evaluator.stringer.x[_]
155
Removed:
y = evaluator.stringer.z[_]
156
Removed:
plt.plot(x, y, '.', color='y', markersize=12)
157
Removed:
except AttributeError:
158
Removed:
print('No stringers to plot.')
159
Removed:
160
Removed:
# Plot centroid
161
Removed:
x = evaluator.centroid[0]
162
Removed:
y = evaluator.centroid[1]
163
Removed:
plt.plot(x, y, '.', color='r', markersize=24, label='centroid')
164
Removed:
165
Removed:
# Graph formatting
166
Removed:
plt.xlabel('X axis')
167
Removed:
plt.ylabel('Z axis')
168
Removed:
169
Removed:
plot_bound = max(evaluator.airfoil.x)
170
Removed:
plt.xlim(-0.10 * plot_bound, 1.10 * plot_bound)
171
Removed:
plt.ylim(-(1.10 * plot_bound / 2), (1.10 * plot_bound / 2))
172
Removed:
plt.gca().set_aspect('equal', adjustable='box')
173
Removed:
plt.gca().legend()
174
Removed:
plt.grid(axis='both', linestyle=':', linewidth=1)
175
Removed:
plt.show()
176
Removed:
return None
177
Removed:
178
Removed:
179
Removed:
def plot_lift(evaluator):
180
Removed:
x = range(evaluator.semi_span)
181
Removed:
y_1 = evaluator.lift_rectangular
182
Removed:
y_2 = evaluator.lift_elliptical
183
Removed:
y_3 = evaluator.lift_total
184
Removed:
plt.plot(x, y_1, '.', color='b', markersize=4, label='Rectangular lift')
185
Removed:
plt.plot(x, y_2, '.', color='g', markersize=4, label='Elliptical lift')
186
Removed:
plt.plot(x, y_3, '.', color='r', markersize=4, label='Total lift')
187
Removed:
188
Removed:
# Graph formatting
189
Removed:
plt.xlabel('Semi-span location')
190
Removed:
plt.ylabel('Lift')
191
Removed:
192
Removed:
plt.gca().legend()
193
Removed:
plt.grid(axis='both', linestyle=':', linewidth=1)
194
Removed:
plt.show()
195
Removed:
return None
evaluator/inertia.py
@@ -1,66 +0,0 @@
1
Removed:
def get_centroid(aircraft):
2
Removed:
"""Return the coordinates of the centroid."""
3
Removed:
# stringer_area = aircraft.wing.stringers.area
4
Removed:
# cap_area = aircraft.wing.spars.cap_area
5
Removed:
6
Removed:
# TODO: Fix this
7
Removed:
# caps_x = [value for spar in aircraft.wing.spars.x for value in spar]
8
Removed:
# caps_z = [value for spar in aircraft.wing.spars.z for value in spar]
9
Removed:
# stringers_x = aircraft.wing.stringers.x
10
Removed:
# stringers_z = aircraft.wing.stringers.z
11
Removed:
12
Removed:
# denominator = float(
13
Removed:
# len(caps_x) * cap_area + len(stringers_x) * stringer_area)
14
Removed:
15
Removed:
# centroid_x = float(
16
Removed:
# sum([x * cap_area
17
Removed:
# for x in caps_x]) + sum([x * stringer_area for x in stringers_x]))
18
Removed:
# centroid_x = centroid_x / denominator
19
Removed:
20
Removed:
# centroid_z = float(
21
Removed:
# sum([z * cap_area
22
Removed:
# for z in caps_z]) + sum([z * stringer_area for z in stringers_z]))
23
Removed:
# centroid_z = centroid_z / denominator
24
Removed:
25
Removed:
# return (centroid_x, centroid_z)
26
Removed:
return (200, 420)
27
Removed:
28
Removed:
29
Removed:
def get_inertia_terms(self):
30
Removed:
"""Obtain all inertia terms."""
31
Removed:
stringer_area = self.stringer.area
32
Removed:
cap_area = self.spar.cap_area
33
Removed:
34
Removed:
# Adds upper and lower components' coordinates to list
35
Removed:
x_stringers = self.stringer.x
36
Removed:
z_stringers = self.stringer.z
37
Removed:
x_spars = self.spar.x[:][0] + self.spar.x[:][1]
38
Removed:
z_spars = self.spar.z[:][0] + self.spar.z[:][1]
39
Removed:
stringer_count = range(len(x_stringers))
40
Removed:
spar_count = range(len(self.spar.x))
41
Removed:
42
Removed:
# I_x is the sum of the contributions of the spar caps and stringers
43
Removed:
# TODO: replace list indices with dictionary value
44
Removed:
I_x = sum(
45
Removed:
[cap_area * (z_spars[i] - self.centroid[1])**2 for i in spar_count])
46
Removed:
I_x += sum([
47
Removed:
stringer_area * (z_stringers[i] - self.centroid[1])**2
48
Removed:
for i in stringer_count
49
Removed:
])
50
Removed:
51
Removed:
I_z = sum(
52
Removed:
[cap_area * (x_spars[i] - self.centroid[0])**2 for i in spar_count])
53
Removed:
I_z += sum([
54
Removed:
stringer_area * (x_stringers[i] - self.centroid[0])**2
55
Removed:
for i in stringer_count
56
Removed:
])
57
Removed:
58
Removed:
I_xz = sum([
59
Removed:
cap_area * (x_spars[i] - self.centroid[0]) *
60
Removed:
(z_spars[i] - self.centroid[1]) for i in spar_count
61
Removed:
])
62
Removed:
I_xz += sum([
63
Removed:
stringer_area * (x_stringers[i] - self.centroid[0]) *
64
Removed:
(z_stringers[i] - self.centroid[1]) for i in stringer_count
65
Removed:
])
66
Removed:
return (I_x, I_z, I_xz)
evaluator/lift.py
@@ -1,30 +0,0 @@
1
Removed:
import numpy as np
2
Removed:
from math import sqrt
3
Removed:
4
Removed:
5
Removed:
def _get_lift_rectangular(aircraft, lift=50):
6
Removed:
L_prime = np.array([
7
Removed:
lift / (aircraft.wing.semi_span * 2)
8
Removed:
for _ in range(aircraft.wing.semi_span)
9
Removed:
])
10
Removed:
return L_prime
11
Removed:
12
Removed:
13
Removed:
def _get_lift_elliptical(aircraft, L_0=3.2):
14
Removed:
L_prime = np.array([
15
Removed:
0.5 * L_0 / (aircraft.wing.semi_span * 2) *
16
Removed:
sqrt(1 - (y / aircraft.wing.semi_span)**2)
17
Removed:
for y in range(aircraft.wing.semi_span)
18
Removed:
])
19
Removed:
return L_prime
20
Removed:
21
Removed:
22
Removed:
def get_lift_total(aircraft):
23
Removed:
"""Combination of rectangular and elliptical lift."""
24
Removed:
# F_z = self._get_lift_rectangular(aircraft) + self._get_lift_elliptical(
25
Removed:
# aircraft)
26
Removed:
# F_z = self._get_lift_rectangular(
27
Removed:
# aircraft) + self._get_lift_elliptical(aircraft) / 2
28
Removed:
# F_z = [i + j for i, j in self._get_lift_rectangular]
29
Removed:
# return F_z
30
Removed:
return 400
evaluator/mass.py
@@ -1,8 +0,0 @@
1
Removed:
def get_mass_distribution(self, total_mass):
2
Removed:
F_z = [total_mass / self.semi_span for x in range(0, self.semi_span)]
3
Removed:
return F_z
4
Removed:
5
Removed:
6
Removed:
def get_mass_total(aircraft):
7
Removed:
"""Get the total aircraft mass."""
8
Removed:
return 2000
example.py
@@ -1,4 +1,5 @@
1
Removed:
"""This example illustrates the usage of creator, evaluator and generator.
1
Added:
"""
2
Added:
This example illustrates the usage of creator, evaluator and generator.
2
3
3
4
All the steps of airfoil creation & evaluation are detailed here;
4
5
furthermore, the generator.py module contains certain presets
@@ -9,11 +10,7 @@
9
10
Generate a population of airfoils & optimize.
10
11
"""
11
12
12
Removed:
import matplotlib.pyplot as plt
13
Removed:
14
Removed:
import creator
15
Removed:
import evaluator
16
Removed:
import generator
13
Added:
import aircraftstudio as acs
17
14
import resources.materials as mt
18
15
19
16
import time
@@ -54,18 +51,15 @@
54
51
# stringer2 = creator.wing.Stringer(af2, 'stringer2')
55
52
# stringer2.info_save(SAVE_PATH)
56
53
57
Removed:
pop = generator.Population(200)
54
Added:
population = acs.generator.Population(10000)
55
Added:
acs.evaluator.analyze_all(population) # 123s with multiprocessing :-(
58
56
59
Removed:
evaluator.analyze_all(pop)
57
Added:
def foo(size):
58
Added:
for _ in range(size):
59
Added:
print(acs.evaluator.analyze(acs.creator.base.Aircraft.from_random()))
60
Added:
return None
60
61
61
Removed:
# for aircraft in pop.aircrafts:
62
Removed:
# print(aircraft.results)
63
Removed:
64
Removed:
# for i in eval.aircrafts:
65
Removed:
# print(i.name)
66
Removed:
67
Removed:
# for i in eval.aircrafts:
68
Removed:
# print(i.results)
62
Added:
foo(10000) # 106s
69
63
70
64
# Final execution time
71
65
final_time = time.time() - start_time
generator/__init__.py
@@ -1,1 +0,0 @@
1
Removed:
from .generator import *
generator/generator.py
@@ -1,43 +0,0 @@
1
Removed:
"""
2
Removed:
The generator.py module contains classes describing genetic populations
3
Removed:
and methods to generate default aircraft.
4
Removed:
"""
5
Removed:
6
Removed:
import random
7
Removed:
import concurrent.futures
8
Removed:
9
Removed:
import creator
10
Removed:
import evaluator
11
Removed:
12
Removed:
13
Removed:
def default_fuselage():
14
Removed:
pass
15
Removed:
16
Removed:
17
Removed:
def default_propulsion():
18
Removed:
pass
19
Removed:
20
Removed:
21
Removed:
class Population():
22
Removed:
"""Represents a collection of aircraft."""
23
Removed:
def __init__(self, size):
24
Removed:
self.aircrafts = []
25
Removed:
for i in range(size):
26
Removed:
self.aircrafts.append(creator.base.Aircraft.from_default())
27
Removed:
self.size = size
28
Removed:
self.results = None
29
Removed:
self.gen_number = 0 # incremented for every generation
30
Removed:
31
Removed:
def evaluate(self):
32
Removed:
with concurrent.futures.ProcessPoolExecutor as executor:
33
Removed:
for aircraft in self.aircrafts:
34
Removed:
executor.submit(evaluator.analyze, aircraft)
35
Removed:
36
Removed:
def mutate(self, prob_mt):
37
Removed:
"""Randomly mutate the genes of prob_mt % of the population."""
38
Removed:
def crossover(self, prob_cx):
39
Removed:
"""Combine the genes of prob_cx % of the population."""
40
Removed:
def reproduce(self, prob_rp):
41
Removed:
"""Pass on the genes of the fittest prob_rp % of the population."""
42
Removed:
def fitness():
43
Removed:
"""Rate the fitness of an individual on a relative scale (0-100)"""
log_base.txt
@@ -0,0 +1,208 @@
1
Added:
2019-10-22 15:23:21,536 - DEBUG - $HOME=/home/blendux
2
Added:
2019-10-22 15:23:21,536 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
3
Added:
2019-10-22 15:23:21,536 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
4
Added:
2019-10-22 15:23:21,541 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
5
Added:
2019-10-22 15:23:21,543 - DEBUG - matplotlib version 3.1.1
6
Added:
2019-10-22 15:23:21,543 - DEBUG - interactive is False
7
Added:
2019-10-22 15:23:21,543 - DEBUG - platform is linux
8
Added:
2019-10-22 15:23:21,543 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
9
Added:
2019-10-22 15:23:21,578 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
10
Added:
2019-10-22 15:23:21,580 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
11
Added:
2019-10-22 15:23:21,677 - DEBUG - Loaded backend qt5agg version unknown.
12
Added:
2019-10-22 15:23:21,688 - DEBUG - Loaded backend tkagg version unknown.
13
Added:
2019-10-22 15:23:21,689 - DEBUG - Loaded backend TkAgg version unknown.
14
Added:
2019-10-22 15:47:34,956 - DEBUG - $HOME=/home/blendux
15
Added:
2019-10-22 15:47:34,956 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
16
Added:
2019-10-22 15:47:34,957 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
17
Added:
2019-10-22 15:47:34,961 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
18
Added:
2019-10-22 15:47:34,963 - DEBUG - matplotlib version 3.1.1
19
Added:
2019-10-22 15:47:34,963 - DEBUG - interactive is False
20
Added:
2019-10-22 15:47:34,963 - DEBUG - platform is linux
21
Added:
2019-10-22 15:47:34,963 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
22
Added:
2019-10-22 15:47:34,996 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
23
Added:
2019-10-22 15:47:34,997 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
24
Added:
2019-10-22 15:47:35,087 - DEBUG - Loaded backend qt5agg version unknown.
25
Added:
2019-10-22 15:47:35,097 - DEBUG - Loaded backend tkagg version unknown.
26
Added:
2019-10-22 15:47:35,098 - DEBUG - Loaded backend TkAgg version unknown.
27
Added:
2019-10-31 19:35:35,989 - DEBUG - $HOME=/home/blendux
28
Added:
2019-10-31 19:35:35,991 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
29
Added:
2019-10-31 19:35:35,992 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
30
Added:
2019-10-31 19:35:36,029 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
31
Added:
2019-10-31 19:35:36,040 - DEBUG - matplotlib version 3.1.1
32
Added:
2019-10-31 19:35:36,041 - DEBUG - interactive is False
33
Added:
2019-10-31 19:35:36,042 - DEBUG - platform is linux
34
Added:
2019-10-31 19:35:36,042 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
35
Added:
2019-10-31 19:35:36,325 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
36
Added:
2019-10-31 19:35:36,335 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
37
Added:
2019-10-31 19:35:37,204 - DEBUG - Loaded backend qt5agg version unknown.
38
Added:
2019-10-31 19:35:37,302 - DEBUG - Loaded backend tkagg version unknown.
39
Added:
2019-10-31 19:35:37,305 - DEBUG - Loaded backend TkAgg version unknown.
40
Added:
2019-10-31 19:36:17,660 - DEBUG - $HOME=/home/blendux
41
Added:
2019-10-31 19:36:17,661 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
42
Added:
2019-10-31 19:36:17,662 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
43
Added:
2019-10-31 19:36:17,697 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
44
Added:
2019-10-31 19:36:17,708 - DEBUG - matplotlib version 3.1.1
45
Added:
2019-10-31 19:36:17,709 - DEBUG - interactive is False
46
Added:
2019-10-31 19:36:17,709 - DEBUG - platform is linux
47
Added:
2019-10-31 19:36:17,709 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
48
Added:
2019-10-31 19:36:17,956 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
49
Added:
2019-10-31 19:36:17,965 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
50
Added:
2019-10-31 19:36:18,655 - DEBUG - Loaded backend qt5agg version unknown.
51
Added:
2019-10-31 19:36:18,728 - DEBUG - Loaded backend tkagg version unknown.
52
Added:
2019-10-31 19:36:18,731 - DEBUG - Loaded backend TkAgg version unknown.
53
Added:
2019-10-31 19:40:15,940 - DEBUG - $HOME=/home/blendux
54
Added:
2019-10-31 19:40:15,942 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
55
Added:
2019-10-31 19:40:15,943 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
56
Added:
2019-10-31 19:40:15,978 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
57
Added:
2019-10-31 19:40:15,990 - DEBUG - matplotlib version 3.1.1
58
Added:
2019-10-31 19:40:15,990 - DEBUG - interactive is False
59
Added:
2019-10-31 19:40:15,991 - DEBUG - platform is linux
60
Added:
2019-10-31 19:40:15,991 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
61
Added:
2019-10-31 19:40:16,242 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
62
Added:
2019-10-31 19:40:16,250 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
63
Added:
2019-10-31 19:40:16,967 - DEBUG - Loaded backend qt5agg version unknown.
64
Added:
2019-10-31 19:40:17,040 - DEBUG - Loaded backend tkagg version unknown.
65
Added:
2019-10-31 19:40:17,042 - DEBUG - Loaded backend TkAgg version unknown.
66
Added:
2019-11-01 17:48:41,736 - DEBUG - $HOME=/home/blendux
67
Added:
2019-11-01 17:48:41,736 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
68
Added:
2019-11-01 17:48:41,737 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
69
Added:
2019-11-01 17:48:41,742 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
70
Added:
2019-11-01 17:48:41,744 - DEBUG - matplotlib version 3.1.1
71
Added:
2019-11-01 17:48:41,744 - DEBUG - interactive is False
72
Added:
2019-11-01 17:48:41,744 - DEBUG - platform is linux
73
Added:
2019-11-01 17:48:41,744 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
74
Added:
2019-11-01 17:48:41,792 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
75
Added:
2019-11-01 17:48:41,794 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
76
Added:
2019-11-01 17:48:41,967 - DEBUG - Loaded backend qt5agg version unknown.
77
Added:
2019-11-01 17:48:41,992 - DEBUG - Loaded backend tkagg version unknown.
78
Added:
2019-11-01 17:48:41,992 - DEBUG - Loaded backend TkAgg version unknown.
79
Added:
2019-11-01 17:52:55,611 - DEBUG - $HOME=/home/blendux
80
Added:
2019-11-01 17:52:55,611 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
81
Added:
2019-11-01 17:52:55,611 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
82
Added:
2019-11-01 17:52:55,616 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
83
Added:
2019-11-01 17:52:55,618 - DEBUG - matplotlib version 3.1.1
84
Added:
2019-11-01 17:52:55,618 - DEBUG - interactive is False
85
Added:
2019-11-01 17:52:55,618 - DEBUG - platform is linux
86
Added:
2019-11-01 17:52:55,618 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
87
Added:
2019-11-01 17:52:55,651 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
88
Added:
2019-11-01 17:52:55,652 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
89
Added:
2019-11-01 17:52:55,740 - DEBUG - Loaded backend qt5agg version unknown.
90
Added:
2019-11-01 17:52:55,750 - DEBUG - Loaded backend tkagg version unknown.
91
Added:
2019-11-01 17:52:55,750 - DEBUG - Loaded backend TkAgg version unknown.
92
Added:
2019-11-01 17:54:04,018 - DEBUG - $HOME=/home/blendux
93
Added:
2019-11-01 17:54:04,018 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
94
Added:
2019-11-01 17:54:04,018 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
95
Added:
2019-11-01 17:54:04,023 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
96
Added:
2019-11-01 17:54:04,025 - DEBUG - matplotlib version 3.1.1
97
Added:
2019-11-01 17:54:04,025 - DEBUG - interactive is False
98
Added:
2019-11-01 17:54:04,025 - DEBUG - platform is linux
99
Added:
2019-11-01 17:54:04,025 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
100
Added:
2019-11-01 17:54:04,057 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
101
Added:
2019-11-01 17:54:04,058 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
102
Added:
2019-11-01 17:54:04,147 - DEBUG - Loaded backend qt5agg version unknown.
103
Added:
2019-11-01 17:54:04,157 - DEBUG - Loaded backend tkagg version unknown.
104
Added:
2019-11-01 17:54:04,158 - DEBUG - Loaded backend TkAgg version unknown.
105
Added:
2019-11-01 17:54:16,377 - DEBUG - $HOME=/home/blendux
106
Added:
2019-11-01 17:54:16,377 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
107
Added:
2019-11-01 17:54:16,378 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
108
Added:
2019-11-01 17:54:16,382 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
109
Added:
2019-11-01 17:54:16,384 - DEBUG - matplotlib version 3.1.1
110
Added:
2019-11-01 17:54:16,384 - DEBUG - interactive is False
111
Added:
2019-11-01 17:54:16,384 - DEBUG - platform is linux
112
Added:
2019-11-01 17:54:16,384 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
113
Added:
2019-11-01 17:54:16,416 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
114
Added:
2019-11-01 17:54:16,417 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
115
Added:
2019-11-01 17:54:16,507 - DEBUG - Loaded backend qt5agg version unknown.
116
Added:
2019-11-01 17:54:16,517 - DEBUG - Loaded backend tkagg version unknown.
117
Added:
2019-11-01 17:54:16,518 - DEBUG - Loaded backend TkAgg version unknown.
118
Added:
2019-11-01 17:55:44,684 - DEBUG - $HOME=/home/blendux
119
Added:
2019-11-01 17:55:44,684 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
120
Added:
2019-11-01 17:55:44,684 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
121
Added:
2019-11-01 17:55:44,689 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
122
Added:
2019-11-01 17:55:44,691 - DEBUG - matplotlib version 3.1.1
123
Added:
2019-11-01 17:55:44,691 - DEBUG - interactive is False
124
Added:
2019-11-01 17:55:44,691 - DEBUG - platform is linux
125
Added:
2019-11-01 17:55:44,691 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
126
Added:
2019-11-01 17:55:44,723 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
127
Added:
2019-11-01 17:55:44,724 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
128
Added:
2019-11-01 17:55:44,812 - DEBUG - Loaded backend qt5agg version unknown.
129
Added:
2019-11-01 17:55:44,822 - DEBUG - Loaded backend tkagg version unknown.
130
Added:
2019-11-01 17:55:44,822 - DEBUG - Loaded backend TkAgg version unknown.
131
Added:
2019-11-01 17:57:52,401 - DEBUG - $HOME=/home/blendux
132
Added:
2019-11-01 17:57:52,401 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
133
Added:
2019-11-01 17:57:52,401 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
134
Added:
2019-11-01 17:57:52,406 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
135
Added:
2019-11-01 17:57:52,408 - DEBUG - matplotlib version 3.1.1
136
Added:
2019-11-01 17:57:52,408 - DEBUG - interactive is False
137
Added:
2019-11-01 17:57:52,408 - DEBUG - platform is linux
138
Added:
2019-11-01 17:57:52,408 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
139
Added:
2019-11-01 17:57:52,441 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
140
Added:
2019-11-01 17:57:52,442 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
141
Added:
2019-11-01 17:57:52,532 - DEBUG - Loaded backend qt5agg version unknown.
142
Added:
2019-11-01 17:57:52,542 - DEBUG - Loaded backend tkagg version unknown.
143
Added:
2019-11-01 17:57:52,542 - DEBUG - Loaded backend TkAgg version unknown.
144
Added:
2019-11-01 18:00:17,743 - DEBUG - $HOME=/home/blendux
145
Added:
2019-11-01 18:00:17,744 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
146
Added:
2019-11-01 18:00:17,744 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
147
Added:
2019-11-01 18:00:17,749 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
148
Added:
2019-11-01 18:00:17,750 - DEBUG - matplotlib version 3.1.1
149
Added:
2019-11-01 18:00:17,750 - DEBUG - interactive is False
150
Added:
2019-11-01 18:00:17,750 - DEBUG - platform is linux
151
Added:
2019-11-01 18:00:17,751 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
152
Added:
2019-11-01 18:00:17,782 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
153
Added:
2019-11-01 18:00:17,783 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
154
Added:
2019-11-01 18:00:17,872 - DEBUG - Loaded backend qt5agg version unknown.
155
Added:
2019-11-01 18:00:17,881 - DEBUG - Loaded backend tkagg version unknown.
156
Added:
2019-11-01 18:00:17,882 - DEBUG - Loaded backend TkAgg version unknown.
157
Added:
2019-11-01 18:00:38,980 - DEBUG - $HOME=/home/blendux
158
Added:
2019-11-01 18:00:38,981 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
159
Added:
2019-11-01 18:00:38,981 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
160
Added:
2019-11-01 18:00:38,986 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
161
Added:
2019-11-01 18:00:38,987 - DEBUG - matplotlib version 3.1.1
162
Added:
2019-11-01 18:00:38,988 - DEBUG - interactive is False
163
Added:
2019-11-01 18:00:38,988 - DEBUG - platform is linux
164
Added:
2019-11-01 18:00:38,988 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
165
Added:
2019-11-01 18:00:39,019 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
166
Added:
2019-11-01 18:00:39,020 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
167
Added:
2019-11-01 18:00:39,108 - DEBUG - Loaded backend qt5agg version unknown.
168
Added:
2019-11-01 18:00:39,117 - DEBUG - Loaded backend tkagg version unknown.
169
Added:
2019-11-01 18:00:39,118 - DEBUG - Loaded backend TkAgg version unknown.
170
Added:
2019-11-01 18:00:44,523 - DEBUG - $HOME=/home/blendux
171
Added:
2019-11-01 18:00:44,523 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
172
Added:
2019-11-01 18:00:44,523 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
173
Added:
2019-11-01 18:00:44,528 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
174
Added:
2019-11-01 18:00:44,530 - DEBUG - matplotlib version 3.1.1
175
Added:
2019-11-01 18:00:44,530 - DEBUG - interactive is False
176
Added:
2019-11-01 18:00:44,530 - DEBUG - platform is linux
177
Added:
2019-11-01 18:00:44,530 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
178
Added:
2019-11-01 18:00:44,561 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
179
Added:
2019-11-01 18:00:44,562 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
180
Added:
2019-11-01 18:00:44,652 - DEBUG - Loaded backend qt5agg version unknown.
181
Added:
2019-11-01 18:00:44,662 - DEBUG - Loaded backend tkagg version unknown.
182
Added:
2019-11-01 18:00:44,662 - DEBUG - Loaded backend TkAgg version unknown.
183
Added:
2019-11-01 18:00:56,851 - DEBUG - $HOME=/home/blendux
184
Added:
2019-11-01 18:00:56,851 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
185
Added:
2019-11-01 18:00:56,851 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
186
Added:
2019-11-01 18:00:56,856 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
187
Added:
2019-11-01 18:00:56,858 - DEBUG - matplotlib version 3.1.1
188
Added:
2019-11-01 18:00:56,858 - DEBUG - interactive is False
189
Added:
2019-11-01 18:00:56,858 - DEBUG - platform is linux
190
Added:
2019-11-01 18:00:56,858 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
191
Added:
2019-11-01 18:00:56,889 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
192
Added:
2019-11-01 18:00:56,891 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
193
Added:
2019-11-01 18:00:56,979 - DEBUG - Loaded backend qt5agg version unknown.
194
Added:
2019-11-01 18:00:56,989 - DEBUG - Loaded backend tkagg version unknown.
195
Added:
2019-11-01 18:00:56,989 - DEBUG - Loaded backend TkAgg version unknown.
196
Added:
2019-11-01 18:08:24,846 - DEBUG - $HOME=/home/blendux
197
Added:
2019-11-01 18:08:24,846 - DEBUG - CONFIGDIR=/home/blendux/.config/matplotlib
198
Added:
2019-11-01 18:08:24,846 - DEBUG - matplotlib data path: /usr/lib/python3.7/site-packages/matplotlib/mpl-data
199
Added:
2019-11-01 18:08:24,851 - DEBUG - loaded rc file /usr/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
200
Added:
2019-11-01 18:08:24,853 - DEBUG - matplotlib version 3.1.1
201
Added:
2019-11-01 18:08:24,853 - DEBUG - interactive is False
202
Added:
2019-11-01 18:08:24,853 - DEBUG - platform is linux
203
Added:
2019-11-01 18:08:24,853 - DEBUG - loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'sphinxcontrib', 'aircraftstudio', 'aircraftstudio.creator', 'aircraftstudio.creator.base', 'numpy', '__future__', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core', 'numpy.core.info', 'numpy.core.multiarray', 'numpy.core.overrides', 'textwrap', 're', 'enum', 'sre_compile', '_sre', 'sre_parse', 'sre_constants', 'copyreg', 'datetime', 'time', 'math', '_datetime', 'numpy.core._multiarray_umath', 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib', 'fnmatch', 'ntpath', 'errno', 'urllib', 'urllib.parse', 'pickle', 'struct', '_struct', '_compat_pickle', '_pickle', 'numpy.core.umath', 'numpy.core.numerictypes', 'numbers', 'numpy.core._string_helpers', 'numpy.core._type_aliases', 'numpy.core._dtype', 'numpy.core.numeric', 'numpy.core._exceptions', 'numpy.core._asarray', 'numpy.core._ufunc_config', 'collections.abc', 'numpy.core.fromnumeric', 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base', 'numpy.core.einsumfunc', 'numpy.core._add_newdocs', 'numpy.core._multiarray_tests', 'numpy.core._dtype_ctypes', '_ctypes', 'ctypes', 'ctypes._endian', 'numpy.core._internal', 'platform', 'subprocess', 'signal', '_posixsubprocess', 'select', 'selectors', 'threading', 'traceback', 'linecache', 'tokenize', 'token', '_weakrefset', 'numpy._pytesttester', 'numpy.lib', 'numpy.lib.info', 'numpy.lib.type_check', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks', 'numpy.matrixlib', 'numpy.matrixlib.defmatrix', 'ast', '_ast', 'numpy.linalg', 'numpy.linalg.info', 'numpy.linalg.linalg', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.lib.function_base', 'numpy.lib.histograms', 'numpy.lib.stride_tricks', 'numpy.lib.mixins', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.npyio', 'weakref', 'numpy.lib.format', 'numpy.lib._datasource', 'shutil', 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp', 'numpy.lib._iotools', 'numpy.lib.financial', 'decimal', '_pydecimal', 'contextvars', '_contextvars', 'locale', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.fft', 'numpy.fft._pocketfft', 'numpy.fft._pocketfft_internal', 'numpy.fft.helper', 'numpy.polynomial', 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', 'numpy.random._pickle', 'numpy.random.mtrand', 'cython_runtime', 'numpy.random.common', 'numpy.random.bounded_integers', 'numpy.random.mt19937', 'numpy.random.bit_generator', '_cython_0_29_13', 'secrets', 'base64', 'binascii', 'hmac', '_hashlib', 'hashlib', '_blake2', '_sha3', 'random', 'bisect', '_bisect', '_random', 'numpy.random.philox', 'numpy.random.pcg64', 'numpy.random.sfc64', 'numpy.random.generator', 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.testing', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case', 'difflib', 'logging', 'string', '_string', 'atexit', 'pprint', 'unittest.suite', 'unittest.loader', 'unittest.main', 'argparse', 'gettext', 'unittest.runner', 'unittest.signals', 'numpy.testing._private', 'numpy.testing._private.utils', 'gc', 'tempfile', 'numpy.testing._private.decorators', 'numpy.testing._private.nosetester', 'aircraftstudio.creator.fuselage', 'aircraftstudio.creator.propulsion', 'aircraftstudio.creator.wing', 'matplotlib', 'distutils', 'distutils.version', 'inspect', 'dis', 'opcode', '_opcode', 'matplotlib.cbook', 'glob', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.rcsetup', 'matplotlib.fontconfig_pattern', 'pyparsing', 'copy', 'matplotlib.colors', 'matplotlib._color_data', 'cycler', 'six', 'six.moves', 'matplotlib._version', 'json', 'json.decoder', 'json.scanner', '_json', 'json.encoder', 'matplotlib.ft2font', 'dateutil', 'dateutil._version', 'kiwisolver', 'socket', '_socket']
204
Added:
2019-11-01 18:08:24,886 - DEBUG - CACHEDIR=/home/blendux/.cache/matplotlib
205
Added:
2019-11-01 18:08:24,887 - DEBUG - Using fontManager instance from /home/blendux/.cache/matplotlib/fontlist-v310.json
206
Added:
2019-11-01 18:08:24,977 - DEBUG - Loaded backend qt5agg version unknown.
207
Added:
2019-11-01 18:08:24,986 - DEBUG - Loaded backend tkagg version unknown.
208
Added:
2019-11-01 18:08:24,987 - DEBUG - Loaded backend TkAgg version unknown.
setup.py
@@ -0,0 +1,4 @@
1
Added:
from distutils.core import setup
2
Added:
from Cython.Build import cythonize
3
Added:
4
Added:
setup(ext_modules=cythonize('example.py'))
test/creator_test.py
@@ -0,0 +1,7 @@
1
Added:
import unittest
2
Added:
from aircraftstudio import creator
3
Added:
4
Added:
5
Added:
class TestDefaults(unittest.TestCase):
6
Added:
def test_default_aircraft(self):
7
Added:
self.assertEqual(creator.base.Aircraft.from_defaults().naca_num, 2412)