Main Content

Thermal and Structural Analysis of Disc Brake

This example shows a quasistatic axisymmetric thermal stress analysis workflow by reproducing the results of the simplified disc brake model discussed in [1]. Disc brakes absorb mechanical energy through friction and transform it into thermal energy, which then dissipates. The example uses a simplified model of a disc brake in a single braking process from a constant initial angular speed to a standstill. The workflow has two steps:

  1. Transient thermal analysis to compute the temperature distribution in the disc using the heat flux from brake pads

  2. Quasistatic structural analysis to compute thermal stresses at several solution times using previously obtained temperature distribution to specify thermal loads

The resulting plots show the temperature distribution, radial stress, hoop stress, and von Mises stress for the corresponding solution times.

Disc Brake Properties and Geometry

Based on the assumptions used in [1], the example reduces the analysis domain to a rectangular region corresponding to the axisymmetric section of the annular disc. Because of the geometric and load symmetry of the disc, the example models only half the thickness of the disc and the effect of one pad. In the following figure, the left edge corresponds to the inner radius of the disc rd. The right edge corresponds to the outer radius of the disc Rd and also coincides with the outer radius of the pad Rp. The disc experiences pressure from the pad, which generates the heat flux. Instead of modeling the pad explicitly, include its effect in the thermal analysis by specifying this heat flux as a boundary condition from the inner radius of the pad rp to the outer radius of the pad Rp.

Axisymmetric section of the annular disc showing the inner and outer radii of the disc and pad

Thermal Analysis: Compute Temperature Distribution

Create a geometry with two adjacent rectangles. The top edge of the longer rectangle (on the right) represents the disc-pad contact region.

R1 = [3,4, [  66,  76.5,  76.5,   66, -5.5, -5.5, 0, 0]/1000]';
R2 = [3,4, [76.5, 113.5, 113.5, 76.5, -5.5, -5.5, 0, 0]/1000]';

