femagtools 1.8.1__py3-none-any.whl → 1.8.2__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  """general design of an AC electrical machine
2
2
 
3
- Types: spm, ipm, eesm, im
3
+ Types: spm, ipm, eesm, im, afpm
4
4
 
5
5
  """
6
6
  import numpy as np
@@ -10,6 +10,25 @@ from .utils import wdg_resistance
10
10
 
11
11
  logger = logging.getLogger("femagools.machine.sizing")
12
12
 
13
+ AFPM_DEFAULTS = dict(
14
+ airgap=2e-3,
15
+ kd=0.7, # ratio of inner vs outer diameter 0.6 .. 0.8
16
+ eta=0.92, # efficiency
17
+ cos_phi=0.95, # power factor
18
+ m=3, # number of phases
19
+ ui_u=0.8, # U ind / U
20
+ J=8.5e6, # current density A/mm²
21
+ sigmas=40e3, # shear force 30 .. 65 kN/m2
22
+ Ba=0.7, # flux density in airgap
23
+ Bth=1.5, # flux density in teeth 1.5 .. 2 T
24
+ By=1.2, # flux density in yoke 1.2 .. 1.5 T
25
+ kq=0.6, # stator winding fill factor 0.35 .. 0.75
26
+ mag_width=0.95, # rel magnet width 0.6 .. 1
27
+ Hc=700, # max. coercitive field strength, 500 .. 900 kA/m
28
+ brem=1.2, # remanence 0.3 .. 1.3 T
29
+ demag=6 # safety factor for demagnetisation (nom current)
30
+ )
31
+ """default sizing parameters for AFPM"""
13
32
 
14
33
  PM_DEFAULTS = dict(
15
34
  airgap=1.5e-3, # airgap width m
@@ -217,7 +236,7 @@ def _stator_slots(par, slots):
217
236
  # check sim factor, height/width ratio
218
237
  if qhbmin[1] == len(q)-1:
219
238
  # last has smallest sim factor
220
- return q[qhbmin[1]][0]
239
+ return q[qhbmin[1]][0]
221
240
  elif q[qhbmin[1]][2] < q[qhbmin[1]+1][2]:
222
241
  # select ideal height/width ratio (3.2)
223
242
  return q[qhbmin[1]][0]
@@ -270,7 +289,7 @@ def get_stator_dimensions(par, slots=[]):
270
289
  Ui_U = par['ui_u']
271
290
 
272
291
  # design parameters
273
- # AJ = papyr['AJ'] # 100*1e9 # thermal load, typically 100 .. 300 A²/mm³
292
+ # AJ = par['AJ'] # 100*1e9 # thermal load, typically 100 .. 300 A²/mm³
274
293
  J = par['J'] # current density 3 .. 6 A/mm²
275
294
  Ba = par['Ba'] # airgap flux density, typically 0.6 .. 1.5 T
276
295
  kq = par['kq'] # winding fill factor, typically 0.35 .. 0.75
@@ -431,15 +450,13 @@ def get_stator_dimensions(par, slots=[]):
431
450
 
432
451
  return r
433
452
 
434
-
435
453
  def _get_magnet_height(I1, N, kw, par):
436
454
  airgap = par['airgap']
437
455
  Ba = par['Ba']
438
456
  p = par['p']
439
457
  m = par['m']
440
458
 
441
- Hc = par['Hc']
442
- Hc = Hc*1e3 # unit kA/m
459
+ Hc = par['Hc']*1e3 # unit kA/m -> A/m
443
460
  # Safety Factor for demagnetization
444
461
  demag = par['demag']
445
462
  THETA1 = m/np.pi*np.sqrt(2)*I1*N*kw/p
@@ -648,6 +665,10 @@ def _set_defaults(par, defaults):
648
665
  par[k] = defaults[k]
649
666
 
650
667
 
668
+ def _set_afpm_defaults(par):
669
+ _set_defaults(par, AFPM_DEFAULTS)
670
+
671
+
651
672
  def _set_pm_defaults(par):
652
673
  _set_defaults(par, PM_DEFAULTS)
653
674
 
@@ -708,6 +729,163 @@ def spm(pnom: float, speed: float, p: int, **kwargs) -> dict:
708
729
  return r
709
730
 
710
731
 
732
+ def afpm(pnom: float, speed: float, p: int, afmtype: str, **kwargs) -> dict:
733
+ """returns dimension of a AFPM machine
734
+
735
+ Args:
736
+ pnom: power at rated speed (W)
737
+ speed: rotation speed (1/s)
738
+ p: number of pole pairs
739
+ afmtype: one of 'S1R1', 'S2R1', 'S1R2'
740
+
741
+ udc: (optional) DC link voltage (V)
742
+ u1: (optional) phase voltage (Vrms)
743
+ Q1: (optional) total number of stator slots
744
+ brem: (optional) remanence of magnet (T)
745
+ """
746
+ par = dict(
747
+ pnom=pnom, speed=speed, p=p)
748
+ par.update(kwargs)
749
+ _set_afpm_defaults(par)
750
+
751
+ kp = 1 if afmtype == 'S1R1' else 2
752
+ kps = 1 if afmtype in ('S1R1', 'S1R2') else 2
753
+ kpr = 2 if afmtype == 'S1R2' else 1
754
+ kd = par['kd'] # ratio of inner_diam/outer_diam
755
+ tnom = pnom/(2*np.pi*speed)
756
+ sigmas = par['sigmas'] # shear force
757
+ # outer diameter:
758
+ # https://web.mit.edu/kirtley/binlustuff/literature/electric%20machine/designOfAxialFluxPMM.pdf
759
+ Do = 2*np.power(tnom/(kp*sigmas*np.pi*kd*(1-kd**2)), 1/3)
760
+ Di = Do*kd
761
+ # pole width and iron length
762
+ Davg = (Do+Di)/2
763
+ taup = np.pi * Davg/(2*p)
764
+ lfe = (Do-Di)/2
765
+ # flux density in airgap
766
+ Bd1 = 4.0/np.pi*par['Ba']*np.sin(np.pi/2.0*par['mag_width'])
767
+
768
+ # rated phase voltage
769
+ if 'udc' in par:
770
+ u1nom = 0.9*par['udc']/np.sqrt(2)/np.sqrt(3)
771
+ else:
772
+ u1nom = par['u1']
773
+ f1 = speed*p
774
+ # flux linkage
775
+ psi1 = kpr*2.0/np.pi*taup*lfe*Bd1
776
+
777
+ # winding factor
778
+ Q1 = par['Q1']
779
+ m = par['m']
780
+ yd = par.get('coil_span', 0)
781
+ if yd:
782
+ wdg = Winding({'Q': par['Q1'], 'p': par['p'], 'm': 3,
783
+ 'yd': yd, 'l': 2})
784
+ else:
785
+ wdg = Winding({'Q': par['Q1'], 'p': par['p'], 'm': 3, 'l': 2})
786
+
787
+ kw = wdg.kw()
788
+
789
+ Ui = par['ui_u'] * u1nom
790
+ N = np.sqrt(2)*Ui/(2*np.pi*f1*kw*psi1)
791
+
792
+ # feasible number of turns per coil...
793
+ layers = wdg.l
794
+ # coils per phase (kps: number of stators)
795
+ ncoils = kps*Q1 // 2 // m * layers
796
+ ngroups = [1] + [g for g in range(2, layers*p + 1) if layers * p % g == 0]
797
+ ndiff = [abs(N - ncoils // a * a * round(N / ncoils))
798
+ for a in ngroups]
799
+ logger.debug("N %f ngroups %s ndiffs %s", N, ngroups, ndiff)
800
+ # parallel groups
801
+ a_calc = ngroups[np.argmin(ndiff)]
802
+ a = par.get("a", a_calc)
803
+ if a not in ngroups:
804
+ logger.warning("Check given number %s of parallel wdg groups. Valid ngroups are: %s",
805
+ a, ngroups)
806
+ # num wires per coil side (number of coil groups a)
807
+ num_wires = round(a * N / ncoils)
808
+
809
+ # correction of number of turns per phase
810
+ N_old = N
811
+ N = num_wires * ncoils / a
812
+
813
+ # correction of voltage
814
+ Ui = Ui/N_old*N
815
+ u1nom = Ui/par['ui_u']
816
+
817
+ # current loading
818
+ # A = np.sqrt(2)*sigmas/kw/Ba
819
+ I1 = pnom/(m*par['eta']*par['cos_phi']*u1nom)
820
+ A = 2*m*N*I1/np.pi/Di
821
+ # slot area
822
+ # J = AJ/A
823
+ hs1 = 1e-3 # slot opening height
824
+ taus = np.pi/Q1
825
+ ans = taus*Di*A/(par['kq']*par['J'])
826
+ bds = taus*(Di+2*hs1)*Bd1/par['Bth']
827
+ bns = taus*(Di+2*hs1) - bds
828
+
829
+ hns = (-bns + np.sqrt(bns**2 + 4*ans*np.tan(taus)))/2/np.tan(taus)/kps
830
+ hys = psi1/lfe/par['By']/kps
831
+
832
+ aw = ans * par['kq'] / layers / num_wires * kps
833
+
834
+ r = {'outer_diam': Do, 'inner_diam': Di, 'airgap': par['airgap']/kp,
835
+ 'afmtype': afmtype, 'lfe': lfe,
836
+ 'poles': 2*p,
837
+ 'ans': round(ans, 6),
838
+ 'hns': round(hns, 4),
839
+ 'bns': round(bns, 4),
840
+ 'A': round(A, 3),
841
+ 'AJ': round(par['J']*A, 0),
842
+ 'w1': int(N),
843
+ 'kw': round(kw, 4),
844
+ 'ess': round(1e-3*pnom/(60*speed)/(Do**2*lfe), 4),
845
+ 'q': wdg.q,
846
+ 'i1': round(I1, 3), # np.pi*Da1*A/2/m/N
847
+ 'psi1': round(psi1, 5),
848
+ 'u1': u1nom,
849
+ 'ui': Ui}
850
+ hs1 = 0
851
+ hs2 = 0
852
+ r['stator'] = dict(
853
+ u1nom=round(u1nom, 1), f1nom=round(f1, 1),
854
+ num_slots=Q1,
855
+ nodedist=1,
856
+ # num_slots_gen = req_poles*Q1/2/p,
857
+ afm_stator=dict(
858
+ slot_width=r['bns'],
859
+ slot_height=hs1+r['hns'],
860
+ slot_h1=hs1,
861
+ slot_h2=hs1,
862
+ slot_open_width=r['bns'],
863
+ slot_r1=0,
864
+ slot_r2=0, # bns2/2,
865
+ yoke_height=round(hys, 4) if kpr == 1 else 0))
866
+
867
+ relculen = 1.4
868
+ r['winding'] = dict(
869
+ #wire_diam=round(dwire, 5),
870
+ num_phases=m,
871
+ cufilfact=par['kq'],
872
+ culength=relculen,
873
+ num_par_wdgs=a,
874
+ num_layers=layers,
875
+ #resistance=round(r1, 4),
876
+ coil_span=wdg.yd,
877
+ num_wires=int(num_wires))
878
+
879
+ hm = _get_magnet_height(r['i1'], r['w1'], r['kw'], par)/kpr
880
+ r['magnet'] = dict(
881
+ afm_rotor=dict(
882
+ yoke_height=round(hys/kpr, 4) if kps == 1 else 0,
883
+ rel_magn_width=par['mag_width'],
884
+ magn_height=round(hm, 4))
885
+ )
886
+ return r
887
+
888
+
711
889
  def ipm(pnom: float, speed: float, p: int, **kwargs) -> dict:
712
890
  """returns dimension of a IPM machine
713
891
 
@@ -808,11 +986,11 @@ def eesm(pnom: float, speed: float, p: int, **kwargs) -> dict:
808
986
 
809
987
 
810
988
  if __name__ == "__main__":
811
-
812
- pnom = 10e3
813
- speed = 4400/60
814
- p = 4
815
- udc = 600
989
+ # sizing example with SPM
990
+ pnom = 10e3 # shaft power in W
991
+ speed = 4400/60 # speed in 1/s
992
+ p = 4 # number of pole pairs
993
+ udc = 600 # DC voltage in V
816
994
 
817
995
  r = spm(pnom, speed, p, udc=udc)
818
996
 
@@ -449,8 +449,8 @@ def dqparident(workdir, engine, temp, machine,
449
449
  leakfile.unlink(missing_ok=True)
450
450
 
451
451
  period_frac = kwargs.get('period_frac', 6)
452
- if machine.get('external_rotor', False):
453
- period_frac = 1 # TODO: missing femag support
452
+ if machine.get('external_rotor', False) and period_frac > 1:
453
+ logger.warning("period frac for external rotor requires GT femag version >= 2024")
454
454
 
455
455
  if dqtype == 'ldq':
456
456
  simulation = dict(
femagtools/mcv.py CHANGED
@@ -335,9 +335,8 @@ class Mcv(object):
335
335
  self.setData(data)
336
336
 
337
337
  self.mc1_curves = len(self.curve)
338
- if self.mc1_type == MAGCRV and self.mc1_curves > 1:
339
- self.mc1_type = ORIENT_CRV
340
- if self.mc1_type in (ORIENT_CRV, ORIENT_PM_CRV):
338
+ if (self.mc1_type in (ORIENT_CRV, ORIENT_PM_CRV)
339
+ or self.mc1_curves > 1):
341
340
  self.version_mc_curve = self.ORIENTED_VERSION_MC_CURVE
342
341
  elif self.mc1_type == DEMCRV_BR:
343
342
  self.version_mc_curve = self.PARAMETER_PM_CURVE
femagtools/model.py CHANGED
@@ -136,14 +136,15 @@ class MachineModel(Model):
136
136
  name = 'DRAFT'
137
137
  if isinstance(parameters, str):
138
138
  name = parameters
139
+ self.connect_full = False # no matter
139
140
  else:
140
141
  if 'name' in parameters:
141
142
  name = parameters['name']
142
143
  if 'windings' in parameters:
143
144
  self.winding = self.windings
144
145
 
145
- # connect model even for complete model (see fsl connect_models)
146
- self.connect_full = True
146
+ # connect model even for complete model (see fsl connect_models)
147
+ self.connect_full = parameters.get('afmtype', '') == ''
147
148
  # must sanitize name to prevent femag complaints
148
149
  self.name = ''.join([n
149
150
  for n in name.strip()
@@ -410,7 +411,7 @@ class MachineModel(Model):
410
411
  missing += m
411
412
  names += n
412
413
  if missing:
413
- raise MCerror("MC pars missing: {}".format(
414
+ raise MCerror("Material properties missing: {}".format(
414
415
  ', '.join(set(missing))))
415
416
  return set(names)
416
417
 
femagtools/parstudy.py CHANGED
@@ -325,7 +325,7 @@ class ParameterStudy(object):
325
325
  shutil.copy(ff, repdir)
326
326
  calcid += 1
327
327
  if isinstance(r, dict) and 'error' in r:
328
- logger.warn("job %d failed: %s", k, r['error'])
328
+ logger.warning("job %d failed: %s", k, r['error'])
329
329
  if objective_vars:
330
330
  f.append([float('nan')]*len(objective_vars))
331
331
  else:
femagtools/plot/nc.py CHANGED
@@ -14,7 +14,7 @@ DEFAULT_CMAP='viridis'
14
14
  """default colormap (see https://matplotlib.org/stable/users/explain/colors/colormaps.html)"""
15
15
 
16
16
 
17
- def spel(isa, superelements=[], with_axis=False, ax=0):
17
+ def spel(isa, superelements=[], with_axis=False, with_wiredir=False, ax=0):
18
18
  """plot super elements of I7/ISA7 model
19
19
  Args:
20
20
  isa: Isa7 object
@@ -35,7 +35,7 @@ def spel(isa, superelements=[], with_axis=False, ax=0):
35
35
  color=isa.color[se.color], lw=0))
36
36
  try:
37
37
  # draw wire direction
38
- if se.subregion:
38
+ if se.subregion and with_wiredir:
39
39
  if se.subregion.curdir != 0:
40
40
  wkey = se.subregion.winding.key
41
41
  if se.subregion.curdir < 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: femagtools
3
- Version: 1.8.1
3
+ Version: 1.8.2
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
@@ -1,4 +1,4 @@
1
- femagtools/__init__.py,sha256=8qBE3W14xsW2ubtd47GQKlMz2Q3iiSOKk2UAcacUMJI,1600
1
+ femagtools/__init__.py,sha256=kRVLeU7jCmB8MUrNUdzChKl4fzai9F9XlN-SHUMQXTo,1600
2
2
  femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
3
3
  femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
4
4
  femagtools/amela.py,sha256=RFTuQ5EcX19G2YJchnktr6j62mNptrdTreShQDOeuKA,13874
@@ -17,7 +17,7 @@ femagtools/ecloss.py,sha256=kTsE9Lx6nt6Ez9PBfD58hPMcnH2PxSc95zJaYMCQd5Q,33957
17
17
  femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
18
18
  femagtools/femag.py,sha256=m8mfMjzjkL_R-iqyInxM7y7F4jgKg6ZI7FfTQlbxtng,46988
19
19
  femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
20
- femagtools/fsl.py,sha256=XktbwR4KvUVv-Fq_9FMPbigBvrHYfSdL6P0kcwAx5Mg,36929
20
+ femagtools/fsl.py,sha256=PU4t8wBvtVckv4f8ozg5_exxspuToW0W0O95jZZ5IU4,36924
21
21
  femagtools/getset.py,sha256=yJ6Em35DeWK7WNZW0qjjS5s7LUkVh5mbgxF59HHm5FM,3017
22
22
  femagtools/gmsh.py,sha256=IKhNiviIBji4cMxAhxaYXNqBRMNAPSKsBGdnGyxkyQw,3903
23
23
  femagtools/google.py,sha256=ugRyHY1zBjHR4aNfbA7GeF-ZU_NgleuVTZaWpi_XLT4,17144
@@ -29,9 +29,9 @@ femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
29
29
  femagtools/job.py,sha256=sIRVXsyoupfRXqGsWyOHMetcKlWIyggxfVURjM8aD54,11322
30
30
  femagtools/losscoeffs.py,sha256=Nil2fvkkS6-T29OnHIsdVbegCHyl23iZg8rMVbbA5wY,6785
31
31
  femagtools/magnet.py,sha256=Nuk060bT4Wa3lX74HdefqTTtUxLaERDSBYTTpbi6KP4,1093
32
- femagtools/mcv.py,sha256=jZrlWHvTlHzHFjk0zr2aGkHtE5ahuzhDE-SVtey6xnQ,40554
32
+ femagtools/mcv.py,sha256=CAv-8bRm9aQJR5LVVXuLGGw1id_uu0m-fMiPMYX9Z-o,40488
33
33
  femagtools/me.py,sha256=z6RJkvSbgMmorCQTxKvq44uIYKh82uYYExjkNePJCmE,1813
34
- femagtools/model.py,sha256=sqv2qdcL3MHv_6hcwsAtO03UHbteRipY60BcaHGGfcU,17863
34
+ femagtools/model.py,sha256=dk9x-iqRzgOTdTCeU_ynUZGb1bt4FvU1ZGMPXytMbUg,17965
35
35
  femagtools/moproblem.py,sha256=kOP8pRdD8YXz28_M2WKnFgl3eeJ7tqg49ohoazsmUOg,2825
36
36
  femagtools/multiproc.py,sha256=7mJF-VU1NrJkENyg8eHtDrDRNBwLPK43phZv3ehm9BU,8435
37
37
  femagtools/mxw2msh.py,sha256=CIIqAvfs8U-A0OfuOAoDaqNSmoMSHSI_tW1CPFRCP5E,2151
@@ -39,7 +39,7 @@ femagtools/nc.py,sha256=bAj3iurE9WaovoCi76ry2aJZJ6rC1zO6xWrfsSD6lrc,15160
39
39
  femagtools/netlist.py,sha256=CSCl8setLZ_L8DCnNWaNA3-wLe1yo-fmzARZoVvYfaA,2052
40
40
  femagtools/ntib.py,sha256=76g1ZO3Fq_kN-HTMBvaKvJmMMlJMyEPFeNAcJPq3w7Y,3099
41
41
  femagtools/opt.py,sha256=wBU0yh3hZlNti_zfIvtKcPg1EJrnE3I1BqmVxLGWixU,8753
42
- femagtools/parstudy.py,sha256=IkWffdFLhLACSvqJ6_ho4Pi4RC6AapLThoktVTXnVJE,19461
42
+ femagtools/parstudy.py,sha256=OXAqRGSvOZHNZTx_bXSgXpKv_ABB6zHOU-dJLJjrhBI,19464
43
43
  femagtools/poc.py,sha256=wMwOxMhPLFRiGPMsKQwWWuGr6UZPzRBajhfVMfXptNU,6794
44
44
  femagtools/tks.py,sha256=xStMu6P1xsc36tS53FKnbL6i2ZTVnCNXyTVw8_gjepo,7436
45
45
  femagtools/ts.py,sha256=x9aCMVASjdBZuyI2pJGMyi1dveGFd_pWQ20cZ-l_moc,47216
@@ -48,32 +48,32 @@ femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
48
48
  femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
49
49
  femagtools/windings.py,sha256=OYoEFIQci3f3sYJkcyRjBpBpDRtX2Y2aHZiRXOEgsls,23497
50
50
  femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
51
- femagtools/dxfsl/area.py,sha256=d991y_mLGapilCQyp3ZK6mXbUeXEt-nAkJWJ5P0yxXo,65227
52
- femagtools/dxfsl/areabuilder.py,sha256=Siu11yRcNJiSCWwc865-OvuVhSmLtRQWysbe1-rUcN0,34197
51
+ femagtools/dxfsl/area.py,sha256=C0mPWeer2kleh3x5GHibMSjegEjfmEZHTHTB9WVHIPg,67005
52
+ femagtools/dxfsl/areabuilder.py,sha256=6dfWryYjXzGIVDOsX2zb1VKIhUzmpL43XhF-wtdesAg,35882
53
53
  femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
54
54
  femagtools/dxfsl/conv.py,sha256=-d03mQiDWF_MD4T0TIH7k-zNa6p7w9rtc6QE2Bz1Q7s,10362
55
- femagtools/dxfsl/converter.py,sha256=8Bm3JQaK6IwZBil6n5avaydd7Nkvj8tRNGbqWU4EHU8,35525
55
+ femagtools/dxfsl/converter.py,sha256=YXesbeqHbwtr97xPMJTNSsxe_kVJycJQfrKrIQVoJQw,36425
56
56
  femagtools/dxfsl/corner.py,sha256=-XPBcnEau-2-SRHLYzlBqCQGaFfgm_DH2qR1mSaFoAs,1311
57
57
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
58
58
  femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
59
59
  femagtools/dxfsl/femparser.py,sha256=O8940Q1Mz8MKng6W8M3s9KfTvhDLJ56tfQWtZEW3xMM,2134
60
- femagtools/dxfsl/fslrenderer.py,sha256=v2z6GJPuuI0FDxHENw_Oteejz5GZzgc5nr0fjffH3q8,27904
60
+ femagtools/dxfsl/fslrenderer.py,sha256=d2a_HXml2CqS8FkmSbFXsUtOLIfSI14C4qGQd0Xj-c4,27961
61
61
  femagtools/dxfsl/functions.py,sha256=teJHtVxoViGs66AB8_4BxRrFQx9SbPT2azIrKyhJHOc,12005
62
- femagtools/dxfsl/geom.py,sha256=Q0pxdT3qtUs7lg3RmJ-_7RhlnM9n9_xE_LRjJeNpf4E,174555
62
+ femagtools/dxfsl/geom.py,sha256=CuaW4aa0Xb3dTYX_HSHpMxqOXGztT35_ISHh0Dj-FJE,173525
63
63
  femagtools/dxfsl/journal.py,sha256=4LMSW5wCYlETzid6SIF8b5DH-DCgtH4nFx-xIxjtbfg,4265
64
- femagtools/dxfsl/machine.py,sha256=vaELJixMKrjJTOe5QNb5aXVG17vN0KbMQaI1arNzYd0,50580
64
+ femagtools/dxfsl/machine.py,sha256=8KG0jIcK7vYFTXqIwYNOecGaYgvhZ9UjrRHJQZ9kjHE,56514
65
65
  femagtools/dxfsl/plotrenderer.py,sha256=q2cORuxJEf1Ws6oCY9c0gF6N3kDrcI6WOz3u5Vl6R_c,13823
66
- femagtools/dxfsl/shape.py,sha256=kz68mPsK1m5jRnE-5iNS3FX2IkpSHOe0X3OdEklGR80,59970
67
- femagtools/dxfsl/svgparser.py,sha256=FE8Jk3pV6e4AtJlrJuUxz89_JZC9buS0wwTBsX52O1g,3762
68
- femagtools/dxfsl/symmetry.py,sha256=0WeDq_z42A_cjG4m_vREDWyx-wqHqXDkoCT2eXh2EMo,38084
69
- femagtools/machine/__init__.py,sha256=U8W65K7jr7jDdC1KnJh0WjYd8DFaLnIFVvlh-TKcV94,7174
70
- femagtools/machine/afpm.py,sha256=3hJTmQxeYDyfTelr_sMEFOB6CsTIFTqmnNH3SfiZQzU,24956
66
+ femagtools/dxfsl/shape.py,sha256=-hUphAYwhja_6FyWHjUbBlNSPh6tWZCKYdz7aDplqWk,61566
67
+ femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
68
+ femagtools/dxfsl/symmetry.py,sha256=DPZ-y-UjEshNlOdC90kGhpAitsIwrvCN6gZeNGp5DJU,41120
69
+ femagtools/machine/__init__.py,sha256=B7yeRZzf29NWCWy8C8iJFdTr9bszAoMRcVEpblhCeg4,7256
70
+ femagtools/machine/afpm.py,sha256=wMyfdGDaBAt6knDSzw04Oxy_oDuBCEi06f6WaKZoRGw,25918
71
71
  femagtools/machine/effloss.py,sha256=GV_bc5f1ysBi1Ng7FR3fD1xh5KXa6ACc55iWfsltMBI,13663
72
72
  femagtools/machine/im.py,sha256=3Y54AHMZfAjkvgexx2E-5jxNWzaVQ-SyaETCh7gNBYA,38008
73
73
  femagtools/machine/pm.py,sha256=C4vDdPIsIRUKtzY3b1RNT1v37p1uP3pMUduftNejcPc,68129
74
- femagtools/machine/sizing.py,sha256=nWCfxbyWfbw5-7xu0qZ6zjWNquEPn3fUH-fQeGb6QUc,24307
74
+ femagtools/machine/sizing.py,sha256=YhsT5Iki7_zW1BBKB1dD_q6qHI-kvjb3_68881Q71LU,30039
75
75
  femagtools/machine/sm.py,sha256=Y6g4KPm-2bhzMYjGarojokEzaNgOmFR2G4DIKBtVQOs,39210
76
- femagtools/machine/utils.py,sha256=CRTY5qwlaN_Zp5SZgxicXTfZyVU5fjtm4XKEA-peNCc,20856
76
+ femagtools/machine/utils.py,sha256=VswrQuGB_uGE4cYWIQSXLSEVJKrmSwNJdGlme7RPEno,20912
77
77
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
78
78
  femagtools/moo/algorithm.py,sha256=e-Cgp2rp_hG9DXqWqluzQGNIWvCfthUgLD8O-aVPofA,5763
79
79
  femagtools/moo/population.py,sha256=krIl8tOJXPhCgBemkqn-jwvZg1VzsGniqMN_KAFxbuw,10203
@@ -88,7 +88,7 @@ femagtools/plot/fieldlines.py,sha256=_7ykKhnQLeS4fz34pnzovH1gIhcUSKJ3gl1GUgWYix8
88
88
  femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
89
89
  femagtools/plot/forcedens.py,sha256=Vloi9czy7qbGXI-Vm7Cow6IfHTsFhCLI1YWduFOR55c,4075
90
90
  femagtools/plot/mcv.py,sha256=ijZg6KPwZC7sDxEzGEUfVWvDoSEfgcaH-hzQMt7E90I,3671
91
- femagtools/plot/nc.py,sha256=S_Rb0ax4O0pFVzcL4JctwfXl6-uQFHUJwoeQMftibJM,10839
91
+ femagtools/plot/nc.py,sha256=kfTifzAMReQZu4UmbHZo1caAK0n7N51lkPj7BU7l1lU,10876
92
92
  femagtools/plot/phasor.py,sha256=5QG1GkXKVksc8P6Q4thKADf6W1l8rDKeArIHFYvbXlw,4858
93
93
  femagtools/plot/wdg.py,sha256=Orw2XGThHpOuJ_raSRnQTzj5tOmwllNWweByoOXbA7I,9820
94
94
  femagtools/svgfsl/converter.py,sha256=5q4LognshXNTpUWLnU5rtgCfAwZnEuPzqsgyeRYC-VM,3019
@@ -188,7 +188,7 @@ tests/test_losscoeffs.py,sha256=3EKmDFRuvn88z_8r0HxKFdB0lNXNnhEgaFshL8BkDjE,2012
188
188
  tests/test_machine.py,sha256=Woha6nfKaYQCxxoG57sUztpnpU6K9imXwn9B_KMhanw,12906
189
189
  tests/test_magncurv.py,sha256=wPf1dNACZ1BkqKHSqJxiNi6Dq8JP3QCRBY4ql_0YCyU,2608
190
190
  tests/test_magnet.py,sha256=BUHG_8SEi4d8j6yV9BSzcpYc2-UVMRFv50P_jgTTXoQ,276
191
- tests/test_mcv.py,sha256=BdFdCkBL_tM88G2z_hbLsVlOaq7T83flS4m8YYLLPnc,4574
191
+ tests/test_mcv.py,sha256=cPgijMjDxSt1CwN6syE4r4WWAlUSruZDQsTK_oNhfg4,4570
192
192
  tests/test_mcvreader.py,sha256=3cgq22b_iaWLrs4WWOUNHqJREnv0YoFivNpAb4teEJs,2118
193
193
  tests/test_me.py,sha256=En00OrOhZclBO4u74q5Os0FgVP4TGFLzz99LF0QHXHA,196
194
194
  tests/test_model.py,sha256=kYjjFgZPIex3foX3skiOdD5MCcmA2JP7oDDuE9txv_U,2698
@@ -213,9 +213,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
213
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
214
214
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
215
215
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
216
- femagtools-1.8.1.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
217
- femagtools-1.8.1.dist-info/METADATA,sha256=vMKM0Pd8bfajkKv7bXpXco4_dmISFQXGJKQRtQDb9xE,6198
218
- femagtools-1.8.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
219
- femagtools-1.8.1.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
220
- femagtools-1.8.1.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
221
- femagtools-1.8.1.dist-info/RECORD,,
216
+ femagtools-1.8.2.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
217
+ femagtools-1.8.2.dist-info/METADATA,sha256=yH0fPdMTzP_mojxKfekWdoGkrj_tvA0WrEpRVt_XYlc,6198
218
+ femagtools-1.8.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
219
+ femagtools-1.8.2.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
220
+ femagtools-1.8.2.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
221
+ femagtools-1.8.2.dist-info/RECORD,,
tests/test_mcv.py CHANGED
@@ -33,7 +33,7 @@ def test_write_mcv_orient_crv(tmpdir):
33
33
  mcvr = femagtools.mcv.Reader()
34
34
  mcvr.readMcv(filename+ext)
35
35
  assert mcvr['version_mc_curve'] == 1
36
- assert mcvr['ctype'] == femagtools.mcv.ORIENT_CRV
36
+ assert mcvr['ctype'] == femagtools.mcv.MAGCRV
37
37
  assert mcvr['curve'][0]['bi'] == pytest.approx(B, 1e-3)
38
38
  assert mcvr['curve'][0]['hi'] == pytest.approx(H, 1e-3)
39
39
  assert mcvr['curve'][1]['bi'] == pytest.approx(B, 1e-3)