TMM4175 Polymer Composites

Home About Python Links Table of Contents

CASE STUDY: Light-weight drive shaft

Assumptions: the drive shaft can be approximated to a thin-walled tube where edge effects are neglected, see the case study Thin-walled pipes.

The relation between the shear section force $N_{xy}$ and the torque $T$ is now

\begin{equation} N_{xy}=\frac{T}{2\pi R^2} \tag{1} \end{equation}

Hence, the governing set of equations is:

\begin{equation} \begin{bmatrix} 0 \\ 0 \\ N_{xy} \end{bmatrix} = \begin{bmatrix} A_{xx} & A_{xy} & A_{xs} \\ A_{xy} & A_{yy} & A_{ys} \\ A_{xs} & A_{ys} & A_{ss} \end{bmatrix} \begin{bmatrix} \varepsilon_x^0 \\ \varepsilon_y^0 \\ \gamma_{xy}^0 \end{bmatrix} \tag{2} \end{equation}

For a balanced laminate, the only non-trivial equation is:

\begin{equation} N_{xy}=A_{ss}\gamma_{xy}^0 \tag{3} \end{equation}

Solution for a homogenous isotropic drive shaft

From equation (1),

\begin{equation} \tau_{xy}=\frac{T}{2\pi R^2 t} \tag{4} \end{equation}

The von Mises stress is now

\begin{equation} \sigma_{v}=\sqrt{3}\tau_{xy} \tag{5} \end{equation}

Consider the following requirements and parameters for a steel shaft:

  • Design torque: 5 kNm,
  • Yield strength: 750 MPa (quite high yield strength)
  • Fixed outer radius: 30 mm
  • Wall thicness is a free parameter

Computing the required thickness and resulting mass per length:

In [1]:
from math import pi
import numpy as np

T=5E6 #Nmm
E,v,rho = 200000, 0.3, 7800E-12
G=E/(2+2*v)
Ro=30

def misesAndMass(t):
    Ri=Ro-t
    R=(Ro+Ri)/2
    tau=T/(2*pi*t*R**2)
    mises=(3**0.5)*tau
    mass=rho*pi*(Ro**2 - Ri**2)*1E6
    return (mises,mass)


thi = np.linspace(2,3,10000)
for t in thi:
    mises,mass_steel=misesAndMass(t)
    if mises<750:
        break

print('Thickness=   ',round(t,3),'mm')    
print('Mises stress=',round(mises,1),'MPa')
print('Mass=        ', round(mass_steel,3),'kg/m')
Thickness=    2.2 mm
Mises stress= 750.0 MPa
Mass=         3.117 kg/m

Solution for a carbon fiber composite solution:

In [2]:
import laminatelib
import matlib
m1=matlib.get('Carbon/Epoxy(a)')
In [3]:
from math import pi

def driveShaftStuff(angle,t,R,T):
    layup =[{'mat':m1, 'ori':-angle, 'thi':t/2},
            {'mat':m1, 'ori':+angle, 'thi':t/2}]
    Ass=laminatelib.laminateStiffnessMatrix(layup)[5,5]
    Nxy=T/(2*pi*R**2)
    gxy0 = Nxy/Ass
    deformations=np.array([0,0,gxy0,0,0,0])
    res = laminatelib.layerResults(layup,deformations)
    return res[0]['fail']
In [4]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

angles=np.linspace(30,60)
fE_MS = [driveShaftStuff(angle,t=1, R=30,T=5E6)['MS']['bot'] for angle in angles]
plt.plot(angles,fE_MS)
plt.show()

The optimum angle is clearly 45 degrees.

In [5]:
Ro=30
t=3.5
Ri=Ro-t
R=(Ro+Ri)/2
driveShaftStuff(45,t=t, R=R,T=5E6)
Out[5]:
{'MS': {'bot': 0.7475385205662095, 'top': 0.7475385205662095},
 'ME': {'bot': 1.031986511468839, 'top': 1.031986511468839},
 'TW': {'bot': 1.0800336089955351, 'top': 1.0800336089955351},
 'HNFF': {'bot': 0.4402171287778789, 'top': 0.4402171287778789},
 'HNIFF': {'bot': 0.7475385205662095, 'top': 0.7475385205662095},
 'MSFF': {'bot': 0.4402171287778789, 'top': 0.4402171287778789}}
In [6]:
mass_cfrp=m1['rho']*pi*(Ro**2 - Ri**2)*1E6
print('Mass pr. meter', mass_cfrp,'kg')
Mass pr. meter 0.9939999155958106 kg
In [7]:
mass_cfrp/mass_steel
Out[7]:
0.3189419152556031

Disclaimer:This site is about polymer composites, designed for educational purposes. Consumption and use of any sort & kind is solely at your own risk.
Fair use: I spent some time making all the pages, and even the figures and illustrations are my own creations. Obviously, you may steal whatever you find useful here, but please show decency and give some acknowledgment if or when copying. Thanks! Contact me: nils.p.vedvik@ntnu.no www.ntnu.edu/employees/nils.p.vedvik

Copyright 2021, All right reserved, I guess.