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]
TOC Next Prev

Disclaimer:This site is designed for educational purposes only. There are most likely errors, mistakes, typos, and poorly crafted statements that are not detected yet... www.ntnu.edu/employees/nils.p.vedvik

Copyright 2024, All rights reserved