Coverage for fiqus/data/DataRoxieParser.py: 100%

206 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2024-05-20 03:24 +0200

1from pydantic import BaseModel 

2from typing import (Dict, List, Optional) 

3 

4 

5class Coord(BaseModel): 

6 """ 

7 Class for coordinates 

8 """ 

9 x: Optional[float] = None 

10 y: Optional[float] = None 

11 z: Optional[float] = None 

12 

13 

14class Roll(BaseModel): 

15 """ 

16 Class for roll2 transformation 

17 """ 

18 coor: Coord = Coord() 

19 alph: Optional[float] = None 

20 

21 

22class HyperHole(BaseModel): 

23 """ 

24 Class for hyper holes 

25 """ 

26 areas: List[str] = [] 

27 

28 

29class HyperArea(BaseModel): 

30 """ 

31 Class for hyper areas 

32 """ 

33 material: Optional[str] = None 

34 lines: List[str] = [] 

35 

36 

37class HyperLine(BaseModel): 

38 """ 

39 Class for hyper lines: lines, arcs, elliptic arcs, circles 

40 """ 

41 type: Optional[str] = None 

42 kp1: Optional[str] = None 

43 kp2: Optional[str] = None 

44 kp3: Optional[str] = None 

45 arg1: Optional[float] = None 

46 arg2: Optional[float] = None 

47 elements: Optional[int] = None 

48 

49 

50class CondPar(BaseModel): 

51 """ 

52 Class for conductor parameters 

53 """ 

54 wInsulNarrow: Optional[float] = None 

55 wInsulWide: Optional[float] = None 

56 dFilament: Optional[float] = None 

57 dstrand: Optional[float] = None 

58 fracCu: Optional[float] = None 

59 fracSc: Optional[float] = None 

60 RRR: Optional[float] = None 

61 TupRRR: Optional[float] = None 

62 Top: Optional[float] = None 

63 Rc: Optional[float] = None 

64 Ra: Optional[float] = None 

65 fRhoEff: Optional[float] = None 

66 lTp: Optional[float] = None 

67 wBare: Optional[float] = None 

68 hInBare: Optional[float] = None 

69 hOutBare: Optional[float] = None 

70 noOfStrands: Optional[int] = None 

71 noOfStrandsPerLayer: Optional[int] = None 

72 noOfLayers: Optional[int] = None 

73 lTpStrand: Optional[float] = None 

74 wCore: Optional[float] = None 

75 hCore: Optional[float] = None 

76 thetaTpStrand: Optional[float] = None 

77 degradation: Optional[float] = None 

78 C1: Optional[float] = None 

79 C2: Optional[float] = None 

80 fracHe: Optional[float] = None 

81 fracFillInnerVoids: Optional[float] = None 

82 fracFillOuterVoids: Optional[float] = None 

83 

84 

85class Conductor(BaseModel): 

86 """ 

87 Class for conductor type 

88 """ 

89 conductorType: Optional[int] = None 

90 cableGeom: Optional[str] = None 

91 strand: Optional[str] = None 

92 filament: Optional[str] = None 

93 insul: Optional[str] = None 

94 trans: Optional[str] = None 

95 quenchMat: Optional[str] = None 

96 T_0: Optional[float] = None 

97 comment: Optional[str] = None 

98 parameters: CondPar = CondPar() 

99 

100 

101class Cable(BaseModel): 

102 """ 

103 Class for cable parameters 

104 """ 

105 height: Optional[float] = None 

106 width_i: Optional[float] = None 

107 width_o: Optional[float] = None 

108 ns: Optional[float] = None 

109 transp: Optional[float] = None 

110 degrd: Optional[float] = None 

111 comment: Optional[str] = None 

112 

113 

114class Quench(BaseModel): 

115 """ 

116 Class for quench parameters 

117 """ 

118 SCHeatCapa: Optional[float] = None 

119 CuHeatCapa: Optional[float] = None 

120 CuThermCond: Optional[float] = None 

121 CuElecRes: Optional[float] = None 

122 InsHeatCapa: Optional[float] = None 

123 InsThermCond: Optional[float] = None 

124 FillHeatCapa: Optional[float] = None 

125 He: Optional[float] = None 

126 comment: Optional[str] = None 

127 

128 

129class Transient(BaseModel): 

130 """ 

131 Class for transient parameters 

132 """ 

133 Rc: Optional[float] = None 

134 Ra: Optional[float] = None 

135 filTwistp: Optional[float] = None 

136 filR0: Optional[float] = None 

137 fil_dRdB: Optional[float] = None 

138 strandfillFac: Optional[float] = None 

139 comment: Optional[str] = None 

140 

141 

142class Strand(BaseModel): 

143 """ 

144 Class for strand parameters 

145 """ 

146 diam: Optional[float] = None 

147 cu_sc: Optional[float] = None 

148 RRR: Optional[float] = None 

149 Tref: Optional[float] = None 

150 Bref: Optional[float] = None 

151 Jc_BrTr: Optional[float] = None 

152 dJc_dB: Optional[float] = None 

153 comment: Optional[str] = None 

154 

155 

156class Filament(BaseModel): 

157 """ 

158 Class for filament parameters 

159 """ 

160 fildiao: Optional[float] = None 

161 fildiai: Optional[float] = None 

162 Jc_fit: Optional[str] = None 

163 fit: Optional[str] = None 

164 comment: Optional[str] = None 

165 

166 

167class Insulation(BaseModel): 

168 """ 

169 Class for insulation parameters 

170 """ 

171 radial: Optional[float] = None 

