Example Problem 7 page 328 from Mark. E. Tuttle's "Structural Analysis of Polymeric Composite Materials", first edition.


In [9]:
import pyPLY

# see separate examples for detailed explanations about the paramenters.

GraphiteEpoxy = pyPLY.CompositeMaterial()
GraphiteEpoxy.define("GraphiteEpoxy", "metric", E11=170e9, E22=10e9, G12=13e9, niu12=0.3, thk=0.125e-3,
             Sigma_ut0 = 1500e6, Sigma_uc0 = 1200e6, Sigma_ut90 = 50e6, Sigma_uc90 = 100e6, Tau_u = 75e6,
             alpha_11 = -0.9e-6, alpha_22 = 27.0e-6, beta_11 = 150e-6, beta_22 = 4800e-6)

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

layer1.define("Layer_1", 1, 30)
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()

Apply a change in temperature of $\Delta T=-155.0^\circ C.$


In [2]:
load1 = pyPLY.Loading()
load1.define_Load(0,0,0,0,0,0,-155,0.5)
load1.apply_To(laminate1)

Results:


In [3]:
print "load1=\n", load1.moisture_load


load1=
[[  8.19259129e+03]
 [  8.46120084e+03]
 [ -2.32622694e+02]
 [  5.03642907e-02]
 [ -5.03642907e-02]
 [  2.90778368e-02]]

Midplane strains and curvatures:


In [7]:
print "epsilon_K=\n", load1.epsilon_K


epsilon_K=
[[  1.83213284e-05]
 [ -5.08624754e-04]
 [  4.19989263e-04]
 [ -9.98470880e-01]
 [  5.03664294e+00]
 [ -4.36510237e+00]]

Ply strains relative to the x-y coordinate system:


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


     layerNo epsx  epsy  gammaxy
bottom   1 +205.5 -1453.0 +1238.0
centroid 1 +143.1 -1138.0 +965.6
top      1 +80.73 -823.4 +692.8
bottom   2 +80.73 -823.4 +692.8
centroid 2 +18.32 -508.6 +420.0
top      2 -44.08 -193.8 +147.2
bottom   3 -44.08 -193.8 +147.2
centroid 3 -106.5 +121.0 -125.6
top      3 -168.9 +435.7 -398.5

Ply stresses relative to the x-y coordinate system:


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


     layerNo sigmax     sigmay     tauxy
bottom   1 +24.73 -2.386 +2.238
centroid 1 +13.09 -1.315 -3.826
top      1 +1.442 -0.2445 -9.891
bottom   2 -19.96 +9.264 +9.007
centroid 2 -29.68 +12.24 +5.46
top      2 -39.39 +15.22 +1.913
bottom   3 +16.27 -64.54 +1.913
centroid 3 +16.59 -10.92 -1.633
top      3 +16.91 +42.69 -5.18

In [ ]: