The thermally induced strains $\boldsymbol{\varepsilon}_ {th}$ divided by the change in temperature $\Delta T$ is called the material's coefficients of thermal expansion $\boldsymbol{\alpha}$. A general anisotropic material has six coefficients:
\begin{equation} \boldsymbol{\alpha}= \begin{bmatrix} \alpha_1 \\ \alpha_2 \\ \alpha_3 \\ \alpha_{23} \\ \alpha_{13} \\ \alpha_{12} \end{bmatrix}= \begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \varepsilon_3 \\ \gamma_{23} \\ \gamma_{13} \\ \gamma_{12} \end{bmatrix}_{th} \frac{1}{\Delta T} \tag{1} \end{equation}Hence, the thermally induced strain is
\begin{equation} \boldsymbol{\varepsilon}_{th}=\boldsymbol{\alpha}\Delta T \tag{2} \end{equation}The total strain is the sum of thermal strain and mechanical strain:
\begin{equation} \boldsymbol{\varepsilon}=\mathbf{S}\boldsymbol{\sigma} + \boldsymbol{\alpha}\Delta T \tag{3} \end{equation}Solving for stress:
\begin{equation} \boldsymbol{\sigma} = \mathbf{C}(\boldsymbol{\varepsilon} - \boldsymbol{\alpha}\Delta T ) \tag{4} \end{equation}Hence, the relations for general anisotropic materials are:
\begin{equation} \begin{bmatrix} \sigma_1 \\ \sigma_2 \\ \sigma_3 \\ \tau_{23} \\ \tau_{13} \\ \tau_{12} \end{bmatrix}= \begin{bmatrix} C_{11} & C_{12} & C_{13} & C_{14} & C_{15} & C_{16} \\ C_{12} & C_{22} & C_{23} & C_{24} & C_{25} & C_{26} \\ C_{13} & C_{23} & C_{33} & C_{34} & C_{35} & C_{36} \\ C_{14} & C_{24} & C_{34} & C_{44} & C_{45} & C_{46} \\ C_{15} & C_{25} & C_{35} & C_{45} & C_{55} & C_{56} \\ C_{16} & C_{26} & C_{36} & C_{45} & C_{56} & C_{66} \end{bmatrix} \begin{bmatrix} \begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \varepsilon_3 \\ \gamma_{23} \\ \gamma_{13} \\ \gamma_{12} \end{bmatrix}- \Delta T \begin{bmatrix} \alpha_1 \\ \alpha_2 \\ \alpha_3 \\ \alpha_{23} \\ \alpha_{13} \\ \alpha_{12} \end{bmatrix} \end{bmatrix} \tag{5} \end{equation}Due to the symmetry of orthotropic materials, the coefficients $\alpha_{23},\alpha_{13},\alpha_{12}$ are all zero and the stiffness matrix has only nine independent elastic constants:
\begin{equation} \begin{bmatrix} \sigma_1 \\ \sigma_2 \\ \sigma_3 \\ \tau_{23} \\ \tau_{13} \\ \tau_{12} \end{bmatrix}= \begin{bmatrix} C_{11} & C_{12} & C_{13} & 0 & 0 & 0 \\ C_{12} & C_{22} & C_{23} & 0 & 0 & 0 \\ C_{13} & C_{23} & C_{33} & 0 & 0 & 0 \\ 0 & 0 & 0 & C_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & C_{55} & 0 \\ 0 & 0 & 0 & 0 & 0 & C_{66} \end{bmatrix} \begin{bmatrix} \begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \varepsilon_3 \\ \gamma_{23} \\ \gamma_{13} \\ \gamma_{12} \end{bmatrix}- \Delta T \begin{bmatrix} \alpha_1 \\ \alpha_2 \\ \alpha_3 \\ 0 \\ 0 \\ 0 \end{bmatrix} \end{bmatrix} \tag{6} \end{equation}The temperature is increased by 100$^\circ$C while the total strain is kept zero. Compute the stress for the unidirectional Kevlar-49/Epoxy material read from the Material library.
import matlib
m = matlib.get('Kevlar-49/Epoxy')
display(m)
import numpy as np
from compositelib import S3D, C3D
C=C3D(m)
dT = 100
strain = np.array([0,0,0,0,0,0])
CTE = np.array([ m['a1'], m['a2'], m['a3'], 0, 0, 0 ])
thermalstrain=dT*CTE
mechanicalstrain=strain-thermalstrain
stress=np.dot(C,mechanicalstrain)
print('Thermally induced stresses:')
print(np.array2string(stress, precision=3, suppress_small=True, separator=' ', floatmode='maxprec') )
Tranformation of the coefficients of thermal expansion is obtained through transformation of thermal strain:
\begin{equation} \boldsymbol{\varepsilon}_{th}=\Delta T \boldsymbol{\alpha} \tag{7} \end{equation}Transformed thermal strain: \begin{equation} \boldsymbol{\varepsilon}_{th}'= \mathbf{T}_{\varepsilon z}^{-1} \boldsymbol{\varepsilon}_{th} \tag{8} \end{equation}
Substituting :
\begin{equation} \Delta T \boldsymbol{\alpha}'= \mathbf{T}_{\varepsilon z}^{-1} \Delta T \boldsymbol{\alpha} \tag{9} \end{equation}which yield
\begin{equation} \boldsymbol{\alpha}'= \mathbf{T}_{\varepsilon z}^{-1} \boldsymbol{\alpha} \tag{10} \end{equation}(Material properties from Material library )
import matlib
cfrp=matlib.get('Carbon/Epoxy(a)')
print(cfrp)
import numpy as np
def T3Dez(angle):
a=np.radians(angle)
c=np.cos(a)
s=np.sin(a)
return np.array([[ c*c , s*s , 0.0 , 0.0 , 0.0 , c*s ],
[ s*s , c*c , 0.0 , 0.0 , 0.0 , -c*s ],
[ 0.0 , 0.0 , 1.0 , 0.0 , 0.0 , 0.0 ],
[ 0.0 , 0.0 , 0.0 , c , -s , 0.0 ],
[ 0.0 , 0.0 , 0.0 , s , c , 0.0 ],
[-2*c*s, 2*c*s, 0.0 , 0.0 , 0.0 ,c*c-s*s ]],
float)
alpha123=np.array( [cfrp['a1'], cfrp['a2'], cfrp['a3'], 0, 0, 0 ] )
alphaxyz= np.dot( np.linalg.inv(T3Dez(30)) , alpha123)
for a in alphaxyz:
print('{0:0.4e}'.format(a))