172 azimut: Optional[float] = None 

173 comment: Optional[str] = None 

174 

175 

176class Block(BaseModel): 

177 """ 

178 Class for block list 

179 """ 

180 type: Optional[int] = None 

181 nco: Optional[int] = None 

182 radius: Optional[float] = None 

183 phi: Optional[float] = None 

184 alpha: Optional[float] = None 

185 current: Optional[float] = None 

186 condname: Optional[str] = None 

187 n1: Optional[int] = None 

188 n2: Optional[int] = None 

189 imag: Optional[int] = None 

190 turn: Optional[float] = None 

191 coil: Optional[int] = None 

192 pole: Optional[int] = None 

193 layer: Optional[int] = None 

194 winding: Optional[int] = None 

195 shift2: Coord = Coord() 

196 roll2: Roll = Roll() 

197 

198 

199class Group(BaseModel): 

200 """ 

201 Class for group list 

202 """ 

203 symm: Optional[int] = None 

204 typexy: Optional[int] = None 

205 blocks: List[int] = [] # map 

206 

207 

208class Trans(BaseModel): 

209 """ 

210 Class for transformation list 

211 """ 

212 x: Optional[float] = None 

213 y: Optional[float] = None 

214 alph: Optional[float] = None 

215 bet: Optional[float] = None 

216 string: Optional[str] = None 

217 act: Optional[int] = None 

218 bcs: List[int] = [] # map 

219 

220 

221class Iron(BaseModel): 

222 """ 

223 Class for the iron yoke data 

224 """ 

225 key_points: Dict[str, Coord] = {} 

226 hyper_lines: Dict[str, HyperLine] = {} 

227 hyper_areas: Dict[str, HyperArea] = {} 

228 hyper_holes: Dict[int, HyperHole] = {} 

229 

230 

231class Cadata(BaseModel): 

232 """ 

233 Class for the conductor data 

234 """ 

235 insul: Dict[str, Insulation] = {} 

236 filament: Dict[str, Filament] = {} 

237 strand: Dict[str, Strand] = {} 

238 transient: Dict[str, Transient] = {} 

239 quench: Dict[str, Quench] = {} 

240 cable: Dict[str, Cable] = {} 

241 conductor: Dict[str, Conductor] = {} 

242 

243 

244class Coil(BaseModel): 

245 """ 

246 Class for the coil data 

247 """ 

248 blocks: Dict[str, Block] = {} 

249 groups: Dict[str, Group] = {} 

250 transs: Dict[str, Trans] = {} 

251 

252 

253class StrandGroup(BaseModel): 

254 """ 

255 Class for strand group 

256 """ 

257 strand_positions: Dict[int, Coord] = {} 

258 

259 

260class Corner(BaseModel): 

261 """ 

262 Class for corner positions 

263 """ 

264 iL: Coord = Coord() # inner left 

265 iR: Coord = Coord() # inner right 

266 oL: Coord = Coord() # outer left 

267 oR: Coord = Coord() # outer right 

268 

269 

270class HalfTurnCorner(BaseModel): 

271 """ 

272 Class for corner type 

273 """ 

274 insulated: Corner = Corner() 

275 bare: Corner = Corner() 

276 

277 

278class HalfTurn(BaseModel): 

279 """ 

280 Class for half-turn data 

281 """ 

282 corners: HalfTurnCorner = HalfTurnCorner() 

283 strand_groups: Dict[int, StrandGroup] = {} 

284 

285 

286class CenterShift(BaseModel): 

287 """ 

288 Class for bore center shift 

289 """ 

290 inner: Coord = Coord() 

291 outer: Coord = Coord() 

292 

293 

294class Wedge(BaseModel): 

295 """ 

296 Class for wedge positions 

297 """ 

298 corners: Corner = Corner() 

299 corrected_center: CenterShift = CenterShift() 

300 coil: Optional[int] = None 

301 

302 

303class BlockData(BaseModel): 

304 """ 

305 Class for block data 

306 """ 

307 block_corners: Corner = Corner() 

308 current_sign: Optional[int] = None 

309 half_turns: Dict[int, HalfTurn] = {} 

310 

311 

312class WindingData(BaseModel): 

313 """ 

314 Class for winding data 

315 """ 

316 blocks: Dict[int, BlockData] = {} 

317 conductor_name: Optional[str] = None 

318 conductors_number: Optional[int] = None 

319 

320 

321class Winding(BaseModel): 

322 """ 

323 Class for windings 

324 """ 

325 windings: Dict[int, WindingData] = {} 

326 

327 

328class Layer(BaseModel): 

329 """ 

330 Class for winding layers 

331 """ 

332 layers: Dict[int, Winding] = {} 

333 

334 

335class Pole(BaseModel): 

336 """ 

337 Class for poles 

338 """ 

339 poles: Dict[int, Layer] = {} 

340 bore_center: Coord = Coord() 

341 

342 

343class 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 

354class CoilData(BaseModel): 

355 """ 

356 Class for coils 

357 """ 

358 coils: Dict[int, Pole] = {} 

359 electrical_order: List[Order] = [] 

360 

361 

362class RoxieRawData(BaseModel): 

363 """ 

364 Class for the raw data 

365 """ 

366 cadata: Cadata = Cadata() 

367 coil: Coil = Coil() 

368 

369 

370class RoxieData(BaseModel): 

371 """ 

372 Class for the roxie parser 

373 """ 

374 iron: Iron = Iron() 

375 coil: CoilData = CoilData() 

376 wedges: Dict[int, Wedge] = {}