femagtools 1.8.2__tar.gz → 1.8.4__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. {femagtools-1.8.2/src/femagtools.egg-info → femagtools-1.8.4}/PKG-INFO +3 -3
  2. {femagtools-1.8.2 → femagtools-1.8.4}/pyproject.toml +1 -1
  3. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/__init__.py +1 -1
  4. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/bch.py +10 -6
  5. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/area.py +69 -1
  6. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/conv.py +53 -16
  7. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/converter.py +273 -76
  8. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/fslrenderer.py +18 -22
  9. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/functions.py +38 -8
  10. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/geom.py +112 -35
  11. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/journal.py +1 -1
  12. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/machine.py +44 -7
  13. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/shape.py +4 -0
  14. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/symmetry.py +105 -32
  15. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/femag.py +64 -61
  16. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/fsl.py +4 -2
  17. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/isa7.py +3 -2
  18. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/afpm.py +45 -25
  19. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/effloss.py +31 -20
  20. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/im.py +6 -8
  21. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/sizing.py +4 -3
  22. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/sm.py +35 -37
  23. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/mcv.py +66 -37
  24. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/multiproc.py +79 -80
  25. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/parstudy.py +10 -4
  26. femagtools-1.8.4/src/femagtools/semi_fea.py +108 -0
  27. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/basic_modpar.mako +0 -3
  28. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/fe-contr.mako +18 -18
  29. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/ld_lq_fast.mako +3 -0
  30. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/mesh-airgap.mako +6 -0
  31. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/mult_cal_fast.mako +3 -0
  32. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/pm_sym_f_cur.mako +4 -1
  33. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/pm_sym_fast.mako +3 -0
  34. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/pm_sym_loss.mako +3 -0
  35. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/psd_psq_fast.mako +3 -0
  36. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/torq_calc.mako +3 -0
  37. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/tks.py +23 -20
  38. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/utils.py +1 -1
  39. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/windings.py +11 -4
  40. femagtools-1.8.4/src/femagtools/zmq.py +213 -0
  41. {femagtools-1.8.2 → femagtools-1.8.4/src/femagtools.egg-info}/PKG-INFO +3 -3
  42. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools.egg-info/SOURCES.txt +2 -0
  43. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools.egg-info/requires.txt +1 -1
  44. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_afpm.py +15 -6
  45. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_femag.py +1 -1
  46. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_fsl.py +4 -4
  47. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_mcv.py +20 -14
  48. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_parident.py +2 -1
  49. {femagtools-1.8.2 → femagtools-1.8.4}/LICENSE +0 -0
  50. {femagtools-1.8.2 → femagtools-1.8.4}/MANIFEST.in +0 -0
  51. {femagtools-1.8.2 → femagtools-1.8.4}/README.md +0 -0
  52. {femagtools-1.8.2 → femagtools-1.8.4}/setup.cfg +0 -0
  53. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/airgap.py +0 -0
  54. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/amazon.py +0 -0
  55. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/amela.py +0 -0
  56. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/asm.py +0 -0
  57. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/bchxml.py +0 -0
  58. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/condor.py +0 -0
  59. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/conductor.py +0 -0
  60. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/config.py +0 -0
  61. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/convert.py +0 -0
  62. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dakota.py +0 -0
  63. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dakota_femag.py +0 -0
  64. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dakotaout.py +0 -0
  65. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/docker.py +0 -0
  66. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/__init__.py +0 -0
  67. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/areabuilder.py +0 -0
  68. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/concat.py +0 -0
  69. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/corner.py +0 -0
  70. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/dumprenderer.py +0 -0
  71. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/dxfparser.py +0 -0
  72. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/femparser.py +0 -0
  73. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/plotrenderer.py +0 -0
  74. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/dxfsl/svgparser.py +0 -0
  75. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/ecloss.py +0 -0
  76. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/erg.py +0 -0
  77. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/forcedens.py +0 -0
  78. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/getset.py +0 -0
  79. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/gmsh.py +0 -0
  80. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/google.py +0 -0
  81. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/grid.py +0 -0
  82. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/heat_source_network.py +0 -0
  83. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/hxy.py +0 -0
  84. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/jhb.py +0 -0
  85. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/job.py +0 -0
  86. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/losscoeffs.py +0 -0
  87. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/__init__.py +0 -0
  88. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/pm.py +0 -0
  89. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/machine/utils.py +0 -0
  90. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/magnet.py +0 -0
  91. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/me.py +0 -0
  92. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/model.py +0 -0
  93. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/__init__.py +0 -0
  94. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/algorithm.py +0 -0
  95. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/population.py +0 -0
  96. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/problem.py +0 -0
  97. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/test/AlgorithmTest.py +0 -0
  98. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/test/PopulationTest.py +0 -0
  99. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moo/test/ProblemTest.py +0 -0
  100. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/moproblem.py +0 -0
  101. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/mxw2msh.py +0 -0
  102. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/nc.py +0 -0
  103. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/netlist.py +0 -0
  104. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/ntib.py +0 -0
  105. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/opt.py +0 -0
  106. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/__init__.py +0 -0
  107. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/bch.py +0 -0
  108. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/char.py +0 -0
  109. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/fieldlines.py +0 -0
  110. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/fluxdens.py +0 -0
  111. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/forcedens.py +0 -0
  112. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/mcv.py +0 -0
  113. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/nc.py +0 -0
  114. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/phasor.py +0 -0
  115. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/plot/wdg.py +0 -0
  116. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/poc.py +0 -0
  117. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/svgfsl/converter.py +0 -0
  118. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/FE-losses.mako +0 -0
  119. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/afm_rotor.mako +0 -0
  120. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/afm_stator.mako +0 -0
  121. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/airgapinduc.mako +0 -0
  122. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/asyn_motor.mako +0 -0
  123. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/bertotti.mako +0 -0
  124. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/calc_field_ts.mako +0 -0
  125. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/calc_therm_field.mako +0 -0
  126. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/cogg_calc.mako +0 -0
  127. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/colorgrad.mako +0 -0
  128. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/com_motor_sim.mako +0 -0
  129. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/conduct-data.mako +0 -0
  130. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/connect_models.mako +0 -0
  131. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/cu_losses.mako +0 -0
  132. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/displ_stator_rotor.mako +0 -0
  133. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/ec-rotorbar.mako +0 -0
  134. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/fieldcalc.mako +0 -0
  135. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/gen_hairpin_winding.mako +0 -0
  136. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/gen_winding.mako +0 -0
  137. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/inductances.mako +0 -0
  138. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/leak_dist_wind.mako +0 -0
  139. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/leak_evol_wind.mako +0 -0
  140. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/leak_tooth_wind.mako +0 -0
  141. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnet-data.mako +0 -0
  142. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetFC2.mako +0 -0
  143. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIron.mako +0 -0
  144. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIron2.mako +0 -0
  145. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIron3.mako +0 -0
  146. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIron4.mako +0 -0
  147. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIron5.mako +0 -0
  148. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetIronV.mako +0 -0
  149. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetSector.mako +0 -0
  150. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetSectorLinear.mako +0 -0
  151. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetShell.mako +0 -0
  152. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/magnetShell2.mako +0 -0
  153. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/modal_analysis.mako +0 -0
  154. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/modified_steinmetz.mako +0 -0
  155. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/new_model.mako +0 -0
  156. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/noloadflux-rot.mako +0 -0
  157. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/noloadflux.mako +0 -0
  158. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/noloadfluxdc.mako +0 -0
  159. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/open.mako +0 -0
  160. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/plots.mako +0 -0
  161. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/prepare_thermal.mako +0 -0
  162. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/ring.mako +0 -0
  163. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/rot_hsm.mako +0 -0
  164. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/rotorAsyn.mako +0 -0
  165. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/rotorKs2.mako +0 -0
  166. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/rotor_msh.mako +0 -0
  167. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/rotor_winding.mako +0 -0
  168. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/shortcircuit.mako +0 -0
  169. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/srm.mako +0 -0
  170. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/stator1.mako +0 -0
  171. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/stator2.mako +0 -0
  172. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/stator3Linear.mako +0 -0
  173. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/stator4.mako +0 -0
  174. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/statorBG.mako +0 -0
  175. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/statorRing.mako +0 -0
  176. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/statorRotor3.mako +0 -0
  177. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/stator_msh.mako +0 -0
  178. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/therm-dynamic.mako +0 -0
  179. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/templates/therm_static.mako +0 -0
  180. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/ts.py +0 -0
  181. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/vbf.py +0 -0
  182. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools/vtu.py +0 -0
  183. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools.egg-info/dependency_links.txt +0 -0
  184. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools.egg-info/entry_points.txt +0 -0
  185. {femagtools-1.8.2 → femagtools-1.8.4}/src/femagtools.egg-info/top_level.txt +0 -0
  186. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/__init__.py +0 -0
  187. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/engines/__init__.py +0 -0
  188. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/engines/test_amazon.py +0 -0
  189. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/engines/test_config.py +0 -0
  190. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/geom/__init__.py +0 -0
  191. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/geom/test_functions.py +0 -0
  192. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/geom/test_point_inside.py +0 -0
  193. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/moo/__init__.py +0 -0
  194. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/moo/test_algorithm.py +0 -0
  195. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/moo/test_population.py +0 -0
  196. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/moo/test_problem.py +0 -0
  197. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_airgap_induction.py +0 -0
  198. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_amela.py +0 -0
  199. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_asm.py +0 -0
  200. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_bchreader.py +0 -0
  201. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_conductor.py +0 -0
  202. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_convert.py +0 -0
  203. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_dxfsl.py +0 -0
  204. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_effloss.py +0 -0
  205. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_erg.py +0 -0
  206. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_forcedens.py +0 -0
  207. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_heat_source_network.py +0 -0
  208. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_hxy.py +0 -0
  209. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_im.py +0 -0
  210. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_isa7.py +0 -0
  211. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_jhb.py +0 -0
  212. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_job.py +0 -0
  213. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_losscoeffs.py +0 -0
  214. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_machine.py +0 -0
  215. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_magncurv.py +0 -0
  216. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_magnet.py +0 -0
  217. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_mcvreader.py +0 -0
  218. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_me.py +0 -0
  219. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_model.py +0 -0
  220. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_nc.py +0 -0
  221. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_parstudy.py +0 -0
  222. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_pocfile.py +0 -0
  223. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_sizing.py +0 -0
  224. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_sm.py +0 -0
  225. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_tksreader.py +0 -0
  226. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_ts.py +0 -0
  227. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_vbfreader.py +0 -0
  228. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_vtu.py +0 -0
  229. {femagtools-1.8.2 → femagtools-1.8.4}/src/tests/test_windings.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: femagtools
3
- Version: 1.8.2
3
+ Version: 1.8.4
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
@@ -37,7 +37,7 @@ Classifier: Topic :: Scientific/Engineering
37
37
  Requires-Python: >=3.7
38
38
  Description-Content-Type: text/markdown
39
39
  License-File: LICENSE
40
- Requires-Dist: numpy<=1.26.4
40
+ Requires-Dist: numpy
41
41
  Requires-Dist: scipy
42
42
  Requires-Dist: mako
43
43
  Requires-Dist: six
@@ -22,7 +22,7 @@ classifiers = [
22
22
  "Topic :: Scientific/Engineering"
23
23
  ]
24
24
  dependencies = [
25
- 'numpy<=1.26.4', # lmfit restriction
25
+ 'numpy',
26
26
  'scipy',
27
27
  'mako',
28
28
  'six',
@@ -2,7 +2,7 @@
2
2
 
3
3
  """
4
4
  __title__ = 'femagtools'
5
- __version__ = '1.8.2'
5
+ __version__ = '1.8.4'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2023-2024 Gamma Technology'
@@ -307,14 +307,14 @@ class Reader:
307
307
  self.torque_fft = [
308
308
  {'order': order.tolist(),
309
309
  'torque': tq.tolist()}]
310
- except (KeyError, IndexError):
310
+ except (KeyError, IndexError, ValueError):
311
311
  pass
312
-
312
+
313
313
  # check number of phases
314
- try:
314
+ try:
315
315
  if 'm' not in self.machine:
316
316
  self.machine['m'] = len(self.current_angles)
317
- except:
317
+ except:
318
318
  pass
319
319
 
320
320
  return self
@@ -1439,17 +1439,21 @@ class Reader:
1439
1439
  'psid', 'psiq', 'torque')
1440
1440
  except:
1441
1441
  pass
1442
- if self.dqPar['psim']:
1442
+ if self.dqPar.get('psim', 0):
1443
1443
  self.dqPar.pop('up', None)
1444
1444
  else:
1445
+ up = np.array(self.dqPar.pop('up', None))
1445
1446
  self.dqPar.pop('psim', None)
1447
+
1446
1448
  try:
1447
1449
  w1 = np.pi*self.dqPar['speed']*self.dqPar['npoles']
1448
1450
  r1 = self.machine.get('r1', 0.0)
1449
1451
  beta = np.array(self.dqPar['beta'])/180*np.pi
1450
1452
  iq = np.cos(beta)*self.dqPar['i1']
1451
1453
  id = np.sin(beta)*self.dqPar['i1']
1452
- up = w1*np.array(self.dqPar['psim'])
1454
+ if 'psim' in self.dqPar:
1455
+ up = w1*np.array(self.dqPar['psim'])
1456
+
1453
1457
  ld = np.array(self.dqPar['ld'])
1454
1458
  lq = np.array(self.dqPar['lq'])
1455
1459
  uq = r1*iq + up + id*w1*ld
@@ -12,6 +12,7 @@ import numpy as np
12
12
  import networkx as nx
13
13
  import logging
14
14
  from .functions import less_equal, less, greater_equal, greater
15
+ from .functions import greater_angle, less_angle
15
16
  from .functions import distance, alpha_angle, alpha_line, min_angle, max_angle
16
17
  from .functions import point, line_m, line_n, intersect_point, points_are_close
17
18
  from .functions import middle_angle, part_of_circle, is_same_angle
@@ -75,6 +76,10 @@ class Area(object):
75
76
  self.start = 0.0
76
77
  self.sym_startangle = 0.0
77
78
  self.sym_endangle = 0.0
79
+ self.sym_upper_left_dist = None
80
+ self.sym_upper_right_dist = None
81
+ self.sym_lower_left_dist = None
82
+ self.sym_lower_right_dist = None
78
83
  self.sym_type = 0
79
84
  self.symmetry = 0
80
85
  self.sym_tolerance = sym_tolerance
@@ -636,7 +641,10 @@ class Area(object):
636
641
  def get_alpha(self, center):
637
642
  if self.center_is_inside(center):
638
643
  return np.pi*2.0
639
- return alpha_angle(self.min_angle, self.max_angle)
644
+ return alpha_angle(self.min_angle,
645
+ self.max_angle,
646
+ rtol=0.0,
647
+ atol=0.0)
640
648
 
641
649
  def get_mid_angle(self, center):
642
650
  if self.center_is_inside(center):
@@ -674,6 +682,66 @@ class Area(object):
674
682
  return True
675
683
  return False
676
684
 
685
+ def set_symmetry_parameter(self, center):
686
+ all_list = [(distance(center, n), alpha_line(center, n))
687
+ for n in self.list_of_nodes()]
688
+ mid = middle_angle(self.min_angle, self.max_angle)
689
+ left_list = [(d, a) for d, a in all_list if greater_angle(a, mid)]
690
+ right_list = [(d, a) for d, a in all_list if less_angle(a, mid)]
691
+ left_list.sort()
692
+ right_list.sort()
693
+
694
+ if left_list:
695
+ l_low_d, l_low_a = left_list[0]
696
+ l_up_d, l_up_a = left_list[-1]
697
+ else:
698
+ l_low_d = self.min_dist
699
+ l_up_d = self.max_dist
700
+ if right_list:
701
+ r_low_d, r_low_a = right_list[0]
702
+ r_up_d, r_up_a = right_list[-1]
703
+ else:
704
+ r_low_d = self.min_dist
705
+ r_up_d = self.max_dist
706
+ self.sym_upper_left_dist = l_up_d
707
+ self.sym_upper_right_dist = r_up_d
708
+ self.sym_lower_left_dist = l_low_d
709
+ self.sym_lower_right_dist = r_low_d
710
+
711
+ def is_symmetry_equal(self, area):
712
+ logger.debug("check area %s -- %s", self.get_id(), area.get_id())
713
+
714
+ bad = False
715
+ if not np.isclose(self.sym_lower_left_dist, area.sym_lower_left_dist,
716
+ rtol=5e-1, atol=5e-1):
717
+ logger.debug("Lower left: %s != %s",
718
+ self.sym_lower_left_dist,
719
+ area.sym_lower_left_dist)
720
+ bad = True
721
+
722
+ if not np.isclose(self.sym_lower_right_dist, area.sym_lower_right_dist,
723
+ rtol=5e-1, atol=5e-1):
724
+ logger.debug("Lower right: %s != %s",
725
+ self.sym_lower_right_dist,
726
+ area.sym_lower_right_dist)
727
+ bad = True
728
+
729
+ if not np.isclose(self.sym_upper_left_dist, area.sym_upper_left_dist,
730
+ rtol=5e-1, atol=5e-1):
731
+ logger.debug("Upper left: %s != %s",
732
+ self.sym_upper_left_dist,
733
+ area.sym_upper_left_dist)
734
+ bad = True
735
+
736
+ if not np.isclose(self.sym_upper_right_dist, area.sym_upper_right_dist,
737
+ rtol=5e-1, atol=5e-1):
738
+ logger.debug("Upper right: %s != %s",
739
+ self.sym_upper_right_dist,
740
+ area.sym_upper_right_dist)
741
+ bad = True
742
+
743
+ return not bad
744
+
677
745
  def increment(self, a):
678
746
  if self.is_identical(a):
679
747
  return
@@ -18,8 +18,18 @@ logger = logging.getLogger(__name__)
18
18
  def main():
19
19
  argparser = argparse.ArgumentParser(
20
20
  description='Process DXF file and create a plot or FSL file.')
21
+ super_help = "--Help" in sys.argv
22
+ if super_help:
23
+ sys.argv.append("--help")
24
+
21
25
  argparser.add_argument('dxfile',
22
26
  help='name of DXF file')
27
+ argparser.add_argument('--Help',
28
+ help=(argparse.SUPPRESS if not super_help else
29
+ "show this extended help message and exit"),
30
+ dest='Help',
31
+ action="store_true",
32
+ default=False)
23
33
  argparser.add_argument('--PMSM',
24
34
  help='Permanent Magnet Synchronous Motor',
25
35
  dest='PMSM',
@@ -47,47 +57,56 @@ def main():
47
57
  dest='stator',
48
58
  default='')
49
59
  argparser.add_argument('--sympart',
50
- help='forced symmetry part',
60
+ help=(argparse.SUPPRESS if not super_help else
61
+ 'forced symmetry part'),
51
62
  dest='sym_part',
52
63
  type=int,
53
64
  default=0)
54
65
  argparser.add_argument('-a', '--airgap',
55
- help='correct airgap',
66
+ help=(argparse.SUPPRESS if not super_help else
67
+ 'correct airgap'),
56
68
  dest='airgap',
57
69
  type=float,
58
70
  default=0.0)
59
71
  argparser.add_argument('--airgap2',
60
- help='correct airgap',
72
+ help=(argparse.SUPPRESS if not super_help else
73
+ 'correct airgap'),
61
74
  dest='airgap2',
62
75
  type=float,
63
76
  default=0.0)
64
77
  argparser.add_argument('-t', '--symtol',
65
- help='absolut tolerance to find symmetry axis',
78
+ help=(argparse.SUPPRESS if not super_help else
79
+ 'absolut tolerance to find symmetry axis'),
66
80
  dest='sym_tolerance',
67
81
  type=float,
68
82
  default=0.001)
69
83
  argparser.add_argument('--mindist',
70
- help='minimal distance of spline control-points',
84
+ help=(argparse.SUPPRESS if not super_help else
85
+ 'minimal distance of spline control-points'),
71
86
  dest='mindist',
72
87
  type=float,
73
88
  default=0.01)
74
89
  argparser.add_argument('--rtol',
75
- help='relative tolerance (pickdist)',
90
+ help=(argparse.SUPPRESS if not super_help else
91
+ 'relative tolerance (pickdist)'),
76
92
  dest='rtol',
77
93
  type=float,
78
94
  default=1e-04)
79
95
  argparser.add_argument('--atol',
80
- help='absolut tolerance (pickdist)',
96
+ help=(argparse.SUPPRESS if not super_help else
97
+ 'absolut tolerance (pickdist)'),
81
98
  dest='atol',
82
99
  type=float,
83
100
  default=1e-03)
84
101
  argparser.add_argument('--da',
85
- help='distance airgap',
102
+ help=(argparse.SUPPRESS if not super_help else
103
+ 'distance airgap'),
86
104
  dest='da',
87
105
  type=float,
88
106
  default=0.0)
89
107
  argparser.add_argument('--dy',
90
- help='distance yoke',
108
+ help=(argparse.SUPPRESS if not super_help else
109
+ 'distance yoke'),
91
110
  dest='dy',
92
111
  type=float,
93
112
  default=0.0)
@@ -104,27 +123,36 @@ def main():
104
123
  dest='small_plots',
105
124
  action="store_true")
106
125
  argparser.add_argument('--areas',
107
- help='show all areas',
126
+ help=(argparse.SUPPRESS if not super_help else
127
+ 'show all areas with single plots'),
108
128
  dest='show_areas',
109
129
  action="store_true")
110
130
  argparser.add_argument('--id',
111
- help='write id of areas',
131
+ help=(argparse.SUPPRESS if not super_help else
132
+ 'write id of areas into the plot'),
112
133
  dest='write_id',
113
134
  action="store_true")
114
135
  argparser.add_argument('-f', '--fsl',
115
136
  help='create fsl',
116
137
  dest='write_fsl',
117
138
  action="store_true")
139
+ argparser.add_argument('--fsl_single',
140
+ help=(argparse.SUPPRESS if not super_help else
141
+ 'create separate fsl for rotor and stator'),
142
+ dest='write_fsl_single',
143
+ action="store_true")
118
144
  argparser.add_argument('-v', '--view',
119
145
  help='show a view only',
120
146
  dest='view',
121
147
  action="store_true")
122
148
  argparser.add_argument('-k', '--korr',
123
- help='show a view with korrections',
149
+ help=(argparse.SUPPRESS if not super_help else
150
+ 'show a view with korrections'),
124
151
  dest='view_korr',
125
152
  action="store_true")
126
153
  argparser.add_argument('--png',
127
- help='write png-file only',
154
+ help=(argparse.SUPPRESS if not super_help else
155
+ 'write plot in png-file only'),
128
156
  dest='write_png',
129
157
  action="store_true")
130
158
  argparser.add_argument('-d', '--debug',
@@ -135,8 +163,9 @@ def main():
135
163
  help='print information in logfile and set --debug',
136
164
  dest='debug',
137
165
  action="store_true")
138
- argparser.add_argument('-j',
139
- help='print information in journal file',
166
+ argparser.add_argument('--journal',
167
+ help=(argparse.SUPPRESS if not super_help else
168
+ 'print information in journal file'),
140
169
  dest='journal',
141
170
  action="store_true")
142
171
  argparser.add_argument('--version',
@@ -151,6 +180,12 @@ def main():
151
180
  help='create full model (fsl only)',
152
181
  dest='full_model',
153
182
  action="store_true")
183
+ argparser.add_argument('--no_processing',
184
+ help=(argparse.SUPPRESS if not super_help else
185
+ "omit multiprocessing"),
186
+ dest='no_processing',
187
+ action="store_true",
188
+ default=False)
154
189
 
155
190
  args = argparser.parse_args()
156
191
 
@@ -242,11 +277,13 @@ def main():
242
277
  show_areas=args.show_areas,
243
278
  small_plots=args.small_plots,
244
279
  write_fsl=args.write_fsl,
280
+ write_fsl_single=args.write_fsl_single,
245
281
  write_png=args.write_png,
246
282
  write_id=args.write_id,
247
283
  debug_mode=args.debugger,
248
284
  full_model=args.full_model,
249
- write_journal=args.journal)
285
+ write_journal=args.journal,
286
+ no_processing=args.no_processing)
250
287
  keys = ('tot_num_slot', 'num_sl_gen', 'num_poles', 'nodedist',
251
288
  'dy1', 'da1', 'da2', 'dy2', 'agndst', 'name')
252
289
  logger.info("%s", {k: res[k] for k in keys if k in res})