dashdotrobot / bike-wheel-calc

Stress analysis of bicycle wheels implemented in Python using NumPy
MIT License
14 stars 1 forks source link

Geometric stiffness is overestimated for calculating moments #44

Open dashdotrobot opened 4 years ago

dashdotrobot commented 4 years ago

The current implementation overestimates the effective structural stiffness when the majority (or all) of the stiffness comes from tension stiffness. The current implementation uses T/L (1 - nn) as the geometric stiffness. The effective torsional stiffness of a planar wheel with radial spokes should be

k_tor = R^2 ns T_0*(1/L - 1/R)

The current implementation gives (approximately)

k_tor = R^2 n_s T_0*(1/L)

The moment about the wheel center exerted by a spoke is

m = (r_n) x (Tn)

The linearized moment increment has three terms:

dm_0 = r_n x (dT n_0 + T_0 dn) + dr_n x (T_0 n_0)

The first two terms are the original moment crossed with the force increment (given by the force-stiffness matrix). The third term is the spoke force in the prestressed configuration crossed with the increment in the moment arm. The increment in moment arm is exactly equal to du_n.

The solution is the following:

  1. Derive the linearized force increment and moment increment (about wheel center)
  2. Find an equivalent force/couple system with force increment located at S.
  3. Calculate strain energy from dW = f_sdu_s + m_sd(omega)_s
  4. As before, neglect terms in omega_s which depend on derivatives of u. (This should be more rigorously justified).
dashdotrobot commented 4 years ago

Gradient terms don’t need to be neglected in the Mode Matrix formulation. It is just as easy to include them by defining a shape function matrix B_omega.

This should have been obvious, but the matrix of a quadratic form is not unique. Given a non symmetric matrix K, the quadratic form q*K*q is equivalent to 1/2 q(K + K^T)q.