()
| 89 | return 0.5 * self.mass * np.array([1.0, 1.0, 1.0, 1.0]) |
| 90 | |
| 91 | def main(): |
| 92 | p_a = Node('A', 1.0, 1.0) |
| 93 | p_b = Node('B', 2.0, 1.0) |
| 94 | p_c = Node('C', 1.0, 2.0) |
| 95 | |
| 96 | E = 10.0e6 # psi |
| 97 | R = 0.1 |
| 98 | rho = 0.1 |
| 99 | Rods = [] |
| 100 | Rods.append( Rod_Elem('AB', p_a, p_b, R, E, rho) ) |
| 101 | Rods.append( Rod_Elem('BC', p_b, p_c, R, E, rho) ) |
| 102 | Rods.append( Rod_Elem('CA', p_c, p_a, R, E, rho) ) |
| 103 | |
| 104 | ind_ab = np.array([0, 1, 2, 3 ], dtype=np.int) |
| 105 | ind_bc = np.array([ 2, 3, 4, 5], dtype=np.int) |
| 106 | ind_ca = np.array([0, 1, 4, 5], dtype=np.int) |
| 107 | |
| 108 | global_K = np.zeros((6,6)) |
| 109 | global_M = np.zeros(6) |
| 110 | |
| 111 | global_K[np.ix_(ind_ab, ind_ab)] += Rods[0].stiffness_matrix() |
| 112 | global_K[np.ix_(ind_bc, ind_bc)] += Rods[1].stiffness_matrix() |
| 113 | global_K[np.ix_(ind_ca, ind_ca)] += Rods[2].stiffness_matrix() |
| 114 | |
| 115 | global_M[np.ix_(ind_ab)] += Rods[0].mass_matrix() |
| 116 | global_M[np.ix_(ind_bc)] += Rods[1].mass_matrix() |
| 117 | global_M[np.ix_(ind_ca)] += Rods[2].mass_matrix() |
| 118 | |
| 119 | K0 = E * np.pi * R**2 |
| 120 | print(global_K/K0) |
| 121 | print(global_M) |
| 122 | print('total mass = ', sum(_.mass for _ in Rods)) |
| 123 | print('total length = ', sum(_.length for _ in Rods)) |
| 124 | if __name__ == "__main__": main() |
no test coverage detected