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

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

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

  • Выполните высокодетальную симуляцию тормозной колодки, перемещающейся вокруг диска. Поскольку вычислительная стоимость высока, эта часть примера симулирует только один половину вращения (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])

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

generateMesh(model,'Hmax',0.005);

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

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))

The 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 Driveline.

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

Сгенерируйте mesh.

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))

The 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