Main Content

Optimize an Inverter Liquid Cooling System

In this example you analyze the performance of a liquid cooling system for a three-phase inverter. You run detailed and reduced models (ROM) to find the steady-state temperatures and losses. You compute the optimal size of the heatsink that maximizes the inverter efficiency and minimizes lifetime cost.

Model Overview

Open the model sscv_inverter_liquid_cooling.

model = 'sscv_inverter_liquid_cooling';
open_system(model)
sscv_inverter_liquid_cooling_params;

To drive the Load block, the inverter converts the DC power from the high-voltage battery into three-phase AC power. Conduction losses, switching losses, and reverse recovery losses generate heat in the case. Liquid cooling is effective to dissipate heat in the order of kilowatts. Liquid coolant flows in the inverter case to exchange heat. The Electric Pump System provides the hydraulic power to produce the flow. Then, the hot liquid flows into a heatsink to dissipate the heat. The heatsink is also called radiator. Fans blow air into the radiator to increase heat dissipation via forced convection.

The Three-phase Inverter has a Detailed Inverter variant that consists of six IGBT switching devices and the corresponding body diodes:

The Electric Pump System comprises a 12V DC motor and its H-bridge driver and a small centrifugal pump. The motor regulates the pump flow rate by using PWM switching and a PID controller:

Import Device Parameters

To import datasheet parameters for the IGBTs and Body Diodes in the Detailed inverter model, including turn-on and turn-off switching losses for the IGBT blocks, and reverse recovery losses for the Diode blocks, use the ee_importDeviceParameters utility function.

sscv_inverter_liquid_cooling_import

The plots above show the device characteristics for the imported IGBT and Diode blocks, including switching and reverse recovery losses.

Run a Detailed Simulation

Simulate 4 AC cycles to observe load voltage and current.

set_param([model, '/Three-phase inverter'],'LabelModeActiveChoice', 'Detailed')
stopTime = 4/60; %#ok<NASGU> 
out = sim(model);
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
figure();
Vabc = out.simlog.Load.N.V.series;
Iabc = out.simlog.Load.wye_impedance.I.series;
subplot(2,1,1);
plot(Vabc.time, Vabc.values('V'));
ylabel('Phase voltages [V]')
grid on
subplot(2,1,2);
plot(Iabc.time, Iabc.values('A'));
xlabel('Time [s]')
ylabel('Phase currents [A]')
grid on

Observe the inverter successfully produces a three-phase current at 60 Hz. It achieves electrical AC steady-state after an initial transient cycle.

Run a Reduced Thermal Simulation

The electrical characteristic times in the inverter subsystem are in the order of milliseconds, but the thermal characteristic times are in the order of minutes. If you are only interested in the thermal steady-state of the system for a particular cooling setup and a fixed value of average conduction and switching losses, you can use the Reduced - Use only for thermal steady-state estimation variant of the Three-phase inverter subsystem.

To run a 1 hour simulation of thermal model with constant conduction and switching losses, but without voltages or currents, at the MATLAB Command Window, enter:

set_param([bdroot, '/Three-phase inverter'],'LabelModeActiveChoice', 'Reduced - Use only for thermal steady-state estimation');
stopTime = 3600;
out = sim(model);
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.

Plot the temperature of the case, heatsink, and coolant parts:

figure();
Tcase = out.simlog.Case_Heat_Exchanger.H.T.series;
Theatsink = out.simlog.Heatsink.T_hs.series;
Tcoolant = out.simlog.Tank.T_I.series;
hold on
plot(Tcase.time, Tcase.values('degC'));
plot(Theatsink.time, Theatsink.values('degC'));
plot(Tcoolant.time, Tcoolant.values('degC'));
hold off
grid on
legend({'Case', 'Heatsink', 'Coolant'})
xlabel('Time [s]')
ylabel('Temperature [degC]')

You observe that it takes almost one hour to reach thermal steady state.

Estimate Thermal Steady-State Iteratively

To find the accurate steady-state losses and temperatures faster, first compute the accurate losses at a given temperature by using the Detailed Inverter option of the Three-Phase Inverter subsystem. Then compute the accurate steady-state temperatures at a given loss by using the Reduced option of the Three-Phase Inverter subsystem.

Finally, iterate between these two processes to estimate the thermal steady-state.

sscv_inverter_liquid_cooling_thermal_ss
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Iteration 1 --------
Max Junction temperature difference to previous run = 49.5125 degC
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Iteration 2 --------
Max Junction temperature difference to previous run = 8.4232 degC
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Iteration 3 --------
Max Junction temperature difference to previous run = 1.39 degC

                                           LoggingNode                                              Power       SwitchingLosses
    __________________________________________________________________________________________    __________    _______________

    {'sscv_inverter_liquid_cooling.Load.wye_impedance'                                       }         31039             0     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_AH.IGBT'      }        66.602        452.43     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_BL.IGBT'      }        66.451        449.63     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_CL.IGBT'      }        65.998        446.47     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_BH.IGBT'      }        65.682        449.48     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_CH.IGBT'      }        65.587        435.78     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_AL.IGBT'      }         64.46        447.64     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_AL.Body_Diode'}        49.598        239.95     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_BH.Body_Diode'}        49.476        237.08     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_AH.Body_Diode'}        49.235        236.57     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_CH.Body_Diode'}         49.17        236.28     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_BL.Body_Diode'}        49.022        236.82     
    {'sscv_inverter_liquid_cooling.Three_phase_inverter.Detailed_Inverter.IGBT_CL.Body_Diode'}        48.136           230     
    {'sscv_inverter_liquid_cooling.Electric_Pump_System.DC_Motor'                            }        7.4588             0     
    {'sscv_inverter_liquid_cooling.Electric_Pump_System.H_Bridge'                            }       0.21341             0     
    {'sscv_inverter_liquid_cooling.Gmin'                                                     }    0.00035553             0     

System efficiency = 86.6182%

You observe that 3 iterations are enough to find a thermal steady-state with a reasonable accuracy of +-2 degC.

Optimize Heatsink Size for Cost and Efficiency

To find the best option that minimizes the cost and maximizes the efficiency, repeat the steady-state iterations for several heatsink sizes. At the MATLAB Command Window, enter:

displayOutputs = false;
sscv_inverter_liquid_cooling_optimize
************ Case 1: Heatsink with NumFins = 60 ************
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
System efficiency = 85.4048%
************ Case 2: Heatsink with NumFins = 80 ************
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
nfs server fs-08-uk:/vol/hub_share: not responding
System efficiency = 86.0895%
************ Case 3: Heatsink with NumFins = 120 ************
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
System efficiency = 86.8278%
************ Case 4: Heatsink with NumFins = 200 ************
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
System efficiency = 87.368%
************ Case 5: Heatsink with NumFins = 300 ************
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
System efficiency = 87.6219%
------------------------------------
Time to run 5 cases = 231.2708 min
************************************

You observe that the option with a good blend of high efficiency and low coolant temperature, with a minimum lifetime cost, is a heatsink with around 120 fins.