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.
- {femagtools-1.8.19/src/femagtools.egg-info → femagtools-1.8.20}/PKG-INFO +1 -1
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/__init__.py +1 -1
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/area.py +11 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/converter.py +5 -2
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/fslrenderer.py +44 -14
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/geom.py +46 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/machine.py +6 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/shape.py +7 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/femag.py +3 -3
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/pm.py +2 -1
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/model.py +7 -1
- {femagtools-1.8.19 → femagtools-1.8.20/src/femagtools.egg-info}/PKG-INFO +1 -1
- {femagtools-1.8.19 → femagtools-1.8.20}/LICENSE +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/MANIFEST.in +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/README.md +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/pyproject.toml +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/setup.cfg +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/airgap.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/amazon.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/amela.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/asm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/bch.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/bchxml.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/condor.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/conductor.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/config.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/convert.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakota.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakota_femag.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dakotaout.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/docker.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/areabuilder.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/concat.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/conv.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/corner.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/dumprenderer.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/dxfparser.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/femparser.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/functions.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/journal.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/plotrenderer.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/svgparser.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/dxfsl/symmetry.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ecloss.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/erg.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/forcedens.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/fsl.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/getset.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/gmsh.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/google.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/grid.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/heat_source_network.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/hxy.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/isa7.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/jhb.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/job.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/leakinduc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/losscoeffs.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/afpm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/effloss.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/im.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/sizing.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/sm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/machine/utils.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/magnet.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/mcv.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/me.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/algorithm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/population.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/problem.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/AlgorithmTest.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/PopulationTest.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moo/test/ProblemTest.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/moproblem.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/multiproc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/mxw2msh.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/nc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/netlist.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ntib.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/opt.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/parstudy.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/bch.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/char.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/fieldlines.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/fluxdens.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/forcedens.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/machine.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/mcv.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/nc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/phasor.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/plot/wdg.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/poc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/semi_fea.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/shortcircuit.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/svgfsl/converter.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/FE-losses.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/afm_rotor.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/afm_stator.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/airgapinduc.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/asyn_motor.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/basic_modpar.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/bertotti.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/calc_field_ts.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/calc_therm_field.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/cogg_calc.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/colorgrad.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/com_motor_sim.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/conduct-data.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/connect_models.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/cu_losses.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/displ_stator_rotor.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ec-rotorbar.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/fe-contr.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/fieldcalc.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/gen_hairpin_winding.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/gen_winding.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/inductances.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ld_lq_fast.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_dist_wind.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_evol_wind.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/leak_tooth_wind.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnet-data.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetFC2.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron2.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron3.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron4.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIron5.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetIronV.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetSector.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetSectorLinear.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetShell.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/magnetShell2.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/mesh-airgap.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/modal_analysis.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/modified_steinmetz.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/mult_cal_fast.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/new_model.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadflux-rot.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadflux.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/noloadfluxdc.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/open.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/plots.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_f_cur.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_fast.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/pm_sym_loss.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/prepare_thermal.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psd_psq_fast.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rem-rot.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rem.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/psi-torq-rot.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/ring.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rot_hsm.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotorAsyn.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotorKs2.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotor_msh.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/rotor_winding.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/shortcircuit.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/srm.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator1.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator2.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator3Linear.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator4.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorBG.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorKS1.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorRing.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/statorRotor3.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/stator_msh.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/therm-dynamic.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/therm_static.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/templates/torq_calc.mako +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/tks.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/ts.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/utils.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/vbf.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/vtu.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/windings.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools/zmq.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/SOURCES.txt +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/dependency_links.txt +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/entry_points.txt +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/requires.txt +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/femagtools.egg-info/top_level.txt +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/test_amazon.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/engines/test_config.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/test_functions.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/geom/test_point_inside.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/__init__.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_algorithm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_population.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/moo/test_problem.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_afpm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_airgap_induction.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_amela.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_asm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_bchreader.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_conductor.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_convert.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_dxfsl.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_effloss.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_erg.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_femag.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_forcedens.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_fsl.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_heat_source_network.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_hxy.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_im.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_isa7.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_jhb.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_job.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_losscoeffs.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_machine.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_magncurv.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_magnet.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_mcv.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_mcvreader.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_me.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_model.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_nc.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_parident.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_parstudy.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_pocfile.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_sizing.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_sm.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_tksreader.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_ts.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_vbfreader.py +0 -0
- {femagtools-1.8.19 → femagtools-1.8.20}/src/tests/test_vtu.py +0 -0
- {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.
|
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
|
@@ -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.
|
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(
|
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
|
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
|
401
|
-
|
402
|
-
|
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
|
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 =
|
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,
|
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'])
|
@@ -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',
|
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.
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|