femagtools 1.8.4__tar.gz → 1.8.5__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.4/src/femagtools.egg-info → femagtools-1.8.5}/PKG-INFO +1 -1
  2. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/__init__.py +1 -1
  3. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/converter.py +0 -5
  4. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/afpm.py +275 -0
  5. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/utils.py +2 -1
  6. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/char.py +19 -8
  7. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/utils.py +1 -1
  8. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/zmq.py +0 -1
  9. {femagtools-1.8.4 → femagtools-1.8.5/src/femagtools.egg-info}/PKG-INFO +1 -1
  10. {femagtools-1.8.4 → femagtools-1.8.5}/LICENSE +0 -0
  11. {femagtools-1.8.4 → femagtools-1.8.5}/MANIFEST.in +0 -0
  12. {femagtools-1.8.4 → femagtools-1.8.5}/README.md +0 -0
  13. {femagtools-1.8.4 → femagtools-1.8.5}/pyproject.toml +0 -0
  14. {femagtools-1.8.4 → femagtools-1.8.5}/setup.cfg +0 -0
  15. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/airgap.py +0 -0
  16. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/amazon.py +0 -0
  17. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/amela.py +0 -0
  18. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/asm.py +0 -0
  19. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/bch.py +0 -0
  20. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/bchxml.py +0 -0
  21. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/condor.py +0 -0
  22. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/conductor.py +0 -0
  23. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/config.py +0 -0
  24. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/convert.py +0 -0
  25. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dakota.py +0 -0
  26. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dakota_femag.py +0 -0
  27. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dakotaout.py +0 -0
  28. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/docker.py +0 -0
  29. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/__init__.py +0 -0
  30. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/area.py +0 -0
  31. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/areabuilder.py +0 -0
  32. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/concat.py +0 -0
  33. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/conv.py +0 -0
  34. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/corner.py +0 -0
  35. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/dumprenderer.py +0 -0
  36. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/dxfparser.py +0 -0
  37. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/femparser.py +0 -0
  38. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/fslrenderer.py +0 -0
  39. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/functions.py +0 -0
  40. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/geom.py +0 -0
  41. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/journal.py +0 -0
  42. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/machine.py +0 -0
  43. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/plotrenderer.py +0 -0
  44. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/shape.py +0 -0
  45. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/svgparser.py +0 -0
  46. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/dxfsl/symmetry.py +0 -0
  47. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/ecloss.py +0 -0
  48. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/erg.py +0 -0
  49. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/femag.py +0 -0
  50. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/forcedens.py +0 -0
  51. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/fsl.py +0 -0
  52. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/getset.py +0 -0
  53. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/gmsh.py +0 -0
  54. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/google.py +0 -0
  55. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/grid.py +0 -0
  56. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/heat_source_network.py +0 -0
  57. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/hxy.py +0 -0
  58. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/isa7.py +0 -0
  59. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/jhb.py +0 -0
  60. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/job.py +0 -0
  61. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/losscoeffs.py +0 -0
  62. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/__init__.py +0 -0
  63. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/effloss.py +0 -0
  64. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/im.py +0 -0
  65. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/pm.py +0 -0
  66. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/sizing.py +0 -0
  67. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/machine/sm.py +0 -0
  68. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/magnet.py +0 -0
  69. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/mcv.py +0 -0
  70. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/me.py +0 -0
  71. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/model.py +0 -0
  72. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/__init__.py +0 -0
  73. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/algorithm.py +0 -0
  74. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/population.py +0 -0
  75. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/problem.py +0 -0
  76. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/test/AlgorithmTest.py +0 -0
  77. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/test/PopulationTest.py +0 -0
  78. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moo/test/ProblemTest.py +0 -0
  79. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/moproblem.py +0 -0
  80. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/multiproc.py +0 -0
  81. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/mxw2msh.py +0 -0
  82. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/nc.py +0 -0
  83. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/netlist.py +0 -0
  84. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/ntib.py +0 -0
  85. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/opt.py +0 -0
  86. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/parstudy.py +0 -0
  87. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/__init__.py +0 -0
  88. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/bch.py +0 -0
  89. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/fieldlines.py +0 -0
  90. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/fluxdens.py +0 -0
  91. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/forcedens.py +0 -0
  92. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/mcv.py +0 -0
  93. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/nc.py +0 -0
  94. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/phasor.py +0 -0
  95. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/plot/wdg.py +0 -0
  96. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/poc.py +0 -0
  97. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/semi_fea.py +0 -0
  98. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/svgfsl/converter.py +0 -0
  99. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/FE-losses.mako +0 -0
  100. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/afm_rotor.mako +0 -0
  101. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/afm_stator.mako +0 -0
  102. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/airgapinduc.mako +0 -0
  103. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/asyn_motor.mako +0 -0
  104. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/basic_modpar.mako +0 -0
  105. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/bertotti.mako +0 -0
  106. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/calc_field_ts.mako +0 -0
  107. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/calc_therm_field.mako +0 -0
  108. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/cogg_calc.mako +0 -0
  109. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/colorgrad.mako +0 -0
  110. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/com_motor_sim.mako +0 -0
  111. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/conduct-data.mako +0 -0
  112. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/connect_models.mako +0 -0
  113. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/cu_losses.mako +0 -0
  114. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/displ_stator_rotor.mako +0 -0
  115. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/ec-rotorbar.mako +0 -0
  116. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/fe-contr.mako +0 -0
  117. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/fieldcalc.mako +0 -0
  118. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/gen_hairpin_winding.mako +0 -0
  119. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/gen_winding.mako +0 -0
  120. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/inductances.mako +0 -0
  121. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/ld_lq_fast.mako +0 -0
  122. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/leak_dist_wind.mako +0 -0
  123. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/leak_evol_wind.mako +0 -0
  124. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/leak_tooth_wind.mako +0 -0
  125. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnet-data.mako +0 -0
  126. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetFC2.mako +0 -0
  127. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIron.mako +0 -0
  128. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIron2.mako +0 -0
  129. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIron3.mako +0 -0
  130. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIron4.mako +0 -0
  131. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIron5.mako +0 -0
  132. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetIronV.mako +0 -0
  133. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetSector.mako +0 -0
  134. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetSectorLinear.mako +0 -0
  135. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetShell.mako +0 -0
  136. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/magnetShell2.mako +0 -0
  137. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/mesh-airgap.mako +0 -0
  138. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/modal_analysis.mako +0 -0
  139. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/modified_steinmetz.mako +0 -0
  140. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/mult_cal_fast.mako +0 -0
  141. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/new_model.mako +0 -0
  142. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/noloadflux-rot.mako +0 -0
  143. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/noloadflux.mako +0 -0
  144. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/noloadfluxdc.mako +0 -0
  145. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/open.mako +0 -0
  146. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/plots.mako +0 -0
  147. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/pm_sym_f_cur.mako +0 -0
  148. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/pm_sym_fast.mako +0 -0
  149. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/pm_sym_loss.mako +0 -0
  150. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/prepare_thermal.mako +0 -0
  151. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/psd_psq_fast.mako +0 -0
  152. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/ring.mako +0 -0
  153. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/rot_hsm.mako +0 -0
  154. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/rotorAsyn.mako +0 -0
  155. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/rotorKs2.mako +0 -0
  156. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/rotor_msh.mako +0 -0
  157. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/rotor_winding.mako +0 -0
  158. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/shortcircuit.mako +0 -0
  159. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/srm.mako +0 -0
  160. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/stator1.mako +0 -0
  161. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/stator2.mako +0 -0
  162. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/stator3Linear.mako +0 -0
  163. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/stator4.mako +0 -0
  164. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/statorBG.mako +0 -0
  165. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/statorRing.mako +0 -0
  166. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/statorRotor3.mako +0 -0
  167. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/stator_msh.mako +0 -0
  168. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/therm-dynamic.mako +0 -0
  169. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/therm_static.mako +0 -0
  170. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/templates/torq_calc.mako +0 -0
  171. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/tks.py +0 -0
  172. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/ts.py +0 -0
  173. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/vbf.py +0 -0
  174. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/vtu.py +0 -0
  175. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools/windings.py +0 -0
  176. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools.egg-info/SOURCES.txt +0 -0
  177. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools.egg-info/dependency_links.txt +0 -0
  178. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools.egg-info/entry_points.txt +0 -0
  179. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools.egg-info/requires.txt +0 -0
  180. {femagtools-1.8.4 → femagtools-1.8.5}/src/femagtools.egg-info/top_level.txt +0 -0
  181. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/__init__.py +0 -0
  182. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/engines/__init__.py +0 -0
  183. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/engines/test_amazon.py +0 -0
  184. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/engines/test_config.py +0 -0
  185. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/geom/__init__.py +0 -0
  186. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/geom/test_functions.py +0 -0
  187. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/geom/test_point_inside.py +0 -0
  188. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/moo/__init__.py +0 -0
  189. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/moo/test_algorithm.py +0 -0
  190. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/moo/test_population.py +0 -0
  191. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/moo/test_problem.py +0 -0
  192. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_afpm.py +0 -0
  193. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_airgap_induction.py +0 -0
  194. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_amela.py +0 -0
  195. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_asm.py +0 -0
  196. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_bchreader.py +0 -0
  197. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_conductor.py +0 -0
  198. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_convert.py +0 -0
  199. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_dxfsl.py +0 -0
  200. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_effloss.py +0 -0
  201. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_erg.py +0 -0
  202. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_femag.py +0 -0
  203. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_forcedens.py +0 -0
  204. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_fsl.py +0 -0
  205. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_heat_source_network.py +0 -0
  206. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_hxy.py +0 -0
  207. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_im.py +0 -0
  208. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_isa7.py +0 -0
  209. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_jhb.py +0 -0
  210. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_job.py +0 -0
  211. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_losscoeffs.py +0 -0
  212. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_machine.py +0 -0
  213. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_magncurv.py +0 -0
  214. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_magnet.py +0 -0
  215. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_mcv.py +0 -0
  216. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_mcvreader.py +0 -0
  217. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_me.py +0 -0
  218. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_model.py +0 -0
  219. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_nc.py +0 -0
  220. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_parident.py +0 -0
  221. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_parstudy.py +0 -0
  222. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_pocfile.py +0 -0
  223. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_sizing.py +0 -0
  224. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_sm.py +0 -0
  225. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_tksreader.py +0 -0
  226. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_ts.py +0 -0
  227. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_vbfreader.py +0 -0
  228. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_vtu.py +0 -0
  229. {femagtools-1.8.4 → femagtools-1.8.5}/src/tests/test_windings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: femagtools
