# Example 9 page 73 from "Basic Mechanics of Laminated Composite Plates" # A.T. Nettles # NASA Reference Publication 1351


In [1]:
import pyPLY

AS4_3501_6 = pyPLY.CompositeMaterial()
AS4_3501_6.define("AS4_3501_6", "imperial", E11=20010000.0, E22=1301000.0, G12=1001000.0, niu12=0.3, thk=0.005,
             Sigma_ut0 = 616.0, Sigma_uc0 = 355.0, Sigma_ut90 = 42.0, Sigma_uc90 = 105.0, Tau_u = 50.0,
             alpha_11 = -0.072e-6, alpha_22 = 32.4e-6, beta_11 = 0.01, beta_22 = 0.35)

layer1 = pyPLY.Lamina()
layer2 = pyPLY.Lamina()
layer3 = pyPLY.Lamina()

layer1.define("Layer_1", 1, 45)
layer2.define("Layer_2", 1, 0)
layer3.define("Layer_3", 1, 90)

layer1.update()
layer2.update()
layer3.update()

laminate1 = pyPLY.Laminate()
laminate1.add_Lamina(layer1)
laminate1.add_Lamina(layer2)
laminate1.add_Lamina(layer3)

laminate1.update()

load1 = pyPLY.Loading()
load1.define_Load(0,0,0,0,0,0,-280,0)
load1.apply_To(laminate1)

from numpy import set_printoptions
set_printoptions(suppress=True)
print "A=", laminate1.A


A= [[ 139964.22391445   26698.0125306    23523.9018575 ]
 [  26698.0125306   139964.22391445   23523.9018575 ]
 [  23523.9018575    23523.9018575    35824.05284596]]

In [2]:
print "B=", laminate1.B


B= [[-131.19375435 -104.04526423 -117.61950929]
 [-104.04526423  339.2842828  -117.61950929]
 [-117.61950929 -117.61950929 -104.04526423]]

In [3]:
print "D=", laminate1.D


D= [[ 1.27472533  0.67399651  0.63710568]
 [ 0.67399651  3.62711552  0.63710568]
 [ 0.63710568  0.63710568  0.84510976]]

In [4]:
print "load1.thermal_load=", load1.thermal_load


load1.thermal_load= [[-112.65071063]
 [-112.65071063]
 [  21.77090293]
 [  -0.10885451]
 [   0.10885451]
 [  -0.10885451]]

In [5]:
print "load1.epsilon_K=", load1.epsilon_K


load1.epsilon_K= [[-0.00096564]
 [-0.00278451]
 [ 0.00241151]
 [-0.13569482]
 [ 0.47301349]
 [-0.60814219]]

In [6]:
print "     layerNo", "epsx", " epsy", " gammaxy"
noPly = len(laminate1.ply_list)
for i in range (0, noPly):
    strain = load1.list_ply_strains_xy[i*3 + 0]
    print "bottom  ", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])
    strain = load1.list_ply_strains_xy[i*3 + 1]
    print "centroid", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])
    strain = load1.list_ply_strains_xy[i*3 + 2]
    print "top     ", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])


     layerNo epsx  epsy  gammaxy
bottom   1 +5.207e-05 -0.006332 +0.006973
centroid 1 -0.0002872 -0.00515 +0.005452
top      1 -0.0006264 -0.003967 +0.003932
bottom   2 -0.0006264 -0.003967 +0.003932
centroid 2 -0.0009656 -0.002785 +0.002412
top      2 -0.001305 -0.001602 +0.0008912
bottom   3 -0.001305 -0.001602 +0.0008912
centroid 3 -0.001644 -0.0004194 -0.0006292
top      3 -0.001983 +0.0007631 -0.00215

In [7]:
print "     layerNo", "sigmax", "    sigmay", "    sigmaxy"
for i in range (0, noPly):
    stress = load1.list_ply_stresses_xy[i*3 + 0]
    print "bottom  ", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])
    stress = load1.list_ply_stresses_xy[i*3 + 1]
    print "centroid", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])
    stress = load1.list_ply_stresses_xy[i*3 + 2]
    print "top     ", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])


     layerNo sigmax     sigmay     sigmaxy
bottom   1 +1.182e+04 -964.3 +2098.0
centroid 1 +7825.0 -1909.0 -1784.0
top      1 +3834.0 -2854.0 -5666.0
bottom   2 -1.101e+04 +6427.0 +3936.0
centroid 2 -1.737e+04 +7841.0 +2414.0
top      2 -2.374e+04 +9255.0 +892.0
bottom   3 +9528.0 -2.96e+04 +892.0
centroid 3 +9548.0 -5932.0 -629.8
top      3 +9568.0 +1.774e+04 -2152.0

In [8]:
print "     layerNo", "eps11", "      eps22", "    gamma12"
for i in range (0, noPly):
    strain = load1.list_ply_strains_12[i*3 + 0]
    print "bottom  ", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])
    strain = load1.list_ply_strains_12[i*3 + 1]
    print "centroid", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])
    strain = load1.list_ply_strains_12[i*3 + 2]
    print "top     ", i+1, '{0:+.4}'.format(strain[0,0]), '{0:+.4}'.format(strain[1,0]), '{0:+.4}'.format(strain[2,0])


     layerNo eps11       eps22     gamma12
bottom   1 +0.0003463 -0.006626 -0.006384
centroid 1 +7.738e-06 -0.005444 -0.004862
top      1 -0.0003308 -0.004263 -0.003341
bottom   2 -0.0006264 -0.003967 +0.003932
centroid 2 -0.0009656 -0.002785 +0.002412
top      2 -0.001305 -0.001602 +0.0008912
bottom   3 -0.001602 -0.001305 -0.0008912
centroid 3 -0.0004194 -0.001644 +0.0006292
top      3 +0.0007631 -0.001983 +0.00215

In [9]:
print "     layerNo", "sigma11", "      sigma22", "    tau12"
for i in range (0, noPly):
    stress = load1.list_ply_stresses_12[i*3 + 0]
    print "bottom  ", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4e}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])
    stress = load1.list_ply_stresses_12[i*3 + 1]
    print "centroid", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4e}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])
    stress = load1.list_ply_stresses_12[i*3 + 2]
    print "top     ", i+1, '{0:+.4}'.format(stress[0,0]), '{0:+.4e}'.format(stress[1,0]), '{0:+.4}'.format(stress[2,0])
    print


     layerNo sigma11       sigma22     tau12
bottom   1 +7524.0 +3.3286e+03 -6391.0
centroid 1 +1174.0 +4.7423e+03 -4867.0
top      1 -5176.0 +6.1560e+03 -3344.0

bottom   2 -1.101e+04 +6.4268e+03 +3936.0
centroid 2 -1.737e+04 +7.8411e+03 +2414.0
top      2 -2.374e+04 +9.2555e+03 +892.0

bottom   3 -2.96e+04 +9.5277e+03 -892.0
centroid 3 -5932.0 +9.5480e+03 +629.8
top      3 +1.774e+04 +9.5683e+03 +2152.0