femagtools 1.8.19__tar.gz → 1.8.20__tar.gz

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.
Files changed (236) hide show
  1. {femagtools-1.8.19/src/femagtools.egg-info → femagtools-1.8.20}/PKG-INFO +1 -1
  2. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/__init__.py +1 -1
  3. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/area.py +11 -0
  4. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/converter.py +5 -2
  5. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/fslrenderer.py +44 -14
  6. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/geom.py +46 -0
  7. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/machine.py +6 -0
  8. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/shape.py +7 -0
  9. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/femag.py +3 -3
  10. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/pm.py +2 -1
  11. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/model.py +7 -1
  12. {femagtools-1.8.19 → femagtools-1.8.20/src/femagtools.egg-info}/PKG-INFO +1 -1
  13. {femagtools-1.8.19 → femagtools-1.8.20}/LICENSE +0 -0
  14. {femagtools-1.8.19 → femagtools-1.8.20}/MANIFEST.in +0 -0
  15. {femagtools-1.8.19 → femagtools-1.8.20}/README.md +0 -0
  16. {femagtools-1.8.19 → femagtools-1.8.20}/pyproject.toml +0 -0
  17. {femagtools-1.8.19 → femagtools-1.8.20}/setup.cfg +0 -0
  18. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/airgap.py +0 -0
  19. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/amazon.py +0 -0
  20. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/amela.py +0 -0
  21. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/asm.py +0 -0
  22. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/bch.py +0 -0
  23. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/bchxml.py +0 -0
  24. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/condor.py +0 -0
  25. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/conductor.py +0 -0
  26. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/config.py +0 -0
  27. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/convert.py +0 -0
  28. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakota.py +0 -0
  29. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakota_femag.py +0 -0
  30. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakotaout.py +0 -0
  31. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/docker.py +0 -0
  32. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/__init__.py +0 -0
  33. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/areabuilder.py +0 -0
  34. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/concat.py +0 -0
  35. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/conv.py +0 -0
  36. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/corner.py +0 -0
  37. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/dumprenderer.py +0 -0
  38. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/dxfparser.py +0 -0
  39. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/femparser.py +0 -0
  40. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/functions.py +0 -0
  41. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/journal.py +0 -0
  42. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/plotrenderer.py +0 -0
  43. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/svgparser.py +0 -0
  44. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/symmetry.py +0 -0
  45. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ecloss.py +0 -0
  46. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/erg.py +0 -0
  47. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/forcedens.py +0 -0
  48. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/fsl.py +0 -0
  49. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/getset.py +0 -0
  50. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/gmsh.py +0 -0
  51. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/google.py +0 -0
  52. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/grid.py +0 -0
  53. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/heat_source_network.py +0 -0
  54. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/hxy.py +0 -0
  55. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/isa7.py +0 -0
  56. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/jhb.py +0 -0
  57. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/job.py +0 -0
  58. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/leakinduc.py +0 -0
  59. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/losscoeffs.py +0 -0
  60. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/__init__.py +0 -0
  61. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/afpm.py +0 -0
  62. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/effloss.py +0 -0
  63. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/im.py +0 -0
  64. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/sizing.py +0 -0
  65. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/sm.py +0 -0
  66. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/utils.py +0 -0
  67. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/magnet.py +0 -0
  68. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/mcv.py +0 -0
  69. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/me.py +0 -0
  70. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/__init__.py +0 -0
  71. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/algorithm.py +0 -0
  72. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/population.py +0 -0
  73. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/problem.py +0 -0
  74. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/AlgorithmTest.py +0 -0
  75. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/PopulationTest.py +0 -0
  76. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/ProblemTest.py +0 -0
  77. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moproblem.py +0 -0
  78. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/multiproc.py +0 -0
  79. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/mxw2msh.py +0 -0
  80. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/nc.py +0 -0
  81. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/netlist.py +0 -0
  82. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ntib.py +0 -0
  83. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/opt.py +0 -0
  84. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/parstudy.py +0 -0
  85. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/__init__.py +0 -0
  86. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/bch.py +0 -0
  87. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/char.py +0 -0
  88. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/fieldlines.py +0 -0
  89. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/fluxdens.py +0 -0
  90. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/forcedens.py +0 -0
  91. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/machine.py +0 -0
  92. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/mcv.py +0 -0
  93. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/nc.py +0 -0
  94. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/phasor.py +0 -0
  95. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/wdg.py +0 -0
  96. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/poc.py +0 -0
  97. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/semi_fea.py +0 -0
  98. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/shortcircuit.py +0 -0
  99. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/svgfsl/converter.py +0 -0
  100. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/FE-losses.mako +0 -0
  101. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/afm_rotor.mako +0 -0
  102. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/afm_stator.mako +0 -0
  103. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/airgapinduc.mako +0 -0
  104. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/asyn_motor.mako +0 -0
  105. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/basic_modpar.mako +0 -0
  106. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/bertotti.mako +0 -0
  107. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/calc_field_ts.mako +0 -0
  108. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/calc_therm_field.mako +0 -0
  109. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/cogg_calc.mako +0 -0
  110. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/colorgrad.mako +0 -0
  111. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/com_motor_sim.mako +0 -0
  112. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/conduct-data.mako +0 -0
  113. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/connect_models.mako +0 -0
  114. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/cu_losses.mako +0 -0
  115. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/displ_stator_rotor.mako +0 -0
  116. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ec-rotorbar.mako +0 -0
  117. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/fe-contr.mako +0 -0
  118. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/fieldcalc.mako +0 -0
  119. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/gen_hairpin_winding.mako +0 -0
  120. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/gen_winding.mako +0 -0
  121. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/inductances.mako +0 -0
  122. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ld_lq_fast.mako +0 -0
  123. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_dist_wind.mako +0 -0
  124. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_evol_wind.mako +0 -0
  125. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_tooth_wind.mako +0 -0
  126. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnet-data.mako +0 -0
  127. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetFC2.mako +0 -0
  128. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron.mako +0 -0
  129. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron2.mako +0 -0
  130. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron3.mako +0 -0
  131. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron4.mako +0 -0
  132. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron5.mako +0 -0
  133. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIronV.mako +0 -0
  134. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetSector.mako +0 -0
  135. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetSectorLinear.mako +0 -0
  136. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetShell.mako +0 -0
  137. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetShell2.mako +0 -0
  138. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/mesh-airgap.mako +0 -0
  139. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/modal_analysis.mako +0 -0
  140. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/modified_steinmetz.mako +0 -0
  141. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/mult_cal_fast.mako +0 -0
  142. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/new_model.mako +0 -0
  143. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadflux-rot.mako +0 -0
  144. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadflux.mako +0 -0
  145. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadfluxdc.mako +0 -0
  146. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/open.mako +0 -0
  147. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/plots.mako +0 -0
  148. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_f_cur.mako +0 -0
  149. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_fast.mako +0 -0
  150. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_loss.mako +0 -0
  151. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/prepare_thermal.mako +0 -0
  152. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psd_psq_fast.mako +0 -0
  153. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rem-rot.mako +0 -0
  154. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rem.mako +0 -0
  155. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rot.mako +0 -0
  156. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ring.mako +0 -0
  157. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rot_hsm.mako +0 -0
  158. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotorAsyn.mako +0 -0
  159. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotorKs2.mako +0 -0
  160. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotor_msh.mako +0 -0
  161. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotor_winding.mako +0 -0
  162. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/shortcircuit.mako +0 -0
  163. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/srm.mako +0 -0
  164. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator1.mako +0 -0
  165. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator2.mako +0 -0
  166. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator3Linear.mako +0 -0
  167. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator4.mako +0 -0
  168. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorBG.mako +0 -0
  169. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorKS1.mako +0 -0
  170. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorRing.mako +0 -0
  171. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorRotor3.mako +0 -0
  172. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator_msh.mako +0 -0
  173. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/therm-dynamic.mako +0 -0
  174. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/therm_static.mako +0 -0
  175. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/torq_calc.mako +0 -0
  176. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/tks.py +0 -0
  177. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ts.py +0 -0
  178. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/utils.py +0 -0
  179. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/vbf.py +0 -0
  180. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/vtu.py +0 -0
  181. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/windings.py +0 -0
  182. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/zmq.py +0 -0
  183. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/SOURCES.txt +0 -0
  184. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/dependency_links.txt +0 -0
  185. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/entry_points.txt +0 -0
  186. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/requires.txt +0 -0
  187. {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/top_level.txt +0 -0
  188. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/__init__.py +0 -0
  189. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/__init__.py +0 -0
  190. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/test_amazon.py +0 -0
  191. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/test_config.py +0 -0
  192. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/__init__.py +0 -0
  193. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/test_functions.py +0 -0
  194. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/test_point_inside.py +0 -0
  195. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/__init__.py +0 -0
  196. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_algorithm.py +0 -0
  197. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_population.py +0 -0
  198. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_problem.py +0 -0
  199. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_afpm.py +0 -0
  200. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_airgap_induction.py +0 -0
  201. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_amela.py +0 -0
  202. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_asm.py +0 -0
  203. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_bchreader.py +0 -0
  204. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_conductor.py +0 -0
  205. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_convert.py +0 -0
  206. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_dxfsl.py +0 -0
  207. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_effloss.py +0 -0
  208. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_erg.py +0 -0
  209. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_femag.py +0 -0
  210. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_forcedens.py +0 -0
  211. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_fsl.py +0 -0
  212. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_heat_source_network.py +0 -0
  213. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_hxy.py +0 -0
  214. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_im.py +0 -0
  215. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_isa7.py +0 -0
  216. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_jhb.py +0 -0
  217. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_job.py +0 -0
  218. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_losscoeffs.py +0 -0
  219. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_machine.py +0 -0
  220. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_magncurv.py +0 -0
  221. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_magnet.py +0 -0
  222. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_mcv.py +0 -0
  223. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_mcvreader.py +0 -0
  224. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_me.py +0 -0
  225. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_model.py +0 -0
  226. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_nc.py +0 -0
  227. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_parident.py +0 -0
  228. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_parstudy.py +0 -0
  229. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_pocfile.py +0 -0
  230. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_sizing.py +0 -0
  231. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_sm.py +0 -0
  232. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_tksreader.py +0 -0
  233. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_ts.py +0 -0
  234. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_vbfreader.py +0 -0
  235. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_vtu.py +0 -0
  236. {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_windings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: femagtools
3
- Version: 1.8.19
3
+ Version: 1.8.20
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.19'
5
+ __version__ = '1.8.20'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2023-2025 Gamma Technology'
@@ -105,6 +105,12 @@ class Area(object):
105
105
  def elements(self):
106
106
  return self.area
107
107
 
108
+ def is_element_in_area(self, el):
109
+ for e in self.elements():
110
+ if el.has_same_nodes(e):
111
+ return True
112
+ return False
113
+
108
114
  def copy_of_elements(self):
109
115
  return [e.clone() for e in self.elements() if e]
110
116
 
@@ -1863,6 +1869,11 @@ class Area(object):
1863
1869
  nodes = [n for n in self.virtual_nodes(parts=4)]
1864
1870
  return area_size(nodes)
1865
1871
 
1872
+ def get_area_size(self):
1873
+ if self.surface == 0.0:
1874
+ self.surface = self.area_size()
1875
+ return self.surface
1876
+
1866
1877
  def set_surface(self, mirrored):
1867
1878
  self.surface = self.area_size()
1868
1879
  if self.close_to_endangle and mirrored:
@@ -229,7 +229,7 @@ def build_machine_rotor(machine, inner, mindist, plt, EESM=False, single=False):
229
229
  else:
230
230
  rebuild = machine_temp.create_mirror_lines_outside_magnets()
231
231
  if rebuild:
232
- machine_temp.geom.create_list_of_areas(delete=True)
232
+ machine_temp.rebuild_subregions(EESM, single=single)
233
233
 
234
234
  if machine_temp.create_auxiliary_lines():
235
235
  logger.debug("Auxiliary Lines created: rebuild subregions")
@@ -311,6 +311,9 @@ def build_machine_stator(machine, inner, mindist, plt, EESM=False, single=False)
311
311
  plt, machine_temp.geom,
312
312
  title="Stator Winding Slice after Rebuild")
313
313
 
314
+ if machine_temp.remove_tiny_air_areas():
315
+ machine_temp.rebuild_subregions(EESM, single=single)
316
+
314
317
  if machine_temp.create_auxiliary_lines():
315
318
  machine_temp.rebuild_subregions(EESM, single=single)
316
319
  plot_geom(False, # for developer
@@ -1039,7 +1042,7 @@ def create_femag_parameters(m_inner, m_outer, nodedist=1):
1039
1042
  alfa_pole = geom_poles.get_alfa()
1040
1043
 
1041
1044
  params['tot_num_slot'] = num_slots
1042
- params['slot_area'] = slot_area
1045
+ params['slot_area'] = float(slot_area)
1043
1046
  params['num_sl_gen'] = num_sl_gen
1044
1047
  params['num_poles'] = num_poles
1045
1048
  params['nodedist'] = nodedist
@@ -246,6 +246,37 @@ class FslRenderer(object):
246
246
  'outer_da_end = {}'.format(
247
247
  geom.dist_end_min_corner())
248
248
  ]
249
+ if inner:
250
+ r = np.linalg.norm(geom.start_corners[0])
251
+ if not np.isclose(geom.min_radius, r, rtol=1e-3):
252
+ slice = 1 if machine.is_mirrored() else 2
253
+ self.content += [
254
+ '-- create air layer inside',
255
+ 'x0, y0 = {}, {}'.format(
256
+ geom.start_min_corner(0),
257
+ geom.start_min_corner(1)),
258
+ 'hair = 1.0',
259
+ 'parts = {}'.format(machine.get_num_parts()),
260
+ 'rmin = {}'.format(geom.min_radius),
261
+ 'r1 = rmin - hair',
262
+ 'r, phi = c2pr(x0, y0)',
263
+ 'x1, y1 = pr2c(r1, phi)',
264
+ 'x2, y2 = pr2c(r1, {}*math.pi/parts)'.format(slice),
265
+ 'x3, y3 = pr2c(r, {}*math.pi/parts)'.format(slice),
266
+ 'nc_line(x0, y0, x1, y1, 0)',
267
+ 'nc_circle_m(x1, y1, x2, y2, 0.0, 0.0, 0)',
268
+ 'nc_line(x2, y2, x3, y3, 0)',
269
+ 'x0, y0 = pr2c(rmin - hair/2, math.pi/parts/2)',
270
+ 'create_mesh_se(x0, y0)',
271
+ '\n']
272
+ else:
273
+ self.content += [
274
+ 'parts = {}'.format(machine.get_num_parts()),
275
+ 'x0, y0 = {}, {}'.format(
276
+ geom.start_min_corner(0),
277
+ geom.start_min_corner(1)),
278
+ 'r1, phi = c2pr(x0, y0)']
279
+
249
280
  if self.mtype == 'PMSM':
250
281
  self.content += [
251
282
  'xmag = {}',
@@ -327,7 +358,7 @@ class FslRenderer(object):
327
358
  self.content.append(
328
359
  'x0_shaft, y0_shaft = x0, y0')
329
360
 
330
- self.content.append("create_mesh(x0, y0)\n")
361
+ self.content.append("create_mesh()\n")
331
362
 
332
363
  txt = ["if x0_iron_yoke > 0.0 then",
333
364
  " if mcvkey_yoke ~= 'dummy' then",
@@ -390,22 +421,24 @@ class FslRenderer(object):
390
421
  # angle after mirroring
391
422
  self.content.append('alfa = {}\n'.format(geom.get_alfa()))
392
423
 
393
- self.content += ['-- rotate',
394
- 'x1, y1 = {}, {}'.format(
395
- geom.start_corners[0][0],
396
- geom.start_corners[0][1])] # min xy1
397
424
  if outer:
398
- self.content.append('x2, y2 = pr2c(r1, 0.0)')
425
+ self.content += ['-- rotate',
426
+ 'x1, y1 = {}, {}'.format(
427
+ geom.start_corners[0][0],
428
+ geom.start_corners[0][1]), # min xy1
429
+ 'x2, y2 = pr2c(r1, 0.0)']
399
430
  else:
400
- self.content.append('x2, y2 = {}, {}'.format(
401
- geom.start_corners[1][0],
402
- geom.start_corners[1][1])) # max xy1
431
+ self.content += ['-- rotate',
432
+ 'x1, y1 = pr2c(r1, 0.0)',
433
+ 'x2, y2 = {}, {}'.format(
434
+ geom.start_corners[1][0],
435
+ geom.start_corners[1][1])] # min xy1
403
436
 
404
437
  if geom.is_mirrored():
405
438
  self.content.append('x3, y3 = pr2c(x2, alfa)')
406
439
  self.content.append('x4, y4 = pr2c(x1, alfa)')
407
440
  elif outer:
408
- self.content += ['x3, y3 = pr2c(r1, 2*math.pi/parts+phi)',
441
+ self.content += ['x3, y3 = pr2c(r1, 2*math.pi/parts)',
409
442
  'x4, y4 = {}, {}'.format(
410
443
  geom.end_corners[0][0],
411
444
  geom.end_corners[0][1])] # min xy4
@@ -413,10 +446,7 @@ class FslRenderer(object):
413
446
  self.content += ['x3, y3 = {}, {}'.format(
414
447
  geom.end_corners[-1][0],
415
448
  geom.end_corners[-1][1]), # min xy3
416
- 'x4, y4 = {}, {}'.format(
417
- geom.end_corners[0][0],
418
- geom.end_corners[0][1]), # min xy4
419
- 'def_bcond_vpo(x4, y4, x1, y1)']
449
+ 'x4, y4 = pr2c(r1, 2*math.pi/parts)']
420
450
 
421
451
  self.content.append('if parts_gen > 1 then')
422
452
  if geom.corners_dont_match():
@@ -4803,6 +4803,52 @@ class Geometry(object):
4803
4803
  return
4804
4804
  logger.warning("WARNING: airgap connecting nodes do not aline")
4805
4805
 
4806
+ def remove_area(self, area):
4807
+ logger.debug("Remove Area %s", area.identifier())
4808
+ touching_areas = [(a.surface, a) for a in self.list_of_areas()
4809
+ if a.id != area.id and a.is_touching(area)]
4810
+ if not touching_areas:
4811
+ self.remove_edges(area.area)
4812
+ return
4813
+ touching_areas.sort(reverse=True)
4814
+ sz, touching_a = touching_areas[0]
4815
+ for e in area.area:
4816
+ if touching_a.is_element_in_area(e):
4817
+ self.remove_edge(e)
4818
+
4819
+ def remove_tiny_air_areas(self):
4820
+ logger.debug("remove_tiny_air_areas()")
4821
+ air_areas = [a for a in self.list_of_areas() if a.is_air()]
4822
+ if not air_areas:
4823
+ return False
4824
+
4825
+ def is_in_touch(air, area_list):
4826
+ for a in area_list:
4827
+ if air.is_touching(a):
4828
+ return True
4829
+ if air.is_inside(a, self):
4830
+ return True
4831
+ return False
4832
+
4833
+ areas = [a for a in self.list_of_areas() if a.is_winding() or a.is_magnet()]
4834
+ if not areas:
4835
+ return False
4836
+
4837
+ tiny_areas = [a for a in air_areas if not is_in_touch(a, areas)]
4838
+ geom_surface = self.area_size()
4839
+ angle_areas = [a for a in tiny_areas
4840
+ if (a.close_to_startangle or a.close_to_endangle)]
4841
+ #inside_areas = [a for a in tiny_areas
4842
+ # if not (a.close_to_startangle or a.close_to_endangle) and \
4843
+ # a.get_area_size() < geom_surface / 200]
4844
+ tiny_areas = angle_areas
4845
+ if not tiny_areas:
4846
+ return False
4847
+
4848
+ for a in tiny_areas:
4849
+ self.remove_area(a)
4850
+ return True
4851
+
4806
4852
  def print_nodes(self):
4807
4853
  print("=== List of Nodes ({}) ===".format(self.number_of_nodes()))
4808
4854
  for n in self.g.nodes():
@@ -1590,3 +1590,9 @@ class Machine(object):
1590
1590
  self.geom.check_airgap_connecting_nodes(m_outer.geom,
1591
1591
  self.startangle,
1592
1592
  self.endangle)
1593
+
1594
+ def remove_tiny_air_areas(self):
1595
+ if not self.geom.remove_tiny_air_areas():
1596
+ return False
1597
+ self.repair_hull()
1598
+ return True
@@ -90,6 +90,13 @@ class Shape(object):
90
90
  self.n2 = n1
91
91
  self.n1 = n2
92
92
 
93
+ def has_same_nodes(self, e):
94
+ if points_are_close(e.n1, self.n1):
95
+ return points_are_close(e.n2, self.n2)
96
+ if points_are_close(e.n1, self.n2):
97
+ return points_are_close(e.n2, self.n1)
98
+ return False
99
+
93
100
  """an abstract geometry with 2 points"""
94
101
 
95
102
  def start(self):
@@ -424,7 +424,7 @@ class BaseFemag(object):
424
424
  return sorted(pathlib.Path(self.workdir).glob('*.PROT'),
425
425
  key=lambda x: x.stat().st_mtime, reverse=True)[0].stem
426
426
 
427
- def readResult(self, machine, simulation, bch=None):
427
+ def readResult(self, simulation, bch=None, machine=None):
428
428
  if simulation:
429
429
  if simulation['calculationMode'] == "fieldcalc":
430
430
  nc = self.read_nc()
@@ -656,7 +656,7 @@ class Femag(BaseFemag):
656
656
  pass
657
657
 
658
658
  if simulation:
659
- return self.readResult(machine, simulation)
659
+ return self.readResult(machine=machine, simulation=simulation)
660
660
 
661
661
  return {'status': 'ok', 'message': self.modelname,
662
662
  'model': self.model.props()}
@@ -1196,6 +1196,6 @@ class ZmqFemag(BaseFemag):
1196
1196
  if r['status'] == 'ok':
1197
1197
  bch = femagtools.bch.Reader()
1198
1198
  bch.read(content.decode('latin1'))
1199
- bch = self.readResult(simulation, bch)
1199
+ bch = self.readResult(simulation=simulation, bch=bch)
1200
1200
  return bch
1201
1201
  raise FemagError(r['message'])
@@ -181,9 +181,10 @@ class PmRelMachine(object):
181
181
  if np.abs(torque) < 1e-2:
182
182
  return (0, 0)
183
183
  if np.isscalar(iqd0):
184
- i0 = self.io
184
+ i0 = list(self.io)
185
185
  if torque<0:
186
186
  i0[0] = -i0[0]
187
+ i0 = tuple(i0)
187
188
  else:
188
189
  i0 = iqd0
189
190
  if with_mtpa:
@@ -477,8 +477,14 @@ class MachineModel(Model):
477
477
  model = {k: getattr(self, k) for k in keys if hasattr(self, k)}
478
478
  if hasattr(self, 'stator'):
479
479
  model['stator'] = {k: self.stator[k]
480
- for k in ('num_slots', 'num_slots_gen', 'slot_area')
480
+ for k in ('num_slots',
481
+ 'num_slots_gen',
482
+ 'slot_area')
481
483
  if k in self.stator}
484
+
485
+ for k in model:
486
+ if isinstance(model[k], np.float64):
487
+ model[k] = float(model[k])
482
488
  return model
483
489
 
484
490
  class FeaModel(Model):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: femagtools
3
- Version: 1.8.19
3
+ Version: 1.8.20
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