femagtools 1.6.8__py3-none-any.whl → 1.7.0__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.
Files changed (50) hide show
  1. femagtools/__init__.py +2 -2
  2. femagtools/bch.py +1 -1
  3. femagtools/dxfsl/area.py +334 -332
  4. femagtools/dxfsl/areabuilder.py +131 -10
  5. femagtools/dxfsl/conv.py +27 -9
  6. femagtools/dxfsl/converter.py +390 -125
  7. femagtools/dxfsl/corner.py +3 -0
  8. femagtools/dxfsl/femparser.py +1 -1
  9. femagtools/dxfsl/fslrenderer.py +290 -246
  10. femagtools/dxfsl/functions.py +4 -2
  11. femagtools/dxfsl/geom.py +1120 -886
  12. femagtools/dxfsl/journal.py +53 -22
  13. femagtools/dxfsl/machine.py +250 -74
  14. femagtools/dxfsl/plotrenderer.py +34 -3
  15. femagtools/dxfsl/shape.py +380 -103
  16. femagtools/dxfsl/symmetry.py +679 -110
  17. femagtools/femag.py +27 -2
  18. femagtools/forcedens.py +65 -40
  19. femagtools/fsl.py +71 -28
  20. femagtools/losscoeffs.py +46 -0
  21. femagtools/machine/effloss.py +8 -1
  22. femagtools/machine/im.py +3 -1
  23. femagtools/machine/pm.py +11 -7
  24. femagtools/machine/sizing.py +14 -11
  25. femagtools/machine/sm.py +114 -33
  26. femagtools/machine/utils.py +38 -34
  27. femagtools/model.py +12 -2
  28. femagtools/moo/population.py +1 -1
  29. femagtools/parstudy.py +17 -1
  30. femagtools/plot/__init__.py +1 -1
  31. femagtools/plot/char.py +24 -7
  32. femagtools/plot/forcedens.py +56 -29
  33. femagtools/plot/mcv.py +4 -1
  34. femagtools/plot/phasor.py +6 -1
  35. femagtools/poc.py +17 -10
  36. femagtools/templates/cogg_calc.mako +7 -1
  37. femagtools/templates/displ_stator_rotor.mako +33 -0
  38. femagtools/templates/fieldcalc.mako +10 -16
  39. femagtools/templates/pm_sym_f_cur.mako +1 -1
  40. femagtools/tks.py +3 -9
  41. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/LICENSE +1 -0
  42. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/METADATA +7 -4
  43. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/RECORD +50 -49
  44. tests/engines/__init__.py +0 -20
  45. tests/geom/__init__.py +0 -20
  46. tests/moo/__init__.py +0 -20
  47. tests/test_model.py +8 -1
  48. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/WHEEL +0 -0
  49. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/entry_points.txt +0 -0
  50. {femagtools-1.6.8.dist-info → femagtools-1.7.0.dist-info}/top_level.txt +0 -0
@@ -26,9 +26,8 @@ def getJournal(name=None, aktiv=False):
26
26
  global journal
27
27
  if not journal:
28
28
  if not name:
29
- journal = Journal(name='none', aktiv=False)
30
- else:
31
- journal = Journal(name=name, aktiv=True)
29
+ name = 'none'
30
+ journal = Journal(name=name, aktiv=aktiv)
32
31
  return journal
33
32
 
34
33
 
@@ -40,6 +39,7 @@ class Journal(object):
40
39
  self.aktiv = aktiv
41
40
  self.journal = {}
42
41
  self.data = {}
42
+ self.data_key = None
43
43
  self.filename = Path('{}.json'.format(self.name))
44
44
 
45
45
  def open_journal(self):
@@ -55,10 +55,18 @@ class Journal(object):
55
55
  if not self.journal:
56
56
  return
57
57
  self.set_benchmark()
58
+ self.sort_by_keys()
58
59
  with open(self.filename, 'w') as f:
59
60
  f.write(json.dumps(self.journal, indent=4))
60
61
  f.close()
61
62
 
63
+ def sort_by_keys(self):
64
+ myKeys = list(self.data.keys())
65
+ myKeys.sort()
66
+ sorted_dict = {i: self.data[i] for i in myKeys}
67
+ self.data = sorted_dict
68
+ self.journal[self.data_key] = sorted_dict
69
+
62
70
  def get_journal(self, name):
63
71
  if not self.aktiv:
64
72
  return None
@@ -69,31 +77,53 @@ class Journal(object):
69
77
  self.open_journal()
70
78
  self.data = self.journal.get(name, None)
71
79
  self.data = {'filename': ""} # initialise
80
+ self.data_key = name
72
81
  self.journal[name] = self.data
73
82
  return self.data
74
83
 
84
+ def get_total(self, name):
85
+ val = self.data.get(name, None)
86
+ if val is None:
87
+ return 0
88
+ if isinstance(val, list):
89
+ if not val:
90
+ return 0
91
+ if isinstance(val[0], int) or isinstance(val[0], float):
92
+ val = sum(val)
93
+ return val
94
+ return len(val)
95
+ if isinstance(val, int) or isinstance(val, float):
96
+ return val
97
+ return 1 # entries
98
+
75
99
  def set_benchmark(self):
76
- if self.data.get('area_errors', 0) > 0:
100
+ if self.get_total('area_errors') > 0:
77
101
  self.put_warning("Problem with areas")
78
- if self.data.get('appendices_deleted', 0) > 0:
102
+ if self.get_total('appendices_deleted') > 0:
79
103
  self.put_warning("Problem with appendices")
80
104
 
81
105
  def put(self, name, val):
82
- if self.data:
106
+ if not self.data:
107
+ return
108
+ data = self.data.get(name, None)
109
+ if data is None:
83
110
  self.data[name] = val
84
-
85
- def add(self, name, val):
86
- if self.data:
87
- self.data[name] = val + self.data.get(name, 0)
111
+ return
112
+ if isinstance(data, list):
113
+ self.data[name].append(val)
114
+ return
115
+ data_list = [data]
116
+ data_list.append(val)
117
+ self.data[name] = data_list
88
118
 
89
119
  def put_filename(self, val):
90
120
  self.put('filename', val)
91
121
 
92
122
  def put_areas(self, val):
93
- self.add('areas', val)
123
+ self.put('areas', val)
94
124
 
95
125
  def put_area_errors(self, val):
96
- self.add('area_errors', val)
126
+ self.put('area_errors', val)
97
127
 
98
128
  def put_elements(self, val):
99
129
  self.put('elements', val)
@@ -102,27 +132,28 @@ class Journal(object):
102
132
  self.put('nodes', val)
103
133
 
104
134
  def put_concat_lines(self, val):
105
- self.add('concat_lines', val)
135
+ self.put('concat_lines', val)
106
136
 
107
137
  def put_concat_arcs(self, val):
108
- self.add('concat_arcs', val)
138
+ self.put('concat_arcs', val)
109
139
 
110
140
  def put_appendices(self, val):
111
- self.add('appendices', val)
141
+ self.put('appendices', val)
112
142
 
113
143
  def put_appendices_connected(self, val):
114
- self.add('appendices_connected', val)
144
+ self.put('appendices_connected', val)
115
145
 
116
146
  def put_appendices_remaining(self, val):
117
- self.add('appendices_remaining', val)
147
+ self.put('appendices_remaining', val)
118
148
 
119
149
  def put_appendices_deleted(self, val):
120
- self.add('appendices_deleted', val)
121
-
150
+ self.put('appendices_deleted', val)
151
+
152
+ def put_nodes_connected(self, val):
153
+ self.put('nodes_connected', val)
154
+
122
155
  def put_exception(self, msg):
123
156
  self.put('exception', msg)
124
157
 
125
158
  def put_warning(self, msg):
126
- lst = self.data.get('warning', [])
127
- lst.append(msg)
128
- self.put('warning', lst)
159
+ self.put('warning', msg)