Selecting a fan for CPU cooling
The example shows how to parameterize the Engee model based on the fan passport data, and check the efficiency of cooling by the processor fan when simulating its operation, taking into account the actual processor heat release cycle and adjusting the fan speeds depending on processor load.
General view of the model
Setting the fan parameters
We take the passport characteristics and transfer the data of the volume flow versus static pressure graph in the form of two vectors. In addition, we indicate the fan speed that is effective when removing this characteristic. The dimensions of the vectors must match.
# ==============================================================================
# USER DATA ENTRY (Passport data for ONE frequency)
# ==============================================================================
# Reference rotation speed from the passport (rpm)
const N_ref = 2000.0
# Pressure rating vector (Dimension m), Pa
pressure_rise_passport = [0.0, 1.83, 3.66, 5.49, 7.32, 9.16, 10.99, 12.82, 14.65, 16.1,
16.48, 18.32, 20.15, 21.98, 23.81, 24.5, 25.64, 27.47, 29.31,
31.14, 32.97, 34.8]
# Passport vector of volume flow (Dimension m) for frequency N_ref, l/min
volumetric_flow_passport = [29.0291, 26.8708, 22.4003, 16.0321, 11.8087, 10.7402, 10.3039,
9.2101, 5.2882, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001];
Assignment of rotation frequencies
We will specify the rotational speeds at which we are going to turn the fan.
# Vector of target rotational speeds (Dimension n), rpm
velocity_input = [2000.0, 2500.0, 3000.0]
Let's create a volume flow matrix for the selected rotation frequencies
Let's recalculate the dependence of the volume flow on the static pressure for the selected frequencies according to the similarity formulas
# ==============================================================================
# CALLING THE CALCULATION FUNCTION AND SYNCHRONIZING WITH THE WORKSPACE
# ==============================================================================
include("calc_flow.jl")
# Calling a function from the calc_flow.jl file, calculating the cost matrix
calculated_matrix = calculate_fan_matrix(pressure_rise_passport, volumetric_flow_passport, velocity_input, N_ref)
# Writing final results to the Engee global workspace for the Fan block
global pressure_rise = pressure_rise_passport
global volumetric_flow_rate = calculated_matrix
global velocity = velocity_input
global efficiency_table = ones(length(velocity_input), length(pressure_rise_passport)) .* 0.3
println("Parameterization has been completed successfully! The cost matrix has been formed.")
We will display graphs of fan characteristics at the selected rotational speeds.
# ==============================================================================
# CALLING THE PLOTTING FUNCTION
# ==============================================================================
include("plot_charts.jl")
# Calling a graphical function from the plot_charts.jl file
plot_fan_characteristics(pressure_rise_passport, volumetric_flow_rate, velocity_input)
Fan speed control
The rotation speed in the model is regulated in the control unit, which takes the setpoint temperature and the signal from the processor temperature sensor to its inputs. Depending on the difference in the values of these temperatures, the fan speed is turned on 1, 2, or 3, or it is turned off if forced cooling is no longer needed. The correspondence of the actual rotational speeds to the speed levels is set by the user.
# Parameterization of the controller (adjustment of the correspondence of speed levels to rotation frequencies)
# Creating a vel_table vector based on the user-defined velocity_input vector
# dimension (n + 1), starting from 0
global vel_table = vcat(0.0, velocity_input)
# Creating a vector of reference points-enumerations (levels of rotation frequencies - [0, 1, 2, ...]),
# starting from 0. Its dimension will automatically be equal to the dimension of vel_table (n + 1)
global index_table = collect(0:(length(vel_table) - 1));
Let's run the model and plot the fan operation schedules as part of the processor cooling system.
# The script for launching the model for calculation
include("run_model.jl")
# Let's run and output graphs of the model of interest
run_and_plot_fan_simulation("CPU_Fan")
Conclusion
The method shown in the example for checking the adequacy of fan characteristics can be used in a wide range of tasks and is invariant to the physical scale of the simulated processes. In addition to cooling computing equipment, the developed technique can be scaled to solve a wide range of applied engineering tasks in related industries, in particular:
-
Aviation and space technology: design of thermal control systems for on-board electronic equipment, cooling of payload compartments, as well as forced ventilation of hermetically sealed cabins of civil vessels and orbital stations.
-
Transport engineering: thermal modeling of cooling systems for traction batteries (batteries) of electric vehicles, power inverters, engine compartments, as well as the design of HVAC systems for passenger cars and locomotives.
-
Energy and power electronics: calculation and optimization of forced cooling systems for high-power power transformers, cabinets of complete switchgears and variable frequency drives.
-
IT infrastructure and data center: design of precision air conditioning systems for server rooms, calculation of air balances of "hot" and "cold" corridors of data centers, as well as selection of high-density fans for blade servers.
-
Special construction and mining: design of forced ventilation systems for rooms and underground structures, life support systems for ships, as well as calculation of mine ventilation systems for main ventilation.
-
Agro-industrial complex: modeling of microclimate and ventilation systems in automated greenhouse complexes, vertical farms and livestock facilities.
The proposed model makes it possible to significantly reduce the time for field tests, optimize the energy consumption of fan drive motors and guarantee the reliability of thermal protection of technical systems even at the stage of preliminary design.

