fiqus 2024.7.0__py3-none-any.whl → 2024.12.1__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 (69) hide show
  1. fiqus/MainFiQuS.py +290 -134
  2. fiqus/data/DataConductor.py +301 -301
  3. fiqus/data/DataFiQuS.py +128 -84
  4. fiqus/data/DataFiQuSCCT.py +150 -150
  5. fiqus/data/DataFiQuSConductor.py +84 -84
  6. fiqus/data/DataFiQuSConductorAC_Strand.py +565 -565
  7. fiqus/data/DataFiQuSMultipole.py +716 -42
  8. fiqus/data/DataFiQuSPancake3D.py +737 -278
  9. fiqus/data/DataMultipole.py +180 -15
  10. fiqus/data/DataRoxieParser.py +90 -51
  11. fiqus/data/DataSettings.py +121 -0
  12. fiqus/data/DataWindingsCCT.py +37 -37
  13. fiqus/data/RegionsModelFiQuS.py +18 -6
  14. fiqus/geom_generators/GeometryCCT.py +905 -905
  15. fiqus/geom_generators/GeometryConductorAC_Strand.py +1391 -1391
  16. fiqus/geom_generators/GeometryMultipole.py +1827 -227
  17. fiqus/geom_generators/GeometryPancake3D.py +316 -117
  18. fiqus/geom_generators/GeometryPancake3DUtils.py +549 -0
  19. fiqus/getdp_runners/RunGetdpCCT.py +4 -4
  20. fiqus/getdp_runners/RunGetdpConductorAC_Strand.py +201 -201
  21. fiqus/getdp_runners/RunGetdpMultipole.py +115 -42
  22. fiqus/getdp_runners/RunGetdpPancake3D.py +28 -6
  23. fiqus/mains/MainCCT.py +2 -2
  24. fiqus/mains/MainConductorAC_Strand.py +132 -132
  25. fiqus/mains/MainMultipole.py +113 -62
  26. fiqus/mains/MainPancake3D.py +63 -23
  27. fiqus/mesh_generators/MeshCCT.py +209 -209
  28. fiqus/mesh_generators/MeshConductorAC_Strand.py +656 -656
  29. fiqus/mesh_generators/MeshMultipole.py +1243 -181
  30. fiqus/mesh_generators/MeshPancake3D.py +275 -192
  31. fiqus/parsers/ParserCOND.py +825 -0
  32. fiqus/parsers/ParserDAT.py +16 -16
  33. fiqus/parsers/ParserGetDPOnSection.py +212 -212
  34. fiqus/parsers/ParserGetDPTimeTable.py +134 -134
  35. fiqus/parsers/ParserMSH.py +53 -53
  36. fiqus/parsers/ParserPOS.py +214 -214
  37. fiqus/parsers/ParserRES.py +142 -142
  38. fiqus/plotters/PlotPythonCCT.py +133 -133
  39. fiqus/plotters/PlotPythonConductorAC.py +855 -855
  40. fiqus/plotters/PlotPythonMultipole.py +18 -18
  41. fiqus/post_processors/PostProcessCCT.py +440 -440
  42. fiqus/post_processors/PostProcessConductorAC.py +49 -49
  43. fiqus/post_processors/PostProcessMultipole.py +353 -229
  44. fiqus/post_processors/PostProcessPancake3D.py +8 -13
  45. fiqus/pre_processors/PreProcessCCT.py +175 -175
  46. fiqus/pro_assemblers/ProAssembler.py +14 -6
  47. fiqus/pro_material_functions/ironBHcurves.pro +246 -246
  48. fiqus/pro_templates/combined/CCT_template.pro +274 -274
  49. fiqus/pro_templates/combined/ConductorAC_template.pro +1025 -1025
  50. fiqus/pro_templates/combined/Multipole_template.pro +1694 -126
  51. fiqus/pro_templates/combined/Pancake3D_template.pro +2294 -1103
  52. fiqus/pro_templates/combined/TSA_materials.pro +162 -0
  53. fiqus/pro_templates/combined/materials.pro +36 -18
  54. fiqus/utils/Utils.py +508 -110
  55. fiqus/utils/update_data_settings.py +33 -0
  56. fiqus-2024.12.1.dist-info/METADATA +132 -0
  57. fiqus-2024.12.1.dist-info/RECORD +84 -0
  58. {fiqus-2024.7.0.dist-info → fiqus-2024.12.1.dist-info}/WHEEL +1 -1
  59. tests/test_FiQuS.py +1 -1
  60. tests/test_geometry_generators.py +101 -2
  61. tests/test_mesh_generators.py +154 -1
  62. tests/test_solvers.py +115 -21
  63. tests/utils/fiqus_test_classes.py +85 -21
  64. tests/utils/generate_reference_files_ConductorAC.py +57 -57
  65. tests/utils/generate_reference_files_Pancake3D.py +4 -5
  66. tests/utils/helpers.py +97 -97
  67. fiqus-2024.7.0.dist-info/METADATA +0 -103
  68. fiqus-2024.7.0.dist-info/RECORD +0 -79
  69. {fiqus-2024.7.0.dist-info → fiqus-2024.12.1.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  from pydantic import BaseModel
2
- from typing import (Dict, List, Optional)
2
+ from typing import Dict, List, Tuple, Optional
3
3
 
4
4
 
5
5
  class Coord(BaseModel):
@@ -13,13 +13,27 @@ class Area(BaseModel):
13
13
 
14
14
 
15
15
  class Region(BaseModel):
16
- points: Dict[str | int, int] = {}
17
- lines: Dict[str | int, int] = {}
18
- areas: Dict[str | int, Area] = {}
16
+ points: Dict[str, int] = {}
17
+ lines: Dict[str, int] = {}
18
+ areas: Dict[str, Area] = {}
19
+
20
+
21
+ # class CableInsulated(BaseModel):
22
+ # type: #Literal['Insulated']
23
+ # insulated: Region = Region()
24
+ #
25
+ #
26
+ # class CableBare(BaseModel):
27
+ # type: #Literal['Bare']
28
+ # bare: Region = Region()
29
+ # insulation: Region = Region()
19
30
 
20
31
 
21
32
  class BlockData(BaseModel):
22
- half_turns: Region = Region()
33
+ half_turns: Region = (
34
+ Region()
35
+ ) # Union[CableInsulated, CableBare] = {'type': 'Insulated'}
36
+ insulation: Region = Region()
23
37
  current_sign: Optional[int] = None
24
38
 
25
39
 
@@ -39,14 +53,10 @@ class Layer(BaseModel):
39
53
 
40
54
  class Pole(BaseModel):
41
55
  poles: Dict[int, Layer] = {}
56
+ type: Optional[str] = None
42
57
  bore_center: Coord = Coord()
43
58
 
44
59
 
45
- class Iron(BaseModel):
46
- quadrants: Dict[int, Region] = {}
47
- max_radius: float = 0.
48
-
49
-
50
60
  class Order(BaseModel):
51
61
  coil: Optional[int] = None
52
62
  pole: Optional[int] = None
@@ -55,28 +65,165 @@ class Order(BaseModel):
55
65
  block: Optional[int] = None
56
66
 
57
67
 
68
+ class AnticlockwiseOrder(BaseModel):
69
+ pole: Optional[int] = None
70
+ winding: Optional[int] = None
71
+ block: Optional[int] = None
72
+
73
+
74
+ class MidLayer(BaseModel):
75
+ half_turn_lists: Dict[str, List[int]] = {}
76
+ point_angles: Dict[str, float] = {}
77
+ mid_layers: Region = Region()
78
+
79
+
80
+ class Iron(BaseModel):
81
+ quadrants: Dict[int, Region] = {}
82
+ max_radius: float = 0.0
83
+
84
+
85
+ class LayerOrder(BaseModel):
86
+ layers: Dict[int, List[AnticlockwiseOrder]] = {}
87
+
88
+
89
+ class CoilOrder(BaseModel):
90
+ coils: Dict[int, LayerOrder] = {}
91
+
92
+
58
93
  class Coil(BaseModel):
59
94
  coils: Dict[int, Pole] = {}
60
- electrical_order: List[Order] = []
95
+ physical_order: List[Order] = []
96
+ anticlockwise_order: CoilOrder = CoilOrder()
97
+ concentric_coils: Dict[Tuple[float, float], List[int]] = {}
98
+ max_radius: float = 0.0
99
+
100
+
101
+ class InsulationThickness(BaseModel):
102
+ mid_pole: Dict[str, float] = {}
103
+ mid_layer: Dict[str, float] = {}
104
+ mid_winding: Dict[str, float] = {}
105
+
106
+
107
+ class ThinShell(BaseModel):
108
+ mid_layers_ht_to_ht: Dict[str, MidLayer] = {}
109
+ mid_layers_wdg_to_ht: Dict[str, Region] = {}
110
+ mid_layers_ht_to_wdg: Dict[str, Region] = {}
111
+ mid_layers_wdg_to_wdg: Dict[str, Region] = {}
112
+ mid_poles: Dict[str, Region] = {}
113
+ mid_windings: Dict[str, Region] = {}
114
+ mid_turn_blocks: Dict[str, Region] = {}
115
+ mid_wedge_turn: Dict[str, Region] = {}
116
+ mid_layers_aux: Dict[str, Region] = {}
117
+ ins_thickness: InsulationThickness = InsulationThickness()
118
+
119
+
120
+ class WedgeRegion(BaseModel):
121
+ wedges: Dict[int, Region] = {}
122
+ block_prev: Dict[int, int] = {}
123
+ block_next: Dict[int, int] = {}
124
+
125
+
126
+ class WedgeLayer(BaseModel):
127
+ layers: Dict[int, WedgeRegion] = {}
128
+
129
+
130
+ class Wedge(BaseModel):
131
+ coils: Dict[int, WedgeLayer] = {}
132
+
133
+
134
+ class InsulationRegion(BaseModel):
135
+ ins: Region = Region()
136
+ blocks: List[List[int]] = []
137
+ wedges: List[List[int]] = []
138
+
139
+
140
+ class InsulationGroup(BaseModel):
141
+ group: Dict[int, InsulationRegion] = {}
142
+
143
+
144
+ class Insulation(BaseModel):
145
+ coils: Dict[int, InsulationGroup] = {}
61
146
 
62
147
 
63
148
  class Geometry(BaseModel):
64
149
  coil: Coil = Coil()
65
150
  iron: Iron = Iron()
66
- wedges: Region = Region()
151
+ wedges: Wedge = Wedge()
67
152
  air: Region = Region()
68
153
  air_inf: Region = Region()
154
+ symmetric_boundaries: Region = Region()
155
+ thin_shells: ThinShell = ThinShell()
156
+ insulation: Insulation = Insulation()
157
+
158
+
159
+ # Domain classes #
160
+ class MidLayerLine(BaseModel):
161
+ inner: Dict[str, int] = {}
162
+ outer: Dict[str, int] = {}
69
163
 
70
164
 
71
165
  class GroupType(BaseModel):
72
166
  curves: Dict[str, int] = {}
73
167
  surfaces: Dict[str, int] = {}
74
- volumes: Dict[str, int] = {}
168
+
169
+
170
+ class PoweredGroup(BaseModel):
171
+ tag: Optional[int] = None
172
+ group: Optional[str] = None
173
+ lines: Dict[str, int] = {}
174
+ mid_layer_lines: MidLayerLine = MidLayerLine()
175
+ mid_pole_lines: Dict[str, int] = {}
176
+ mid_winding_lines: Dict[str, int] = {}
177
+ mid_turn_lines: Dict[str, int] = {}
178
+ aux_lines: Dict[str, int] = {}
179
+
180
+
181
+ class WedgeGroup(BaseModel):
182
+ tag: Optional[int] = None
183
+ group: Optional[str] = None
184
+ lines: Dict[str, int] = {}
185
+ mid_layer_lines: MidLayerLine = MidLayerLine()
186
+ mid_turn_lines: Dict[str, int] = {}
187
+ aux_lines: Dict[str, int] = {}
188
+
189
+
190
+ class PoweredBlock(BaseModel):
191
+ half_turns: Dict[int, PoweredGroup] = {}
192
+ current_sign: Optional[int] = None
193
+ conductor: Optional[str] = None
194
+
195
+
196
+ class SymmetryGroup(BaseModel):
197
+ normal_free: Optional[int] = None
198
+ tangential_free: Optional[int] = None
199
+
200
+
201
+ class PhysicalGroup(BaseModel):
202
+ blocks: Dict[int, PoweredBlock] = {}
203
+ wedges: Dict[int, WedgeGroup] = {}
204
+ insulations: GroupType = GroupType()
205
+ iron: GroupType = GroupType()
206
+ air_inf: Optional[int] = None
207
+ air_inf_bnd: Optional[int] = None
208
+ air: Optional[int] = None
209
+ symmetric_boundaries: SymmetryGroup = SymmetryGroup()
210
+ half_turns_points: Optional[int] = None
211
+
212
+
213
+ class SymmetryBoundaries(BaseModel):
214
+ x: List[int] = []
215
+ y: List[int] = []
216
+
217
+
218
+ class GroupEntities(BaseModel):
219
+ iron: Dict[str, List[int]] = {}
220
+ air: List[int] = []
221
+ symmetric_boundaries: SymmetryBoundaries = SymmetryBoundaries()
75
222
 
76
223
 
77
224
  class Domain(BaseModel):
78
- groups_surfaces: Dict[str, List[int]] = {}
79
- physical_groups: GroupType = GroupType()
225
+ groups_entities: GroupEntities = GroupEntities()
226
+ physical_groups: PhysicalGroup = PhysicalGroup()
80
227
 
81
228
 
82
229
  class MultipoleData(BaseModel):
@@ -84,6 +231,24 @@ class MultipoleData(BaseModel):
84
231
  domains: Domain = Domain()
85
232
 
86
233
 
234
+ #######################################
235
+
236
+
237
+ class NeighbourNode(BaseModel):
238
+ groups: Dict[str, List[float]] = {}
239
+
240
+
241
+ class IsothermalNodes(BaseModel):
242
+ conductors: Dict[str, Dict[int, List[float]]] = {}
243
+ wedges: Dict[str, Dict[int, List[float]]] = {}
244
+ thin_shells: Dict[int, List[float]] = {}
245
+
246
+
247
+ class MultipoleRegionCoordinate(BaseModel):
248
+ isothermal_nodes: IsothermalNodes = IsothermalNodes()
249
+ neighbouring_nodes: NeighbourNode = NeighbourNode()
250
+
251
+
87
252
  # if __name__ == "__main__":
88
253
  # write = True
89
254
  # read = False
@@ -1,11 +1,12 @@
1
1
  from pydantic import BaseModel
2
- from typing import (Dict, List, Optional)
2
+ from typing import Dict, List, Optional
3
3
 
4
4
 
5
5
  class Coord(BaseModel):
6
6
  """
7
- Class for coordinates
7
+ Class for coordinates
8
8
  """
9
+
9
10
  x: Optional[float] = None
10
11
  y: Optional[float] = None
11
12
  z: Optional[float] = None
@@ -13,31 +14,35 @@ class Coord(BaseModel):
13
14
 
14
15
  class Roll(BaseModel):
15
16
  """
16
- Class for roll2 transformation
17
+ Class for roll2 transformation
17
18
  """
19
+
18
20
  coor: Coord = Coord()
19
21
  alph: Optional[float] = None
20
22
 
21
23
 
22
24
  class HyperHole(BaseModel):
23
25
  """
24
- Class for hyper holes
26
+ Class for hyper holes
25
27
  """
28
+
26
29
  areas: List[str] = []
27
30
 
28
31
 
29
32
  class HyperArea(BaseModel):
30
33
  """
31
- Class for hyper areas
34
+ Class for hyper areas
32
35
  """
36
+
33
37
  material: Optional[str] = None
34
38
  lines: List[str] = []
35
39
 
36
40
 
37
41
  class HyperLine(BaseModel):
38
42
  """
39
- Class for hyper lines: lines, arcs, elliptic arcs, circles
43
+ Class for hyper lines: lines, arcs, elliptic arcs, circles
40
44
  """
45
+
41
46
  type: Optional[str] = None
42
47
  kp1: Optional[str] = None
43
48
  kp2: Optional[str] = None
@@ -49,8 +54,9 @@ class HyperLine(BaseModel):
49
54
 
50
55
  class CondPar(BaseModel):
51
56
  """
52
- Class for conductor parameters
57
+ Class for conductor parameters
53
58
  """
59
+
54
60
  wInsulNarrow: Optional[float] = None
55
61
  wInsulWide: Optional[float] = None
56
62
  dFilament: Optional[float] = None
@@ -84,8 +90,9 @@ class CondPar(BaseModel):
84
90
 
85
91
  class Conductor(BaseModel):
86
92
  """
87
- Class for conductor type
93
+ Class for conductor type
88
94
  """
95
+
89
96
  conductorType: Optional[int] = None
90
97
  cableGeom: Optional[str] = None
91
98
  strand: Optional[str] = None
@@ -100,8 +107,9 @@ class Conductor(BaseModel):
100
107
 
101
108
  class Cable(BaseModel):
102
109
  """
103
- Class for cable parameters
110
+ Class for cable parameters
104
111
  """
112
+
105
113
  height: Optional[float] = None
106
114
  width_i: Optional[float] = None
107
115
  width_o: Optional[float] = None
@@ -113,8 +121,9 @@ class Cable(BaseModel):
113
121
 
114
122
  class Quench(BaseModel):
115
123
  """
116
- Class for quench parameters
124
+ Class for quench parameters
117
125
  """
126
+
118
127
  SCHeatCapa: Optional[float] = None
119
128
  CuHeatCapa: Optional[float] = None
120
129
  CuThermCond: Optional[float] = None
@@ -128,8 +137,9 @@ class Quench(BaseModel):
128
137
 
129
138
  class Transient(BaseModel):
130
139
  """
131
- Class for transient parameters
140
+ Class for transient parameters
132
141
  """
142
+
133
143
  Rc: Optional[float] = None
134
144
  Ra: Optional[float] = None
135
145
  filTwistp: Optional[float] = None
@@ -141,8 +151,9 @@ class Transient(BaseModel):
141
151
 
142
152
  class Strand(BaseModel):
143
153
  """
144
- Class for strand parameters
154
+ Class for strand parameters
145
155
  """
156
+
146
157
  diam: Optional[float] = None
147
158
  cu_sc: Optional[float] = None
148
159
  RRR: Optional[float] = None
@@ -155,8 +166,9 @@ class Strand(BaseModel):
155
166
 
156
167
  class Filament(BaseModel):
157
168
  """
158
- Class for filament parameters
169
+ Class for filament parameters
159
170
  """
171
+
160
172
  fildiao: Optional[float] = None
161
173
  fildiai: Optional[float] = None
162
174
  Jc_fit: Optional[str] = None
@@ -166,8 +178,9 @@ class Filament(BaseModel):
166
178
 
167
179
  class Insulation(BaseModel):
168
180
  """
169
- Class for insulation parameters
181
+ Class for insulation parameters
170
182
  """
183
+
171
184
  radial: Optional[float] = None
172
185
  azimut: Optional[float] = None
173
186
  comment: Optional[str] = None
@@ -175,8 +188,9 @@ class Insulation(BaseModel):
175
188
 
176
189
  class Block(BaseModel):
177
190
  """
178
- Class for block list
191
+ Class for block list
179
192
  """
193
+
180
194
  type: Optional[int] = None
181
195
  nco: Optional[int] = None
182
196
  radius: Optional[float] = None
@@ -198,8 +212,9 @@ class Block(BaseModel):
198
212
 
199
213
  class Group(BaseModel):
200
214
  """
201
- Class for group list
215
+ Class for group list
202
216
  """
217
+
203
218
  symm: Optional[int] = None
204
219
  typexy: Optional[int] = None
205
220
  blocks: List[int] = [] # map
@@ -207,8 +222,9 @@ class Group(BaseModel):
207
222
 
208
223
  class Trans(BaseModel):
209
224
  """
210
- Class for transformation list
225
+ Class for transformation list
211
226
  """
227
+
212
228
  x: Optional[float] = None
213
229
  y: Optional[float] = None
214
230
  alph: Optional[float] = None
@@ -220,8 +236,9 @@ class Trans(BaseModel):
220
236
 
221
237
  class Iron(BaseModel):
222
238
  """
223
- Class for the iron yoke data
239
+ Class for the iron yoke data
224
240
  """
241
+
225
242
  key_points: Dict[str, Coord] = {}
226
243
  hyper_lines: Dict[str, HyperLine] = {}
227
244
  hyper_areas: Dict[str, HyperArea] = {}
@@ -230,8 +247,9 @@ class Iron(BaseModel):
230
247
 
231
248
  class Cadata(BaseModel):
232
249
  """
233
- Class for the conductor data
250
+ Class for the conductor data
234
251
  """
252
+
235
253
  insul: Dict[str, Insulation] = {}
236
254
  filament: Dict[str, Filament] = {}
237
255
  strand: Dict[str, Strand] = {}
@@ -243,8 +261,9 @@ class Cadata(BaseModel):
243
261
 
244
262
  class Coil(BaseModel):
245
263
  """
246
- Class for the coil data
264
+ Class for the coil data
247
265
  """
266
+
248
267
  blocks: Dict[str, Block] = {}
249
268
  groups: Dict[str, Group] = {}
250
269
  transs: Dict[str, Trans] = {}
@@ -252,67 +271,91 @@ class Coil(BaseModel):
252
271
 
253
272
  class StrandGroup(BaseModel):
254
273
  """
255
- Class for strand group
274
+ Class for strand group
256
275
  """
276
+
257
277
  strand_positions: Dict[int, Coord] = {}
258
278
 
259
279
 
260
280
  class Corner(BaseModel):
261
281
  """
262
- Class for corner positions
282
+ Class for corner positions
263
283
  """
264
- iL: Coord = Coord() # inner left
265
- iR: Coord = Coord() # inner right
266
- oL: Coord = Coord() # outer left
267
- oR: Coord = Coord() # outer right
284
+
285
+ iH: Coord = Coord() # inner left
286
+ iL: Coord = Coord() # inner right
287
+ oH: Coord = Coord() # outer left
288
+ oL: Coord = Coord() # outer right
268
289
 
269
290
 
270
291
  class HalfTurnCorner(BaseModel):
271
292
  """
272
- Class for corner type
293
+ Class for corner type
273
294
  """
295
+
274
296
  insulated: Corner = Corner()
275
297
  bare: Corner = Corner()
276
298
 
277
299
 
278
300
  class HalfTurn(BaseModel):
279
301
  """
280
- Class for half-turn data
302
+ Class for half-turn data
281
303
  """
304
+
282
305
  corners: HalfTurnCorner = HalfTurnCorner()
283
306
  strand_groups: Dict[int, StrandGroup] = {}
284
307
 
285
308
 
309
+ class Order(BaseModel):
310
+ """
311
+ Class for electrical order (block location)
312
+ """
313
+
314
+ coil: Optional[int] = None
315
+ pole: Optional[int] = None
316
+ layer: Optional[int] = None
317
+ winding: Optional[int] = None
318
+ block: Optional[int] = None
319
+
320
+
286
321
  class CenterShift(BaseModel):
287
322
  """
288
- Class for bore center shift
323
+ Class for bore center shift
289
324
  """
325
+
290
326
  inner: Coord = Coord()
291
327
  outer: Coord = Coord()
292
328
 
293
329
 
294
330
  class Wedge(BaseModel):
295
331
  """
296
- Class for wedge positions
332
+ Class for wedge positions
297
333
  """
334
+
298
335
  corners: Corner = Corner()
336
+ corners_ins: Corner = Corner()
299
337
  corrected_center: CenterShift = CenterShift()
300
- coil: Optional[int] = None
338
+ corrected_center_ins: CenterShift = CenterShift()
339
+ order_l: Order = Order()
340
+ order_h: Order = Order()
301
341
 
302
342
 
303
343
  class BlockData(BaseModel):
304
344
  """
305
- Class for block data
345
+ Class for block data
306
346
  """
347
+
307
348
  block_corners: Corner = Corner()
349
+ block_corners_ins: Corner = Corner()
308
350
  current_sign: Optional[int] = None
309
351
  half_turns: Dict[int, HalfTurn] = {}
310
352
 
311
353
 
312
354
  class WindingData(BaseModel):
313
355
  """
314
- Class for winding data
356
+ Class for winding data
315
357
  """
358
+
316
359
  blocks: Dict[int, BlockData] = {}
317
360
  conductor_name: Optional[str] = None
318
361
  conductors_number: Optional[int] = None
@@ -320,57 +363,53 @@ class WindingData(BaseModel):
320
363
 
321
364
  class Winding(BaseModel):
322
365
  """
323
- Class for windings
366
+ Class for windings
324
367
  """
368
+
325
369
  windings: Dict[int, WindingData] = {}
326
370
 
327
371
 
328
372
  class Layer(BaseModel):
329
373
  """
330
- Class for winding layers
374
+ Class for winding layers
331
375
  """
376
+
332
377
  layers: Dict[int, Winding] = {}
333
378
 
334
379
 
335
380
  class Pole(BaseModel):
336
381
  """
337
- Class for poles
382
+ Class for poles
338
383
  """
384
+
339
385
  poles: Dict[int, Layer] = {}
386
+ type: Optional[str] = None
340
387
  bore_center: Coord = Coord()
341
388
 
342
389
 
343
- class Order(BaseModel):
344
- """
345
- Class for electrical order (block location)
346
- """
347
- coil: Optional[int] = None
348
- pole: Optional[int] = None
349
- layer: Optional[int] = None
350
- winding: Optional[int] = None
351
- block: Optional[int] = None
352
-
353
-
354
390
  class CoilData(BaseModel):
355
391
  """
356
- Class for coils
392
+ Class for coils
357
393
  """
394
+
358
395
  coils: Dict[int, Pole] = {}
359
- electrical_order: List[Order] = []
396
+ physical_order: List[Order] = []
360
397
 
361
398
 
362
399
  class RoxieRawData(BaseModel):
363
400
  """
364
- Class for the raw data
401
+ Class for the raw data
365
402
  """
403
+
366
404
  cadata: Cadata = Cadata()
367
405
  coil: Coil = Coil()
368
406
 
369
407
 
370
408
  class RoxieData(BaseModel):
371
409
  """
372
- Class for the roxie parser
410
+ Class for the roxie parser
373
411
  """
412
+
374
413
  iron: Iron = Iron()
375
414
  coil: CoilData = CoilData()
376
415
  wedges: Dict[int, Wedge] = {}