Skip to content

Commit 7b0a686

Browse files
authored
Merge pull request #157 from upb-lea/new_mdb
fix removed Curve DTO from mdb
2 parents 3946c60 + 7f0ddef commit 7b0a686

10 files changed

Lines changed: 55 additions & 51 deletions

File tree

femmt/optimization/io.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def calculate_fix_parameters(config: InductorOptimizationDTO) -> InductorOptimiz
9191
time_extracted_vec
9292
current_extracted_vec
9393
current_extracted_2_vec
94-
material_dto_curve_list
94+
material_complex_mu_r_list
9595
fundamental_frequency
9696
target_inductance_matrix
9797
fem_working_directory
@@ -117,7 +117,7 @@ def calculate_fix_parameters(config: InductorOptimizationDTO) -> InductorOptimiz
117117
period_vector_t_i=config.time_current_vec, sample_factor=1000, plot='no', mode='time', filter_type='factor', filter_value_factor=0.03)
118118

119119
# material properties
120-
material_db = mdb.MaterialDatabase(is_silent=True)
120+
material_db = mdb.Data()
121121

122122
material_data_list = []
123123
magnet_model_list = []
@@ -137,7 +137,7 @@ def calculate_fix_parameters(config: InductorOptimizationDTO) -> InductorOptimiz
137137
i_peak=i_peak,
138138
time_extracted_vec=time_extracted,
139139
current_extracted_vec=current_extracted_vec,
140-
material_dto_curve_list=material_data_list,
140+
material_complex_mu_r_list=material_data_list,
141141
magnet_hub_model_list=magnet_model_list,
142142
fundamental_frequency=fundamental_frequency,
143143
working_directories=working_directories,
@@ -196,7 +196,7 @@ def objective(trial: optuna.Trial, config: InductorOptimizationDTO, target_and_f
196196
turns = trial.suggest_int('turns', 1, max_turns)
197197

198198
material_name = trial.suggest_categorical('material_name', config.material_name_list)
199-
for count, material_dto in enumerate(target_and_fixed_parameters.material_dto_curve_list):
199+
for count, material_dto in enumerate(target_and_fixed_parameters.material_complex_mu_r_list):
200200
if material_dto.material_name == material_name:
201201
material_dto: mdb.MaterialCurve = material_dto
202202
magnet_material_model = target_and_fixed_parameters.magnet_hub_model_list[count]
@@ -211,7 +211,7 @@ def objective(trial: optuna.Trial, config: InductorOptimizationDTO, target_and_f
211211
litz_wire_diameter=litz_wire_diameter,
212212

213213
insulations=config.insulations,
214-
material_dto=material_dto,
214+
material_mu_r_abs=material_dto,
215215
magnet_material_model=magnet_material_model,
216216

217217
temperature=config.temperature,
@@ -248,9 +248,10 @@ def single_reluctance_model_simulation(reluctance_input: ReluctanceModelInput) -
248248
"""
249249
target_total_reluctance = reluctance_input.turns ** 2 / reluctance_input.target_inductance
250250

251-
r_core_inner = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h, reluctance_input.material_dto.material_mu_r_abs)
251+
r_core_inner = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h,
252+
reluctance_input.material_mu_r_abs.material_mu_r_abs)
252253
r_core_top_bot = fr.r_core_top_bot_radiant(reluctance_input.core_inner_diameter, reluctance_input.window_w,
253-
reluctance_input.material_dto.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
254+
reluctance_input.material_mu_r_abs.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
254255
r_core = 2 * r_core_inner + 2 * r_core_top_bot
255256

256257
r_air_gap_target = target_total_reluctance - r_core
@@ -260,8 +261,8 @@ def single_reluctance_model_simulation(reluctance_input: ReluctanceModelInput) -
260261
flux_density = flux / core_cross_section
261262

262263
# Do not cross out saturation, as the genetic algorithm is missing bad results to improve its suggestions
263-
# if flux_density.max() > 0.7 * material_dto.saturation_flux_density:
264-
# print(f"Flux density too high (70 % of b_sat): {flux_density} T > 0.7 * {material_dto.saturation_flux_density} T")
264+
# if flux_density.max() > 0.7 * material_mu_r_abs.saturation_flux_density:
265+
# print(f"Flux density too high (70 % of b_sat): {flux_density} T > 0.7 * {material_mu_r_abs.saturation_flux_density} T")
265266
# return float('nan'), float('nan')
266267

267268
# calculate air gaps to reach the target parameters
@@ -650,7 +651,7 @@ def full_simulation(df_geometry: pd.DataFrame, current_waveform: list, inductor_
650651
litz_wire_diameter=litz_wire_diameter,
651652

652653
insulations=local_config.insulations,
653-
material_dto=material_dto,
654+
material_mu_r_abs=material_dto,
654655
magnet_material_model=magnet_material_model,
655656

656657
temperature=local_config.temperature,
@@ -1021,9 +1022,9 @@ def full_simulation(df_geometry: pd.DataFrame, current_waveform: list, inductor_
10211022
litz_wire_diameter = 2 * litz_wire["conductor_radii"]
10221023

10231024
# material properties
1024-
material_db = mdb.MaterialDatabase(is_silent=True)
1025+
material_db = mdb.Data()
10251026

1026-
material_dto: mdb.MaterialCurve = material_db.material_data_interpolation_to_dto(
1027+
material_mu_r_abs: mdb.MaterialCurve = material_db.material_data_interpolation_to_dto(
10271028
df_geometry['params_material_name'][index_number], target_and_fix_parameters.fundamental_frequency, local_config.temperature)
10281029
# instantiate material-specific model
10291030
magnet_material_model: mh.loss.LossModel = mh.loss.LossModel(material=df_geometry['params_material_name'][index_number], team="paderborn")
@@ -1038,7 +1039,7 @@ def full_simulation(df_geometry: pd.DataFrame, current_waveform: list, inductor_
10381039
litz_wire_diameter=litz_wire_diameter,
10391040

10401041
insulations=local_config.insulations,
1041-
material_dto=material_dto,
1042+
material_mu_r_abs=material_mu_r_abs,
10421043
magnet_material_model=magnet_material_model,
10431044

10441045
temperature=local_config.temperature,

femmt/optimization/io_dtos.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from magnethub.loss import LossModel
77

88
# own libraries
9-
from materialdatabase.meta.data_classes import MaterialCurve
109
from materialdatabase.meta.data_enums import DataSource
1110
from femmt.enumerations import *
1211
from femmt.optimization.ito_dtos import WorkingDirectories
@@ -67,7 +66,8 @@ class InductorOptimizationTargetAndFixedParameters:
6766

6867
i_rms: float
6968
i_peak: float
70-
material_dto_curve_list: list[MaterialCurve]
69+
material_name_list: list[str]
70+
material_complex_mu_r_list: list[float]
7171
magnet_hub_model_list: list[LossModel]
7272
time_extracted_vec: list
7373
current_extracted_vec: list
@@ -128,7 +128,7 @@ class ReluctanceModelInput:
128128
litz_wire_diameter: float
129129

130130
insulations: InductorInsulationDTO
131-
material_dto: MaterialCurve
131+
material_mu_r_abs: float
132132
magnet_material_model: LossModel
133133

134134
temperature: float

femmt/optimization/ito.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def calculate_fix_parameters(config: ItoSingleInputConfig) -> ItoTargetAndFixedP
142142
time_extracted_vec
143143
current_extracted_1_vec
144144
current_extracted_2_vec
145-
material_dto_curve_list
145+
material_complex_mu_r_list
146146
fundamental_frequency
147147
target_inductance_matrix
148148
fem_working_directory
@@ -207,7 +207,7 @@ def calculate_fix_parameters(config: ItoSingleInputConfig) -> ItoTargetAndFixedP
207207
magnet_hub_model_list=magnet_model_list,
208208
current_extracted_1_vec=current_extracted_1_vec,
209209
current_extracted_2_vec=current_extracted_2_vec,
210-
material_dto_curve_list=material_data_list,
210+
material_complex_mu_r_list=material_data_list,
211211
fundamental_frequency=fundamental_frequency,
212212
target_inductance_matrix=target_inductance_matrix,
213213
working_directories=working_directories,
@@ -263,11 +263,11 @@ def single_reluctance_model_simulation(reluctance_input: ItoReluctanceModelInput
263263

264264
# calculate the core reluctance
265265
core_inner_cylinder_top = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h_top,
266-
reluctance_input.material_dto.material_mu_r_abs)
266+
reluctance_input.material_complex_mu_r.material_mu_r_abs)
267267
core_inner_cylinder_bot = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h_bot,
268-
reluctance_input.material_dto.material_mu_r_abs)
268+
reluctance_input.material_complex_mu_r.material_mu_r_abs)
269269
core_top_bot_radiant = fr.r_core_top_bot_radiant(reluctance_input.core_inner_diameter, reluctance_input.window_w,
270-
reluctance_input.material_dto.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
270+
reluctance_input.material_complex_mu_r.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
271271

272272
r_core_top = 2 * core_inner_cylinder_top + core_top_bot_radiant
273273
r_core_bot = 2 * core_inner_cylinder_bot + core_top_bot_radiant
@@ -500,7 +500,7 @@ def objective(trial: optuna.Trial, config: ItoSingleInputConfig, target_and_fixe
500500

501501
# suggest core material
502502
material_name = trial.suggest_categorical('material_name', config.material_list)
503-
for count, material_dto in enumerate(target_and_fixed_parameters.material_dto_curve_list):
503+
for count, material_dto in enumerate(target_and_fixed_parameters.material_complex_mu_r_list):
504504
if material_dto.material_name == material_name:
505505
material_dto: mdb.MaterialCurve = material_dto
506506
magnet_material_model = target_and_fixed_parameters.magnet_hub_model_list[count]
@@ -566,7 +566,7 @@ def calc_winding_height(available_width: float, iso_winding_to_winding: float, l
566566
litz_wire_diameter_2=litz_diameter_2,
567567

568568
insulations=config.insulations,
569-
material_dto=material_dto,
569+
material_complex_mu_r=material_dto,
570570
magnet_material_model=magnet_material_model,
571571

572572
temperature=config.temperature,

femmt/optimization/ito_dtos.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
# 3rd party libraries
66
import numpy as np
7-
from materialdatabase.meta.data_classes import MaterialCurve
87
from materialdatabase.meta.data_enums import DataSource
8+
from materialdatabase.meta.setup_enums import MeasurementDataType
99
from magnethub.loss import LossModel
1010
from femmt.enumerations import *
1111

@@ -32,10 +32,10 @@ class ItoInsulation:
3232
class IntegratedTransformerMaterialDataSources:
3333
"""Data sources for the FEM simulation."""
3434

35-
permeability_datasource: MaterialDataSource
36-
permeability_datatype: DataSource
37-
permittivity_datasource: MaterialDataSource
38-
permittivity_datatype: DataSource
35+
permeability_datasource: DataSource
36+
permeability_datatype: MeasurementDataType
37+
permittivity_datasource: DataSource
38+
permittivity_datatype: MeasurementDataType
3939

4040
@dataclass
4141
class ItoSingleInputConfig:
@@ -105,7 +105,8 @@ class ItoTargetAndFixedParameters:
105105
i_peak_2: float
106106
i_phase_deg_1: float
107107
i_phase_deg_2: float
108-
material_dto_curve_list: list[MaterialCurve]
108+
material_name_list: list[float]
109+
material_complex_mu_r_list: list[float]
109110
magnet_hub_model_list: list[LossModel]
110111
time_extracted_vec: list
111112
current_extracted_1_vec: list
@@ -181,7 +182,8 @@ class ItoReluctanceModelInput:
181182
litz_wire_diameter_2: float
182183

183184
insulations: ItoInsulation
184-
material_dto: MaterialCurve
185+
material_name: str
186+
material_complex_mu_r: float
185187
magnet_material_model: LossModel
186188

187189
temperature: float

femmt/optimization/sto.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def calculate_fix_parameters(config: StoSingleInputConfig) -> StoTargetAndFixedP
4545
time_extracted_vec
4646
current_extracted_1_vec
4747
current_extracted_2_vec
48-
material_dto_curve_list
48+
material_complex_mu_r_list
4949
fundamental_frequency
5050
target_inductance_matrix
5151
fem_working_directory
@@ -112,7 +112,7 @@ def calculate_fix_parameters(config: StoSingleInputConfig) -> StoTargetAndFixedP
112112
magnet_hub_model_list=magnet_model_list,
113113
current_extracted_1_vec=current_extracted_1_vec,
114114
current_extracted_2_vec=current_extracted_2_vec,
115-
material_dto_curve_list=material_data_list,
115+
material_complex_mu_r_list=material_data_list,
116116
fundamental_frequency=fundamental_frequency,
117117
target_inductance_matrix=target_inductance_matrix,
118118
working_directories=working_directories,
@@ -180,7 +180,7 @@ def objective(trial: optuna.Trial, config: StoSingleInputConfig, target_and_fixe
180180
secondary_litz_diameter = 2 * secondary_litz_dict['conductor_radii']
181181

182182
material_name = trial.suggest_categorical('material_name', config.material_list)
183-
for count, material_dto in enumerate(target_and_fixed_parameters.material_dto_curve_list):
183+
for count, material_dto in enumerate(target_and_fixed_parameters.material_complex_mu_r_list):
184184
if material_dto.material_name == material_name:
185185
material_dto: mdb.MaterialCurve = material_dto
186186
magnet_material_model = target_and_fixed_parameters.magnet_hub_model_list[count]
@@ -247,7 +247,7 @@ def objective(trial: optuna.Trial, config: StoSingleInputConfig, target_and_fixe
247247
litz_wire_diameter_2=secondary_litz_diameter,
248248

249249
insulations=config.insulations,
250-
material_dto=material_dto,
250+
material_complex_mu_r=material_dto,
251251
magnet_material_model=magnet_material_model,
252252

253253
temperature=config.temperature,
@@ -325,11 +325,11 @@ def single_reluctance_model_simulation(reluctance_input: ReluctanceModelInput) -
325325

326326
# calculate the core reluctance
327327
core_inner_cylinder_top = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h_top,
328-
reluctance_input.material_dto.material_mu_r_abs)
328+
reluctance_input.material_complex_mu_r.material_mu_r_abs)
329329
core_inner_cylinder_bot = fr.r_core_round(reluctance_input.core_inner_diameter, reluctance_input.window_h_bot,
330-
reluctance_input.material_dto.material_mu_r_abs)
330+
reluctance_input.material_complex_mu_r.material_mu_r_abs)
331331
core_top_bot_radiant = fr.r_core_top_bot_radiant(reluctance_input.core_inner_diameter, reluctance_input.window_w,
332-
reluctance_input.material_dto.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
332+
reluctance_input.material_complex_mu_r.material_mu_r_abs, reluctance_input.core_inner_diameter / 4)
333333

334334
r_core_top = 2 * core_inner_cylinder_top + core_top_bot_radiant
335335
r_core_bot = 2 * core_inner_cylinder_bot + core_top_bot_radiant
@@ -834,7 +834,7 @@ def full_simulation(df_geometry: pd.DataFrame, current_waveform: list, stacked_t
834834
litz_wire_diameter_2=litz_wire_diameter_secondary,
835835

836836
insulations=local_config.insulations,
837-
material_dto=material_dto,
837+
material_complex_mu_r=material_dto,
838838
magnet_material_model=magnet_material_model,
839839

840840
temperature=local_config.temperature,
@@ -1244,7 +1244,7 @@ def full_simulation(df_geometry: pd.DataFrame, current_waveform: list, stacked_t
12441244
litz_wire_diameter_2=litz_wire_diameter_secondary,
12451245

12461246
insulations=local_config.insulations,
1247-
material_dto=material_dto,
1247+
material_complex_mu_r=material_dto,
12481248
magnet_material_model=magnet_material_model,
12491249

12501250
temperature=local_config.temperature,

femmt/optimization/sto_ct.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def calculate_fix_parameters(config: StoCtSingleInputConfig) -> StoCtTargetAndFi
3737
time_extracted_vec
3838
current_extracted_1_vec
3939
current_extracted_2_vec
40-
material_dto_curve_list
40+
material_complex_mu_r_list
4141
fundamental_frequency
4242
target_inductance_matrix
4343
fem_working_directory
@@ -94,7 +94,7 @@ def calculate_fix_parameters(config: StoCtSingleInputConfig) -> StoCtTargetAndFi
9494
time_extracted_vec=time_extracted,
9595
current_extracted_1_vec=current_extracted_1_vec,
9696
current_extracted_2_vec=current_extracted_2_vec,
97-
material_dto_curve_list=material_data_list,
97+
material_complex_mu_r_list=material_data_list,
9898
fundamental_frequency=fundamental_frequency,
9999
target_inductance_matrix=target_inductance_matrix,
100100
working_directories=working_directories

femmt/optimization/sto_ct_dtos.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44

55
# 3rd party libraries
66
import numpy as np
7-
from materialdatabase.meta.data_classes import MaterialCurve
87
from materialdatabase.meta.data_enums import DataSource
9-
from femmt.enumerations import *
8+
from materialdatabase.meta.setup_enums import MeasurementDataType
109

1110

1211
@dataclass
@@ -110,7 +109,8 @@ class StoCtTargetAndFixedParameters:
110109
i_peak_2: float
111110
i_phase_deg_1: float
112111
i_phase_deg_2: float
113-
material_dto_curve_list: list[MaterialCurve]
112+
material_name_list: list[str]
113+
material_complex_mu_r_list: list[float]
114114
time_extracted_vec: list
115115
current_extracted_1_vec: list
116116
current_extracted_2_vec: list

femmt/optimization/sto_dtos.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
# 3rd party libraries
66
import numpy as np
7-
from materialdatabase.meta.data_classes import MaterialCurve
87
from materialdatabase.meta.data_enums import DataSource
98
from femmt.enumerations import *
109
from magnethub.loss import LossModel
@@ -34,7 +33,8 @@ class StoTargetAndFixedParameters:
3433
i_peak_2: float
3534
i_phase_deg_1: float
3635
i_phase_deg_2: float
37-
material_dto_curve_list: list[MaterialCurve]
36+
material_name_list: list[str]
37+
material_complex_mu_r_list: list[float]
3838
magnet_hub_model_list: list[LossModel]
3939
time_extracted_vec: list
4040
current_extracted_1_vec: list
@@ -190,7 +190,8 @@ class ReluctanceModelInput:
190190
litz_wire_diameter_2: float
191191

192192
insulations: StoInsulation
193-
material_dto: MaterialCurve
193+
material_name: str
194+
material_complex_mu_r: float
194195
magnet_material_model: LossModel
195196

196197
temperature: float

femmt/optimization/to.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def calculate_fix_parameters(config: ToSingleInputConfig) -> ToTargetAndFixedPar
3434
time_extracted_vec
3535
current_extracted_1_vec
3636
current_extracted_2_vec
37-
material_dto_curve_list
37+
material_complex_mu_r_list
3838
fundamental_frequency
3939
target_inductance_matrix
4040
fem_working_directory
@@ -91,7 +91,7 @@ def calculate_fix_parameters(config: ToSingleInputConfig) -> ToTargetAndFixedPar
9191
time_extracted_vec=time_extracted,
9292
current_extracted_1_vec=current_extracted_1_vec,
9393
current_extracted_2_vec=current_extracted_2_vec,
94-
material_dto_curve_list=material_data_list,
94+
material_complex_mu_r_list=material_data_list,
9595
fundamental_frequency=fundamental_frequency,
9696
target_inductance_matrix=target_inductance_matrix,
9797
working_directories=working_directories

0 commit comments

Comments
 (0)