MCPcopy Create free account
hub / github.com/Apress/python-for-matlab-development / main

Function main

code/rod_fem/pure_python/rod.py:91–123  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

89 return 0.5 * self.mass * np.array([1.0, 1.0, 1.0, 1.0])
90
91def 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))
124if __name__ == "__main__": main()

Callers 1

rod.pyFile · 0.70

Calls 4

NodeClass · 0.70
Rod_ElemClass · 0.70
stiffness_matrixMethod · 0.45
mass_matrixMethod · 0.45

Tested by

no test coverage detected