femagtools 1.6.4__py3-none-any.whl → 1.6.6__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.
@@ -169,12 +169,12 @@ def wdg_leakage_inductances(machine):
169
169
  from ..windings import Winding
170
170
  wdg = Winding(
171
171
  {'Q': machine['stator']['num_slots'],
172
- 'm': machine['winding']['num_phases'],
172
+ 'm': machine['windings']['num_phases'],
173
173
  'p': machine['poles']//2,
174
- 'l': machine['winding']['num_layers'],
175
- 'yd': machine['winding']['coil_span']})
176
- n1 = wdg.turns_per_phase(machine['winding']['num_wires'],
177
- machine['winding']['num_par_wdgs'])
174
+ 'l': machine['windings']['num_layers'],
175
+ 'yd': machine['windings']['coil_span']})
176
+ n1 = wdg.turns_per_phase(machine['windings']['num_wires'],
177
+ machine['windings']['num_par_wdgs'])
178
178
  m = wdg.m
179
179
  p = wdg.p
180
180
  Q = wdg.Q
femagtools/plot/nc.py CHANGED
@@ -149,8 +149,7 @@ def __elements_of_subreg(isa, subreg):
149
149
  else:
150
150
  sr = [subreg]
151
151
  for s in sr:
152
- for e in isa.get_subregion(s).elements():
153
- yield e
152
+ yield from isa.get_subregion(s).elements()
154
153
  else:
155
154
  for e in isa.elements:
156
155
  yield e
