On transverse isotropy

From Transformations, the transformed stiffness matrix for rotation about the z-axis is

\begin{equation} \mathbf{C{'}} = \mathbf{T}_{\sigma z}^{-1}\mathbf{C} \mathbf{T}_{\epsilon z} \end{equation}

The relevant functions are:

In [1]:
from compositelib import C3D, C3Dtz

Consider some orthotropic material with the engineering constants:

In [2]:
m1  = {'E1':50000, 'E2':20000, 'E3':10000,
       'v12':0.3,    'v13':0.4,  'v23':0.5, 'G12':5000,   'G13':4000, 'G23':3000 }

The stiffness matrix for the material is:

In [3]:
C=C3D(m1)

import numpy as np
print(np.array2string(C, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[55875.  10217.   7024.      0.      0.      0.]
 [10217.  24725.   6999.      0.      0.      0.]
 [ 7024.   6999.  12312.      0.      0.      0.]
 [    0.      0.      0.   3000.      0.      0.]
 [    0.      0.      0.      0.   4000.      0.]
 [    0.      0.      0.      0.      0.   5000.]]

What if we take the average of all transformed stiffness matrices obtained by rotation about the z-axis from 0 to 359 degrees?

In [4]:
Cav=np.zeros((6,6))

count=0
for a in range(0,360): # not including 360
    Cav=Cav+C3Dtz(C,a)
    count=count+1
Cav=Cav/count
print(np.array2string(Cav, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.     -0.]
 [15238.  35279.   7011.      0.      0.      0.]
 [ 7011.   7011.  12312.      0.      0.      0.]
 [    0.      0.      0.   3500.     -0.      0.]
 [    0.      0.      0.     -0.   3500.      0.]
 [   -0.     -0.      0.      0.      0.  10021.]]

This stiffness matrix represents a material where the 1-2 plane is a plane of isotropy, since any random rotation of the stiffness matrix will result in the same matrix:

In [5]:
CavRandom=C3Dtz(Cav,12.34) # 12.34 represent a 'random' number here...

print(np.array2string(CavRandom, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.     -0.]
 [15238.  35279.   7011.      0.      0.      0.]
 [ 7011.   7011.  12312.      0.      0.      0.]
 [    0.      0.      0.   3500.      0.      0.]
 [    0.      0.      0.      0.   3500.      0.]
 [   -0.      0.      0.      0.      0.  10021.]]

Furthermore, we find that the following relation is true (why?):

\begin{equation} C_{66}= \frac{ (C_{11}-C_{12})}{2} \end{equation}
In [6]:
print(   (Cav[0,0]-Cav[0,1])/2   )
10020.753512132807
In [7]:
print(  Cav[5,5]   )
10020.753512132822

Try with angles from 0 to 360 in step of 10:

In [8]:
Cav=np.zeros((6,6))

count=0
for a in range(0,360,10): # 0, 10,...,350
    Cav=Cav+C3Dtz(C,a)
    count=count+1
Cav=Cav/count
print(np.array2string(Cav, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.      0.]
 [15238.  35279.   7011.      0.      0.      0.]
 [ 7011.   7011.  12312.      0.      0.     -0.]
 [    0.      0.      0.   3500.      0.      0.]
 [    0.      0.      0.     -0.   3500.      0.]
 [    0.     -0.     -0.      0.      0.  10021.]]

Step equal to 30?:

In [9]:
Cav=np.zeros((6,6))

count=0
for a in range(0,360,10): # 0, 10,...,350
    Cav=Cav+C3Dtz(C,a)
    count=count+1
Cav=Cav/count
print(np.array2string(Cav, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.      0.]
 [15238.  35279.   7011.      0.      0.      0.]
 [ 7011.   7011.  12312.      0.      0.     -0.]
 [    0.      0.      0.   3500.      0.      0.]
 [    0.      0.      0.     -0.   3500.      0.]
 [    0.     -0.     -0.      0.      0.  10021.]]

Just the angles 0, 45, 90 and 135:

In [10]:
Cav=np.zeros((6,6))

count=0
for a in (0,45,90,135):
    Cav=Cav+C3Dtz(C,a)
    count=count+1
Cav=Cav/count
print(np.array2string(Cav, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.      0.]
 [15238.  35279.   7011.      0.      0.      0.]
 [ 7011.   7011.  12312.      0.      0.      0.]
 [    0.      0.      0.   3500.     -0.      0.]
 [    0.      0.      0.      0.   3500.      0.]
 [    0.     -0.     -0.      0.      0.  10021.]]

And finally, the angles 0, 60 and 120:

In [11]:
Cav=np.zeros((6,6))

count=0
for a in (0,60,120):
    Cav=Cav+C3Dtz(C,a)
    count=count+1
Cav=Cav/count
print(np.array2string(Cav, precision=0, suppress_small=True, separator='  ', floatmode='maxprec') )
[[35279.  15238.   7011.      0.      0.      0.]
 [15238.  35279.   7011.      0.      0.     -0.]
 [ 7011.   7011.  12312.      0.      0.     -0.]
 [    0.      0.      0.   3500.      0.      0.]
 [    0.      0.      0.      0.   3500.      0.]
 [    0.      0.      0.      0.      0.  10021.]]
This case study serves as the background for an exercise on quazi-isotropic laminates. Therefore, no further comments.
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