exponenta event banner

Тепловой анализ дискового тормоза

В этом примере анализируется распределение температуры дискового тормоза. Дисковые тормоза поглощают поступательную механическую энергию за счет трения и преобразуют ее в тепловую энергию, которая затем рассеивается. Нестационарный тепловой анализ дискового тормоза имеет решающее значение, поскольку характеристики трения и торможения снижаются при высоких температурах. Поэтому дисковые тормоза не должны превышать заданного температурного предела во время работы.

В этом примере моделируется поведение диска в два этапа:

  • Выполните детальное моделирование перемещения тормозной колодки вокруг диска. Поскольку вычислительные затраты высоки, эта часть примера моделирует только половину оборота (25 мс).

  • Имитировать полное торможение, когда автомобиль идет от 100 км/ч до 0 км/ч за 2,75 секунды, а затем остается остановленным ещё на 2,25 секунды, чтобы позволить теплу в диске рассеяться.

В примере используется модель транспортного средства в Simscape Driveline™ для получения временной зависимости рассеиваемой мощности.

Точечный источник тепла, перемещающийся вокруг диска

Имитировать круговую тормозную колодку, перемещающуюся вокруг диска. Это подробное моделирование в течение короткого периода времени моделирует источник тепла как точку, перемещающуюся вокруг диска.

Сначала создайте модель теплового переходного процесса.

model = createpde('thermal','transient');

Импортируйте геометрию диска.

importGeometry(model,'brake_disc.stl');

Постройте график геометрии с метками граней.

figure
pdegplot(model,'FaceLabels','on');
view([-5 -47])

Создание тонкой сетки с небольшой максимальной длиной кромки целевого элемента. Результирующая сетка имеет более 130000 узлов (степеней свободы).

generateMesh(model,'Hmax',0.005);

Постройте график сетки.

figure
pdemesh(model)
view([0,90])

Укажите тепловые свойства материала.

thermalProperties(model,'ThermalConductivity',100, ...
                        'MassDensity',8000, ...
                        'SpecificHeat',500);

Задайте граничные условия. Все грани подвергаются воздействию воздуха, поэтому будет свободная конвекция.

thermalBC(model,'Face',1:model.Geometry.NumFaces, ...
                'ConvectionCoefficient',10, ...
                'AmbientTemperature',30);

Моделирование движущегося источника тепла с помощью дескриптора функции, определяющего тепловую нагрузку как функцию пространства и времени. Для определения movingHeatSource см. раздел Функции источника тепла в нижней части этой страницы.

thermalBC(model,'Face',11,'HeatFlux',@movingHeatSource); 
thermalBC(model,'Face',4,'HeatFlux',@movingHeatSource); 

Укажите начальную температуру.

thermalIC(model,30);

Определите модель для временных шагов от 0 до 25 мс.

tlist = linspace(0,0.025,100); % Half revolution
R1 = solve(model,tlist)
R1 = 
  TransientThermalResults with properties:

      Temperature: [132015×100 double]
    SolutionTimes: [1×100 double]
       XGradients: [132015×100 double]
       YGradients: [132015×100 double]
       ZGradients: [132015×100 double]
             Mesh: [1×1 FEMesh]

Постройте график распределения температуры через 25 мс.

figure('units','normalized','outerposition',[0 0 1 1])
pdeplot3D(model,'ColorMapData',R1.Temperature(:,end))

animation функция визуализирует решение для всех временных шагов. Для воспроизведения анимации используйте следующую команду:

animation(model,R1)

Поскольку время диффузии тепла намного больше, чем время вращения, можно упростить источник тепла для длительного моделирования.

Источник тепла статического кольца

Теперь найдите температуры диска в течение более длительного периода времени. Поскольку тепло не успевает рассеиваться во время вращения, целесообразно аппроксимировать источник тепла статическим источником тепла в форме траектории тормозной колодки.

