def calc_tor_stiff(wheel, theta=0., N=20, smeared_spokes=True, tension=True, buckling=True, coupling=True, r0=False): 'Calculate torsional (wind-up) stiffness in [N/rad].' mm = ModeMatrix(wheel, N=N) F_ext = mm.F_ext(theta, [0., 0., 1., 0.]) d = np.zeros(F_ext.shape) K = (mm.K_rim(tension=buckling, r0=r0) + mm.K_spk(tension=tension, smeared_spokes=smeared_spokes)) if coupling: d = np.linalg.solve(K, F_ext) else: ix_uc = mm.get_ix_uncoupled(dim='radial') K = mm.get_K_uncoupled(K=K, dim='radial') d[ix_uc] = np.linalg.solve(K, F_ext[ix_uc]) return wheel.rim.radius / mm.B_theta(theta).dot(d)[2]
def calc_lat_stiff(wheel, theta=0., N=20, smeared_spokes=True, tension=True, buckling=True, coupling=False, r0=False): 'Calculate lateral stiffness.' mm = ModeMatrix(wheel, N=N) F_ext = mm.F_ext(0., [1., 0., 0., 0.]) d = np.zeros(F_ext.shape) K = (mm.K_rim(tension=buckling, r0=r0) + mm.K_spk(tension=tension, smeared_spokes=smeared_spokes)) if coupling: d = np.linalg.solve(K, F_ext) else: ix_uc = mm.get_ix_uncoupled(dim='lateral') K = mm.get_K_uncoupled(K=K, dim='lateral') d[ix_uc] = np.linalg.solve(K, F_ext[ix_uc]) return 1. / mm.B_theta(0.).dot(d)[0]