Exemple #1
0
class MaterialTest(unittest.TestCase):
    def setUp(self):
        mu, kappa, rho = sp.rand(3)
        A10 = mu / 2
        A01 = 0
        F = sp.rand(3, 3)
        self.E = 1 / 2 * (F.T @ F - sp.eye(3))
        self.mooney = MooneyRivlin(A10, A01, kappa, rho)
        self.neo = NeoHookean(mu, kappa, rho)

    def test_Neo_vs_Mooney_S(self):
        S_mooney, Sv_mooney, C_mooney = self.mooney.S_Sv_and_C(self.E)
        S_neo, Sv_neo, C_neo = self.neo.S_Sv_and_C(self.E)
        np.testing.assert_allclose(S_mooney, S_neo)

    def test_Neo_vs_Mooney_Sv(self):
        S_mooney, Sv_mooney, C_mooney = self.mooney.S_Sv_and_C(self.E)
        S_neo, Sv_neo, C_neo = self.neo.S_Sv_and_C(self.E)
        np.testing.assert_allclose(Sv_mooney, Sv_neo)

    def test_Neo_vs_Mooney_C(self):
        S_mooney, Sv_mooney, C_mooney = self.mooney.S_Sv_and_C(self.E)
        S_neo, Sv_neo, C_neo = self.neo.S_Sv_and_C(self.E)
        np.testing.assert_allclose(C_mooney, C_neo)
Exemple #2
0
class MaterialTest2dPlaneStress(unittest.TestCase):
    def setUp(self):
        F = sp.zeros((3, 3))
        F[:2, :2] = sp.rand(2, 2)
        F[2, 2] = 1
        self.E = 1 / 2 * (F.T @ F - sp.eye(3))
        A10, A01, kappa, rho = sp.rand(4)
        mu = A10 * 2
        self.mooney = MooneyRivlin(A10, A01, kappa, rho, plane_stress=False)
        self.neo = NeoHookean(mu, kappa, rho, plane_stress=False)

    def test_mooney_2d(self):
        E = self.E
        S, S_v, C = self.mooney.S_Sv_and_C(E)
        S2d, S_v2d, C2d = self.mooney.S_Sv_and_C_2d(E[:2, :2])
        np.testing.assert_allclose(S[:2, :2], S2d)
        np.testing.assert_allclose(C[np.ix_([0, 1, -1], [0, 1, -1])], C2d)

    def test_neo_2d(self):
        E = self.E
        S, S_v, C = self.neo.S_Sv_and_C(E)
        S2d, S_v2d, C2d = self.neo.S_Sv_and_C_2d(E[:2, :2])
        np.testing.assert_allclose(S[:2, :2], S2d)
        np.testing.assert_allclose(C[np.ix_([0, 1, -1], [0, 1, -1])], C2d)