Exemplo n.º 1
0
    def getKinematics(self, dphi, h, elemdat, r):

        kin = Kinematics(3, 6)

        kin.F = eye(3)
        kin.F0 = eye(3)

        elstate = elemdat.state
        elstate0 = elstate - elemdat.Dstate

        invr = 1.0 / r

        for i, (dp, p) in enumerate(zip(dphi, h)):
            kin.F[0, 0] += dp[0] * elstate[2 * i]
            kin.F[0, 1] += dp[1] * elstate[2 * i]
            kin.F[1, 0] += dp[0] * elstate[2 * i + 1]
            kin.F[1, 1] += dp[1] * elstate[2 * i + 1]
            kin.F[2, 2] += p * elstate[2 * i] * invr

            kin.F0[0, 0] += dp[0] * elstate0[2 * i]
            kin.F0[0, 1] += dp[1] * elstate0[2 * i]
            kin.F0[1, 0] += dp[0] * elstate0[2 * i + 1]
            kin.F0[1, 1] += dp[1] * elstate0[2 * i + 1]
            kin.F0[2, 2] += p * elstate0[2 * i] * invr

        kin.E = 0.5 * (dot(kin.F.transpose(), kin.F) - eye(3))
        kin.E0 = 0.5 * (dot(kin.F0.transpose(), kin.F0) - eye(3))

        dE = kin.E - kin.E0

        kin.strain[0] = kin.E[0, 0]
        kin.strain[1] = kin.E[1, 1]
        kin.strain[2] = kin.E[2, 2]
        kin.strain[3] = 2.0 * kin.E[1, 2]
        kin.strain[4] = 2.0 * kin.E[0, 2]
        kin.strain[5] = 2.0 * kin.E[0, 1]

        return kin