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