Вычислите тепловой поток, подаваемый на диск, как функцию времени. Для этого используйте модель Simscape Driveline™ четырехколесного, 2000 кг транспортного средства, который тормозит от 100 км/ч до 0 км/ч приблизительно за 2,75 с.

driveline_model = 'DrivelineVehicle_isothermal';
open_system(driveline_model);

M = 2000; % kg
V0 = 27.8; % m/s, which is around 100 km/h
P = 277; % bar

simOut = sim(driveline_model);

heatFlow = simOut.simlog.Heat_Flow_Rate_Sensor.Q.series.values;
tout = simOut.tout;

Получение зависящего от времени теплового потока с помощью результатов модели привода Simscape.

drvln = struct();
drvln.tout = tout;
drvln.heatFlow = heatFlow;

Создайте сетку.

generateMesh(model);

Укажите граничное условие как дескриптор функции. Для определения ringHeatSource см. раздел Функции источника тепла в нижней части этой страницы.

thermalBC(model,'Face',11,'HeatFlux', @(r,s) ringHeatSource(r,s,drvln)); 
thermalBC(model,'Face',4 ,'HeatFlux', @(r,s) ringHeatSource(r,s,drvln)); 

Решите модель за время от 0 до 5 секунд.

tlist = linspace(0,5,250);
R2 = solve(model,tlist);

Постройте график распределения температуры на заключительном временном шаге t = 5 секунд.

figure('units','normalized','outerposition',[0 0 1 1])
pdeplot3D(model,'ColorMapData',R2.Temperature(:,end))

animation функция визуализирует решение для всех временных шагов. Для воспроизведения анимации используйте следующую команду:

animation(model,R2)

Найдите максимальную температуру диска. Максимальная температура является достаточно низкой, чтобы гарантировать, что тормозная колодка работает так, как ожидалось.

Tmax = max(max(R2.Temperature))
Tmax = 52.2895

Функции источников тепла для движущихся и статических источников тепла

function F = movingHeatSource(region,state)

% Parameters ---------

R = 0.115; % Distance from center of disc to center of braking pad
r = 0.025; % Radius of braking pad
xc = 0.15; % x-coordinate of center of disc
yc = 0.15; % y-coordinate of center of disc

T = 0.05; % Period of 1 revolution of disc

power = 35000; % Braking power in watts
Tambient = 30; % Ambient temperature (for convection)
h = 10; % Convection heat transfer coefficient in W/m^2*K
%--------------------

theta = 2*pi/T*state.time;

xs = xc + R*cos(theta);
ys = yc + R*sin(theta);

x = region.x; 
y = region.y;

F = h*(Tambient - state.u); % Convection


if isnan(state.time)
    F = nan(1,numel(x));
end

idx = (x - xs).^2 + (y - ys).^2 <= r^2;

F(1,idx) = 0.5*power/(pi*r.^2);  % 0.5 because there are 2 faces

end
function F = ringHeatSource(region,state,driveline)

% Parameters ---------

R = 0.115; % Distance from center of disc to center of braking pad
r = 0.025; % Radius of braking pad
xc = 0.15; % x-coordinate of center of disc
yc = 0.15; % y-coordinate of center of disc

power = interp1(driveline.tout,driveline.heatFlow,state.time); % Braking power in watts
Tambient = 30; % Ambient temperature (for convection)
h = 10; % Convection heat transfer coefficient in W/m^2*K
Tf = 2.5; % Time in seconds
%--------------------


x = region.x; 
y = region.y;

F = h*(Tambient - state.u); % Convection

if isnan(state.time)
    F = nan(1,numel(x));
end


if state.time < Tf
    rad = sqrt((x - xc).^2 + (y - yc).^2);

    idx = rad >= R-r & rad <= R+r;

    area = pi*( (R+r)^2 - (R-r)^2 );
    F(1,idx) = 0.5*power/area;  % 0.5 because there are 2 faces
end

end