vivyd.models.TamuraModel#

class TamuraModel(*, diam=0.18, St=0.18, c_m=0.05, k_m=39.47841760435743, m_lin=25.0, rho=1.25, u_inf=1.0, fm=1.16, Cd=1.2, zeta=0.038, Cl0=0.4, l_star=1.1)[source]#

Bases: VIVModel

Tamura & Matsui (1980) wake-oscillator model for vortex-induced vibrations on circular cylinders [TM80]. By identifying the lift and transverse drag forces, the mechanical equation of motion of the cylinder is written as

\[\ddot{y} + \frac{c}{m} \dot{y} + \frac{k}{m} y = - \frac{\rho U_\infty^2 D}{2 m_\text{lin}} \left(f_m \left(q + \frac{\dot{y}}{U_\infty} \right) + C_D \frac{\dot{y}}{U_\infty} \right),\]

and the equation of the wake is written as

\[\ddot{q} + 2 \zeta \omega_s \left(4 \frac{f_m^2}{C_{L 0}^2} q^2 - 1 \right) \dot{q} + \omega_s^2 \left(q + \frac{\dot{y}}{U_\infty} \right) = - \frac{\ddot{y}}{D \left(\displaystyle \frac{1}{2} + l^* \right)},\]

with

\[\omega_s = 2 \pi \text{St} \frac{U_\infty}{D}.\]
Parameters:
  • diam (float, optional) – Diameter of the cylinder, \(D\). Default is 0.18 m.

  • St (float, optional) – Strouhal number, \(\text{St}\). Default is 0.18.

  • c_m (float, optional) – Specific mechanical damping, \(c/m\). Default is 0.05.

  • k_m (float, optional) – Specific mechanical stiffness, \(k/m\). Default is \(4 \pi^2\).

  • m_lin (float, optional) – Mass per unit length of the cylinder, \(m_\text{lin}\). Default is 25.0 kg/m.

  • rho (float, optional) – Density of the fluid, \(\rho\). Default is 1.25 kg/m³.

  • u_inf (float, optional) – Free-stream velocity, \(U_\infty\). Default is 1.0 m/s.

  • fm (float, optional) – Magnus force coefficient, \(f_m\). Default is 1.16.

  • Cd (float, optional) – Drag coefficient, \(C_D\). Default is 1.2.

  • zeta (float, optional) – Damping ratio, \(\zeta\). Default is 0.038.

  • Cl0 (float, optional) – Lift coefficient at zero angle of attack, \(C_{L 0}\). Default is 0.4.

  • l_star (float, optional) – Dimensionless length of the wake lamina, \(l^* = l / D\). Default is 1.1.

Attributes#

TamuraModel.diam: float#

Diameter of the cylinder, \(D\).

TamuraModel.St: float#

Strouhal number, \(\text{St}\).

TamuraModel.c_m: float#

Specific mechanical damping, \(c/m\).

TamuraModel.k_m: float#

Specific mechanical stiffness, \(k/m\).

TamuraModel.m_lin: float#

Mass per unit length of the cylinder, \(m_\text{lin}\).

TamuraModel.rho: float#

Density of the fluid, \(\rho\).

TamuraModel.u_inf: float#

Free-stream velocity, \(U_\infty\).

TamuraModel.fm: float#

Magnus force coefficient, \(f_m\).

TamuraModel.Cd: float#

Drag coefficient, \(C_D\).

TamuraModel.zeta: float#

Damping ratio, \(\zeta\).

TamuraModel.Cl0: float#

Lift coefficient at zero angle of attack, \(C_{L 0}\).

TamuraModel.l_star: float#

Dimensionless length of the wake lamina, \(l^* = l / D\).

property TamuraModel.n: float#

Dimensionless mass ratio, \(n = \dfrac{\rho D^2}{2 m_\text{lin}}\).

Reference values

Ferguson (1965) [Fer65]

\(n = 0.00330\)

Feng (1968) [Fen68]

\(n = 0.00257\)

Yamaguchi (1970) [Yam70]

\(n = 0.00178\)

property TamuraModel.m_star: float#

Coefficient \(m^* = \dfrac{1}{0.5 + l^*}\).

property TamuraModel.St_star: float#

Angular Strouhal number, \(\text{St}^* = 2 \pi \text{St}\).

property TamuraModel.ws: float#

Strouhal’s vortex shedding pulsation, \(\omega_s = 2 \pi \text{St} \dfrac{U_\infty}{D}\).

property TamuraModel.generalized_params: dict[str, float]#

A dictionary containing the parameters of the model in a format compatible with the constructor of GeneralizedModel.

Methods#

TamuraModel.rhs(t, state, **kwargs)[source]#

Compute the right-hand side of the system of ODEs.

Parameters:
  • t (float) – Time.

  • state (arrf64) – State vector indexed [y_dot, y, q_dot, q].

Returns:

Derivatives of the state vector indexed [dy_dot, dy, dq_dot, dq].

Return type:

arrf64

TamuraModel.to_generalized()[source]#
Returns:

A generalized model instance equivalent to the present model.

Return type:

GeneralizedModel

TamuraModel.to_taichi()[source]#
Returns:

A Taichi-compatible generalized model instance equivalent to the present model.

Return type:

GeneralizedModel

TamuraModel.get_lift(state)[source]#

Compute the lift force associated with a given state.

Parameters:

state (arrf64) – State vector indexed [y_dot, y, q_dot, q].

Returns:

Lift force.

Return type:

float