Пример #1
0
    def testKweonKim(self):
        """
        (1999) Kim I K, Kang H G, Onohara K. Ultimate strength of composite laminates with free-edge delamination[J]. KSME International Journal, 1999, 13(7): 569-574.
        """
        #mats=[94.1e3,5690,5690,0.3,0.01995,0.33,2190,2110,2110]
        mats = [94.1e3, 5690, 5690, 0.3, 0.3, 0.34834, 2190, 2110, 2110]
        lamS = Compliance(mats)

        plyAngles = np.pi / 180 * np.array(
            [30, 30, -30, -30, 90, 90, -30, -30, 30, 30])
        plyThicks = np.ones_like(plyAngles)

        lam0 = Laminate(lamS, plyAngles, plyThicks)

        #for crack,stiff in zip(([],[4,],[3,],[1,],[3,5],[1,7]),
        #                        (3880,3530,3480,3410,3370,2980)):
        #    print(lam0.DelaminateStiffness(cracks=crack)*1/3+lam0.DelaminateStiffness()*2/3,stiff)

        self.assertAlmostEqual(lam0.DelaminateStiffness(), 3880)
        self.assertAlmostEqual(lam0.DelaminateStiffness([
            4,
        ]), 3530)
        self.assertAlmostEqual(lam0.DelaminateStiffness([
            3,
        ]), 3480)
        self.assertAlmostEqual(lam0.DelaminateStiffness([
            1,
        ]), 3410)
        self.assertAlmostEqual(lam0.DelaminateStiffness([3, 5]), 3370)
        self.assertAlmostEqual(lam0.DelaminateStiffness([1, 7]), 2980)
Пример #2
0
    def testgetitem(self):
        Pipes = [20.0, 2.1, 2.1, 0.21, 0.21, 0.21, 0.85, 0.85, 0.85]
        lamS = Compliance(Pipes, abaqus=True)
        plyAngles = np.pi / 180 * np.array([45, -45, -45, 45])
        plyThicks = 0.125 * np.ones_like(plyAngles)

        lam0 = Laminate(lamS, plyAngles, plyThicks)

        lam1 = lam0[0:2]
        for i in range(2):
            self.assertEqual(lam1.plies[i].angle, plyAngles[i])
            self.assertEqual(lam1.plies[i].thickness, plyThicks[i])
Пример #3
0
    def testSSwang(self):
        """
        Wang S S. Edge Delamination in Angle-Ply Composite Laminates[J]. AIAA journal, 1984, 22(2): 256-264.
        """
        Pipes = [20.0, 2.1, 2.1, 0.21, 0.21, 0.21, 0.85, 0.85, 0.85]
        lamS = Compliance(Pipes, abaqus=True)

        for theta, Exp in zip([15, 30, 45, 60, 75],
                              [8.1076, 4.0506, 0.5740, 0.0138, 0.0036]):
            plyAngles = np.pi * theta / 180 * np.array([1, -1, -1, 1])
            plyThicks = 1.0 * np.ones_like(plyAngles)
            lam0 = Laminate(lamS, plyAngles, plyThicks)
            self.assertAlmostEqual(lam0.ObrienErr(cracks=[0, 2]) / Exp,
                                   2.0,
                                   delta=0.05)
Пример #4
0
    def testUniformAxiaExtentionSolution_Pipes1970(self):
        """
        Pipes, R B. and N. J. Pagano. "Interlaminar Stresses in Composite Materials under Uniform Axial Extension," J Composite Materials, 4:538-548 (1970).
        Fig 3
        """
        Pipes = [20.0, 2.1, 2.1, 0.21, 0.21, 0.21, 0.85, 0.85, 0.85]
        lamS = Compliance(Pipes, abaqus=True)
        plyAngles = np.pi / 180 * np.array([45, -45, -45, 45])
        plyThicks = 0.125 * np.ones_like(plyAngles)

        lam0 = Laminate(lamS, plyAngles, plyThicks)
        sgm, epl = lam0.UniformAxiaExtentionSolution(ex=1.0)

        self.assertAlmostEqual(sgm[0][0], 2.96, places=2)
        self.assertAlmostEqual(sgm[0][5], 1.15, places=2)
        self.assertAlmostEqual(epl[0][0], 1.0, places=2)
