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


In [2]:
import pyPLY

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 = 4800)

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 [3]:
load1 = pyPLY.Loading()
load1.define_Load(0,0,0,0,0,0,-155,0)
load1.apply_To(laminate1)

Results:

Thermal stresses and moments:


In [9]:
print "load1=\n", load1.thermal_load


load1=
[[ -4.05388361e+03]
 [ -7.35834658e+03]
 [  2.86174887e+03]
 [ -6.19586806e-01]
 [  6.19586806e-01]
 [ -3.57718609e-01]]

Midplane strains and curvatures:


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


epsilon_K=
[[ -2.84793406e-04]
 [ -1.42446749e-03]
 [  9.08348871e-04]
 [ -2.15948353e+00]
 [  1.08932045e+01]
 [ -9.44080281e+00]]

Ply strains relative to the x-y coordinate system:


In [11]:
print "     plyNo", "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)


     plyNo epsx  epsy  gammaxy
bottom   1 +120.1 -3467.0 +2678.0
centroid 1 -14.86 -2786.0 +2088.0
top      1 -149.8 -2105.0 +1498.0

bottom   2 -149.8 -2105.0 +1498.0
centroid 2 -284.8 -1424.0 +908.3
top      2 -419.8 -743.6 +318.3

bottom   3 -419.8 -743.6 +318.3
centroid 3 -554.7 -62.82 -271.8
top      3 -689.7 +618.0 -861.8

Ply stresses relative to the x-y coordinate system:


In [13]:
print "     plyNo", "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)


     plyNo sigmax     sigmay     tauxy
bottom   1 +53.49 -5.16 +4.841
centroid 1 +28.3 -2.844 -8.276
top      1 +3.119 -0.5288 -21.39
bottom   2 -43.17 +20.04 +19.48
centroid 2 -64.19 +26.47 +11.81
top      2 -85.2 +32.91 +4.138
bottom   3 +35.19 -139.6 +4.138
centroid 3 +35.89 -23.63 -3.533
top      3 +36.58 +92.32 -11.2

In [ ]: