Coverage for fiqus/data/DataConductor.py: 100%
256 statements
« prev ^ index » next coverage.py v7.4.4, created at 2026-01-09 01:49 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2026-01-09 01:49 +0000
1from pydantic import BaseModel, Field
2from typing import Union, Literal, Optional, List
4# ------------------- Jc fits ---------------------------#
5class ConstantJc(BaseModel):
6 """
7 Level 3: Class for setting constant Jc
8 """
10 type: Literal["Constant Jc"]
11 Jc_constant: Optional[float] = None # [A/m^2]
14class Ic_A_NbTi(BaseModel):
15 """
16 Level 3: Class for setting IcNbTi fit
17 """
19 type: Literal["Ic_A_NbTi"]
20 Jc_5T_4_2K: Optional[float] = None # [A/m^2]
23class Bottura(BaseModel):
24 """
25 Level 3: Class for setting Bottura fit
26 """
28 type: Literal["Bottura"]
29 Tc0_Bottura: Optional[float] = None # [K]
30 Bc20_Bottura: Optional[float] = None # [T]
31 Jc_ref_Bottura: Optional[float] = None # [A/m^2]
32 C0_Bottura: Optional[float] = None # [-]
33 alpha_Bottura: Optional[float] = None # [-]
34 beta_Bottura: Optional[float] = None # [-]
35 gamma_Bottura: Optional[float] = None # [-]
38class CUDI1(BaseModel):
39 """
40 Level 3: Class for Nb-Ti fit based on "Fit 1" in CUDI manual
41 """
43 type: Literal["CUDI1"]
44 Tc0_CUDI1: Optional[float] = None # [K]
45 Bc20_CUDI1: Optional[float] = None # [T]
46 C1_CUDI1: Optional[float] = None # [A]
47 C2_CUDI1: Optional[float] = None # [A/T]
50class CUDI3(BaseModel):
51 """
52 Level 3: Class for Nb-Ti fit based on "Fit 3" in CUDI manual
53 """
55 type: Literal["CUDI3"]
56 Tc0_CUDI3: Optional[float] = None # [K]
57 Bc20_CUDI3: Optional[float] = None # [T]
58 c1_CUDI3: Optional[float] = None # [-]
59 c2_CUDI3: Optional[float] = None # [-]
60 c3_CUDI3: Optional[float] = None # [-]
61 c4_CUDI3: Optional[float] = None # [-]
62 c5_CUDI3: Optional[float] = None # [-]
63 c6_CUDI3: Optional[float] = None # [-]
66class Summers(BaseModel):
67 """
68 Level 3: Class for cable Summer's Nb3Sn fit
69 """
71 type: Literal["Summers"]
72 Tc0_Summers: Optional[float] = None # [K]
73 Bc20_Summers: Optional[float] = None # [T]
74 Jc0_Summers: Optional[float] = None # [A*T^0.5/m^2]
77class Bordini(BaseModel):
78 """
79 Level 3: Class for cable Bordini's Nb3Sn fit
80 """
82 type: Literal["Bordini"]
83 Tc0_Bordini: Optional[float] = None # [K]
84 Bc20_Bordini: Optional[float] = None # [T]
85 C0_Bordini: Optional[float] = None # [A*T/m^2]
86 alpha_Bordini: Optional[float] = None # [-]
89class Nb3Sn_HFM(BaseModel):
90 """
91 Level 3: Class for cable HFM Nb3Sn fit
92 """
94 type: Literal["Nb3Sn_HFM"]
95 Tc0_Nb3Sn_HFM: Optional[float] = None # [K]
96 Bc20_Nb3Sn_HFM: Optional[float] = None # [T]
97 C0_Nb3Sn_HFM: Optional[float] = None # [A*T/m^2]
98 alpha_Nb3Sn_HFM: Optional[float] = None # [-]
99 nu_Nb3Sn_HFM: Optional[float] = None # [-]
100 p_Nb3Sn_HFM: Optional[float] = None # [-]
101 q_Nb3Sn_HFM: Optional[float] = None # [-]
104class ProDefined(BaseModel):
105 """
106 Level 3: Class for cable Bordini's Nb3Sn fit
107 """
109 type: Literal["ProDefined"]
110 Tc0: Optional[float] = None # [K]
111 Bc20: Optional[float] = None # [T]
112 C0: Optional[float] = None # [A*T/m^2]
113 alpha: Optional[float] = None # [-]
114 p: Optional[float] = None # [-]
115 q: Optional[float] = None # [-]
116 v: Optional[float] = None # [-]
117 B0: Optional[float] = None # [-]
119class Succi_fixed(BaseModel):
120 """
121 Level 3: Class for cable Succi's YBCO fit
122 """
124 type: Literal["Succi_fixed"]
125 Jc_factor: Optional[float] = Field(gt=0.0,
126 default = 1.0,
127 description = "This factor multiplies the Jc returned by the function."
128 )
129 # all other parameters of the Succi fit are hardcoded
130class Fujikura(BaseModel):
131 """
132 Level 3: Class for cable Fujikura's fit
133 """
135 type: Literal["Fujikura"]
136 Jc_factor: Optional[float] = Field(gt=0.0,
137 default = 1.0,
138 description = "This factor multiplies the Jc returned by the function."
139 )
141class BSCCO_2212_LBNL(BaseModel):
142 """
143 Level 3: Class for cable Bi-2212 fit developed in LBNL
144 """
146 # only ad-hoc fit [T. Shen, D. Davis, E. Ravaioli with LBNL, Berkeley, CA]
147 type: Literal["BSCCO_2212_LBNL"]
148 f_scaling_Jc_BSCCO2212: Optional[float] = None # [-] used for the ad-hoc fit
151# ------------------- Cable types ---------------------------#
152class Mono(BaseModel):
153 """
154 Mono cable type: This is basically type of cable consisting of one strand - not really a cable
155 """
157 type: Literal["Mono"]
158 bare_cable_width: Optional[float] = None
159 bare_cable_height_low: Optional[float] = None
160 bare_cable_height_high: Optional[float] = None
161 bare_cable_height_mean: Optional[float] = None
162 th_insulation_along_width: Optional[float] = None
163 th_insulation_along_height: Optional[float] = None
164 # Fractions given with respect to the insulated conductor
165 f_superconductor: Optional[float] = None
166 f_stabilizer: Optional[float] = None # (related to CuFraction in ProteCCT)
167 f_insulation: Optional[float] = None
168 f_inner_voids: Optional[float] = None
169 f_outer_voids: Optional[float] = None
170 # Available materials depend on the component and on the selected program
171 material_insulation: Optional[str] = None
172 material_inner_voids: Optional[str] = None
173 material_outer_voids: Optional[str] = None
176class Rutherford(BaseModel):
177 """
178 Rutherford cable type: for example LHC MB magnet cable
179 """
181 type: Literal["Rutherford"]
182 n_strands: Optional[int] = None
183 n_strand_layers: Optional[int] = None
184 n_strands_per_layers: Optional[int] = None
185 bare_cable_width: Optional[float] = None
186 bare_cable_height_low: Optional[float] = None
187 bare_cable_height_high: Optional[float] = None
188 bare_cable_height_mean: Optional[float] = None
189 th_insulation_along_width: Optional[float] = None
190 th_insulation_along_height: Optional[float] = None
191 width_core: Optional[float] = None
192 height_core: Optional[float] = None
193 strand_twist_pitch: Optional[float] = None
194 strand_twist_pitch_angle: Optional[float] = None
195 Rc: Optional[float] = None
196 Ra: Optional[float] = None
197 # Fractions given with respect to the insulated conductor
198 f_superconductor: Optional[float] = None
199 f_stabilizer: Optional[float] = None # (related to CuFraction in ProteCCT)
200 f_insulation: Optional[float] = None
201 f_inner_voids: Optional[float] = None
202 f_outer_voids: Optional[float] = None
203 f_core: Optional[float] = None
204 # Available materials depend on the component and on the selected program
205 material_insulation: Optional[str] = None
206 material_inner_voids: Optional[str] = None
207 material_outer_voids: Optional[str] = None
208 material_core: Optional[str] = None
209 gamma_c: Optional[float] = Field(
210 default=0.0,
211 description="parameter for DISCC cable homogenization"
212 )
215class Ribbon(BaseModel):
216 """
217 Mono cable type: This is basically type of cable consisting of one strand - not really a cable
218 """
220 type: Literal["Ribbon"]
221 n_strands: Optional[int] = (
222 None # This defines the number of "strands" in the ribbon cable, which are physically glued but electrically in series
223 )
224 bare_cable_width: Optional[float] = None
225 bare_cable_height_low: Optional[float] = None
226 bare_cable_height_high: Optional[float] = None
227 bare_cable_height_mean: Optional[float] = None
228 th_insulation_along_width: Optional[float] = (
229 None # This defines the thickness of the insulation around each strand (DIFFERENT FROM ROXIE CADATA FILE)
230 )
231 th_insulation_along_height: Optional[float] = (
232 None # This defines the thickness of the insulation around each strand (DIFFERENT FROM ROXIE CADATA FILE)
233 )
234 # Fractions given with respect to the insulated conductor
235 f_superconductor: Optional[float] = None
236 f_stabilizer: Optional[float] = None # (related to CuFraction in ProteCCT)
237 f_insulation: Optional[float] = None
238 f_inner_voids: Optional[float] = None
239 f_outer_voids: Optional[float] = None
240 f_core: Optional[float] = None
241 # Available materials depend on the component and on the selected program
242 material_insulation: Optional[str] = None
243 material_inner_voids: Optional[str] = None
244 material_outer_voids: Optional[str] = None
245 material_core: Optional[str] = None
247class TSTC(BaseModel):
248 """
249 Twisted Stacked-Tape Cable (TSTC) type:
250 """
251 type: Literal["TSTC"]
252 stack_layout: Optional[List[Literal[-1,0,1]]] = Field(default=None,description="2D: Tape stack layout ordered TOP->BOTTOM. The numbers represent: 1 = a CC tape, -1 = a flipped CC tape, 0 = a shunt.")
253 nb_tapes: Optional[int] = Field(default=None, description="3D: Number of tapes in the stack")
254 tape_width: Optional[float] = Field(default=None, description="3D and 2D: Width of each tape")
255 tape_thickness: Optional[float] = Field(default=None, description="3D and 2D: Thickness of each tape")
256 twist_pitch: Optional[float] = Field(default=None, description="3D: Length over which tapes are twisted by full rotation")
257 pitch_fraction: Optional[float] = Field(default=1.0, description="3D: Fraction of the twist pitch to be modelled (1.0 = full pitch, 0.5 = half pitch, etc.)")
258 bare_cable_width: Optional[float] = Field(default=None, description="Cable width, typically the same as CC width")
259 bare_cable_height_low: Optional[float] = Field(default=None, description="Narrow end (if applicable) cable height (thickness), typically the same as (CC thickness + Cu stabilizer thickness) * number of tapes.")
260 bare_cable_height_high: Optional[float] = Field(default=None, description="Wide end (if applicable) cable height (thickness), typically the same as (CC thickness + Cu stabilizer thickness) * number of tapes.")
261 bare_cable_height_mean: Optional[float] = Field(default=None, description="Average (if applicable) cable height (thickness), typically the same as (CC thickness + Cu stabilizer thickness) * number of tapes.")
262 th_insulation_along_width: Optional[float] = Field(default=None, description="Insulation thickness along the width ")
263 th_insulation_along_height: Optional[float] = Field(default=None, description="Insulation thickness along the height ")
264 f_superconductor: Optional[float] = Field(default=None, description="Fraction of superconductor related to the total area of the cable (winding cell)")
265 f_stabilizer: Optional[float] = Field(default=None, description="Fraction of stabilizer related to the total area of the cable (winding cell)")
266 f_silver: Optional[float] = Field(default=None, description="Fraction of silver related to the total area of the cable (winding cell)")
267 f_substrate: Optional[float] = Field(default=None, description="Fraction of substrate (including buffer layers and silver overlay) related to the total area of the cable (winding cell)")
268 f_shunt: Optional[float] = Field(default=None, description="Fraction of substrate (including buffer layers and silver overlay) related to the total area of the cable (winding cell)")
269 f_insulation: Optional[float] = Field(default=None, description="Fraction of cable insulation related to the total area of the cable (winding cell)")
270 f_inner_voids: Optional[float] = Field(default=None, description="Fraction of additional material (typically insulation) related to the total area of the cable (winding cell)")
271 f_outer_voids: Optional[float] = Field(default=None, description="Fraction of additional material (typically helium impregnating the windings) related to the total area of the cable (winding cell)")
273# ------------------- Conductors ---------------------------#
275# class MaterialSuperconductor(BaseModel):
276# """
277# Level 3: Class for strand superconductor material parameters
278# """
279# material: Optional[str] = Field(default=None, description="Material of the superconductor. E.g. NbTi, Nb3Sn, etc.")
280# n_value: Optional[float] = Field(default=None, description="n value of the superconductor (for power law fit).")
281# ec: Optional[float] = Field(default=None, description="Critical electric field of the superconductor.")
282# Cv_material: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the superconductor.")
284# class MaterialStabilizer(BaseModel):
285# """
286# Level 3: Class for strand stabilizer material parameters
287# """
289# rho_material: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the stabilizer. Constant resistivity can be given as float.")
290# RRR: Optional[float] = Field(default=None, description="Residual resistivity ratio of the stabilizer.")
291# T_ref_RRR_high: Optional[float] = Field(default=None, description="Upper reference temperature for RRR measurements.")
292# T_ref_RRR_low: Optional[float] = Field(default=None, description="Lower reference temperature for RRR measurements.")
293# k_material: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the stabilizer.")
294# Cv_material: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the stabilizer.")
297class Round(BaseModel):
298 """
299 Level 2: Class for strand parameters
300 """
302 type: Literal["Round"]
303 fil_twist_pitch: Optional[float] = None # Strand twist pitch
304 diameter: Optional[float] = None # ds_inGroup (LEDET), DConductor (BBQ), DStrand (ProteCCT)
305 diameter_core: Optional[float] = None # dcore_inGroup (LEDET)
306 diameter_filamentary: Optional[float] = None # dfilamentary_inGroup (LEDET)
307 filament_diameter: Optional[float] = None # df_inGroup (LEDET)
308 filament_hole_diameter: Optional[float] = Field(default=None, description="Specifies round or hexagonal hole diameter inside the filament. If None or 0.0, no hole is created.")
309 number_of_filaments: Optional[int] = None # nf_inGroup (LEDET)
310 f_Rho_effective: Optional[float] = None
311 Cu_noCu_in_strand: Optional[float] = None
313 # -- Superconductor parameters -- #
314 material_superconductor: Optional[str] = Field(default=None, description="Material of the superconductor. E.g. Nb-Ti, Nb3Sn, etc.")
315 n_value_superconductor: Optional[float] = Field(default=None, description="n value of the superconductor (for power law fit).")
316 ec_superconductor: Optional[float] = Field(default=None, description="Critical electric field of the superconductor in V/m.")
317 minimum_jc_fraction: Optional[float] = Field(gt=0, le=1, default=None, description="Fraction of Jc(minimum_jc_field, T) to use as minimum Jc for the power law fit to avoid division by zero when Jc(B_local, T) decreases to zero."
318 "Typical value would be 0.001 (so the Jc_minimum is 0.1% of Jc(minimum_jc_field, T))"
319 "This fraction is only allowed to be greater than 0.0 and less than or equal to 1.0")
320 minimum_jc_field: Optional[float] = Field(default=None, description="Magnetic flux density in tesla used for calculation of Jc(minimum_jc_field, T). This gets multiplied by minimum_jc_fraction and used as minimum Jc for the power law")
321 k_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the superconductor.")
322 Cv_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the superconductor.")
323 # -- Stabilizer parameters -- #
324 material_stabilizer: Optional[str] = Field(default=None, description="Material of the stabilizer.")
325 rho_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the stabilizer. Constant resistivity can be given as float.")
326 rho_material_holes: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the holes in the filaments."
327 "Constant resistivity can be given as float, material name as a string or None or 0.0 to use 'air' in the holes.")
328 RRR: Optional[Union[float, List[float]]] = Field(default=None, description="Residual resistivity ratio of the stabilizer. If a list of RRR is provided it needs to match in length the number of matrix regions in the geometry (typically 3)")
329 T_ref_RRR_high: Optional[float] = Field(default=None, description="Upper reference temperature for RRR measurements.")
330 T_ref_RRR_low: Optional[float] = Field(default=None, description="Lower reference temperature for RRR measurements.")
331 k_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the stabilizer.")
332 Cv_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the stabilizer.")
334 # superconductor: MaterialSuperconductor = MaterialSuperconductor()
335 # stabilizer: MaterialStabilizer = MaterialStabilizer()
338class Rectangular(BaseModel):
339 """
340 Level 2: Class for strand parameters
341 """
343 type: Literal["Rectangular"]
344 bare_width: Optional[float] = None
345 bare_height: Optional[float] = None
346 Cu_noCu_in_strand: Optional[float] = None
347 filament_diameter: Optional[float] = None # df_inGroup (LEDET)
348 f_Rho_effective: Optional[float] = None
349 fil_twist_pitch: Optional[float] = None
350 bare_corner_radius: Optional[float] = None
352 # -- Superconductor parameters -- #
353 material_superconductor: Optional[str] = Field(default=None, description="Material of the superconductor. E.g. NbTi, Nb3Sn, etc.")
354 n_value_superconductor: Optional[float] = Field(default=None, description="n value of the superconductor (for power law fit).")
355 ec_superconductor: Optional[float] = Field(default=None, description="Critical electric field of the superconductor.")
356 minimum_jc_fraction: Optional[float] = Field(gt=0, le=1, default=None, description="Fraction of Jc(minimum_jc_field, T) to use as minimum Jc for the power law"
357 " fit to avoid division by zero when Jc(B_local, T) decreases to zero."
358 "Typical value would be 0.001 (so the Jc_minimum is 0.1% of Jc(minimum_jc_field, T))"
359 "This fraction is only allowed to be greater than 0.0 and less than or equal to 1.0")
360 minimum_jc_field: Optional[float] = Field(default=None, description="Magnetic flux density in tesla used for calculation of Jc(minimum_jc_field, T)."
361 "This gets multiplied by minimum_jc_fraction and used as minimum Jc for the power law")
362 k_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the superconductor.")
363 Cv_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the superconductor.")
364 # -- Stabilizer parameters -- #
365 material_stabilizer: Optional[str] = Field(default=None, description="Material of the stabilizer.")
366 rho_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the stabilizer. Constant resistivity can be given as float.")
367 RRR: Optional[Union[float, List[float]]] = Field(default=None, description="Residual resistivity ratio of the stabilizer. If a list of RRR is provided it needs to match in length the number of matrix regions in the geometry (typically 3)")
368 T_ref_RRR_high: Optional[float] = Field(default=None, description="Upper reference temperature for RRR measurements.")
369 T_ref_RRR_low: Optional[float] = Field(default=None, description="Lower reference temperature for RRR measurements.")
370 k_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the stabilizer.")
371 Cv_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the stabilizer.")
372 number_of_filaments: Optional[int] = None
374 # superconductor: MaterialSuperconductor = MaterialSuperconductor()
375 # stabilizer: MaterialStabilizer = MaterialStabilizer()
377class Copper_thickness(BaseModel):
378 left: Optional[float] = Field(default=None, description="On the left side.")
379 right: Optional[float] = Field(default=None, description="On the right side.")
380 top: Optional[float] = Field(default=None, description="On the top side.")
381 bottom: Optional[float] = Field(default=None, description="On the bottom side.")
383class Silver_thickness(BaseModel):
384 top: Optional[float] = Field(default=None, description="On the top side.")
385 bottom: Optional[float] = Field(default=None, description="On the bottom side.")
387class CC(BaseModel):
388 """
389 Level 2: Class for coated conductor parameters
390 """
391 type: Literal["CC"]
393 # Core layer sizes
394 HTS_thickness: Optional[float] = Field(default=None, description="HTS thickness in meters.")
395 HTS_width: Optional[float] = Field(default=None, description="HTS width in meters.")
396 number_of_filaments: Optional[int] = Field(default=1, ge=1, description="Number of HTS filaments. If 1, no striation case")
397 gap_between_filaments: Optional[float] = Field(default=None, description="Gap between HTS filaments in meters. Only applies when number_of_filaments > 1.")
398 substrate_thickness: Optional[float] = Field(default=None, description="Substrate layer thickness in meters.")
400 # Plating/stabilizer
401 copper_thickness: Copper_thickness = Field(default=Copper_thickness(), description="Copper thickness in meters")
402 silver_thickness: Silver_thickness = Field(default=Silver_thickness(), description="Silver thickness in meters")
404 # -- Superconductor parameters -- #
405 material_superconductor: Optional[str] = Field(default=None, description="Material of the superconductor. E.g. NbTi, Nb3Sn, etc.")
406 n_value_superconductor: Optional[float] = Field(default=None, description="n value of the superconductor (for power law fit).")
407 ec_superconductor: Optional[float] = Field(default=None, description="Critical electric field of the superconductor.")
408 minimum_jc_fraction: Optional[float] = Field(gt=0, le=1, default=None, description="Fraction of Jc(minimum_jc_field, T) to use as minimum Jc for the power law"
409 " fit to avoid division by zero when Jc(B_local, T) decreases to zero."
410 "Typical value would be 0.001 (so the Jc_minimum is 0.1% of Jc(minimum_jc_field, T))"
411 "This fraction is only allowed to be greater than 0.0 and less than or equal to 1.0")
412 minimum_jc_field: Optional[float] = Field(default=None, description="Magnetic flux density in tesla used for calculation of Jc(minimum_jc_field, T)."
413 "This gets multiplied by minimum_jc_fraction and used as minimum Jc for the power law")
414 k_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the superconductor.")
415 Cv_material_superconductor: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the superconductor.")
416 k_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the stabilizer, typically copper.")
417 Cv_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the stabilizer, typically copper.")
418 rho_material_stabilizer: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the stabilizer. Constant resistivity can be given as float.")
419 RRR: Optional[Union[float, List[float]]] = Field(default=None, description="Residual resistivity ratio of the stabilizer. If a list of RRR is provided it needs to match in length the number of matrix regions in the geometry (typically 3)")
420 T_ref_RRR_high: Optional[float] = Field(default=None, description="Upper reference temperature for RRR measurements.")
421 T_ref_RRR_low: Optional[float] = Field(default=None, description="Lower reference temperature for RRR measurements.")
422 k_material_silver: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the silver")
423 Cv_material_silver: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the silver")
424 rho_material_silver: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the silver. Constant resistivity can be given as float.")
425 RRR_silver: Optional[Union[float, List[float]]] = Field(default=None, description="Residual resistivity ratio of the silver. If a list of RRR is provided it needs to match in length the number of matrix regions in the geometry (typically 3)")
426 T_ref_RRR_high_silver: Optional[float] = Field(default=None, description="Upper reference temperature for RRR measurements for silver.")
427 T_ref_RRR_low_silver: Optional[float] = Field(default=None, description="Lower reference temperature for RRR measurements for silver.")
428 rho_material_substrate: Optional[Union[str, float]] = Field(default=None, description="Material function for resistivity of the substrate. Constant resistivity can be given as float.")
429 k_material_substrate: Optional[Union[str, float]] = Field(default=None, description="Thermal conductivity of the substrate.")
430 Cv_material_substrate: Optional[Union[str, float]] = Field(default=None, description="Material function for specific heat of the substrate.")
432class Homogenized(BaseModel):
433 """
434 Level 2: Class for homogenized strand parameters, to be used in the Rutherford cable model
435 """
436 type: Literal["Homogenized"]
438 # Strand diameter (used in the geometry step)
439 diameter: Optional[float] = Field(default=None, description="Undeformed round strand diameter. Used in the geometry step if keep_strand_area==true, the strand is deformed while preserving its surface area. Not used otherwise.")
442# ------------------- Conductors ---------------------------#
445class Conductor(BaseModel):
446 """
447 Level 1: Class for conductor parameters
448 """
450 version: Optional[str] = None
451 case: Optional[str] = None
452 state: Optional[str] = None
453 cable: Union[Rutherford, Mono, Ribbon, TSTC] = {
454 "type": "Rutherford"
455 } # TODO: Busbar, Rope, Roebel, CORC, TSTC, CICC
456 strand: Union[Round, Rectangular, CC, Homogenized] = {"type": "Round"} # TODO: Tape, WIC
457 Jc_fit: Union[ConstantJc, Bottura, CUDI1, CUDI3, Summers, Bordini, Nb3Sn_HFM, BSCCO_2212_LBNL, Ic_A_NbTi, ProDefined, Succi_fixed, Fujikura] = {
458 "type": "CUDI1"
459 } # TODO: CUDI other numbers? , Roxie?