gdm = [R1 R2];
ns = char('R1','R2');
g = decsg(gdm,'R1 + R2',ns');

Plot the geometry with the edge and face labels.

figure
pdegplot(g,EdgeLabels="on",FaceLabels="on");

Figure contains an axes object. The axes object contains 10 objects of type line, text.

Create a finite element analysis model with the disc brake geometry for transient axisymmetric thermal analysis.

model = femodel(AnalysisType="thermalTransient",Geometry=g);
model.PlanarType = "axisymmetric";

Assign the geometry to the thermal model.

model.Geometry = geometryFromEdges(g);

Generate a mesh. To match the mesh used in [1], use the linear geometric order instead of the default quadratic order.

model = generateMesh(model,Hmax=0.5E-04, ...
                           GeometricOrder="linear");

Specify the thermal material properties of the disc.

alphad = 1.44E-5; % Diffusivity of disc
Kd = 51;
rhod = 7100;
cpd = Kd/rhod/alphad;
model.MaterialProperties = ...
    materialProperties(ThermalConductivity=Kd, ...
                       MassDensity=rhod, ...
                       SpecificHeat=cpd);

Specify the heat flux boundary condition to account for the pad region. For the definition of the qFcn function, see Heat Flux Function.

model.EdgeLoad(6) = edgeLoad(Heat=@qFcn);

Set the initial temperature.

model.FaceIC=faceIC(Temperature=20);

Solve the model for the times used in [1].

tlist = [0 0.1 0.2 1.0 2.0 3.0 3.96];
Rt = solve(model,tlist);

Plot the temperature variation with time at three key radial locations. The resulting plot is comparable to the plot obtained in [1].

iTRd = interpolateTemperature(Rt,[0.1135;0],1:numel(Rt.SolutionTimes));
iTrp = interpolateTemperature(Rt,[0.0765;0],1:numel(Rt.SolutionTimes));
iTrd = interpolateTemperature(Rt,[0.066;0],1:numel(Rt.SolutionTimes));

figure
plot(tlist,iTRd)
hold on
plot(tlist,iTrp)
plot(tlist,iTrd)
title("Temperature Variation with Time at Key Radial Locations")
legend("R_d","r_p","r_d")
xlabel("t, s")
ylabel("T,^{\circ}C")

Figure contains an axes object. The axes object with title Temperature Variation with Time at Key Radial Locations, xlabel t, s, ylabel T, toThePowerOf degree baseline C contains 3 objects of type line. These objects represent R_d, r_p, r_d.

Structural Analysis: Compute Thermal Stress

Switch the analysis type for the femodel object to static structural.

model.AnalysisType = "structuralStatic";

Specify the structural properties of the disc.

model.MaterialProperties = ...
    materialProperties(YoungsModulus=99.97E9, ...
                       PoissonsRatio=0.29, ...
                       CTE=1.08E-5);

Constrain the model to prevent rigid motion.

model.EdgeBC([3,4]) = edgeBC(YDisplacement=0);

Specify the reference temperature that corresponds to the state of zero thermal stress of the model.

model.ReferenceTemperature = 20;

Specify the thermal load by using the transient thermal results Rt. The solution times are the same as in the thermal model analysis. For each solution time, solve the corresponding static structural analysis problem and plot the temperature distribution, radial stress, hoop stress, and von Mises stress. For the definition of the plotResults function, see Plot Results Function. The results are comparable to figure 5 from [1].

for n = 2:numel(Rt.SolutionTimes)
Rt_step = filterByIndex(Rt,n);
model.FaceLoad = faceLoad(Temperature=Rt_step);
R = solve(model);
plotResults(R,Rt,n);
end

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 40 . 5845 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -23.17 MPa max = 5.51 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -24.79 MPa max = 4.62 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 23.16 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 48 . 54 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -28.70 MPa max = 10.20 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -31.55 MPa max = 8.36 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 29.35 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 76 . 5325 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -29.49 MPa max = 16.52 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -40.68 MPa max = 26.30 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 35.61 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 93 . 4966 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -18.96 MPa max = 12.98 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -37.56 MPa max = 42.13 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 43.51 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 100 . 033 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -8.56 MPa max = 9.08 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -31.20 MPa max = 48.08 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 49.49 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Figure contains 4 axes objects and another object of type subplottext. Axes object 1 with title Temperature max = blank 96 . 8461 toThePowerOf degree baseline C, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 2 with title Radial Stress min = -0.39 MPa max = 6.41 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 3 with title Hoop Stress min = -22.44 MPa max = 45.94 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line. Axes object 4 with title Von Mises Stress max = 47.15 MPa, xlabel x,cm, ylabel y,cm contains 12 objects of type patch, line.

Heat Flux Function

This helper function computes the transient value of the heat flux from the pad to the disc. It uses the empirical formula from [1].

function q = qFcn(x,s)
alphad = 1.44E-5; % Diffusivity of disc
Kd = 51; % Conductivity of disc
rhod = 7100; % Density of disc
cpd = Kd/rhod/alphad; % Specific heat capacity of disc

alphap = 1.46E-5; % Diffusivity of pad
Kp = 34.3; % Conductivity of pad
rhop = 4700; % Density of pad
cpp = Kp/rhop/alphap; % Specific heat capacity of pad

f = 0.5; % Coefficient of friction
omega0 = 88.464; % Initial angular velocity
ts = 3.96; % Stopping time
p0 = 1.47E6*(64.5/360); % Pressure only spans 64.5 deg occupied by pad

omegat = omega0*(1 - s.time/ts); % Angular speed over time

eta = sqrt(Kd*rhod*cpd)/(sqrt(Kd*rhod*cpd) + sqrt(Kp*rhop*cpp));
q = (eta)*f*omegat*x.x*p0;
end

Plot Results Function

This helper function plots the temperature distribution, radial stress, hoop stress, and von Mises stress.

function plotResults(R,Rt,tID)
figure
subplot(2,2,1)
pdeplot(Rt.Mesh,XYData=Rt.Temperature(:,tID), ...
               ColorMap="jet",Contour="on")
xt = xticks;
yt = yticks;
xticklabels(100*xt);
yticklabels(100*yt);
xlabel("x,cm")
ylabel("y,cm")
title({'Temperature'; ...
      ['max = ' num2str(max(Rt.Temperature(:,tID))) '^{\circ}C']}, ...
      FontSize=10)

subplot(2,2,2)
pdeplot(R.Mesh,XYData=R.Stress.srr, ...
               ColorMap="jet",Contour="on")
xt = xticks;
yt = yticks;
xticklabels(100*xt);
yticklabels(100*yt);
xlabel("x,cm")
ylabel("y,cm")
title({'Radial Stress'; ...
       ['min = ' num2str(min(R.Stress.srr)/1E6,'%3.2f') ' MPa'];
       ['max = ' num2str(max(R.Stress.srr)/1E6,'%3.2f') ' MPa']}, ...
       FontSize=10)

subplot(2,2,3)
pdeplot(R.Mesh,XYData=R.Stress.sh, ...
               ColorMap="jet",Contour="on")
xt = xticks;
yt = yticks;
xticklabels(100*xt);
yticklabels(100*yt);
xlabel("x,cm")
ylabel("y,cm")
title({'Hoop Stress'; ...
      ['min = ' num2str(min(R.Stress.sh)/1E6,'%3.2f') ' MPa'];
      ['max = ' num2str(max(R.Stress.sh)/1E6,'%3.2f') ' MPa']}, ...
      FontSize=10)

subplot(2,2,4)
pdeplot(R.Mesh,XYData=R.VonMisesStress, ...
               ColorMap="jet",Contour="on")
xt = xticks;
yt = yticks;
xticklabels(100*xt);
yticklabels(100*yt);
xlabel("x,cm")
ylabel("y,cm")
title({'Von Mises Stress'; ...
      ['max = ' num2str(max(R.VonMisesStress)/1E6,'%3.2f') ' MPa']}, ...
      FontSize=10)

sgtitle(['Time = ' num2str(Rt.SolutionTimes(tID)) ' s'],FontWeight="bold")
end

References

[1] Adamowicz, Adam. "Axisymmetric FE Model to Analysis of Thermal Stresses in a Brake Disc." Journal of Theoretical and Applied Mechanics 53, issue 2 (April 2015): 357–370. https://doi.org/10.15632/jtam-pl.53.2.357.