Exemplo n.º 1
0
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]
Exemplo n.º 2
0
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]
Exemplo n.º 3
0
def calc_buckling_tension_modematrix(wheel,
                                     smeared_spokes=False,
                                     coupling=True,
                                     r0=True,
                                     N=24):
    'Estimate buckling tension from condition number of stiffness matrix.'

    mm = ModeMatrix(wheel, N=N)

    K_matl = (mm.K_rim_matl(r0=r0) +
              mm.K_spk(tension=False, smeared_spokes=smeared_spokes))

    K_geom = (mm.K_rim_geom(r0=r0) -
              mm.K_spk_geom(smeared_spokes=smeared_spokes))

    # Solve generalized eigienvalue problem:
    #   (K_matl + T*K_geom)
    if coupling:
        w, v = eig(K_matl, K_geom)
    else:
        w, v = eig(mm.get_K_uncoupled(K_matl), mm.get_K_uncoupled(K_geom))

    return np.min(np.real(w)[np.real(w) > 0])
Exemplo n.º 4
0
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]
Exemplo n.º 5
0
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]
Exemplo n.º 6
0
def calc_buckling_tension_modematrix(wheel, smeared_spokes=False, coupling=True, r0=True, N=24):
    'Estimate buckling tension from condition number of stiffness matrix.'

    mm = ModeMatrix(wheel, N=N)

    K_matl = (mm.K_rim_matl(r0=r0) +
              mm.K_spk(tension=False, smeared_spokes=smeared_spokes))

    K_geom = (mm.K_rim_geom(r0=r0) -
              mm.K_spk_geom(smeared_spokes=smeared_spokes))

    # Solve generalized eigienvalue problem:
    #   (K_matl + T*K_geom)
    if coupling:
        w, v = eig(K_matl, K_geom)
    else:
        w, v = eig(mm.get_K_uncoupled(K_matl),
                   mm.get_K_uncoupled(K_geom))

    return np.min(np.real(w)[np.real(w) > 0])