Skip to content

Commit 0448822

Browse files
authored
Merge pull request #178 from upb-lea/dct
Fix wrong winding loss calculation in reluctance model for inductor / stacked transformer / integrated transformer
2 parents a675775 + f545821 commit 0448822

3 files changed

Lines changed: 15 additions & 14 deletions

File tree

femmt/optimization/io.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,8 @@ def single_reluctance_model_simulation(reluctance_input: IoReluctanceModelInput)
324324
iso_core_top=reluctance_input.insulations.core_top, iso_core_bot=reluctance_input.insulations.core_bot,
325325
frequency=fft_frequency, litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
326326

327-
p_winding += proximity_factor_assumption * winding_dc_resistance * reluctance_input.fft_amplitude_list[count] ** 2
327+
# factor 0.5 due to RMS value needed, but fft returns peak values
328+
p_winding += proximity_factor_assumption * winding_dc_resistance * 0.5 * reluctance_input.fft_amplitude_list[count] ** 2
328329

329330
p_loss = p_winding + p_core
330331

femmt/optimization/ito.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,8 @@ def single_reluctance_model_simulation(reluctance_input: ItoReluctanceModelInput
378378
r_1=reluctance_input.insulations.iso_window_top_core_left,
379379
frequency=fft_frequency, winding_area=winding_area_1_top,
380380
litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
381-
382-
p_winding_1_top += proximity_factor_1_top * primary_resistance_top * reluctance_input.fft_amplitude_list_1[count] ** 2
381+
# factor 0.5 due to RMS value needed, but fft returns peak values
382+
p_winding_1_top += proximity_factor_1_top * primary_resistance_top * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
383383

384384
if number_bot_prim_turns_per_column > reluctance_input.turns_1_bot:
385385
winding_area_1_bot = 2 * reluctance_input.litz_dict_1["conductor_radii"] * \
@@ -409,9 +409,9 @@ def single_reluctance_model_simulation(reluctance_input: ItoReluctanceModelInput
409409
window_h=reluctance_input.window_h_bot,
410410
iso_core_top=reluctance_input.insulations.iso_window_bot_core_top, iso_core_bot=reluctance_input.insulations.iso_window_bot_core_bot,
411411
frequency=fft_frequency, litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
412-
413-
p_winding_1_bot_inner = proximity_factor_1_bot_inner * primary_resistance_bot_inner * reluctance_input.fft_amplitude_list_1[count] ** 2
414-
p_winding_1_bot_outer = proximity_factor_1_bot_outer * primary_resistance_bot_outer * reluctance_input.fft_amplitude_list_1[count] ** 2
412+
# factor 0.5 due to RMS value needed, but fft returns peak values
413+
p_winding_1_bot_inner = proximity_factor_1_bot_inner * primary_resistance_bot_inner * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
414+
p_winding_1_bot_outer = proximity_factor_1_bot_outer * primary_resistance_bot_outer * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
415415

416416
p_winding_1_bot += p_winding_1_bot_inner + p_winding_1_bot_outer
417417

@@ -421,8 +421,8 @@ def single_reluctance_model_simulation(reluctance_input: ItoReluctanceModelInput
421421
litz_wire_name=reluctance_input.litz_wire_name_2, number_turns=reluctance_input.turns_2_bot, window_h=reluctance_input.window_h_bot,
422422
iso_core_top=reluctance_input.insulations.iso_window_bot_core_top, iso_core_bot=reluctance_input.insulations.iso_window_bot_core_bot,
423423
frequency=fft_frequency, litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
424-
425-
p_winding_2 += proximity_factor_assumption_2 * secondary_resistance * reluctance_input.fft_amplitude_list_2[count] ** 2
424+
# factor 0.5 due to RMS value needed, but fft returns peak values
425+
p_winding_2 += proximity_factor_assumption_2 * secondary_resistance * 0.5 * reluctance_input.fft_amplitude_list_2[count] ** 2
426426

427427
p_loss_total = p_hyst + p_winding_1_top + p_winding_1_bot + p_winding_2
428428

femmt/optimization/sto.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ def single_reluctance_model_simulation(reluctance_input: StoReluctanceModelInput
442442
frequency=fft_frequency, winding_area=winding_area_1_top,
443443
litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
444444

445-
p_winding_1_top += proximity_factor_1_top * primary_resistance_top * reluctance_input.fft_amplitude_list_1[count] ** 2
445+
p_winding_1_top += proximity_factor_1_top * primary_resistance_top * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
446446

447447
if number_bot_prim_turns_per_column > reluctance_input.turns_1_bot:
448448
winding_area_1_bot = 2 * reluctance_input.primary_litz_dict["conductor_radii"] * \
@@ -472,9 +472,9 @@ def single_reluctance_model_simulation(reluctance_input: StoReluctanceModelInput
472472
window_h=reluctance_input.window_h_bot,
473473
iso_core_top=reluctance_input.insulations.iso_window_bot_core_top, iso_core_bot=reluctance_input.insulations.iso_window_bot_core_bot,
474474
frequency=fft_frequency, litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
475-
476-
p_winding_1_bot_inner = proximity_factor_1_bot_inner * primary_resistance_bot_inner * reluctance_input.fft_amplitude_list_1[count] ** 2
477-
p_winding_1_bot_outer = proximity_factor_1_bot_outer * primary_resistance_bot_outer * reluctance_input.fft_amplitude_list_1[count] ** 2
475+
# factor 0.5 due to RMS value needed, but fft returns peak values
476+
p_winding_1_bot_inner = proximity_factor_1_bot_inner * primary_resistance_bot_inner * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
477+
p_winding_1_bot_outer = proximity_factor_1_bot_outer * primary_resistance_bot_outer * 0.5 * reluctance_input.fft_amplitude_list_1[count] ** 2
478478

479479
p_winding_1_bot += p_winding_1_bot_inner + p_winding_1_bot_outer
480480

@@ -484,8 +484,8 @@ def single_reluctance_model_simulation(reluctance_input: StoReluctanceModelInput
484484
litz_wire_name=reluctance_input.litz_wire_name_2, number_turns=reluctance_input.turns_2_bot, window_h=reluctance_input.window_h_bot,
485485
iso_core_top=reluctance_input.insulations.iso_window_bot_core_top, iso_core_bot=reluctance_input.insulations.iso_window_bot_core_bot,
486486
frequency=fft_frequency, litz_wire_material_name='Copper', temperature=reluctance_input.temperature)
487-
488-
p_winding_2 += proximity_factor_assumption_2 * secondary_resistance * reluctance_input.fft_amplitude_list_2[count] ** 2
487+
# factor 0.5 due to RMS value needed, but fft returns peak values
488+
p_winding_2 += proximity_factor_assumption_2 * secondary_resistance * 0.5 * reluctance_input.fft_amplitude_list_2[count] ** 2
489489

490490
p_loss_total = p_hyst + p_winding_1_top + p_winding_1_bot + p_winding_2
491491

0 commit comments

Comments
 (0)