Beispiel #1
0
def calc_rad_stiff(wheel):
    'Calculate radial 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 radial load pointing radially inwards at theta=0
    F_ext = mm.F_ext(0., np.array([0., 1., 0., 0.]))

    # Solve for the mode coefficients
    dm = np.linalg.solve(K, F_ext)

    return 1e-6 / mm.rim_def_rad(0., dm)[0]
Beispiel #2
0
# Create a ModeMatrix model with 24 modes
mm = ModeMatrix(wheel, N=24)

# Create a 500 Newton pointing radially inwards at theta=0
F_ext = mm.F_ext(0., np.array([0., 500., 0., 0.]))

# Calculate stiffness matrix
K = mm.K_rim(tension=False) + mm.K_spk(smeared_spokes=False, tension=False)

# Solve for the mode coefficients
dm = np.linalg.solve(K, F_ext)

# Get radial deflection
theta = np.linspace(-np.pi, np.pi, 100)
rad_def = mm.rim_def_rad(theta, dm)

# Calculate change in spoke tensions
dT = [
    -s.EA / s.length * np.dot(s.n,
                              mm.B_theta(s.rim_pt[1], comps=[0, 1, 2]).dot(dm))
    for s in wheel.spokes
]

# Plot radial deformation and tension change
fig, ax = plt.subplots(nrows=2, figsize=(5, 5))

ax[0].plot(theta, 1000. * rad_def)
ax[0].set_xlim(-np.pi, np.pi)
ax[0].set_ylabel('Radial deflection [mm]')
# Create a ModeMatrix model with 24 modes
mm = ModeMatrix(wheel, N=24)

# Create a 500 Newton pointing radially inwards at theta=0
F_ext = mm.F_ext(0., np.array([0., 500., 0., 0.]))

# Calculate stiffness matrix
K = mm.K_rim(tension=False) + mm.K_spk(smeared_spokes=False, tension=False)

# Solve for the mode coefficients
dm = np.linalg.solve(K, F_ext)

# Get radial deflection
theta = np.linspace(-np.pi, np.pi, 100)
rad_def = mm.rim_def_rad(theta, dm)

# Calculate change in spoke tensions
dT = [-s.EA/s.length *
      np.dot(s.n,
             mm.B_theta(s.rim_pt[1], comps=[0, 1, 2]).dot(dm))
      for s in wheel.spokes]


# Plot radial deformation and tension change
fig, ax = plt.subplots(nrows=2, figsize=(5, 5))

ax[0].plot(theta, 1000.*rad_def)
ax[0].set_xlim(-np.pi, np.pi)
ax[0].set_ylabel('Radial deflection [mm]')