femagtools 1.6.6__py3-none-any.whl → 1.6.7__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.
- femagtools/__init__.py +1 -1
- femagtools/dxfsl/areabuilder.py +128 -56
- femagtools/machine/effloss.py +7 -4
- femagtools/svgfsl/converter.py +11 -8
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/METADATA +1 -1
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/RECORD +10 -10
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/LICENSE +0 -0
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/WHEEL +0 -0
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/entry_points.txt +0 -0
- {femagtools-1.6.6.dist-info → femagtools-1.6.7.dist-info}/top_level.txt +0 -0
femagtools/__init__.py
CHANGED
femagtools/dxfsl/areabuilder.py
CHANGED
@@ -22,9 +22,27 @@ from femagtools.dxfsl.journal import getJournal
|
|
22
22
|
import io
|
23
23
|
import time
|
24
24
|
|
25
|
-
logger = logging.getLogger('femagtools.
|
25
|
+
logger = logging.getLogger('femagtools.areabuilder')
|
26
|
+
original_log_level = None
|
26
27
|
|
28
|
+
def disable_logging():
|
29
|
+
logger
|
30
|
+
global original_log_level
|
31
|
+
# Store the current log level to restore it later
|
32
|
+
original_log_level = logger.getEffectiveLevel()
|
33
|
+
logger.debug("Logging level %s disabled", original_log_level)
|
27
34
|
|
35
|
+
# Set the log level to a higher level, e.g., WARNING or CRITICAL
|
36
|
+
logging.disable(logging.CRITICAL)
|
37
|
+
|
38
|
+
|
39
|
+
def enable_logging():
|
40
|
+
#if original_log_level is not None:
|
41
|
+
# Restore the original log level after the tests
|
42
|
+
logging.disable(logging.NOTSET)
|
43
|
+
logger.debug("Logging level %s enabled", original_log_level)
|
44
|
+
|
45
|
+
|
28
46
|
def log_lefthand(left, edge1, edge2):
|
29
47
|
if left:
|
30
48
|
edge1.log_edge("**** left")
|
@@ -36,7 +54,6 @@ def log_lefthand(left, edge1, edge2):
|
|
36
54
|
# areabuilder #
|
37
55
|
#############################
|
38
56
|
|
39
|
-
|
40
57
|
class EdgeInfo(object):
|
41
58
|
def __init__(self,
|
42
59
|
edge_data=None,
|
@@ -113,18 +130,47 @@ class EdgeInfo(object):
|
|
113
130
|
start_angle = positive_angle(self.n2_angle_ingoing())
|
114
131
|
self.startangle = start_angle
|
115
132
|
|
116
|
-
def set_direction_angle(self,
|
117
|
-
|
118
|
-
|
133
|
+
def set_direction_angle(self, start_edge):
|
134
|
+
start_angle = start_edge.startangle
|
135
|
+
logger.debug("begin set_direction_angle: of %s", self.name)
|
136
|
+
self.angle = positive_angle(alpha_angle(start_angle, self.n1_angle_ingoing()))
|
137
|
+
logger.debug("set_direction_angle: angle is %s", self.angle)
|
138
|
+
|
139
|
+
if is_same_angle(0.0, self.angle, atol=0.008): # 1/2 degree
|
119
140
|
# reverse direction
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
141
|
+
logger.debug("set_direction_angle: reverse direction( nearly 180 degrees)")
|
142
|
+
|
143
|
+
if start_edge.is_arc():
|
144
|
+
start_lefthand = start_edge.n1_direction_lefthand()
|
145
|
+
if self.is_arc():
|
146
|
+
myself_lefthand = self.n1_direction_lefthand()
|
147
|
+
if start_lefthand:
|
148
|
+
if not myself_lefthand: # righthand => same side
|
149
|
+
left = self.radius() < start_edge.radius()
|
150
|
+
else:
|
151
|
+
left = False
|
152
|
+
else:
|
153
|
+
if myself_lefthand: # lefthand => same side
|
154
|
+
left = self.radius() > start_edge.radius()
|
155
|
+
else:
|
156
|
+
left = True
|
157
|
+
if left: # self is left
|
158
|
+
self.angle = np.pi * 2.0
|
159
|
+
else:
|
160
|
+
self.angle = 0.0
|
161
|
+
elif self.is_line():
|
162
|
+
if start_lefthand:
|
163
|
+
self.angle = 0.0
|
164
|
+
else:
|
165
|
+
self.angle = np.pi * 2.0
|
166
|
+
else: # start is a line
|
167
|
+
if self.is_arc():
|
168
|
+
if self.n1_direction_righthand():
|
169
|
+
self.angle = np.pi * 2.0
|
170
|
+
else:
|
171
|
+
self.angle = 0.0
|
172
|
+
|
173
|
+
logger.debug("end set_direction_angle: angle is %s", self.angle)
|
128
174
|
|
129
175
|
def n1_angle_outgoing(self):
|
130
176
|
return self.element.get_alpha(self.n1)
|
@@ -166,6 +212,7 @@ class EdgeInfo(object):
|
|
166
212
|
|
167
213
|
def myself_direction_lefthand(self, start_edge, nbr_edge, builder, ignore_start=False):
|
168
214
|
logger.debug("start of myself_direction_lefthand")
|
215
|
+
start_edge.log_edge("===> start")
|
169
216
|
self.log_edge("---> self")
|
170
217
|
nbr_edge.log_edge("---> nbr")
|
171
218
|
|
@@ -176,13 +223,14 @@ class EdgeInfo(object):
|
|
176
223
|
# 360 or 0 degrees => turn 180 degrees
|
177
224
|
logger.debug("-- ATTENTION: myself %s turns nearly 180 degrees", self.classname())
|
178
225
|
logger.debug(" the angle is %s", myself_angle)
|
226
|
+
|
179
227
|
if start_edge.is_arc():
|
180
228
|
if self.is_line() and not ignore_start:
|
181
229
|
if start_edge.line_arc_close_together(self):
|
182
230
|
logger.debug("START ARC and SELF LINE close")
|
183
231
|
arc_edge = start_edge.get_reverse_edge() # reverse start edge
|
184
232
|
arc_edge.log_name("REVERSE")
|
185
|
-
arc_edge.set_direction_angle(start_edge
|
233
|
+
arc_edge.set_direction_angle(start_edge)
|
186
234
|
left = not arc_edge.arc_line_direction_lefthand(start_edge, self, builder)
|
187
235
|
log_lefthand(left, self, arc_edge)
|
188
236
|
if left: # self is left
|
@@ -192,13 +240,8 @@ class EdgeInfo(object):
|
|
192
240
|
left = myself_angle > other_angle
|
193
241
|
|
194
242
|
log_lefthand(left, self, nbr_edge)
|
195
|
-
logger.debug("#
|
243
|
+
logger.debug("#1a: end of myself_direction_lefthand: ==> %s", left)
|
196
244
|
return left
|
197
|
-
|
198
|
-
if start_edge.n1_direction_lefthand():
|
199
|
-
myself_angle = 0.0
|
200
|
-
else:
|
201
|
-
myself_angle = np.pi * 2.0
|
202
245
|
|
203
246
|
elif self.is_arc():
|
204
247
|
if not ignore_start:
|
@@ -206,7 +249,7 @@ class EdgeInfo(object):
|
|
206
249
|
logger.debug("START LINE and SELF ARC close")
|
207
250
|
line_edge = start_edge.get_reverse_edge() # reverse start edge
|
208
251
|
line_edge.log_name("REVERSE")
|
209
|
-
line_edge.set_direction_angle(start_edge
|
252
|
+
line_edge.set_direction_angle(start_edge)
|
210
253
|
left = self.arc_line_direction_lefthand(start_edge, line_edge, builder)
|
211
254
|
log_lefthand(left, self, line_edge)
|
212
255
|
if left: # self is left
|
@@ -219,11 +262,6 @@ class EdgeInfo(object):
|
|
219
262
|
logger.debug("#4: end of myself_direction_lefthand: ==> %s", left)
|
220
263
|
return left
|
221
264
|
|
222
|
-
if self.n1_direction_lefthand():
|
223
|
-
myself_angle = 0.0
|
224
|
-
else:
|
225
|
-
myself_angle = np.pi * 2.0
|
226
|
-
|
227
265
|
if is_same_angle(0.0, other_angle, atol=0.008): # 1/2 degree
|
228
266
|
# 360 or 0 degrees => turn 180 degrees
|
229
267
|
logger.debug("-- ATTENTION: other %s turns nearly 180 degrees", nbr_edge.classname())
|
@@ -233,32 +271,22 @@ class EdgeInfo(object):
|
|
233
271
|
if start_edge.line_arc_close_together(nbr_edge):
|
234
272
|
logger.debug("START ARC and SELF LINE close")
|
235
273
|
arc_edge = start_edge.get_reverse_edge() # reverse start edge
|
236
|
-
arc_edge.set_direction_angle(start_edge
|
274
|
+
arc_edge.set_direction_angle(start_edge)
|
237
275
|
left = arc_edge.arc_line_direction_lefthand(start_edge, nbr_edge, builder)
|
238
|
-
log_lefthand(left, self,
|
276
|
+
log_lefthand(left, self, nbr_edge)
|
239
277
|
logger.debug("#5: end of myself_direction_lefthand: ==> %s", not left)
|
240
278
|
return not left
|
241
279
|
|
242
|
-
if start_edge.n1_direction_lefthand():
|
243
|
-
other_angle = 0.0
|
244
|
-
else:
|
245
|
-
other_angle = np.pi * 2.0
|
246
|
-
|
247
280
|
elif nbr_edge.is_arc():
|
248
281
|
if not ignore_start:
|
249
282
|
if nbr_edge.line_arc_close_together(start_edge):
|
250
283
|
logger.debug("START LINE and NEIGHBOR ARC close")
|
251
284
|
line_edge = start_edge.get_reverse_edge() # reverse start edge
|
252
|
-
line_edge.set_direction_angle(start_edge
|
285
|
+
line_edge.set_direction_angle(start_edge)
|
253
286
|
left = nbr_edge.arc_line_direction_lefthand(start_edge, line_edge, builder)
|
254
287
|
logger.debug("#6: end of myself_direction_lefthand: ==> %s", left)
|
255
288
|
return left
|
256
289
|
|
257
|
-
if nbr_edge.n1_direction_lefthand():
|
258
|
-
other_angle = 0.0
|
259
|
-
else:
|
260
|
-
other_angle = np.pi * 2.0
|
261
|
-
|
262
290
|
logger.debug("-- angles: myself = %s, other = %s",
|
263
291
|
myself_angle, other_angle)
|
264
292
|
if not is_same_angle(myself_angle, other_angle, atol=0.008): # 1/2 degree
|
@@ -328,7 +356,7 @@ class EdgeInfo(object):
|
|
328
356
|
line_edge.startangle = start_edge.startangle
|
329
357
|
# Line is start-edge now
|
330
358
|
next_edge = builder.next_edge_lefthand_side(line_edge) # next of line
|
331
|
-
next_edge.set_direction_angle(start_edge
|
359
|
+
next_edge.set_direction_angle(start_edge)
|
332
360
|
left = self.myself_direction_lefthand(start_edge,
|
333
361
|
next_edge,
|
334
362
|
builder,
|
@@ -336,10 +364,28 @@ class EdgeInfo(object):
|
|
336
364
|
logger.debug("end of arc_line_direction_lefthand: arc lefthand = %s", left)
|
337
365
|
return left
|
338
366
|
|
367
|
+
def get_alpha_points(self, prev_n):
|
368
|
+
n1 = self.n1
|
369
|
+
n2 = self.n2
|
370
|
+
a = 0.0
|
371
|
+
if self.is_arc():
|
372
|
+
angle = self.element.get_angle_of_arc()
|
373
|
+
if angle > np.pi * 0.75:
|
374
|
+
n = self.element.center_of_connection()
|
375
|
+
a = normalise_angle(alpha_points(prev_n,
|
376
|
+
n1,
|
377
|
+
n))
|
378
|
+
n1 = n
|
379
|
+
|
380
|
+
a += normalise_angle(alpha_points(prev_n,
|
381
|
+
n1,
|
382
|
+
n2))
|
383
|
+
return a, n1
|
339
384
|
|
340
385
|
class AreaBuilder(object):
|
341
386
|
def __init__(self,
|
342
387
|
geom=None,
|
388
|
+
nolog=True,
|
343
389
|
rtol=1e-04,
|
344
390
|
atol=1e-04,
|
345
391
|
ndec=6):
|
@@ -349,6 +395,7 @@ class AreaBuilder(object):
|
|
349
395
|
self.geom = geom
|
350
396
|
self.area_list = []
|
351
397
|
self.journal = getJournal()
|
398
|
+
self.nolog = nolog
|
352
399
|
|
353
400
|
def __str__(self):
|
354
401
|
return "rtol: {}\n".format(self.rtol) + \
|
@@ -379,7 +426,8 @@ class AreaBuilder(object):
|
|
379
426
|
area_list.append(a)
|
380
427
|
|
381
428
|
timer = Timer(start_it=True)
|
382
|
-
|
429
|
+
if self.nolog:
|
430
|
+
disable_logging()
|
383
431
|
self.set_edge_attributes()
|
384
432
|
|
385
433
|
for n in self.geom.nodes():
|
@@ -392,7 +440,8 @@ class AreaBuilder(object):
|
|
392
440
|
if result['ok']:
|
393
441
|
a = self.append_new_area(self.area_list, result['area'])
|
394
442
|
logger.debug("Area %s found", a.identifier())
|
395
|
-
|
443
|
+
if self.nolog:
|
444
|
+
enable_logging()
|
396
445
|
t = timer.stop("{} areas created in %0.4f seconds".format(len(self.area_list)))
|
397
446
|
if main:
|
398
447
|
self.journal.put('time_build_areas', t)
|
@@ -461,14 +510,13 @@ class AreaBuilder(object):
|
|
461
510
|
self.errors += 1
|
462
511
|
return result
|
463
512
|
|
464
|
-
|
513
|
+
prev_node = info_curr.n1
|
465
514
|
next_n1 = info_next.n1
|
466
515
|
next_n2 = info_next.n2
|
467
516
|
|
468
|
-
alpha =
|
469
|
-
next_n1,
|
470
|
-
next_n2))
|
517
|
+
alpha, prev_node = info_next.get_alpha_points(prev_node)
|
471
518
|
|
519
|
+
logger.debug("--> alpha %s <--", alpha)
|
472
520
|
c = 1
|
473
521
|
while not (nodes_are_equal(next_n1, start_n1) and
|
474
522
|
nodes_are_equal(next_n2, start_n2)):
|
@@ -505,14 +553,12 @@ class AreaBuilder(object):
|
|
505
553
|
self.errors += 1
|
506
554
|
return result
|
507
555
|
|
508
|
-
prev_n1 = info_curr.n1
|
509
556
|
next_n1 = info_next.n1
|
510
557
|
next_n2 = info_next.n2
|
511
558
|
|
512
|
-
a =
|
513
|
-
next_n1,
|
514
|
-
next_n2))
|
559
|
+
a, prev_node = info_next.get_alpha_points(prev_node)
|
515
560
|
alpha += a
|
561
|
+
logger.debug("--> alpha %s (+ %s) <--", alpha, a)
|
516
562
|
|
517
563
|
logger.debug(" END OF get_new_area")
|
518
564
|
|
@@ -543,20 +589,21 @@ class AreaBuilder(object):
|
|
543
589
|
logger.debug("WARNING: no neighbors available ???")
|
544
590
|
return None # unexpected end => appendix
|
545
591
|
|
546
|
-
logger.debug("-- NODE %s has %s neighbors", start_edge.n2, len(nbrs))
|
547
|
-
logger.debug("-- startangle is %s", start_edge.startangle)
|
548
|
-
|
549
592
|
if len(nbrs) == 1:
|
550
593
|
logger.debug("end of next_edge_lefthand_side: one neighbor")
|
551
594
|
return nbrs[0]
|
552
595
|
|
596
|
+
logger.debug("-- NODE %s has %s neighbors", start_edge.n2, len(nbrs))
|
597
|
+
logger.debug("-- startangle is %s", start_edge.startangle)
|
598
|
+
|
553
599
|
all_nbrs = []
|
554
600
|
logger.debug("candidates are:")
|
555
601
|
for i, nbr in enumerate(nbrs):
|
556
|
-
nbr.set_direction_angle(start_edge
|
602
|
+
nbr.set_direction_angle(start_edge)
|
557
603
|
nbr.log_name("EDG-{}".format(i))
|
558
604
|
nbr.log_edge("++++ candidate")
|
559
605
|
all_nbrs.append((nbr.angle, i, nbr))
|
606
|
+
logger.debug("--")
|
560
607
|
all_nbrs.sort()
|
561
608
|
|
562
609
|
a1, i1, nbr1 = all_nbrs[0] # lefthandside
|
@@ -565,8 +612,9 @@ class AreaBuilder(object):
|
|
565
612
|
nbr2.log_edge("==== next")
|
566
613
|
if nbr2.myself_direction_lefthand(start_edge, nbr1, self):
|
567
614
|
nbr1 = nbr2
|
568
|
-
logger.debug("--
|
569
|
-
|
615
|
+
logger.debug("-- %s ist neuer lefthand neighbor", nbr1.name)
|
616
|
+
else:
|
617
|
+
logger.debug("-- %s bleibt lefthand neighbor", nbr1.name)
|
570
618
|
nbr1.log_edge(">>>> LEFT")
|
571
619
|
logger.debug("end of next_edge_lefthand_side")
|
572
620
|
return nbr1
|
@@ -711,3 +759,27 @@ class AreaBuilder(object):
|
|
711
759
|
|
712
760
|
logger.debug("end of get_inner_airgap_line #%s", len(nodes))
|
713
761
|
return nodes, elements
|
762
|
+
|
763
|
+
def get_element_line(self, start_node, end_node):
|
764
|
+
logger.debug("begin of get_element_line")
|
765
|
+
assert(self.geom.area_list)
|
766
|
+
|
767
|
+
logger.debug("-- get line from %s to %s", start_node, end_node)
|
768
|
+
|
769
|
+
logger.debug("EDGE FOUND: %s - %s", n1, n2)
|
770
|
+
nodes = [n1, n2]
|
771
|
+
info = self.get_edge_info(n1, n2)
|
772
|
+
elements = [info.element]
|
773
|
+
|
774
|
+
while not points_are_close(start_corner, n2):
|
775
|
+
info.set_start_angle()
|
776
|
+
info = self.next_edge_lefthand_side(info)
|
777
|
+
if not info: # bad
|
778
|
+
return []
|
779
|
+
n2 = info.n2
|
780
|
+
nodes.append(n2)
|
781
|
+
elements.append(info.element)
|
782
|
+
|
783
|
+
logger.debug("end of get_inner_airgap_line #%s", len(nodes))
|
784
|
+
return nodes, elements
|
785
|
+
|
femagtools/machine/effloss.py
CHANGED
@@ -198,6 +198,7 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
|
|
198
198
|
with_tmech -- (optional) use friction and windage losses (default)
|
199
199
|
num_proc -- (optional) number of parallel processes (default 0)
|
200
200
|
progress -- (optional) custom function for progress logging
|
201
|
+
with_torque_corr -- (optional) T is corrected if out of range (default False)
|
201
202
|
|
202
203
|
Returns:
|
203
204
|
list of speed, current, voltage, torque, eta and losses
|
@@ -220,7 +221,8 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
|
|
220
221
|
rb = {}
|
221
222
|
r = m.characteristics(T, nmax, u1, nsamples=nsamples,
|
222
223
|
with_mtpv=with_mtpv, with_mtpa=with_mtpa,
|
223
|
-
with_pmconst=with_pmconst, with_tmech=with_tmech
|
224
|
+
with_pmconst=with_pmconst, with_tmech=with_tmech,
|
225
|
+
**kwargs) # driving mode
|
224
226
|
if driving_only:
|
225
227
|
rb['n'] = None
|
226
228
|
rb['T'] = None
|
@@ -235,12 +237,13 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
|
|
235
237
|
if 'n' not in rb:
|
236
238
|
rb = m.characteristics(-T, max(r['n']), u1, nsamples=nsamples,
|
237
239
|
with_mtpv=with_mtpv, with_mtpa=with_mtpa,
|
238
|
-
with_pmconst=with_pmconst, with_tmech=with_tmech
|
239
|
-
|
240
|
+
with_pmconst=with_pmconst, with_tmech=with_tmech,
|
241
|
+
**kwargs) # braking mode
|
242
|
+
|
240
243
|
if kwargs.get('mesh_func', 0):
|
241
244
|
ntmesh = kwargs['mesh_func'](r['n_type'], r['n'], r['T'],
|
242
245
|
rb['n'], rb['T'], npoints)
|
243
|
-
else:
|
246
|
+
else:
|
244
247
|
ntmesh = _generate_mesh(r['n'], r['T'],
|
245
248
|
rb['n'], rb['T'], npoints)
|
246
249
|
|
femagtools/svgfsl/converter.py
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
+
import sys
|
2
|
+
import pathlib
|
3
|
+
import argparse
|
4
|
+
import logging
|
5
|
+
import logging.config
|
6
|
+
from femagtools.dxfsl.converter import convert
|
1
7
|
|
8
|
+
logger = logging.getLogger(__name__)
|
2
9
|
|
3
|
-
|
4
|
-
import pathlib
|
5
|
-
import argparse
|
6
|
-
import logging
|
7
|
-
import logging.config
|
8
|
-
from femagtools.dxfsl.converter import convert
|
9
|
-
|
10
|
-
logger = logging.getLogger(__name__)
|
10
|
+
def main():
|
11
11
|
argparser = argparse.ArgumentParser(
|
12
12
|
description='Process SVG file and create a plot or FSL file.')
|
13
13
|
argparser.add_argument('svgfile',
|
@@ -72,3 +72,6 @@ if __name__ == '__main__':
|
|
72
72
|
p = pathlib.Path(args.svgfile)
|
73
73
|
basename = p.stem
|
74
74
|
pathlib.Path(basename + '.fsl').write_text('\n'.join(res['fsl']))
|
75
|
+
|
76
|
+
if __name__ == '__main__':
|
77
|
+
main()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: femagtools
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.7
|
4
4
|
Summary: Python API for FEMAG
|
5
5
|
Author-email: Ronald Tanner <tar@semafor.ch>, Dapu Zhang <dzhang@gtisoft.com>, Beat Holm <hob@semafor.ch>, Günther Amsler <amg@semafor.ch>, Nicolas Mauchle <mau@semafor.ch>
|
6
6
|
License: Copyright (c) 2016-2023, Semafor Informatik & Energie AG, Basel
|
@@ -1,4 +1,4 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=sZWTjcLQrMQetDOnxFFHROzNe3PSPMHr_BUzgnsJdXQ,1615
|
2
2
|
femagtools/airgap.py,sha256=ZCIZTYf6BbuNYx68y9fUDBQo3taN8RuGl8q-jJ7ygiA,1577
|
3
3
|
femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
|
4
4
|
femagtools/amela.py,sha256=pHjfXzpANI-7oz8MtrqNcyDZ6PxVM91vCJuvYhHy1rk,13891
|
@@ -48,7 +48,7 @@ femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
|
|
48
48
|
femagtools/windings.py,sha256=6ioABZRWQ3xA4kmEz2NUkXh-C-FmW9YYkjQKs5YakQs,22197
|
49
49
|
femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
|
50
50
|
femagtools/dxfsl/area.py,sha256=cbg3Vi3UUutiofvX9-L0OGmW4u1XmI8PjnY54Lq372M,58872
|
51
|
-
femagtools/dxfsl/areabuilder.py,sha256=
|
51
|
+
femagtools/dxfsl/areabuilder.py,sha256=plVZoMX1MPj5ZGxzQxAcdigmULVO_pSGqdLzchctRNY,29780
|
52
52
|
femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
|
53
53
|
femagtools/dxfsl/conv.py,sha256=j17gjZ7XjoP6QmEO50ZMA-jyYrcMQEgpDH0hZN26RbM,9236
|
54
54
|
femagtools/dxfsl/converter.py,sha256=41eyMSMad8YXiYSrTGrr9YuTPXHRIczh1fGX0MT9NZ8,21322
|
@@ -67,7 +67,7 @@ femagtools/dxfsl/svgparser.py,sha256=R8V2V5jE6JyVfzshJVaPgsSuMlQf_pwJTFvrTrKDxZ0
|
|
67
67
|
femagtools/dxfsl/symmetry.py,sha256=pLuGLPRCHLSQiMe7HeDcZr7IR-QJqJX49Rag_S408T8,13835
|
68
68
|
femagtools/machine/__init__.py,sha256=U8W65K7jr7jDdC1KnJh0WjYd8DFaLnIFVvlh-TKcV94,7174
|
69
69
|
femagtools/machine/afpm.py,sha256=hNyDFRLGmCuWRPZl_u1ztJ4pA-Y_mxLaVvg3UJkzRuE,24766
|
70
|
-
femagtools/machine/effloss.py,sha256=
|
70
|
+
femagtools/machine/effloss.py,sha256=Ewx9X8ebT07-PsATIQaGCZoFhGS0hrvwUihJXMWQVnI,13315
|
71
71
|
femagtools/machine/im.py,sha256=8cA7aNr-OkrMlmFaqtnZkDrCQtqSKOFYePwcmZW3oAM,37925
|
72
72
|
femagtools/machine/pm.py,sha256=CpJpZDsbVXbJZSyxByI-DH1C9CFJZQ2zCDgIuXxsmR8,58517
|
73
73
|
femagtools/machine/sizing.py,sha256=aN_OahewjTTBHnpRNfLh1AGFhqnoeZVuMBeb_3MCIVI,23096
|
@@ -90,7 +90,7 @@ femagtools/plot/mcv.py,sha256=AKbWhJd20Kcec8Hv9dX32G5yTLPkcWorQS7-3P6m-mQ,2960
|
|
90
90
|
femagtools/plot/nc.py,sha256=yq-uYppAEUePbo1SAaBKNKla3cyqdLh5z9ArhtwPYZY,9548
|
91
91
|
femagtools/plot/phasor.py,sha256=5iqxCQi_idkdqYALJjQb6YFr_Zv5xsUayDoKL5HzsdE,4765
|
92
92
|
femagtools/plot/wdg.py,sha256=UooR1K8JDoVjKWEox_AfkBY40L87jk2L9OdIFz4O-OY,8462
|
93
|
-
femagtools/svgfsl/converter.py,sha256=
|
93
|
+
femagtools/svgfsl/converter.py,sha256=ZwHOugB-LwIKDz27tjKWiA_dMA4JOL1FWWXPs812uwc,2748
|
94
94
|
femagtools/templates/FE-losses.mako,sha256=Rql5_8Q6_uthpr-uFXMUo7tdHehfZYND-7M-ohJXVU8,874
|
95
95
|
femagtools/templates/afm_rotor.mako,sha256=fY-dlZvRLN9UAy5V6Q_inWghkSUe8pzrCYjJdNgfNXs,3112
|
96
96
|
femagtools/templates/afm_stator.mako,sha256=l1xEwxffZ1jyx5wuJ3rhVbVlZirJzD2K8n4i5Dvbxuc,5344
|
@@ -209,9 +209,9 @@ tests/moo/__init__.py,sha256=l8HD-AY8EwxOoo_VrG3HgEZb2MaHypvnhKCVSkR-DTA,808
|
|
209
209
|
tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
|
210
210
|
tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
|
211
211
|
tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
|
212
|
-
femagtools-1.6.
|
213
|
-
femagtools-1.6.
|
214
|
-
femagtools-1.6.
|
215
|
-
femagtools-1.6.
|
216
|
-
femagtools-1.6.
|
217
|
-
femagtools-1.6.
|
212
|
+
femagtools-1.6.7.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
|
213
|
+
femagtools-1.6.7.dist-info/METADATA,sha256=TDyXPVCiFKJAM_ZqdGdVyj45nexLQiOqckAQZHMQ99E,5838
|
214
|
+
femagtools-1.6.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
215
|
+
femagtools-1.6.7.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
216
|
+
femagtools-1.6.7.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
217
|
+
femagtools-1.6.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|