Пример #5
0
    def testOBrien(self):
        """
        O'Brien T K. Characterization of delamination onset and growth in a composite laminate,1982.
        """
        OBrienMat = [138e3, 15e3, 15e3, 0.21, 0.21, 0.21, 5.9e3, 5.9e3, 5.9e3]
        lamS = Compliance(OBrienMat, abaqus=True)
        plyAngles = np.pi / 180 * np.array(
            [30, -30, 30, -30, 90, 90, 90, -30, 30, -30, 30])
        plyThicks = 1.51 / 11 * np.ones_like(plyAngles)
        lam0 = Laminate(lamS, plyAngles, plyThicks)

        E0 = lam0.DelaminateStiffness(cracks=[])
        E1 = lam0.DelaminateStiffness(cracks=[3, 6], formula=0)
        E1_1 = lam0.DelaminateStiffness(cracks=[3, 6], formula=3)

        self.assertAlmostEqual(E1 / E0, 0.69, delta=0.004)
        self.assertAlmostEqual(E1_1 / E0, 0.742, delta=0.003)
        self.assertAlmostEqual(
            lam0.ObrienErr(cracks=[3, 6], ex=0.00347, formula=3) * 1000,
            137,
            delta=2)
Пример #6
0
    def testQuasiIsotropic(self):
        """
        test isotropic laminate Stiffness
        """
        for mat in ([
                137.78e3, 8.91e3, 8.91e3, 0.3, 0.3, 0.48, 4.41e3, 4.41e3,
                3.01e3
        ], [94.1e3, 5690, 5690, 0.3, 0.3, 0.34834, 2190, 2110, 2110]):
            E11, E22, nu12, G12 = mat[0], mat[1], mat[3], mat[6]
            q = 1. / (1 - nu12**2 / E11 * E22)
            Q11, Q12, Q22, Q66 = q * E11, q * E22 * nu12, q * E22, G12
            nu = (Q11 + Q22 - 4 * Q66 + 6 * Q12) / (3 * Q11 + 3 * Q22 +
                                                    2 * Q12 + 4 * Q66)
            Ex = (Q11 + Q22 - 2 * Q12 + 4 * Q66) * (1 + nu) * 2 / 8

            lamS = Compliance(mat, abaqus=True)
            for k in range(3, 8):
                plyAngles = np.array([np.pi / k * i for i in range(k)])
                plyAngles = np.concatenate(
                    (plyAngles, np.flip(plyAngles, axis=0)))
                plyThicks = np.ones_like(plyAngles)
                lam0 = Laminate(lamS, plyAngles, plyThicks=plyThicks)
                self.assertAlmostEqual(lam0.DelaminateStiffness(), Ex)
Пример #7
0
#! -*- Coding: UTF-8 -*-
import sys
sys.path.append('E:/1730895/Work/')

from Abaqus import Laminate, Compliance
from Abaqus.Materials import materials
import numpy as np

T300_7901 = Compliance(materials['T300-7901'][0], abaqus=True)
plyAngles = [0, 30, -30, 60, -60, 90, 90, -60, 60, -30, 30, 0]
lam = Laminate(T300_7901, [x / 180.0 * np.pi for x in plyAngles], t=0.125)

print(lam.DelaminateStiffness(), lam.DelaminateStiffness(cracks=[
    5,
]))

CLTstf, Cmps = lam.CLTStiffness(isPlaneStress=False)
for cmp in Cmps:
    print(np.linalg.inv(cmp)[:, 0])

np.set_printoptions(linewidth=np.inf)
formula = 0
if sys.argv[1:]:
    formula = int(sys.argv[1])
Pipes = [20.0, 2.1, 2.1, 0.21, 0.21, 0.21, 0.85, 0.85, 0.85]

T300_7901 = [
    136999.70000000, 8570.38221423, 8570.38221423, 0.26355000, 0.26355000,
    0.33647467, 4494.49736748, 4494.49736748, 3206.33918429
]