3
- Version: 1.8.4
3
+ Version: 1.8.5
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  """
4
4
  __title__ = 'femagtools'
5
- __version__ = '1.8.4'
5
+ __version__ = '1.8.5'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2023-2024 Gamma Technology'
@@ -21,7 +21,6 @@ import sys
21
21
  import multiprocessing
22
22
 
23
23
  logger = logging.getLogger(__name__)
24
- journal = None
25
24
 
26
25
 
27
26
  def plot_geom(doit, plt, geom, title="Plot", areas=True):
@@ -279,7 +278,6 @@ def symmetry_search(machine,
279
278
 
280
279
 
281
280
  def build_machine_rotor(machine, inner, mindist, plt, EESM=False, single=False):
282
- global journal
283
281
  logger.debug("Begin of build_machine_rotor")
284
282
 
285
283
  if machine.has_windings():
@@ -350,14 +348,12 @@ def build_machine_rotor(machine, inner, mindist, plt, EESM=False, single=False):
350
348
  title="Final Rotor")
351
349
 
352
350
  t = timer.stop("-- rotor created in %0.4f seconds --")
353
- journal.put('time_rotor_created', t)
354
351
 
355
352
  logger.debug("End of build_machine_rotor")
356
353
  return machine_temp
357
354
 
358
355
 
359
356
  def build_machine_stator(machine, inner, mindist, plt, EESM=False, single=False):
360
- global journal
361
357
  logger.debug("Begin of build_machine_stator")
362
358
  timer = Timer(start_it=True)
363
359
 
@@ -424,7 +420,6 @@ def build_machine_stator(machine, inner, mindist, plt, EESM=False, single=False)
424
420
  title="Final Stator")
425
421
 
426
422
  t = timer.stop("-- stator created in %0.4f seconds --")
427
- journal.put('time_stator_created', t)
428
423
 
429
424
  logger.debug("End of build_machine_stator")
430
425
  return machine_temp
@@ -14,6 +14,7 @@ from .. import femag
14
14
  from scipy.interpolate import make_interp_spline, RegularGridInterpolator, RectBivariateSpline
15
15
  from scipy.integrate import quad
16
16
  import copy
17
+ from matplotlib.colors import to_rgb
17
18
 
18
19
  logger = logging.getLogger(__name__)
19
20
 
@@ -598,6 +599,280 @@ def _get_copper_losses(scale_factor, bch):
598
599
  return 0 # noload calc has no winding losses
599
600
 
600
601
 
602
+ def _set_plot_attributes(ax):
603
+ ax.set_aspect('equal')
604
+ for loc, spine in ax.spines.items():
605
+ spine.set_color('none') # don't draw spine
606
+ ax.yaxis.set_ticks([])
607
+ ax.xaxis.set_ticks([])
608
+
609
+
610
+ def _get_colors(colors, delta):
611
+ if delta == 0.0:
612
+ return colors
613
+ new_colors = []
614
+ for col in colors:
615
+ rgb = to_rgb(col)
616
+ r, g, b = rgb
617
+ col = (max(0.0, min(r+delta, 1.0)),
618
+ max(0.0, min(g+delta, 1.0)),
619
+ max(0.0, min(b+delta, 1.0)))
620
+ new_colors.append(col)
621
+ return new_colors
622
+
623
+
624
+ def _draw_vertical_magnets(ax,
625
+ poles,
626
+ xr, yr,
627
+ Rr,
628
+ xoff, yoff,
629
+ delta=0.0):
630
+ color = ['green', 'red']
631
+ color = _get_colors(color, delta)
632
+ for i in range(poles):
633
+ ax.fill(xr+xoff, yr+yoff,
634
+ facecolor=color[i%2], edgecolor=color[i%2])
635
+ xr, yr = np.dot(Rr, [xr, yr])
636
+ return
637
+
638
+
639
+ def _draw_vertical_slots(ax,
640
+ Q,
641
+ r,
642
+ alpha,
643
+ xoff, yoff,
644
+ delta=0.0):
645
+ color = ['skyblue', 'blue']
646
+ color = _get_colors(color, delta)
647
+ taus = 2*np.pi/Q
648
+ for n in range(Q):
649
+ beta = np.array([[n*taus+alpha[0], (n+1)*taus-alpha[0]],
650
+ [(n+1)*taus-alpha[1], n*taus+alpha[1]]])
651
+ ax.fill(np.hstack((r * np.cos(beta[0, 0]),
652
+ (r[::-1] * np.cos(beta[0, 1]))))+xoff,
653
+ np.hstack((r * np.sin(beta[0, 0]),
654
+ (r[::-1] * np.sin(beta[0, 1]))))+yoff,
655
+ facecolor=color[0], edgecolor=color[0])
656
+
657
+
658
+ def vertical_plot(machine, ax):
659
+ """plots afpm stator and rotor (vertical section)
660
+ Args:
661
+ dy1, dy1: float outer, inner diameter
662
+ rel_magn_width: float rel magnet width 0..1
663
+ Q: number of stator slots
664
+ poles: number of poles
665
+ slot_width: width of stator slot
666
+ """
667
+ logger.debug("begin of vertical_plot()")
668
+
669
+ model_type = machine['afmtype'][0:4]
670
+ dy1 = machine['outer_diam']*1e3
671
+ dy2 = machine['inner_diam']*1e3
672
+ rel_magn_width = machine['magnet']['afm_rotor']['rel_magn_width']
673
+ Q = machine['stator']['num_slots']
674
+ slot_width = machine['stator']['afm_stator']['slot_width']*1e3
675
+ poles = machine['poles']
676
+
677
+ # prepare Magnets
678
+ theta = np.linspace(np.pi/poles*(1-rel_magn_width),
679
+ np.pi/poles*(1+rel_magn_width),
680
+ 10)
681
+ xr = np.concatenate((dy1/2 * np.cos(theta), dy2/2 * np.cos(theta[::-1])))
682
+ yr = np.concatenate((dy1/2 * np.sin(theta), dy2/2 * np.sin(theta[::-1])))
683
+ rtheta = 2*np.pi/poles
684
+ Rr = np.array([
685
+ [np.cos(rtheta), -np.sin(rtheta)],
686
+ [np.sin(rtheta), np.cos(rtheta)]
687
+ ])
688
+
689
+ # prepare Slots
690
+ taus = 2*np.pi/Q
691
+ r = np.array([dy2/2, dy1/2])
692
+ alpha = np.arctan2(slot_width/2, r)
693
+
694
+ yoff = 0.0
695
+ xoff = 0.0
696
+ y_shift = -2
697
+ x_shift = dy1-dy2
698
+ ma_delta = 0.0 # color
699
+ sl_delta = 0.0 # color
700
+
701
+ # Draw
702
+ if model_type in ("S1R2"): # 2 rotor
703
+ _draw_vertical_magnets(ax, poles, xr, yr, Rr, xoff, yoff, delta=-0.1)
704
+ yoff += y_shift
705
+ xoff += x_shift
706
+
707
+ if model_type in ("S2R1"): # 2 stator
708
+ sl_delta = -0.1
709
+
710
+ _draw_vertical_slots(ax, Q, r, alpha, xoff, yoff, delta=sl_delta)
711
+ yoff += y_shift
712
+ xoff += x_shift
713
+
714
+ if model_type in ("S1R2"): # 2 rotor
715
+ ma_delta = 0.1
716
+
717
+ _draw_vertical_magnets(ax, poles, xr, yr, Rr, xoff, yoff, delta=ma_delta)
718
+ yoff += y_shift
719
+ xoff += x_shift
720
+
721
+ if model_type in ("S2R1"): # 2 stator
722
+ sl_delta = 0.0
723
+ _draw_vertical_slots(ax, Q, r, alpha, xoff, yoff, delta=sl_delta)
724
+
725
+ _set_plot_attributes(ax)
726
+ logger.debug("end of vertical_plot()")
727
+
728
+
729
+ IRON_NO = 0
730
+ IRON_UP = 1
731
+ IRON_DOWN = 2
732
+
733
+ def _draw_horizontal_magnets(ax,
734
+ poles,
735
+ magn_height,
736
+ magn_width,
737
+ yoke_height,
738
+ Q,
739
+ g,
740
+ taus,
741
+ dy2,
742
+ yoff=0.0,
743
+ iron=IRON_NO
744
+ ):
745
+ color = ['green', 'red']
746
+ xy = (0, Q//g*taus, Q//g*taus, 0)
747
+
748
+ if iron == IRON_UP:
749
+ yy = (yoff-yoke_height,
750
+ yoff-yoke_height,
751
+ yoff,
752
+ yoff)
753
+ yoff -= yoke_height
754
+ ax.fill(xy, yy, color='skyblue')
755
+
756
+ taum = dy2*np.pi/poles
757
+ ym = np.array([yoff-magn_height,
758
+ yoff-magn_height,
759
+ yoff,
760
+ yoff])
761
+ yoff -= magn_height
762
+
763
+ for n in range(poles//g):
764
+ xl = taum*n + taum*(1 - magn_width)
765
+ xr = taum*(n + 1) - taum*(1 - magn_width)
766
+ xm = (xl, xr, xr, xl)
767
+ ax.fill(xm, ym, color=color[n%2])
768
+
769
+ if iron == IRON_DOWN:
770
+ yy = (yoff-yoke_height,
771
+ yoff-yoke_height,
772
+ yoff,
773
+ yoff)
774
+ yoff -= yoke_height
775
+ ax.fill(xy, yy, color='skyblue')
776
+ return yoff
777
+
778
+
779
+ TOOTH_UP = 0
780
+ TOOTH_DOWN = 1
781
+ TOOTH_ONLY = 2
782
+
783
+
784
+ def _draw_horizontal_slots(ax,
785
+ slot_height, slot_width, yoke_height,
786
+ Q, g, taus,
787
+ yoff=0.0,
788
+ tooth=TOOTH_DOWN):
789
+ if not tooth == TOOTH_ONLY:
790
+ xx = (0, Q//g*taus, Q//g*taus, 0)
791
+ if tooth == TOOTH_DOWN:
792
+ yy = (yoff-yoke_height,
793
+ yoff-yoke_height,
794
+ yoff,
795
+ yoff)
796
+ else:
797
+ yy = (yoff-slot_height,
798
+ yoff-slot_height,
799
+ yoff-slot_height-yoke_height,
800
+ yoff-slot_height-yoke_height)
801
+ ax.fill(xx, yy, color='skyblue')
802
+
803
+ yt = (yoff-slot_height-yoke_height,
804
+ yoff-slot_height-yoke_height,
805
+ yoff, yoff)
806
+ for n in range(Q//g):
807
+ xt = np.array((n*taus, n*taus+(taus-slot_width)/2,
808
+ n*taus+(taus-slot_width)/2, n*taus))
809
+ ax.fill(xt, yt, color='skyblue')
810
+ xt += slot_width + (taus-slot_width)/2
811
+ ax.fill(xt, yt, color='skyblue')
812
+ return yoff - slot_height - yoke_height
813
+
814
+
815
+ def horizontal_plot(machine, ax):
816
+ logger.debug("begin of horizontal_plot()")
817
+
818
+ model_type = machine['afmtype'][0:4]
819
+ dy1 = machine['outer_diam']*1e3
820
+ dy2 = machine['inner_diam']*1e3
821
+ rel_magn_width = machine['magnet']['afm_rotor']['rel_magn_width']
822
+ magn_height = machine['magnet']['afm_rotor']['magn_height']*1e3
823
+ magn_yoke_height = machine['magnet']['afm_rotor']['yoke_height']*1e3
824
+
825
+ Q = machine['stator']['num_slots']
826
+ slot_width = machine['stator']['afm_stator']['slot_width']*1e3
827
+ poles = machine['poles']
828
+ m = 3
829
+ slot_height = machine['stator']['afm_stator']['slot_height']*1e3
830
+ if model_type in ('S2R1', 'S2R1_all'):
831
+ slot_height /= 2
832
+ yoke_height = machine['stator']['afm_stator']['yoke_height']*1e3
833
+ ag = machine['airgap']*1e3
834
+
835
+ g = np.gcd(Q, m*poles)//m
836
+ taus = dy2*np.pi/Q
837
+
838
+ yoff = 0.0
839
+ if model_type in ('S1R2', 'S1R2_all'): # 2 rotor
840
+ yoff = _draw_horizontal_magnets(ax, poles,
841
+ magn_height, rel_magn_width,
842
+ magn_yoke_height,
843
+ Q, g, taus, dy2,
844
+ yoff=yoff,
845
+ iron=IRON_UP)
846
+ yoff -= ag
847
+
848
+ tooth = TOOTH_ONLY if model_type in ('S1R2', 'S1R2_all') else TOOTH_DOWN
849
+ yoff = _draw_horizontal_slots(ax,
850
+ slot_height, slot_width, yoke_height,
851
+ Q, g, taus,
852
+ yoff=yoff,
853
+ tooth=tooth)
854
+ yoff -= ag
855
+
856
+ iron = IRON_DOWN if model_type in ('S1R1', 'S1R2', 'S1R2_all') else IRON_NO
857
+ yoff = _draw_horizontal_magnets(ax, poles,
858
+ magn_height, rel_magn_width,
859
+ magn_yoke_height,
860
+ Q, g, taus, dy2,
861
+ yoff=yoff,
862
+ iron=iron)
863
+ yoff -= ag
864
+
865
+ if model_type in ('S2R1', 'S2R1_all'): # 2 rotor
866
+ yoff = _draw_horizontal_slots(ax,
867
+ slot_height, slot_width, yoke_height,
868
+ Q, g, taus,
869
+ yoff=yoff,
870
+ tooth=TOOTH_UP)
871
+
872
+ _set_plot_attributes(ax)
873
+ logger.debug("end of horizontal_plot()")
874
+
875
+
601
876
  class AFPM:
602
877
  """Axial Flux PM
603
878
  Arguments:
@@ -366,7 +366,8 @@ def dqparident(workdir, engine, temp, machine,
366
366
  num_beta_steps: number of current steps (default 7 per quadrant)
367
367
  speed: rotor speed in 1/s (default 160/p)
368
368
  i1_max: maximum current in A rms (default approx 3*i1nom)
369
- period_frac: fraction of rotating angle (default 6)
369
+ period_frac: (int) fraction of rotating angle (default 6)
370
+ dqtype: (str) type of identification: 'ldq' (default), 'psidq'
370
371
  cmd: femag executable
371
372
  """
372
373
  import pathlib
@@ -333,10 +333,14 @@ def _plot_contour(speed, torque, z, ax, title='', levels=[],
333
333
  clippath = Path(_get_nT_boundary(x, y))
334
334
  patch = PathPatch(clippath, facecolor='none')
335
335
  ax.add_patch(patch)
336
- for c in cont.collections:
337
- c.set_clip_path(patch)
338
- for c in contf.collections:
339
- c.set_clip_path(patch)
336
+ try:
337
+ for c in cont.collections:
338
+ c.set_clip_path(patch)
339
+ for c in contf.collections:
340
+ c.set_clip_path(patch)
341
+ except AttributeError: # matplotlib >= 3.10
342
+ cont.set_clip_path(patch)
343
+ contf.set_clip_path(patch)
340
344
 
341
345
  if xscale > 1:
342
346
  def format_fn(tick_val, tick_pos):
@@ -367,9 +371,16 @@ def efficiency_map(rmap, ax=0, title='', clabel=True,
367
371
 
368
372
 
369
373
  def losses_map(rmap, ax=0, title='Losses Map / kW', clabel=True,
370
- cmap='YlOrRd', cbar=False):
374
+ cmap='YlOrRd', cbar=False, key='losses'):
375
+ """
376
+ plot losses map
377
+ Args:
378
+ rmap: (dict) result of efficiency_losses_map
379
+ key: (str) type of losses: 'plfe1', 'plfe2', 'plmag', 'plcu1', 'plcu2', 'plfric', 'losses';
380
+ """
381
+
371
382
  if ax == 0:
372
383
  fig, ax = plt.subplots(figsize=(12, 12))
373
- return _plot_contour(rmap['n'], rmap['T'], np.asarray(rmap['losses'])/1e3, ax,
374
- title=title, levels=14, clabel=clabel,
375
- cmap=cmap, cbar=cbar)
384
+ return _plot_contour(rmap['n'], rmap['T'], np.asarray(rmap[key])/1e3, ax,
385
+ title=title, levels=14, clabel=clabel,
386
+ cmap=cmap, cbar=cbar)
@@ -17,7 +17,7 @@ def fft(pos, y, pmod=0):
17
17
  else:
18
18
  #negative_periodic = np.abs(y[0] - y[-1])/np.max(y) > 1
19
19
  # count zero crossings
20
- ypos = np.asarray(y[:-1])-np.mean(y[:-1]) > 0
20
+ ypos = np.asarray(y)-np.mean(y) > 0
21
21
  nypos = ~ypos
22
22
  nzc = len(((ypos[:-1] & nypos[1:])
23
23
  | (nypos[:-1] & ypos[1:])).nonzero()[0])
@@ -147,7 +147,6 @@ class SubscriberTask(threading.Thread):
147
147
  def send_notify():
148
148
  logger.debug(f"Send loop: {SubscriberTask.notify_send_loop}")
149
149
  while SubscriberTask.notify_send_loop:
150
- logger.debug(f"Send data: {SubscriberTask.notify_send_header}")
151
150
  if 'progress_logger' in SubscriberTask.notify_send_header:
152
151
  # collect data from different threads
153
152
  SubscriberTask.notify_send_header.remove('progress_logger')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: femagtools
3
- Version: 1.8.4
3
+ Version: 1.8.5
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
File without changes
File without changes
File without changes
File without changes
File without changes