def getKinematics(self, dphi, elemdat): kin = Kinematics(self.rank, self.nstr) elstate = elemdat.state elstate0 = elstate - elemdat.Dstate kin.F = eye(self.rank) kin.F0 = eye(self.rank) for i in range(len(dphi)): for j in range(self.rank): for k in range(self.rank): kin.F[j, k] += dphi[i, k] * elstate[self.rank * i + j] kin.F0[j, k] += dphi[i, k] * elstate0[self.rank * i + j] kin.E = 0.5 * (dot(kin.F.transpose(), kin.F) - eye(self.rank)) kin.strain[0] = kin.E[0, 0] kin.strain[1] = kin.E[1, 1] if self.rank == 2: kin.strain[2] = 2.0 * kin.E[0, 1] elif self.rank == 3: 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
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