-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathio_dtos.py
More file actions
146 lines (119 loc) · 3.78 KB
/
io_dtos.py
File metadata and controls
146 lines (119 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
"""Data transfer objects (DTOs) for the inductor optimization."""
# python libraries
import dataclasses
# 3rd party libraries
from magnethub.loss import LossModel
# own libraries
from femmt.optimization.ito_dtos import WorkingDirectories
from femmt.optimization.optimization_dtos import MaterialDataSources
@dataclasses.dataclass
class InductorInsulationDTO:
"""Insulation distances for the inductor geometry."""
core_left: float
core_right: float
core_top: float
core_bot: float
primary_to_primary: float
@dataclasses.dataclass
class InductorOptimizationDTO:
"""Contains boundary parameters for the inductor optimization."""
# general parameters
inductor_study_name: str
inductor_optimization_directory: str
# target parameter
target_inductance: float
# fixed parameters
insulations: InductorInsulationDTO
temperature: float
time_current_vec: list
# optimization parameters
material_name_list: list[str]
core_name_list: list[str] | None
core_inner_diameter_min_max_list: list[float] | None
window_w_min_max_list: list[float] | None
window_h_min_max_list: list[float] | None
litz_wire_name_list: list[str]
# FEM simulation
material_data_sources: MaterialDataSources
@dataclasses.dataclass
class InductorOptimizationTargetAndFixedParameters:
"""
Inductor optimization target and fixed parameters.
These parameters are calculated from the inductor input configuration (InductorOptimizationDTO).
"""
i_rms: float
i_peak: float
material_name_list: list[str]
material_mu_r_abs_list: list[float]
magnet_hub_model_list: list[LossModel]
time_extracted_vec: list
current_extracted_vec: list
fundamental_frequency: float
working_directories: WorkingDirectories
fft_frequency_list: list[float]
fft_amplitude_list: list[float]
fft_phases_list: list[float]
@dataclasses.dataclass
class IoFemInput:
"""Input DTO for a FEM simulation within the inductor optimization."""
# general parameters
working_directory: str
simulation_name: str
# material and geometry parameters
material_name: str
litz_wire_name: str
core_inner_diameter: float
window_w: float
window_h: float
air_gap_length: float
turns: float
insulations: InductorInsulationDTO
# data sources
material_data_sources: MaterialDataSources
# operating point conditions
temperature: float
fundamental_frequency: float
fft_frequency_list: list[float]
fft_amplitude_list: list[float]
fft_phases_list: list[float]
# magnet loss model
time_vec: list[float]
current_vec: list[float]
@dataclasses.dataclass
class IoFemOutput:
"""Output DTO for a FEM simulation within the inductor optimization."""
inductance: float
p_loss_winding: float
p_core_sine: float
p_core_magnet: float
volume: float
@dataclasses.dataclass
class IoReluctanceModelInput:
"""Input DTO for reluctance model simulation within the inductor optimization."""
target_inductance: float
core_inner_diameter: float
window_w: float
window_h: float
turns: int
litz_wire_name: str
litz_wire_diameter: float
insulations: InductorInsulationDTO
material_mu_r_abs: float
magnet_material_model: LossModel
temperature: float
time_extracted_vec: list
current_extracted_vec: list
fundamental_frequency: float
fft_frequency_list: list[float]
fft_amplitude_list: list[float]
fft_phases_list: list[float]
@dataclasses.dataclass
class IoReluctanceModelOutput:
"""output DTO for reluctance model simulation within the inductor optimization."""
volume: float
area_to_heat_sink: float
p_loss_total: float
p_winding: float
p_hyst: float
l_air_gap: float
flux_density_peak: float