Coverage for fiqus/data/DataMultipole.py: 100%
54 statements
« prev ^ index » next coverage.py v6.4.4, created at 2024-05-20 03:24 +0200
« 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)
5class Coord(BaseModel):
6 x: Optional[float] = None
7 y: Optional[float] = None
10class Area(BaseModel):
11 loop: Optional[int] = None
12 surface: Optional[int] = None
15class Region(BaseModel):
16 points: Dict[str | int, int] = {}
17 lines: Dict[str | int, int] = {}
18 areas: Dict[str | int, Area] = {}
21class BlockData(BaseModel):
22 half_turns: Region = Region()
23 current_sign: Optional[int] = None
26class Block(BaseModel):
27 blocks: Dict[int, BlockData] = {}
28 conductor_name: Optional[str] = None
29 conductors_number: Optional[int] = None
32class Winding(BaseModel):
33 windings: Dict[int, Block] = {}
36class Layer(BaseModel):
37 layers: Dict[int, Winding] = {}
40class Pole(BaseModel):
41 poles: Dict[int, Layer] = {}
42 bore_center: Coord = Coord()
45class Iron(BaseModel):
46 quadrants: Dict[int, Region] = {}
47 max_radius: float = 0.
50class Order(BaseModel):
51 coil: Optional[int] = None
52 pole: Optional[int] = None
53 layer: Optional[int] = None
54 winding: Optional[int] = None
55 block: Optional[int] = None
58class Coil(BaseModel):
59 coils: Dict[int, Pole] = {}
60 electrical_order: List[Order] = []
63class Geometry(BaseModel):
64 coil: Coil = Coil()
65 iron: Iron = Iron()
66 wedges: Region = Region()
67 air: Region = Region()
68 air_inf: Region = Region()
71class GroupType(BaseModel):
72 curves: Dict[str, int] = {}
73 surfaces: Dict[str, int] = {}
74 volumes: Dict[str, int] = {}
77class Domain(BaseModel):
78 groups_surfaces: Dict[str, List[int]] = {}
79 physical_groups: GroupType = GroupType()
82class MultipoleData(BaseModel):
83 geometries: Geometry = Geometry()
84 domains: Domain = Domain()
87# if __name__ == "__main__":
88# write = True
89# read = False
90#
91# def read_regions(regions_file_name):
92# with open(regions_file_name, 'r') as stream:
93# yaml_str = ruamel.yaml.safe_load(stream)
94# return MultipoleData(**yaml_str)
95#
96# if write:
97# model = MultipoleData()
98# with open('FiQuS_data.yaml', 'w') as yaml_file:
99# ruamel.yaml.dump(model.dict(), yaml_file, default_flow_style=False)