def calc_rot_stiff(wheel): 'Calculate rotational (wind-up) stiffness.' # Create a ModeMatrix model with 24 modes mm = ModeMatrix(wheel, N=24) # Calculate stiffness matrix K = mm.K_rim(tension=True) + mm.K_spk(smeared_spokes=False, tension=True) # Create a unit tangential load at theta=0 F_ext = mm.F_ext(0., np.array([0., 0., 1., 0.])) # Solve for the mode coefficients dm = np.linalg.solve(K, F_ext) return 1e-3*np.pi/180*wheel.rim.radius / mm.rim_def_tan(0., dm)[0]
# Create hub and spokes for each flange diameter wheel.hub = Hub(width=0.025, diameter=d) wheel.lace_cross(n_spokes=36, n_cross=3, diameter=2.0e-3, young_mod=210e9) # Create a ModeMatrix model with 24 modes mm = ModeMatrix(wheel, N=24) # Create a unit tangential force F_ext = mm.F_ext(0., np.array([0., 0., 1., 0.])) # Calculate stiffness matrix K = mm.K_rim(tension=False) + mm.K_spk(smeared_spokes=True, tension=False) # Solve for the mode coefficients dm = np.linalg.solve(K, F_ext) # Calculate the rotational stiffness rot_stiff.append(np.pi/180*wheel.rim.radius/mm.rim_def_tan(0., dm)[0]) plt.plot(diam_flange * 100, rot_stiff, 'ro') plt.xlabel('Flange diameter [cm]') plt.ylabel('Rotationoal stiffness [N / degree]') print('Flange diam [cm] | Rot. stiffness [N/degree]') print('----------------------------------------------------') for d, r in zip(diam_flange, rot_stiff): print('{0:11.1f} | {1:4.3e}'.format(d*100, r)) plt.tight_layout() plt.show()