kiam-astro 2.0.4__py3-none-any.whl → 3.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
kiam_astro/engine.py ADDED
@@ -0,0 +1,296 @@
1
+ """
2
+
3
+ Sources: https://fakel-russia.com/en/productions
4
+ """
5
+
6
+ class Engine:
7
+
8
+ def __init__(self):
9
+
10
+ self.name = None
11
+ self.engine_class = None # 'attitude', 'orbital'
12
+ self.engine_type = None # 'chemical', 'electric'
13
+
14
+ self.force = None
15
+ self.specific_impulse = None
16
+ self.input_power = None
17
+ self.efficiency = None
18
+
19
+ def get_force_dependence(self):
20
+ return self.force
21
+
22
+ def get_specific_impulse_dependence(self):
23
+ return self.specific_impulse
24
+
25
+ def get_input_power_dependence(self):
26
+ return self.input_power
27
+
28
+ def get_efficiency_dependence(self):
29
+ return self.efficiency
30
+
31
+ class SPT50(Engine):
32
+
33
+ def __init__(self):
34
+ super(SPT50, self).__init__()
35
+
36
+ self.name = 'spt50'
37
+ self.engine_class = 'orbital'
38
+ self.engine_type = 'electric'
39
+
40
+ self.propellant = 'Xe'
41
+ self.discharge_voltage = 180 # V
42
+ self.discharge_current = 1.25 # A
43
+ self.discharge_power = 225 # W
44
+
45
+ self.force = 14.0e-03 # N
46
+ self.specific_impulse = 860 # s
47
+ self.power_to_thrust_ratio = 16.1e+03 # W/N
48
+ self.min_lifetime_h = 1217/24 # days
49
+ self.min_lifetime_cycles = 3011 # cycles
50
+ self.mass = 1.23 # kg
51
+ self.dimensions = '160 x 120 x 91' # mm
52
+
53
+ class SPT50M(Engine):
54
+
55
+ def __init__(self, option=None):
56
+ super(SPT50M, self).__init__()
57
+
58
+ self.name = 'spt50m'
59
+ self.engine_class = 'orbital'
60
+ self.engine_type = 'electric'
61
+
62
+ if option == 'Xe_low':
63
+
64
+ self.propellant = 'Xe'
65
+
66
+ self.discharge_voltage = 180 # V
67
+ self.discharge_current = 1.25 # A
68
+ self.discharge_power = 225 # W
69
+
70
+ self.force = 14.8e-03 # N
71
+ self.specific_impulse = 930 # s
72
+ self.power_to_thrust_ratio = 15.2e+03 # W/N
73
+ self.min_lifetime_h = 5000/24 # days
74
+ self.min_lifetime_cycles = 11000 # cycles
75
+ self.mass = 1.32 # kg
76
+ self.dimensions = '169 x 120 x 88' # mm
77
+
78
+ elif option == 'Xe_high':
79
+
80
+ self.propellant = 'Xe'
81
+
82
+ self.discharge_voltage = 300 # V
83
+ self.discharge_current = 1.0 # A
84
+ self.discharge_power = 300 # W
85
+
86
+ self.force = 18.0e-03 # N
87
+ self.specific_impulse = 1250 # s
88
+ self.power_to_thrust_ratio = 16.7e+03 # W/N
89
+ self.min_lifetime_h = 5000 / 24 # days
90
+ self.min_lifetime_cycles = 11000 # cycles
91
+ self.mass = 1.32 # kg
92
+ self.dimensions = '169 x 120 x 88' # mm
93
+
94
+ class SPT70(Engine):
95
+
96
+ def __init__(self):
97
+ super(SPT70, self).__init__()
98
+
99
+ self.name = 'spt70'
100
+ self.engine_class = 'orbital'
101
+ self.engine_type = 'electric'
102
+
103
+ self.propellant = 'Xe'
104
+
105
+ self.discharge_voltage = 300 # V
106
+ self.discharge_current = 2.23 # A
107
+ self.discharge_power = 670 # W
108
+
109
+ self.force = 39.0e-03 # N
110
+ self.specific_impulse = 1470 # s
111
+ self.power_to_thrust_ratio = 16.1e+03 # W/N
112
+ self.min_lifetime_h = 3100 / 24 # days
113
+ self.min_lifetime_cycles = 3000 # cycles
114
+ self.mass = 1.5 # kg
115
+ self.dimensions = '198 x 146 x 98' # mm
116
+
117
+ class SPT70M(Engine):
118
+
119
+ def __init__(self, option=None):
120
+ super(SPT70M, self).__init__()
121
+
122
+ self.name = 'spt70m'
123
+ self.engine_class = 'orbital'
124
+ self.engine_type = 'electric'
125
+
126
+ if option == 'Xe_low':
127
+
128
+ self.propellant = 'Xe'
129
+
130
+ self.discharge_voltage = 300 # V
131
+ self.discharge_current = 2.00 # A
132
+ self.discharge_power = 600 # W
133
+
134
+ self.force = 36.0e-03 # N
135
+ self.specific_impulse = 1430 # s
136
+ self.power_to_thrust_ratio = 15.2e+03 # W/N
137
+ self.min_lifetime_h = 7000 / 24 # days
138
+ self.min_lifetime_cycles = 11000 # cycles
139
+ self.mass = 2.6 # kg
140
+ self.dimensions = '200 x 128 x 94' # mm
141
+
142
+ elif option == 'Xe_med':
143
+
144
+ self.propellant = 'Xe'
145
+
146
+ self.discharge_voltage = 300 # V
147
+ self.discharge_current = 2.67 # A
148
+ self.discharge_power = 800 # W
149
+
150
+ self.force = 48.0e-03 # N
151
+ self.specific_impulse = 1530 # s
152
+ self.power_to_thrust_ratio = 16.7e+03 # W/N
153
+ self.min_lifetime_h = 7000 / 24 # days
154
+ self.min_lifetime_cycles = 11000 # cycles
155
+ self.mass = 2.6 # kg
156
+ self.dimensions = '200 x 128 x 94' # mm
157
+
158
+ elif option == 'Xe_high':
159
+
160
+ self.propellant = 'Xe'
161
+
162
+ self.discharge_voltage = 300 # V
163
+ self.discharge_current = 3.33 # A
164
+ self.discharge_power = 1000 # W
165
+
166
+ self.force = 59.0e-03 # N
167
+ self.specific_impulse = 1600 # s
168
+ self.power_to_thrust_ratio = 16.9e+03 # W/N
169
+ self.min_lifetime_h = 7000 / 24 # days
170
+ self.min_lifetime_cycles = 11000 # cycles
171
+ self.mass = 2.6 # kg
172
+ self.dimensions = '200 x 128 x 94' # mm
173
+
174
+ elif option == 'Kr_low':
175
+
176
+ self.propellant = 'Kr'
177
+
178
+ self.discharge_voltage = 300 # V
179
+ self.discharge_current = 2.00 # A
180
+ self.discharge_power = 600 # W
181
+
182
+ self.force = 28.0e-03 # N
183
+ self.specific_impulse = 1380 # s
184
+ self.power_to_thrust_ratio = 21.4e+03 # W/N
185
+ self.min_lifetime_h = 7000 / 24 # days
186
+ self.min_lifetime_cycles = 11000 # cycles
187
+ self.mass = 2.6 # kg
188
+ self.dimensions = '200 x 128 x 94' # mm
189
+
190
+ elif option == 'Kr_med':
191
+
192
+ self.propellant = 'Kr'
193
+
194
+ self.discharge_voltage = 300 # V
195
+ self.discharge_current = 2.67 # A
196
+ self.discharge_power = 800 # W
197
+
198
+ self.force = 37.0e-03 # N
199
+ self.specific_impulse = 1490 # s
200
+ self.power_to_thrust_ratio = 21.6e+03 # W/N
201
+ self.min_lifetime_h = 7000 / 24 # days
202
+ self.min_lifetime_cycles = 11000 # cycles
203
+ self.mass = 2.6 # kg
204
+ self.dimensions = '200 x 128 x 94' # mm
205
+
206
+ elif option == 'Kr_high':
207
+
208
+ self.propellant = 'Kr'
209
+
210
+ self.discharge_voltage = 300 # V
211
+ self.discharge_current = 3.33 # A
212
+ self.discharge_power = 1000 # W
213
+
214
+ self.force = 47.0e-03 # N
215
+ self.specific_impulse = 1560 # s
216
+ self.power_to_thrust_ratio = 21.3e+03 # W/N
217
+ self.min_lifetime_h = 7000 / 24 # days
218
+ self.min_lifetime_cycles = 11000 # cycles
219
+ self.mass = 2.6 # kg
220
+ self.dimensions = '200 x 128 x 94' # mm
221
+
222
+ else:
223
+
224
+ raise Exception('Unknown option.')
225
+
226
+ class SPT100B(Engine):
227
+
228
+ def __init__(self):
229
+ super(SPT100B, self).__init__()
230
+
231
+ self.name = 'spt100B'
232
+ self.engine_class = 'orbital'
233
+ self.engine_type = 'electric'
234
+
235
+ self.propellant = 'Xe'
236
+
237
+ self.discharge_voltage = 300 # V
238
+ self.discharge_current = 4.5 # A
239
+ self.discharge_power = 1350 # W
240
+
241
+ self.force = 83.0e-03 # N
242
+ self.specific_impulse = 1540 # s
243
+ self.efficiency = 0.45
244
+ self.power_to_thrust_ratio = 16.3e+03 # W/N
245
+ self.min_lifetime_h = 9000 / 24 # days
246
+ self.min_lifetime_cycles = 8800 # cycles
247
+ self.mass = 3.5 # kg
248
+ self.dimensions = '225 x 150 x 125' # mm
249
+
250
+ class SPT100BM(Engine):
251
+
252
+ def __init__(self):
253
+ super(SPT100BM, self).__init__()
254
+
255
+ self.name = 'spt100BM'
256
+ self.engine_class = 'orbital'
257
+ self.engine_type = 'electric'
258
+
259
+ self.propellant = 'Xe'
260
+
261
+ self.discharge_voltage = 300 # V
262
+ self.discharge_current = 4.5 # A
263
+ self.discharge_power = 1350 # W
264
+
265
+ self.force = 90.0e-03 # N
266
+ self.specific_impulse = 1600 # s
267
+ self.efficiency = 0.52
268
+ self.power_to_thrust_ratio = 15.0e+03 # W/N
269
+ self.min_lifetime_h = 9000 / 24 # days
270
+ self.min_lifetime_cycles = 9000 # cycles
271
+ self.mass = 4.2 # kg
272
+ self.dimensions = '200 x 142 x 110' # mm
273
+
274
+ class SPT140D(Engine):
275
+
276
+ def __init__(self):
277
+ super(SPT140D, self).__init__()
278
+
279
+ self.name = 'spt140D'
280
+ self.engine_class = 'orbital'
281
+ self.engine_type = 'electric'
282
+
283
+ self.propellant = 'Xe'
284
+
285
+ self.discharge_voltage = 300 # V
286
+ self.discharge_current = 15 # A
287
+ self.discharge_power = 4500 # W
288
+
289
+ self.force = 290.0e-03 # N
290
+ self.specific_impulse = 1750 # s
291
+ self.efficiency = 0.53
292
+ self.power_to_thrust_ratio = 15.5e+03 # W/N
293
+ self.min_lifetime_h = 15000 / 24 # days
294
+ self.min_lifetime_cycles = 7000 # cycles
295
+ self.mass = 8.5 # kg
296
+ self.dimensions = '305 x 249 x 109' # mm