TMM4175 Polymer Composites

Home About Python Links Table of Contents

CASE STUDY: General transformation

Problem statement:

A general transformation matrix of stresses can be obtained by multiplication of the transformation matrices about the individual axes. For example, $\mathbf{T}_{\sigma} = \mathbf{T}_{\sigma z}(\alpha_z) \mathbf{T}_{\sigma y}(\alpha_y) \mathbf{T}_{\sigma x}(\alpha_x)$ is one of six possible options.

Show that the order of transformation is important.

Solution

From Transformations:

In [1]:
import numpy as np

# Stress transformation

# About x-axis
def T3Dsx(angle):
    a=np.radians(angle)
    c,s=np.cos(a),np.sin(a)
    return    np.array([[ 1.0 ,  0.0 ,  0.0 ,  0.0   , 0.0  , 0.0 ],
                        [ 0.0 ,  c*c ,  s*s ,  2*c*s , 0.0  , 0.0 ],
                        [ 0.0 ,  s*s ,  c*c , -2*c*s , 0.0  , 0.0 ],
                        [ 0.0 , -c*s ,  c*s ,c*c-s*s , 0.0  , 0.0 ],
                        [ 0.0 ,  0.0 ,  0.0 ,    0.0 ,   c  ,  -s ],
                        [ 0.0 ,  0.0 ,  0.0 ,    0.0 ,   s  ,   c ]],
                        float)


# About y-axis
def T3Dsy(angle): 
    a=np.radians(angle)
    c,s=np.cos(a),np.sin(a)
    return    np.array([[ c*c ,  0.0 ,  s*s , 0.0 , -2*c*s  , 0.0 ],
                        [ 0.0 ,  1.0 ,  0.0 , 0.0 ,    0.0  , 0.0 ],
                        [ s*s ,  0.0 ,  c*c , 0.0 ,  2*c*s  , 0.0 ],
                        [ 0.0 ,  0.0 ,  0.0 ,   c ,    0.0  ,   s ],
                        [ c*s ,  0.0 , -c*s , 0.0 ,c*c-s*s  , 0.0 ],
                        [ 0.0 ,  0.0 ,  0.0 ,  -s ,    0.0  ,   c ]],
                        float)

# About z-axis
def T3Dsz(angle):
    a=np.radians(angle)
    c,s=np.cos(a),np.sin(a)
    return    np.array([[ c*c ,  s*s ,  0.0 , 0.0 , 0.0  ,  2*c*s ],
                        [ s*s ,  c*c ,  0.0 , 0.0 , 0.0  , -2*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 ],
                        [-c*s ,  c*s ,  0.0 , 0.0 , 0.0  ,c*c-s*s ]],
                        float)

Parameters:

  • ax: rotation about the x-axis
  • ay: rotation about the y-axis
  • az: rotation about the z-axis
In [2]:
# Some 'random' angles:
ax,ay,az = 43,-15,64

# The possible combinations of order:
Ts_1 = np.dot( T3Dsz(az) , np.dot(T3Dsy(ay) , T3Dsx(ax)))
Ts_2=  np.dot( T3Dsx(ax) , np.dot(T3Dsy(ay) , T3Dsz(az)))
Ts_3=  np.dot( T3Dsx(ax) , np.dot(T3Dsz(az) , T3Dsy(ay)))
Ts_4=  np.dot( T3Dsy(ay) , np.dot(T3Dsx(ax) , T3Dsz(az)))
Ts_5=  np.dot( T3Dsy(ay) , np.dot(T3Dsz(az) , T3Dsx(ax)))
Ts_6=  np.dot( T3Dsz(az) , np.dot(T3Dsx(ax) , T3Dsy(ay)))

# Some 'random' stress state:
sxyz=np.array([100, -40, 30, 10, -15, 25])

# Results:
print( np.round( np.dot(Ts_1,sxyz),2) )
print( np.round( np.dot(Ts_2,sxyz),2) )
print( np.round( np.dot(Ts_3,sxyz),2) )
print( np.round( np.dot(Ts_4,sxyz),2) )
print( np.round( np.dot(Ts_5,sxyz),2) )
print( np.round( np.dot(Ts_6,sxyz),2) )
[ 30.52  50.47   9.01  61.26   6.07 -40.38]
[  9.38  76.65   3.97 -10.58  49.13 -41.04]
[  5.63  70.92  13.45   2.01  37.89 -56.03]
[ 32.65  60.34  -2.98   2.86  47.31 -50.95]
[ 34.78  74.92 -19.71  50.63   7.05 -31.32]
[ 17.04  72.18   0.78  54.5   19.28 -33.28]

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.