Coverage for fiqus/data/DataFiQuSCCT.py: 100%
85 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-25 02:54 +0100
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-25 02:54 +0100
1from pydantic import BaseModel
2from typing import (List, Literal, Optional)
5class Winding_gFiQuS(BaseModel): # Geometry related windings _inputs
6 """
7 Level 2: Class for FiQuS CCT
8 """
9 names: Optional[List[str]] = None # name to use in gmsh and getdp
10 r_wms: Optional[List[float]] = None # radius of the middle of the winding
11 n_turnss: Optional[List[float]] = None # number of turns
12 ndpts: Optional[List[int]] = None # number of divisions of turn, i.e. number of hexagonal elements for each turn
13 ndpt_ins: Optional[List[int]] = None # number of divisions of terminals in
14 ndpt_outs: Optional[List[int]] = None # number of divisions of terminals in
15 lps: Optional[List[float]] = None # layer pitch
16 alphas: Optional[List[float]] = None # tilt angle
17 wwws: Optional[List[float]] = None # winding wire widths (assuming rectangular)
18 wwhs: Optional[List[float]] = None # winding wire heights (assuming rectangular)
21class Winding_s(BaseModel): # Solution time used windings _inputs (materials and BC)
22 """
23 Level 2: Class for FiQuS CCT
24 """
25 currents: Optional[List[float]] = None # current in the wire
26 sigmas: Optional[List[float]] = None # electrical conductivity
27 mu_rs: Optional[List[float]] = None # relative permeability
30class FQPL_g(BaseModel): # Geometry related fqpls _inputs
31 """
32 Level 2: Class for FiQuS CCT
33 """
34 names: List[str] = [] # name to use in gmsh and getdp
35 fndpls: Optional[List[int]] = None # fqpl number of divisions per length
36 fwws: Optional[List[float]] = None # fqpl wire widths (assuming rectangular) for theta = 0 this is x dimension
37 fwhs: Optional[List[float]] = None # fqpl wire heights (assuming rectangular) for theta = 0 this is y dimension
38 r_ins: Optional[List[float]] = None # radiuses for inner diameter for fqpl (radial (or x direction for theta=0) for placing the fqpl
39 r_bs: Optional[List[float]] = None # radiuses for bending the fqpl by 180 degrees
40 n_sbs: Optional[List[int]] = None # number of 'bending segmetns' for the 180 degrees turn
41 thetas: Optional[List[float]] = None # rotation in deg from x+ axis towards y+ axis about z axis.
42 z_starts: Optional[List[str]] = None # which air boundary to start at. These is string with either: z_min or z_max key from the Air region.
43 z_ends: Optional[List[float]] = None # z coordinate of loop end
46class FQPL_s(BaseModel): # Solution time used fqpls _inputs (materials and BC)
47 """
48 Level 2: Class for FiQuS CCT
49 """
50 currents: List[float] = [] # current in the wire
51 sigmas: List[float] = [] # electrical conductivity
52 mu_rs: List[float] = [] # relative permeability
55class Former_gFiQuS(BaseModel): # Geometry related formers _inputs
56 """
57 Level 2: Class for FiQuS CCT
58 """
59 names: Optional[List[str]] = None # name to use in gmsh and getdp
60 r_ins: Optional[List[float]] = None # inner radius
61 r_outs: Optional[List[float]] = None # outer radius
62 z_mins: Optional[List[float]] = None # extend of former in negative z direction
63 z_maxs: Optional[List[float]] = None # extend of former in positive z direction
66class Former_s(BaseModel): # Solution time used formers _inputs (materials and BC)
67 """
68 Level 2: Class for FiQuS CCT
69 """
70 sigmas: Optional[List[float]] = None # electrical conductivity
71 mu_rs: Optional[List[float]] = None # relative permeability
74class Air_g(BaseModel): # Geometry related air_region _inputs
75 """
76 Level 2: Class for FiQuS CCT
77 """
78 name: Optional[str] = None # name to use in gmsh and getdp
79 sh_type: Optional[str] = None # cylinder or cuboid are possible
80 ar: Optional[float] = None # if box type is cuboid a is taken as a dimension, if cylinder then r is taken
81 z_min: Optional[float] = None # extend of air region in negative z direction
82 z_max: Optional[float] = None # extend of air region in positive z direction
85class Air_s(BaseModel): # Solution time used air _inputs (materials and BC)
86 """
87 Level 2: Class for FiQuS CCT
88 """
89 sigma: Optional[float] = None # electrical conductivity
90 mu_r: Optional[float] = None # relative permeability
93class GeometryCCTFiQuS(BaseModel):
94 """
95 Level 2: Class for FiQuS CCT for FiQuS input
96 """
97 windings: Winding_gFiQuS = Winding_gFiQuS()
98 fqpls: FQPL_g = FQPL_g()
99 formers: Former_gFiQuS = Former_gFiQuS()
100 air: Air_g = Air_g()
103class MeshCCT(BaseModel):
104 """
105 Level 2: Class for FiQuS CCT
106 """
107 MaxAspectWindings: Optional[float] = None # used in transfinite mesh_generators settings to define mesh_generators size along two longer lines of hex elements of windings
108 ThresholdSizeMin: Optional[float] = None # sets field control of Threshold SizeMin
109 ThresholdSizeMax: Optional[float] = None # sets field control of Threshold SizeMax
110 ThresholdDistMin: Optional[float] = None # sets field control of Threshold DistMin
111 ThresholdDistMax: Optional[float] = None # sets field control of Threshold DistMax
114class SolveCCT(BaseModel):
115 """
116 Level 2: Class for FiQuS CCT
117 """
118 windings: Winding_s = Winding_s() # windings solution time _inputs
119 fqpls: FQPL_s = FQPL_s() # fqpls solution time _inputs
120 formers: Former_s = Former_s() # former solution time _inputs
121 air: Air_s = Air_s() # air solution time _inputs
122 pro_template: Optional[str] = None # file name of .pro template file
123 variables: Optional[List[str]] = None # Name of variable to post-process by GetDP, like B for magnetic flux density
124 volumes: Optional[List[str]] = None # Name of volume to post-process by GetDP, line Winding_1
125 file_exts: Optional[List[str]] = None # Name of file extensions to post-process by GetDP, like .pos
128class PostprocCCTFiQuS(BaseModel):
129 """
130 Class for FiQuS CCT input file
131 """
132 windings_wwns: Optional[List[int]] = None # wires in width direction numbers
133 windings_whns: Optional[List[int]] = None # wires in height direction numbers
134 additional_outputs: Optional[List[str]] = None # Name of software specific input files to prepare, like :LEDET3D
135 winding_order: Optional[List[int]] = None
136 fqpl_export_trim_tol: Optional[List[float]] = None # this multiplier times winding extend gives 'z' coordinate above(below) which hexes are exported for LEDET, length of this list must match number of fqpls
137 variables: Optional[List[str]] = None # Name of variable to post-process by python Gmsh API, like B for magnetic flux density
138 volumes: Optional[List[str]] = None # Name of volume to post-process by python Gmsh API, line Winding_1
139 file_exts: Optional[List[str]] = None # Name of file extensions o post-process by python Gmsh API, like .pos
142class CCTDM(BaseModel):
143 """
144 Level 1: Class for FiQuS CCT
145 """
146 type: Literal['CCT_straight'] = "CCT_straight"
147 geometry: GeometryCCTFiQuS = GeometryCCTFiQuS()
148 mesh: MeshCCT = MeshCCT()
149 solve: SolveCCT = SolveCCT()
150 postproc: PostprocCCTFiQuS = PostprocCCTFiQuS()