@@ -232,7 +231,8 @@ def flux_density_pos(isa, ipos, subreg=[], icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
232
231
  ibeta: beta angle index or last index if -1
233
232
 
234
233
  """
235
- elements = [e for e in __elements_of_subreg(isa, subreg)]
234
+ elements = [e for e in __elements_of_subreg(isa, subreg)
235
+ if e not in isa.airgap_center_elements]
236
236
  b = []
237
237
  for e in elements:
238
238
  fd = isa.flux_density(e, icur, ibeta)
@@ -0,0 +1,74 @@
1
+
2
+
3
+ if __name__ == '__main__':
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__)
11
+ argparser = argparse.ArgumentParser(
12
+ description='Process SVG file and create a plot or FSL file.')
13
+ argparser.add_argument('svgfile',
14
+ help='name of SVG file')
15
+ argparser.add_argument('--rotor',
16
+ help='rotor without airgap in/out',
17
+ dest='rotor',
18
+ default='')
19
+ argparser.add_argument('--stator',
20
+ help='stator without airgap in/out',
21
+ dest='stator',
22
+ default='')
23
+ argparser.add_argument('-p', '--plot',
24
+ help='show plots',
25
+ dest='show_plots',
26
+ action="store_true")
27
+ argparser.add_argument('--areas',
28
+ help='show all areas',
29
+ dest='show_areas',
30
+ action="store_true")
31
+ argparser.add_argument('--id',
32
+ help='write id of areas',
33
+ dest='write_id',
34
+ action="store_true")
35
+ argparser.add_argument('-f', '--fsl',
36
+ help='create fsl',
37
+ dest='write_fsl',
38
+ action="store_true")
39
+ argparser.add_argument('-v', '--view',
40
+ help='show a view only',
41
+ dest='view',
42
+ action="store_true")
43
+ args = argparser.parse_args()
44
+
45
+ loglevel = logging.INFO
46
+ logging.basicConfig(level=loglevel,
47
+ format='%(asctime)s %(message)s',
48
+ filemode='w')
49
+ part = ()
50
+ if args.stator:
51
+ if args.rotor:
52
+ logger.error("Stator or Rotor expected")
53
+ sys.exit(1)
54
+ part = ('stator', args.stator)
55
+ elif args.rotor:
56
+ part = ('rotor', args.rotor)
57
+
58
+ if not args.write_fsl:
59
+ if not (args.show_plots or args.show_areas or args.view):
60
+ args.write_fsl = True
61
+
62
+ res = convert(args.svgfile, # SVG-Filename
63
+ part=part,
64
+ view_only=args.view,
65
+ show_plots=args.show_plots,
66
+ show_areas=args.show_areas,
67
+ write_fsl=args.write_fsl,
68
+ write_id=args.write_id)
69
+
70
+ if args.write_fsl:
71
+ if res is not None:
72
+ p = pathlib.Path(args.svgfile)
73
+ basename = p.stem
74
+ pathlib.Path(basename + '.fsl').write_text('\n'.join(res['fsl']))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: femagtools
3
- Version: 1.6.4
3
+ Version: 1.6.6
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
@@ -49,6 +49,10 @@ Provides-Extra: meshio
49
49
  Requires-Dist: meshio ; extra == 'meshio'
50
50
  Provides-Extra: mplot
51
51
  Requires-Dist: matplotlib ; extra == 'mplot'
52
+ Provides-Extra: svgfsl
53
+ Requires-Dist: dxfgrabber ; extra == 'svgfsl'
54
+ Requires-Dist: networkx ; extra == 'svgfsl'
55
+ Requires-Dist: lxml ; extra == 'svgfsl'
52
56
  Provides-Extra: test
53
57
  Requires-Dist: pytest ; extra == 'test'
54
58
  Provides-Extra: vtk
@@ -1,4 +1,4 @@
1
- femagtools/__init__.py,sha256=_2dfCbz4VR0j0Yiigc3W81KwRxyJJebitfFhHDctC9o,1615
1
+ femagtools/__init__.py,sha256=lJNqlV6QzIM5MGG7uASKr5ZDeIiKRDYFtLqJu1GYyRQ,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
@@ -23,7 +23,7 @@ femagtools/gmsh.py,sha256=IKhNiviIBji4cMxAhxaYXNqBRMNAPSKsBGdnGyxkyQw,3903
23
23
  femagtools/google.py,sha256=ugRyHY1zBjHR4aNfbA7GeF-ZU_NgleuVTZaWpi_XLT4,17144
24
24
  femagtools/grid.py,sha256=s7LfKKLm2H4-cza2kSEANq6vwxq10Su3TJl3kHShHRA,1561
25
25
  femagtools/hxy.py,sha256=PkiZ_-CRhtvtpkmLAP8iMtwvzh7CjKGGcAbOhFb4Nls,6275
26
- femagtools/isa7.py,sha256=cUZx9fpxZgkw2G-cnveR-X-_lWP7Z1Q88MCysLl9MFI,58336
26
+ femagtools/isa7.py,sha256=HnD_NZ5-Oj98kw8e3o3tdHt07kfEL-d0N6KmqkoeTeU,58332
27
27
  femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
28
28
  femagtools/job.py,sha256=dOatzr10nIda76CjVRSS0SfEWC8_BAw0kowli523qbY,11320
29
29
  femagtools/losscoeffs.py,sha256=dlSYDS13RqpPHLdv_EPWIA9liwhqjbxUiN7t7GFPZhw,5397
@@ -47,28 +47,32 @@ femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
47
47
  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
- femagtools/dxfsl/area.py,sha256=5LmTort_vp1JhrJUg4xiPAUHL-UjL6cZofOyhki3DAs,57998
51
- femagtools/dxfsl/areabuilder.py,sha256=Mcs0IhbSADfbjkWbnhw82bmrzpJ6Xed_Ja62i80aG_Q,20849
52
- femagtools/dxfsl/concat.py,sha256=8jtFFOSWslr9I3RCemsvzHyypSI_P2Y8QQgDlgmbcts,13381
50
+ femagtools/dxfsl/area.py,sha256=cbg3Vi3UUutiofvX9-L0OGmW4u1XmI8PjnY54Lq372M,58872
51
+ femagtools/dxfsl/areabuilder.py,sha256=gaSdJe-LImcn-rCe-9hXTVO6uJZMMEnV9hzft-MDTHs,26928
52
+ femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
53
53
  femagtools/dxfsl/conv.py,sha256=j17gjZ7XjoP6QmEO50ZMA-jyYrcMQEgpDH0hZN26RbM,9236
54
- femagtools/dxfsl/converter.py,sha256=6BCwlVp0PiSZ4Wj-YDgl7ynWNN2SBuwxw5VnNQ55Y9w,20821
54
+ femagtools/dxfsl/converter.py,sha256=41eyMSMad8YXiYSrTGrr9YuTPXHRIczh1fGX0MT9NZ8,21322
55
55
  femagtools/dxfsl/corner.py,sha256=UI1MLlVmiTBURywsOnXnXV7eBABoENc6ortkW_3GYH8,1266
56
56
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
57
+ femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
58
+ femagtools/dxfsl/femparser.py,sha256=DKRGzrJ4LFFsaNmxl6kiRR4A2y_Xv9Wp6jGYSg0Dz10,2120
57
59
  femagtools/dxfsl/fslrenderer.py,sha256=C4oonLPzKb_9IKvpm-fMvbhQZqtP_7xWG5bzpq8P1CY,23377
58
60
  femagtools/dxfsl/functions.py,sha256=bQftVRqGVndG48SPkjkOIULjcnB40Voz0lgDQ4uBMk8,11705
59
- femagtools/dxfsl/geom.py,sha256=ymXZS9kQfWkAC-ZFduz--flQOH3BydonqpjhbH4VBcU,164336
60
- femagtools/dxfsl/journal.py,sha256=VlbKKQr29UKDyz3DXFulLjHZcrMbPscHIgFZ4Vgl5PI,3567
61
- femagtools/dxfsl/machine.py,sha256=ftqLiwCyrzekUSvAOVD9AIM4hrPrIpId7PhLKwvSpWs,42158
61
+ femagtools/dxfsl/geom.py,sha256=m7IaejPCPDXHAaa2qE0YWLB3FjBVvnP9peeVikPdXWY,149449
62
+ femagtools/dxfsl/journal.py,sha256=7PQ4TZ5uKX1c_Xo7JvGdyw7PH_6ydqxgHdElqTBVSds,3239
63
+ femagtools/dxfsl/machine.py,sha256=a6kq7SXRp_u8sIH-aSRT_tnr3bpdvZItLvhNVm_TC5s,42548
62
64
  femagtools/dxfsl/plotrenderer.py,sha256=dIOM8p3UNTlqypxuPcLCegOaK19j3-ahelZ8hneLJ6k,12710
63
- femagtools/dxfsl/shape.py,sha256=4onAfXaVUWxC9C2WXVLYi3UH6w2lhUHxuLjdFgQOqks,48302
65
+ femagtools/dxfsl/shape.py,sha256=5M5vbT-W_nZCamlbuCixi0hlAOOUIlubsJT57TB-jS0,48608
66
+ femagtools/dxfsl/svgparser.py,sha256=R8V2V5jE6JyVfzshJVaPgsSuMlQf_pwJTFvrTrKDxZ0,2905
67
+ femagtools/dxfsl/symmetry.py,sha256=pLuGLPRCHLSQiMe7HeDcZr7IR-QJqJX49Rag_S408T8,13835
64
68
  femagtools/machine/__init__.py,sha256=U8W65K7jr7jDdC1KnJh0WjYd8DFaLnIFVvlh-TKcV94,7174
65
69
  femagtools/machine/afpm.py,sha256=hNyDFRLGmCuWRPZl_u1ztJ4pA-Y_mxLaVvg3UJkzRuE,24766
66
- femagtools/machine/effloss.py,sha256=I8s2Fog6klhgcRYw3448qfGvzaQ0AQUJXFdNoeDyhfE,13138
67
- femagtools/machine/im.py,sha256=ScIOLrlc4CPLYFNx2MmJqkpmbky_HXxFGZbMWUNGBrk,37881
68
- femagtools/machine/pm.py,sha256=-mPkUY4-og1blVeIdipSx6Ff178gtZnU6A6oDDvoUQk,56229
70
+ femagtools/machine/effloss.py,sha256=630JZnLBCIo_XKXkhXWg74hxHv18wy4f8hXNv5xiDwc,13151
71
+ femagtools/machine/im.py,sha256=8cA7aNr-OkrMlmFaqtnZkDrCQtqSKOFYePwcmZW3oAM,37925
72
+ femagtools/machine/pm.py,sha256=CpJpZDsbVXbJZSyxByI-DH1C9CFJZQ2zCDgIuXxsmR8,58517
69
73
  femagtools/machine/sizing.py,sha256=aN_OahewjTTBHnpRNfLh1AGFhqnoeZVuMBeb_3MCIVI,23096
70
- femagtools/machine/sm.py,sha256=pkik913kU41PPiUpwDy_6BEKfCIhvY6FEp-fbU2Lqew,34320
71
- femagtools/machine/utils.py,sha256=g9q4j9KxUWdb_iUOUQDuaAwwJx8XM0kZMpgnwsNz8hU,18616
74
+ femagtools/machine/sm.py,sha256=3QBnufKiQe85ELWyD9HwnXxvMmoYi-w7rpvCXAXOw10,34398
75
+ femagtools/machine/utils.py,sha256=rZNqrw0VkwEhexd_idffHyoodaID5cIDmteyIVF1MJ8,18621
72
76
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
73
77
  femagtools/moo/algorithm.py,sha256=lNEf0Bur4yFpIJeLtAC3oIus8sOMWTb7jepFlD28YzE,5445
74
78
  femagtools/moo/population.py,sha256=gi8PSVUXkYY5vzgAwWvxfMbH_z51fN58O4-NKoarwzI,10100
@@ -83,9 +87,10 @@ femagtools/plot/fieldlines.py,sha256=QtKF4nhnQ_FHHGh9Qez3GVmym0CLhW1ZyIKtk4pzos4
83
87
  femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
84
88
  femagtools/plot/forcedens.py,sha256=37FQLViGsjCh20tSlWlVfLTsvtjzdK_pEQGC2KcQ-xI,2996
85
89
  femagtools/plot/mcv.py,sha256=AKbWhJd20Kcec8Hv9dX32G5yTLPkcWorQS7-3P6m-mQ,2960
86
- femagtools/plot/nc.py,sha256=CU-6420EYq6S4ZzyqxCOyxrbHIeJ8_aBVxDPM3E2oD4,9516
90
+ femagtools/plot/nc.py,sha256=yq-uYppAEUePbo1SAaBKNKla3cyqdLh5z9ArhtwPYZY,9548
87
91
  femagtools/plot/phasor.py,sha256=5iqxCQi_idkdqYALJjQb6YFr_Zv5xsUayDoKL5HzsdE,4765
88
92
  femagtools/plot/wdg.py,sha256=UooR1K8JDoVjKWEox_AfkBY40L87jk2L9OdIFz4O-OY,8462
93
+ femagtools/svgfsl/converter.py,sha256=EKPQZwvV-jFDOceitt_sMhF5IxbWflj-4QU1xZrkwQM,2738
89
94
  femagtools/templates/FE-losses.mako,sha256=Rql5_8Q6_uthpr-uFXMUo7tdHehfZYND-7M-ohJXVU8,874
90
95
  femagtools/templates/afm_rotor.mako,sha256=fY-dlZvRLN9UAy5V6Q_inWghkSUe8pzrCYjJdNgfNXs,3112
91
96
  femagtools/templates/afm_stator.mako,sha256=l1xEwxffZ1jyx5wuJ3rhVbVlZirJzD2K8n4i5Dvbxuc,5344
@@ -163,6 +168,7 @@ tests/test_asm.py,sha256=NAMJ2Km4zi6byhooq5E7GZbkFeSNSTaLpJWt-jQF5cE,1398
163
168
  tests/test_bchreader.py,sha256=byqjDa_329cCgQFhLHLOgxiwZ0UMzvWb-rVjvN9wFQA,15497
164
169
  tests/test_conductor.py,sha256=T7bmuSdI2Fowwm2Ht-8D0Qnfs1_lx1aoi9RhC2p5nYU,332
165
170
  tests/test_convert.py,sha256=oseuhm3Iw-9b4WzBjA_Og2lgXPqKYicLUnfadq5Yick,6497
171
+ tests/test_dxfsl.py,sha256=DBAjtwNAwcB7VYZBjul7xf4ovu14n3Z0fxyreVzAW4A,383
166
172
  tests/test_effloss.py,sha256=-kJJNgS5c6saHXjNuhAe5GdWfr9mEYpPo8fE8OtjsNA,1142
167
173
  tests/test_erg.py,sha256=kRVzpXa6JDdbxTss18HUWKny9Dx8IMx9uGTrbQCnHwg,523
168
174
  tests/test_femag.py,sha256=55cCx90tJ1BEeu_-DOit37y26hFGVSYwkT81s9-p28E,1934
@@ -203,9 +209,9 @@ tests/moo/__init__.py,sha256=l8HD-AY8EwxOoo_VrG3HgEZb2MaHypvnhKCVSkR-DTA,808
203
209
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
204
210
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
205
211
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
206
- femagtools-1.6.4.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
207
- femagtools-1.6.4.dist-info/METADATA,sha256=ZXGbgC8exuvvRMnb1nl3VAObHDq3S-veE4ZdJRU8a3w,5685
208
- femagtools-1.6.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
209
- femagtools-1.6.4.dist-info/entry_points.txt,sha256=UXpu6KnrykN89sCUaFAIIzn_dYwuxizUS0GcPdoekro,195
210
- femagtools-1.6.4.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
211
- femagtools-1.6.4.dist-info/RECORD,,
212
+ femagtools-1.6.6.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
213
+ femagtools-1.6.6.dist-info/METADATA,sha256=cBqOE9Ki2As_lrqQtRRHaOlUzo8FqxihyLNB7SdGjxU,5838
214
+ femagtools-1.6.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
215
+ femagtools-1.6.6.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
216
+ femagtools-1.6.6.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
217
+ femagtools-1.6.6.dist-info/RECORD,,
@@ -3,3 +3,4 @@ femagtools-bchxml = femagtools.bchxml:main
3
3
  femagtools-convert = femagtools.convert:main
4
4
  femagtools-dxfsl = femagtools.dxfsl.conv:main
5
5
  femagtools-plot = femagtools.plot.bch:main
6
+ femagtools-svgfsl = femagtools.svgfsl.converter:main
tests/test_dxfsl.py ADDED
@@ -0,0 +1,12 @@
1
+ import pathlib
2
+ from femagtools.dxfsl.converter import convert
3
+
4
+ def test_convert():
5
+ p = pathlib.Path(__file__).parent / 'data' / 'IPM-130-4.dxf'
6
+ r = convert(str(p))
7
+
8
+ assert r['num_poles'] == 4
9
+ assert r['tot_num_slot'] == 12
10
+ totnumsl = [l for l in r['fsl'] if l.startswith('m.tot_num_slot')]
11
+ assert len(totnumsl) == 1
12
+ assert totnumsl[0].split()[-1] == '12'