Skip to content
Mechanical Engineering

mechanical-engineering-ai999x

Statics, stress and strain, beams and frames, section properties, torsion, columns, fatigue, machine elements, vibrations and structural analysis.

90capabilities
13topics
90formulas typeset
8worked examples below
1.0.0version
About this model

What Mechanical Engineering does

Mechanical Engineering (mechanical-engineering-ai999x) is an offline Python package for mechanical engineering. It covers statics, stress and strain, beams and frames, section properties, torsion, columns, fatigue, machine elements, vibrations and structural analysis.

It has 90 capabilities — 90 computational procedures — in 13 topics, the largest being Machine elements, Fatigue, Vibrations, Beams, Section properties and Stress analysis. Ask a question in words with ask(), or call a capability by name with typed inputs with solve(). Every answer carries its value and unit, the steps that produced it and the formula in LaTeX.

When a question is not determined — a value is missing, an input is out of range, or the request is outside the package — it says so and names what it needs, instead of guessing. It runs on an ordinary CPU without a network connection (Python >=3.10), and the same question always gets the same answer.

Install

pip install mechanical-engineering-ai999x
hf download AI999X/mechanical-engineering-ai999x --local-dir mechanical-engineering-ai999x

What it covers

Beams10Cantilever with a point load · Cantilever with a triangular (linearly varying) load · Cantilever with a uniformly distributed load …Columns3Critical stress of an intermediate column (Johnson parabola / Euler) · Eccentrically loaded column (secant formula) · Euler buckling load of a column with given end conditionsFailure theories2Safety factors of a brittle material (maximum normal stress, Coulomb-Mohr, modified Mohr) · Von Mises and Tresca equivalent stresses and safety factorsFatigue14Endurance limit with the Marin factors · Fatigue damage of a stress history (rainflow counting + Miner's rule) · Fatigue damage on the trilinear (Eurocode 3) S-N curve …Machine elements15Belt or rope friction on a drum (capstan equation) · Bolt tightening torque and preload (T = K F d) · Eccentrically loaded bolt group (elastic method) …Pressure vessels4Shrink (press) fit: interface pressure and hoop stresses · Stresses in a rotating disk (solid or with a central hole) · Thick-walled cylinder under pressure (Lame equations) …Section properties10Composite section of rectangles (parallel-axis theorem) · Section properties of a channel (C) section · Section properties of a hollow circle (tube) …Statics3Moment of a force about a point (2D) · Resultant of concurrent coplanar forces · Tensions in two cables holding a weightStress analysis5Combined axial force and biaxial bending of a rectangular section · Plane stress transformation to rotated axes · Principal stresses and maximum shear (Mohr's circle, plane stress) …Stress and strain3Bar fixed at both ends with an axial load at a step · Generalized Hooke's law: strains from a 3D stress state · Stepped bar under axial loads at its jointsStructural analysis2Continuous beam under uniform loads (three-moment equation) · Member forces of a plane truss (method of joints)Torsion5Angle of twist of a stepped shaft · Shaft fixed at both ends with a torque between them · Torque and minimum diameter of a power-transmission shaft …Vibrations14All critical (whirling) speeds of a shaft with several disks · Critical speed of a shaft carrying one disk · Damping ratio, damped frequency and logarithmic decrement …
Try it

Worked examples

Each question below was put to mechanical-engineering-ai999x and the answer shown is the one it returned, with the steps it took.

Beamsm.ask(…)

Simply supported beam with point load: L = 6 m, P = 20 kN, a = 2 m, E = 200 GPa, I = 8e-5 m^4

RA = 13333.33333 N
RB = 6666.666667 N
M_max = 26666.66667 N*m
V_max = 13333.33333 N
deflection_at_load_mm = 4.444444444
max_deflection_mm = 4.838498257
Show the steps
  1. Simply supported beam with a point load
    M_{max} = \frac{Pab}{L},\quad \delta_{max} = \frac{Pb\,(L^2-b^2)^{3/2}}{9\sqrt3\,EIL}
    with L = 6 m, P = 20 kN, a = 2 m, E = 200 GPa, I = 8e-05 m^4
    → RA = 13333.33333 N, RB = 6666.666667 N, M_max = 26666.66667 N*m, V_max = 13333.33333 N, deflection_at_load_mm = 4.444444444 N*m, max_deflection_mm = 4.838498257 N*m, x_max = 2.734013676 m
Stress analysism.ask(…)

Principal stresses: sx = 50 MPa, sy = -10 MPa, txy = 40 MPa

s1_MPa = 70
s2_MPa = -30
tau_max_inplane_MPa = 50
theta_p_deg = 26.56505118
tau_abs_max_MPa = 50
von_mises_MPa = 88.88194417
Show the steps
  1. Principal stresses and maximum shear (Mohr's circle, plane stress)
    \sigma_{1,2} = \frac{\sigma_x+\sigma_y}{2} \pm \sqrt{\Big(\frac{\sigma_x-\sigma_y}{2}\Big)^2 + \tau_{xy}^2},\quad \tan2\theta_p = \frac{2\tau_{xy}}{\sigma_x-\sigma_y}
    with sx = 50 MPa, sy = -10 MPa, txy = 40 MPa
    → s1_MPa = 70, s2_MPa = -30, tau_max_inplane_MPa = 50, theta_p_deg = 26.56505118, tau_abs_max_MPa = 50, von_mises_MPa = 88.88194417
Fatiguem.ask(…)

Goodman safety factor: sa = 120 MPa, sm = 80 MPa, Se = 250 MPa, Sut = 700 MPa

n_fatigue = 1.682692308
sigma_ar_MPa = 135.483871
Show the steps
  1. Fatigue safety factor by the modified Goodman criterion
    \frac{\sigma_a}{S_e} + \frac{\sigma_m}{S_{ut}} = \frac1n
    with sa = 120 MPa, sm = 80 MPa, Se = 250 MPa, Sut = 700 MPa
    → n_fatigue = 1.682692308, sigma_ar_MPa = 135.483871
Fatiguem.ask(…)

Rainflow counting: history = [0, 5, -3, 4, -2, 6, -4, 1, 0]

ranges = [10, 9, 8, 6, 5, 1]
counts = [0.5, 0.5, 0.5, 1, 1, 0.5]
total_cycles = 4
max_range = 10
Show the steps
  1. Rainflow cycle counting of a load history (ASTM E1049)
    |x_3-x_2| \ge |x_2-x_1| \Rightarrow \text{count } |x_2-x_1|
    with history = [0, 5, -3, 4, -2, 6, -4, 1, 0]
    → ranges = [10, 9, 8, 6, 5, 1], counts = [0.5, 0.5, 0.5, 1, 1, 0.5], total_cycles = 4, max_range = 10
Columnsm.solve(…)
m.solve("euler_buckling", E="200 GPa", I="8e-6 m^4", L="4 m", ends="fixed-pinned")
P_cr = 2019072.856 N
P_cr_kN = 2019.072856
K = 0.6991556596
Le = 2.796622639 m
Show the steps
  1. Euler buckling load of a column with given end conditions
    P_{cr} = \frac{\pi^2EI}{(KL)^2}
    with E = 200 GPa, I = 8e-06 m^4, L = 4 m, ends = fixed-pinned
    → P_cr = 2019072.856 N, P_cr_kN = 2019.072856 N, K = 0.6991556596 N, Le = 2.796622639 m
Failure theoriesm.ask(…)

Brittle failure: sA = 90 MPa, sB = -50 MPa, Sut = 210 MPa, Suc = 750 MPa

n_max_normal = 2.333333333
n_coulomb_mohr = 2.019230769
n_modified_mohr = 2.333333333
Show the steps
  1. Safety factors of a brittle material (maximum normal stress, Coulomb-Mohr, modified Mohr)
    \frac{\sigma_1}{S_{ut}} - \frac{\sigma_3}{S_{uc}} = \frac1n,\quad \frac{(S_{uc}-S_{ut})\sigma_A}{S_{uc}S_{ut}} - \frac{\sigma_B}{S_{uc}} = \frac1n
    with sA = 90 MPa, sB = -50 MPa, Sut = 210 MPa, Suc = 750 MPa
    → n_max_normal = 2.333333333, n_coulomb_mohr = 2.019230769, n_modified_mohr = 2.333333333
Machine elementsm.ask(…)

Bearing catalogue rating: FD = 1.8 kN, LD = 30000 h, n = 500 rpm, R = 0.99, kind = ball, af = 1.2

C10 = 34567.18494 N
C10_kN = 34.56718494
design_life_multiple = 900
Show the steps
  1. Required catalogue rating of a rolling bearing
    C_{10} = a_fF_D\Big[\frac{x_D}{x_0 + (\theta-x_0)(\ln 1/R_D)^{1/b}}\Big]^{1/a}
    with FD = 1.8 kN, LD = 30000 h, n = 500 rpm, R = 0.99, kind = ball, af = 1.2
    → C10 = 34567.18494 N, C10_kN = 34.56718494 N, design_life_multiple = 900 N
Pressure vesselsm.ask(…)

Rotating disk: rho = 7800 kg/m^3, omega = 3000 rpm, nu = 0.3, ro = 250 mm, ri = 50 mm

hoop_max_MPa = 40.03111545
radial_max_MPa = 12.70218086
r_radial_max = 0.1118033989 m
hoop_rim_MPa = 10.00777886
Show the steps
  1. Stresses in a rotating disk (solid or with a central hole)
    \sigma_\theta(r_i) = \frac{3+\nu}{4}\rho\omega^2\Big(r_o^2 + \frac{1-\nu}{3+\nu}r_i^2\Big),\quad \sigma_{r,max} = \frac{3+\nu}{8}\rho\omega^2(r_o-r_i)^2
    with rho = 7800 kg/m^3, omega = 3000 rpm, nu = 0.3, ro = 250 mm, ri = 50 mm
    → hoop_max_MPa = 40.03111545, radial_max_MPa = 12.70218086, r_radial_max = 0.1118033989 m, hoop_rim_MPa = 10.00777886
Use it

From Python or the command line

Every snippet was run as shown; the output under it is what it printed.

import mechanical_engineering_ai999x as m

a = m.ask("Simply supported beam with point load: L = 6 m, P = 20 kN, a = 2 m, E = 200 GPa, I = 8e-5 m^4")
print(a.outcome)
print(a.values)
for step in a.steps:
    print(step["name"])
Output
SOLVED
{'RA': 13333.3333333, 'RB': 6666.66666667, 'M_max': 26666.6666667, 'V_max': 13333.3333333, 'deflection_at_load_mm': 4.44444444444, 'max_deflection_mm': 4.83849825735, 'x_max': 2.73401367629}
Simply supported beam with a point load
Figures

Computed, not drawn by hand

Every value in these figures was computed by the package, each point a run of solve(); in a notebook, plot() and plot_relation() draw a capability's curves the same way.

Mohr's circle of a plane stress state

\sigma_{1,2} = \frac{\sigma_x+\sigma_y}{2} \pm \sqrt{\Big(\frac{\sigma_x-\sigma_y}{2}\Big)^2 + \tau_{xy}^2},\quad \tan2\theta_p = \frac{2\tau_{xy}}{\sigma_x-\sigma_y}
Mohr's circle of a plane stress stateMohr's circle for σx = 50 MPa, σy = -10 MPa, τxy = 40 MPa: the normal and shear stress on planes rotated by 0–180° (73 states computed by the package's stress transformation) trace the circle; the principal stresses it returned are σ1 = 70 MPa and σ2 = -30 MPa at θp = 26.5651°; marked: centre σ = 20 MPa, τmax = 50 MPa.-50050100-50-2502550τmax = 50 MPastress on planes rotated 0–180°x and y facesprincipal stressesσ — normal stress [MPa]τ — shear stress [MPa]
Mohr's circle for σx = 50 MPa, σy = -10 MPa, τxy = 40 MPa: the normal and shear stress on planes rotated by 0–180° (73 states computed by the package's stress transformation) trace the circle; the principal stresses it returned are σ1 = 70 MPa and σ2 = -30 MPa at θp = 26.5651°; marked: centre σ = 20 MPa, τmax = 50 MPa.

Shear and bending-moment diagrams of a beam

R_B = \frac{\sum P_i x_i}{L},\quad R_A = \sum P_i - R_B,\quad M(x) = R_A x - \sum_{x_i<x} P_i(x-x_i)
Shear and bending-moment diagrams of a beamShear-force and bending-moment diagrams of a simply supported beam of span 8 m with point loads 10, 20 kN at x = 2, 5 m, drawn from the reactions the package returned (RA = 15 kN, RB = 15 kN); marked: the maximum moment it returned, x = 5 m, M = 45 kN·m.0246802040Mmax = 45 kN·mbending moment Mshear force Vx — position along the span [m]V [kN] · M [kN·m]
Shear-force and bending-moment diagrams of a simply supported beam of span 8 m with point loads 10, 20 kN at x = 2, 5 m, drawn from the reactions the package returned (RA = 15 kN, RB = 15 kN); marked: the maximum moment it returned, x = 5 m, M = 45 kN·m.

A cantilever's deflected shape under a tip load

\delta_{tip} = \frac{Pa^2(3L-a)}{6EI},\quad \theta_{tip} = \frac{Pa^2}{2EI}
A cantilever's deflected shape under a tip loadDeflected shape of a cantilever (L = 2 m, E = 2.0000e+11 Pa, I = 8.0000e-06 m⁴) under a tip load P = 5000 N: the deflection at each of 40 positions x is the tip deflection the package returns for the load placed at x (Maxwell's reciprocal theorem). Marked: x = 2 m, tip deflection = 8.33333 mm (downward); the wall and beam depth are drawn for orientation.00.511.52-10-50tip: 8.33333 mmunloaded beamdeflected beam, P = 5000 N at the tiptip loadx — distance from the fixed end [m]deflection [mm]
Deflected shape of a cantilever (L = 2 m, E = 2.0000e+11 Pa, I = 8.0000e-06 m⁴) under a tip load P = 5000 N: the deflection at each of 40 positions x is the tip deflection the package returns for the load placed at x (Maxwell's reciprocal theorem). Marked: x = 2 m, tip deflection = 8.33333 mm (downward); the wall and beam depth are drawn for orientation.

Fatigue diagram: Goodman, Gerber and Soderberg envelopes

\frac{\sigma_a}{S_e} + \frac{\sigma_m}{S_{ut}} = \frac1n
Fatigue diagram: Goodman, Gerber and Soderberg envelopesFatigue failure envelopes for Se = 250 MPa, Sut = 700 MPa, Sy = 500 MPa: each point is the stress state at which the package's safety factor along a load line equals 1 (47 load lines per criterion). Marked: the operating point σm = 80 MPa, σa = 120 MPa, Goodman safety factor n = 1.68269.02004006000100200n = 1.68269GoodmanGerberSoderbergload lineσm — mean stress [MPa]σa — alternating stress [MPa]
Fatigue failure envelopes for Se = 250 MPa, Sut = 700 MPa, Sy = 500 MPa: each point is the stress state at which the package's safety factor along a load line equals 1 (47 load lines per criterion). Marked: the operating point σm = 80 MPa, σa = 120 MPa, Goodman safety factor n = 1.68269.

Forced vibration: resonance curves for four dampings

X = \frac{F_0/k}{\sqrt{(1-r^2)^2 + (2\zeta r)^2}},\quad \tan\phi = \frac{2\zeta r}{1-r^2}
Forced vibration: resonance curves for four dampingsSteady-state magnification of a forced spring–mass–damper (m = 10 kg, k = 4000 N/m, natural frequency 20 rad/s) for four damping coefficients, 120 forcing frequencies each computed by the package; marked: ω = 20 rad/s, c = 40 N·s/m, magnification = 5.020406002465c = 40 N·s/m (ζ = 0.1)c = 100 N·s/m (ζ = 0.25)c = 200 N·s/m (ζ = 0.5)c = 400 N·s/m (ζ = 1)ω — forcing frequency [rad/s]X/Xst — magnification
Steady-state magnification of a forced spring–mass–damper (m = 10 kg, k = 4000 N/m, natural frequency 20 rad/s) for four damping coefficients, 120 forcing frequencies each computed by the package; marked: ω = 20 rad/s, c = 40 N·s/m, magnification = 5.
Formulas

The mathematics inside

12 of its 90 formulas; every one is in the capability browser below.

Simply supported beam with a point load
M_{max} = \frac{Pab}{L},\quad \delta_{max} = \frac{Pb\,(L^2-b^2)^{3/2}}{9\sqrt3\,EIL}
Principal stresses and maximum shear (Mohr's circle, plane stress)
\sigma_{1,2} = \frac{\sigma_x+\sigma_y}{2} \pm \sqrt{\Big(\frac{\sigma_x-\sigma_y}{2}\Big)^2 + \tau_{xy}^2},\quad \tan2\theta_p = \frac{2\tau_{xy}}{\sigma_x-\sigma_y}
Fatigue safety factor by the modified Goodman criterion
\frac{\sigma_a}{S_e} + \frac{\sigma_m}{S_{ut}} = \frac1n
Rainflow cycle counting of a load history (ASTM E1049)
|x_3-x_2| \ge |x_2-x_1| \Rightarrow \text{count } |x_2-x_1|
Safety factors of a brittle material (maximum normal stress, Coulomb-Mohr, modified Mohr)
\frac{\sigma_1}{S_{ut}} - \frac{\sigma_3}{S_{uc}} = \frac1n,\quad \frac{(S_{uc}-S_{ut})\sigma_A}{S_{uc}S_{ut}} - \frac{\sigma_B}{S_{uc}} = \frac1n
Required catalogue rating of a rolling bearing
C_{10} = a_fF_D\Big[\frac{x_D}{x_0 + (\theta-x_0)(\ln 1/R_D)^{1/b}}\Big]^{1/a}
Stresses in a rotating disk (solid or with a central hole)
\sigma_\theta(r_i) = \frac{3+\nu}{4}\rho\omega^2\Big(r_o^2 + \frac{1-\nu}{3+\nu}r_i^2\Big),\quad \sigma_{r,max} = \frac{3+\nu}{8}\rho\omega^2(r_o-r_i)^2
Cantilever with a point load
\delta_{tip} = \frac{Pa^2(3L-a)}{6EI},\quad \theta_{tip} = \frac{Pa^2}{2EI}
Critical stress of an intermediate column (Johnson parabola / Euler)
\sigma_{cr} = S_y - \frac{1}{E}\Big(\frac{S_y}{2\pi}\frac{KL}{r}\Big)^2 \quad (KL/r < C_c),\quad C_c = \sqrt{\frac{2\pi^2E}{S_y}}
Von Mises and Tresca equivalent stresses and safety factors
\sigma_{vm} = \sqrt{\tfrac12\big[(\sigma_1-\sigma_2)^2+(\sigma_2-\sigma_3)^2+(\sigma_3-\sigma_1)^2\big]},\quad n = \frac{S_y}{\sigma_{eq}}
Endurance limit with the Marin factors
S_e = k_a k_b k_c k_d k_e k_f\,S_e',\quad k_a = aS_{ut}^b,\quad k_e = 1 - 0.08\,z_a
Capabilities

Every capability, with an example

Search by name, formula, input or topic. Each capability opens to show what it takes, what it returns, when it applies, and a question it answered.

90 capabilities

Beams 10

Cantilever with a point loadcantilever_point_load

Reaction, fixed-end moment, deflection under the load, tip deflection and tip slope of a cantilever carrying one point load at distance a from the fixed end (default: at the free end).

\delta_{tip} = \frac{Pa^2(3L-a)}{6EI},\quad \theta_{tip} = \frac{Pa^2}{2EI}

Inputs

  • L length of the cantilever [m]
  • P point load (downward) [N]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]
  • a distance of the load from the fixed end (default L: at the free end) [m] optional

Returns

  • R vertical reaction at the fixed end [N]
  • M_fixed hogging moment at the fixed end [N*m]
  • deflection_at_load_mm deflection under the load in mm
  • tip_deflection_mm deflection of the free end in mm
  • tip_slope_deg slope at the free end in degrees

Applies when

  • 0 < a <= L
  • Euler-Bernoulli beam, small deflections

Example

m.ask("Cantilever with end load: L = 2 m, P = 5 kN, E = 200 GPa, I = 8e-6 m^4")
→ R = 5000 N, M_fixed = 10000 N*m, deflection_at_load_mm = 8.33333, tip_deflection_mm = 8.33333, tip_slope_deg = 0.358099
Cantilever with a triangular (linearly varying) loadcantilever_triangular_load

Reaction, fixed-end moment, tip deflection and tip slope of a cantilever whose load falls linearly from w at the fixed end to zero at the free end.

\delta_{tip} = \frac{w_0L^4}{30EI},\quad \theta_{tip} = \frac{w_0L^3}{24EI}

Inputs

  • L length of the cantilever [m]
  • w load intensity at the fixed end (downward) [N/m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • R vertical reaction at the fixed end [N]
  • M_fixed hogging moment at the fixed end [N*m]
  • tip_deflection_mm deflection of the free end in mm
  • tip_slope_deg slope at the free end in degrees

Applies when

  • L, w, E, I > 0
  • maximum intensity at the fixed end
  • Euler-Bernoulli beam

Example

m.ask("Cantilever with triangular load: L = 3 m, w = 6 kN/m, E = 200 GPa, I = 2e-5 m^4")
→ R = 9000 N, M_fixed = 9000 N*m, tip_deflection_mm = 4.05, tip_slope_deg = 0.0966866
Cantilever with a uniformly distributed loadcantilever_udl

Reaction, fixed-end moment, tip deflection and tip slope of a cantilever under a uniform load over its whole length.

\delta_{tip} = \frac{wL^4}{8EI},\quad \theta_{tip} = \frac{wL^3}{6EI}

Inputs

  • L length of the cantilever [m]
  • w uniform load per unit length (downward) [N/m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • R vertical reaction at the fixed end [N]
  • M_fixed hogging moment at the fixed end [N*m]
  • tip_deflection_mm deflection of the free end in mm
  • tip_slope_deg slope at the free end in degrees

Applies when

  • L, w, E, I > 0
  • Euler-Bernoulli beam, small deflections

Example

m.ask("Cantilever with uniform load: L = 3 m, w = 2 kN/m, E = 200 GPa, I = 1e-5 m^4")
→ R = 6000 N, M_fixed = 9000 N*m, tip_deflection_mm = 10.125, tip_slope_deg = 0.257831
Fixed-fixed (built-in) beam with a point loadfixed_fixed_beam_point_load

Reactions, fixed-end moments, the moment under the load and the deflection under the load of a beam built in at both ends carrying one point load.

M_A = \frac{Pab^2}{L^2},\quad M_B = \frac{Pa^2b}{L^2},\quad \delta_P = \frac{Pa^3b^3}{3EIL^3}

Inputs

  • L span [m]
  • P point load (downward) [N]
  • a distance of the load from end A [m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • RA reaction at A [N]
  • RB reaction at B [N]
  • MA hogging moment at A [N*m]
  • MB hogging moment at B [N*m]
  • M_load sagging moment under the load [N*m]
  • deflection_at_load_mm deflection under the load in mm

Applies when

  • 0 < a < L
  • both ends fully fixed

Example

m.ask("Fixed-fixed beam with point load: L = 6 m, P = 30 kN, a = 2 m, E = 200 GPa, I = 5e-5 m^4")
→ RA = 22222.2 N, RB = 7777.78 N, MA = 26666.7 N*m, MB = 13333.3 N*m, M_load = 17777.8 N*m, deflection_at_load_mm = 2.37037
Fixed-fixed (built-in) beam with a uniformly distributed loadfixed_fixed_beam_udl

Reactions, fixed-end (hogging) moments, midspan (sagging) moment and maximum deflection of a beam built in at both ends under a uniform load.

M_{end} = \frac{wL^2}{12},\quad M_{mid} = \frac{wL^2}{24},\quad \delta_{max} = \frac{wL^4}{384EI}

Inputs

  • L span [m]
  • w uniform load per unit length (downward) [N/m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • RA reaction at A [N]
  • RB reaction at B [N]
  • M_end hogging moment at each fixed end [N*m]
  • M_mid sagging moment at midspan [N*m]
  • max_deflection_mm maximum (midspan) deflection in mm

Applies when

  • L, w, E, I > 0
  • both ends fully fixed against rotation and deflection

Example

m.ask("Fixed-fixed beam with uniform load: L = 6 m, w = 12 kN/m, E = 200 GPa, I = 6e-5 m^4")
→ RA = 36000 N, RB = 36000 N, M_end = 36000 N*m, M_mid = 18000 N*m, max_deflection_mm = 3.375
Propped cantilever with a point loadpropped_cantilever_point_load

Reactions, fixed-end moment, moment under the load and deflection under the load of a beam fixed at A and simply supported at B with one point load.

R_B = \frac{Pa^2(3L-a)}{2L^3},\quad M_A = \frac{Pab(L+b)}{2L^2}

Inputs

  • L span [m]
  • P point load (downward) [N]
  • a distance of the load from the fixed end A [m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • RA reaction at the fixed end A [N]
  • RB reaction at the prop B [N]
  • MA hogging moment at A [N*m]
  • M_load sagging moment under the load [N*m]
  • deflection_at_load_mm deflection under the load in mm

Applies when

  • 0 < a < L
  • A fully fixed, B a simple support

Example

m.ask("Propped cantilever with point load: L = 4 m, P = 16 kN, a = 2 m, E = 200 GPa, I = 2e-5 m^4")
→ RA = 11000 N, RB = 5000 N, MA = 12000 N*m, M_load = 10000 N*m, deflection_at_load_mm = 2.33333
Propped cantilever with a uniformly distributed loadpropped_cantilever_udl

Reactions, fixed-end moment, maximum span moment and its position, and the maximum deflection with its position, for a beam fixed at A and simply supported at B under a uniform load.

R_B = \frac{3wL}{8},\quad M_A = \frac{wL^2}{8},\quad \delta_{max} \approx \frac{wL^4}{185EI}

Inputs

  • L span [m]
  • w uniform load per unit length (downward) [N/m]
  • E Young's modulus [Pa]
  • I second moment of area [m^4]

Returns

  • RA reaction at the fixed end A [N]
  • RB reaction at the prop B [N]
  • MA hogging moment at A [N*m]
  • M_span largest sagging moment in the span [N*m]
  • x_M_span its position from A [m]
  • max_deflection_mm maximum deflection in mm
  • x_max position of the maximum deflection from A [m]

Applies when

  • L, w, E, I > 0
  • A fully fixed, B a simple support

Example

m.ask("Propped cantilever with uniform load: L = 8 m, w = 10 kN/m, E = 200 GPa, I = 1e-4 m^4")
→ RA = 50000 N, RB = 30000 N, MA = 80000 N*m, M_span = 45000 N*m, x_M_span = 5 m, max_deflection_mm = 11.0922, x_max = 4.62772 m
Simply supported beam with a point loadsimply_supported_beam_point_load

Reactions, maximum bending moment and shear, deflection under the load and the maximum deflection with its position, for a simply supported beam carrying one point load.

M_{max} = \frac{Pab}{L},\quad \delta_{max} = \frac{Pb\,(L^2-b^2)^{3/2}}{9\sqrt3\,EIL}

Inputs

  • L span [m]
  • P point load (downward) [N]
  • a distance of the load from the left support A [m]
  • E Young's modulus [Pa]
  • I second moment of area of the section [m^4]

Returns

  • RA reaction at the left support A [N]
  • RB reaction at the right support B [N]
  • M_max maximum bending moment (under the load) [N*m]
  • V_max maximum shear force [N]
  • deflection_at_load_mm deflection under the load in mm
  • max_deflection_mm maximum deflection in mm
  • x_max position of the maximum deflection from A [m]

Applies when

  • 0 < a < L
  • Euler-Bernoulli beam, linear elastic, prismatic

Example

m.ask("Simply supported beam with point load: L = 6 m, P = 20 kN, a = 2 m, E = 200 GPa, I = 8e-5 m^4")
→ RA = 13333.3 N, RB = 6666.67 N, M_max = 26666.7 N*m, V_max = 13333.3 N, deflection_at_load_mm = 4.44444, max_deflection_mm = 4.8385, x_max = 2.73401 m
Simply supported beam with a uniformly distributed loadsimply_supported_beam_udl

Reactions, maximum bending moment and shear, maximum (midspan) deflection and end slope of a simply supported beam under a uniform load over its whole span.

M_{max} = \frac{wL^2}{8},\quad \delta_{max} = \frac{5wL^4}{384EI}

Inputs

  • L span [m]
  • w uniform load per unit length (downward) [N/m]
  • E Young's modulus [Pa]
  • I second moment of area of the section [m^4]

Returns

  • RA reaction at A [N]
  • RB reaction at B [N]
  • M_max maximum bending moment (midspan) [N*m]
  • V_max maximum shear force (at the supports) [N]
  • max_deflection_mm maximum deflection (midspan) in mm
  • end_slope_deg slope at the supports in degrees

Applies when

  • L, w, E, I > 0
  • Euler-Bernoulli beam, small deflections

Example

m.ask("Simply supported beam with uniform load: L = 5 m, w = 10 kN/m, E = 200 GPa, I = 4e-5 m^4")
→ RA = 25000 N, RB = 25000 N, M_max = 31250 N*m, V_max = 25000 N, max_deflection_mm = 10.1725, end_slope_deg = 0.373019
Simply supported beam with several point loadssimply_supported_beam_point_loads

Support reactions, the maximum bending moment and its position, and the maximum shear for a simply supported beam carrying several downward point loads.

R_B = \frac{\sum P_i x_i}{L},\quad R_A = \sum P_i - R_B,\quad M(x) = R_A x - \sum_{x_i<x} P_i(x-x_i)

Inputs

  • L span [m]
  • x load positions from the left support A, in m (a list) vector
  • P point loads in kN, downward (a list, same order as x) vector

Returns

  • RA reaction at A in kN
  • RB reaction at B in kN
  • M_max maximum bending moment in kN*m
  • x_Mmax position of the maximum moment from A, in m (the first one if several are equal)
  • V_max maximum shear force in kN

Applies when

  • 0 <= x_i <= L
  • P_i > 0 (downward)
  • x and P of equal length

Example

m.ask("Simply supported beam with point loads: L = 8 m, x = [2, 5], P = [10, 20]")
→ RA = 15, RB = 15, M_max = 45, x_Mmax = 5, V_max = 15

Columns 3

Critical stress of an intermediate column (Johnson parabola / Euler)johnson_column

The critical stress of a column by the Johnson parabola below the transition slenderness and by Euler above it, with the transition slenderness and (with the area) the critical load.

\sigma_{cr} = S_y - \frac{1}{E}\Big(\frac{S_y}{2\pi}\frac{KL}{r}\Big)^2 \quad (KL/r < C_c),\quad C_c = \sqrt{\frac{2\pi^2E}{S_y}}

Inputs

  • Sy yield strength [Pa]
  • E Young's modulus [Pa]
  • L column length [m]
  • r least radius of gyration [m]
  • ends end conditions (theoretical K) choice
  • A cross-sectional area (optional: gives the load) [m^2] optional

Returns

  • slenderness slenderness ratio K L / r
  • transition_slenderness transition slenderness C_c = sqrt(2 pi^2 E / Sy)
  • regime Johnson or Euler
  • sigma_cr_MPa critical stress, MPa
  • P_cr_kN critical load in kN (with A)

Applies when

  • centric load
  • theoretical effective length factors

Example

m.ask("Johnson column: Sy = 250 MPa, E = 200 GPa, L = 1.5 m, r = 20 mm, ends = pinned-pinned")
→ slenderness = 75, transition_slenderness = 125.664, regime = Johnson, sigma_cr_MPa = 205.474
Eccentrically loaded column (secant formula)secant_column

The maximum compressive stress, midspan deflection and largest bending moment of a pinned column under a load with equal end eccentricities.

\sigma_{max} = \frac{P}{A}\Big[1 + \frac{ec}{r^2}\sec\Big(\frac{L}{2}\sqrt{\frac{P}{EI}}\Big)\Big]

Inputs

  • P compressive load [N]
  • e eccentricity of the load [m]
  • L length (pinned ends) [m]
  • A area [m^2]
  • I second moment of area in the bending plane [m^4]
  • c distance from the centroid to the extreme fibre [m]
  • E Young's modulus [Pa]

Returns

  • sigma_max_MPa maximum compressive stress (magnitude), MPa
  • deflection_mm midspan lateral deflection, mm
  • M_max largest bending moment P (e + deflection) [N*m]
  • P_over_Pcr P / P_Euler

Applies when

  • pinned ends, equal eccentricities on the same side
  • P below the Euler load
  • elastic

Example

m.ask("Secant column: P = 200 kN, e = 10 mm, L = 3 m, A = 4000 mm^2, I = 1.2e-5 m^4, c = 75 mm, E = 200 GPa")
→ sigma_max_MPa = 63.771, deflection_mm = 1.01679, M_max = 2203.36 N*m, P_over_Pcr = 0.0759909
Euler buckling load of a column with given end conditionseuler_buckling

The critical (Euler) buckling load of an ideal elastic column, its effective length factor and length, and with the area also the critical stress and slenderness ratio.

P_{cr} = \frac{\pi^2EI}{(KL)^2}

Inputs

  • E Young's modulus [Pa]
  • I least second moment of area [m^4]
  • L column length [m]
  • ends end conditions: pinned-pinned, fixed-free, fixed-fixed or fixed-pinned choice
  • A cross-sectional area (optional: gives the stress and slenderness) [m^2] optional

Returns

  • P_cr critical buckling load [N]
  • P_cr_kN critical load in kN
  • K effective length factor (theoretical)
  • Le effective length K L [m]
  • sigma_cr_MPa critical stress P_cr/A, MPa (with A)
  • slenderness slenderness ratio K L / r (with A)

Applies when

  • ideal straight elastic column, centric load
  • theoretical K: 1, 2, 0.5, 0.6992 (fixed-pinned, from tan x = x)
  • valid only below the proportional limit

Example

m.ask("Euler buckling: E = 200 GPa, I = 8e-6 m^4, L = 4 m, ends = pinned-pinned")
→ P_cr = 986960 N, P_cr_kN = 986.96, K = 1, Le = 4 m

Failure theories 2

Safety factors of a brittle material (maximum normal stress, Coulomb-Mohr, modified Mohr)brittle_failure_mohr

Factors of safety of a brittle material under plane stress by the maximum-normal-stress, brittle Coulomb-Mohr and modified-Mohr criteria (proportional loading).

\frac{\sigma_1}{S_{ut}} - \frac{\sigma_3}{S_{uc}} = \frac1n,\quad \frac{(S_{uc}-S_{ut})\sigma_A}{S_{uc}S_{ut}} - \frac{\sigma_B}{S_{uc}} = \frac1n

Inputs

  • sA first in-plane principal stress [Pa]
  • sB second in-plane principal stress [Pa]
  • Sut ultimate tensile strength [Pa]
  • Suc ultimate compressive strength (positive number) [Pa]

Returns

  • n_max_normal safety factor, maximum normal stress theory
  • n_coulomb_mohr safety factor, brittle Coulomb-Mohr
  • n_modified_mohr safety factor, modified Mohr

Applies when

  • plane stress (third principal stress zero)
  • Sut, Suc > 0 (Suc given as a magnitude)
  • proportional loading

Example

m.ask("Brittle failure: sA = 90 MPa, sB = -50 MPa, Sut = 210 MPa, Suc = 750 MPa")
→ n_max_normal = 2.33333, n_coulomb_mohr = 2.01923, n_modified_mohr = 2.33333
Von Mises and Tresca equivalent stresses and safety factorsyield_criteria_safety_factor

Equivalent stresses by the distortion-energy (von Mises) and maximum-shear (Tresca) criteria and the corresponding factors of safety against yielding.

\sigma_{vm} = \sqrt{\tfrac12\big[(\sigma_1-\sigma_2)^2+(\sigma_2-\sigma_3)^2+(\sigma_3-\sigma_1)^2\big]},\quad n = \frac{S_y}{\sigma_{eq}}

Inputs

  • Sy yield strength [Pa]
  • sx sigma_x [Pa]
  • sy sigma_y (default 0) [Pa] optional
  • sz sigma_z (default 0) [Pa] optional
  • txy tau_xy (default 0) [Pa] optional
  • tyz tau_yz (default 0) [Pa] optional
  • tzx tau_zx (default 0) [Pa] optional

Returns

  • von_mises_MPa von Mises stress, MPa
  • tresca_MPa Tresca equivalent stress (s1 - s3), MPa
  • n_von_mises safety factor by distortion energy
  • n_tresca safety factor by maximum shear

Applies when

  • Sy > 0
  • not a purely hydrostatic stress
  • ductile, isotropic material

Example

m.ask("Yield safety factor: Sy = 350 MPa, sx = 120 MPa, sy = -40 MPa, txy = 60 MPa")
→ von_mises_MPa = 177.764, tresca_MPa = 200, n_von_mises = 1.9689, n_tresca = 1.75

Fatigue 14

Endurance limit with the Marin factorsmarin_endurance_limit

The corrected endurance limit Se = ka kb kc kd ke kf Se' of a steel part from its tensile strength, surface finish, size, loading and reliability (Se' = 0.5 Sut up to 1400 MPa, else 700 MPa).

S_e = k_a k_b k_c k_d k_e k_f\,S_e',\quad k_a = aS_{ut}^b,\quad k_e = 1 - 0.08\,z_a

Inputs

  • Sut ultimate tensile strength [Pa]
  • surface surface finish (ground, machined, cold-drawn, hot-rolled, as-forged) choice
  • load loading (bending, axial, torsion) choice
  • d diameter (needed for bending and torsion, 2.79-254 mm) [m] optional
  • R reliability (default 0.5; written as 0.99 or 99%) optional
  • kd temperature factor (default 1) optional
  • kf miscellaneous-effects factor (default 1) optional

Returns

  • ka surface factor a Sut^b
  • kb size factor
  • kc load factor
  • ke reliability factor 1 - 0.08 z_a
  • Se_prime_MPa uncorrected endurance limit, MPa
  • Se_MPa corrected endurance limit, MPa
  • Se corrected endurance limit [Pa]

Applies when

  • steels (Se' = 0.5 Sut, at most 700 MPa)
  • size factor for 2.79 <= d <= 254 mm (rotating round sections)
  • 0.5 <= R < 1

Example

m.ask("Marin factors: Sut = 690 MPa, surface = machined, load = bending, d = 32 mm, R = 99%")
→ ka = 0.797777, kb = 0.855797, kc = 1, ke = 0.813892, Se_prime_MPa = 345, Se_MPa = 191.707, Se = 1.91707e+08 Pa
Fatigue damage of a stress history (rainflow counting + Miner's rule)rainflow_fatigue_damage

The Miner damage of one pass of a stress history: rainflow cycles (ASTM, half cycles) on a single-slope S-N curve N = Nc (Sc/S)^m, and the passes to failure.

D = \sum_i \frac{n_i}{N_c}\Big(\frac{S_i}{S_c}\Big)^m

Inputs

  • history the stress history in MPa, point by point (a list) vector
  • Sc reference stress range at Nc cycles, MPa
  • m S-N slope
  • Nc cycles at Sc (default 2e6) optional

Returns

  • damage damage of one pass of the history
  • repeats_to_failure passes until D = 1
  • cycles cycles counted per pass

Applies when

  • ASTM E1049-85 rainflow counting, half cycles weighted 0.5
  • no mean-stress correction
  • single-slope S-N curve, no endurance limit

Example

m.ask("Rainflow fatigue damage: history = [0, 90, 0], Sc = 90, m = 3")
→ damage = 5e-07, repeats_to_failure = 2e+06, cycles = 1
Fatigue damage on the trilinear (Eurocode 3) S-N curveeurocode_fatigue_damage

The Miner damage of stress-range blocks on the trilinear S-N curve of a detail category (slope 3 to 5e6 cycles, slope 5 to 1e8, cut-off below), with the constant-amplitude and cut-off limits.

N = 2\cdot10^6\Big(\frac{\Delta\sigma_C}{\Delta\sigma}\Big)^3\ (\Delta\sigma\ge\Delta\sigma_D),\quad N = 5\cdot10^6\Big(\frac{\Delta\sigma_D}{\Delta\sigma}\Big)^5

Inputs

  • ranges stress ranges in MPa (a list) vector
  • counts cycles of each range (a list) vector
  • dsc detail category: stress range at 2e6 cycles, MPa

Returns

  • damage Miner damage sum
  • delta_sigma_D constant-amplitude fatigue limit (5e6 cycles), MPa
  • delta_sigma_L cut-off limit (1e8 cycles), MPa
  • repeats_to_failure repeats of the spectrum until D = 1

Applies when

  • partial safety factors not applied (gamma_Mf = gamma_Ff = 1)
  • at least one range above the cut-off

Example

m.ask("Eurocode fatigue damage: ranges = [90], counts = [1000000], dsc = 90")
→ damage = 0.5, delta_sigma_D = 66.3126, delta_sigma_L = 36.4242, repeats_to_failure = 2
Fatigue life from the S-N line (10^3 to 10^6 cycles)sn_fatigue_life

Cycles to failure of a fully reversed amplitude on the straight log-log S-N line through f*Sut at 10^3 cycles and Se at 10^6 cycles, with the line's constants a and b.

a = \frac{(fS_{ut})^2}{S_e},\quad b = -\frac13\log_{10}\frac{fS_{ut}}{S_e},\quad N = \Big(\frac{\sigma_a}{a}\Big)^{1/b}

Inputs

  • Sut ultimate tensile strength [Pa]
  • Se endurance limit [Pa]
  • f fatigue strength fraction at 10^3 cycles (e.g. 0.9)
  • sa fully reversed stress amplitude [Pa]

Returns

  • a_MPa S-N constant a, MPa
  • b S-N exponent b
  • N cycles to failure
  • log10_N log10 of the cycles to failure

Applies when

  • Se < sa < f Sut
  • 0 < f < 1
  • fully reversed loading

Example

m.ask("S-N fatigue life: Sut = 700 MPa, Se = 300 MPa, f = 0.85, sa = 400 MPa")
→ a_MPa = 1180.08, b = -0.0991319, N = 54912.6, log10_N = 4.73967
Fatigue life with a mean-stress correction (Morrow, Goodman, SWT, Walker) and Basquin's lawfatigue_life_mean_stress_correction

The equivalent fully reversed stress amplitude of a cycle with a mean stress, by a chosen correction, and the cycles to failure from Basquin's law sigma_ar = sf' (2N)^b.

\sigma_{ar} = \frac{\sigma_a}{1-\sigma_m/\sigma_f'},\quad \sigma_{ar} = \sqrt{\sigma_{max}\sigma_a},\quad N_f = \tfrac12\Big(\frac{\sigma_{ar}}{\sigma_f'}\Big)^{1/b}

Inputs

  • sa stress amplitude [Pa]
  • sm mean stress [Pa]
  • sf fatigue strength coefficient sf' (Morrow and Goodman use it as the strength) [Pa]
  • b fatigue strength exponent (negative)
  • method mean-stress correction choice
  • gamma Walker exponent (walker only) optional

Returns

  • sigma_ar_MPa equivalent fully reversed amplitude, MPa
  • Nf cycles to failure
  • log10_Nf log10 of the cycles to failure

Applies when

  • -0.2 < b < 0
  • Morrow/Goodman: sm < sf'
  • SWT/Walker: sigma_max > 0
  • goodman here uses sf' as the strength (Morrow form)

Example

m.ask("Fatigue life with mean stress: sa = 300 MPa, sm = 100 MPa, sf = 1200 MPa, b = -0.09, method = swt")
→ sigma_ar_MPa = 346.41, Nf = 494791, log10_Nf = 5.69442
Fatigue safety factor by the ASME-elliptic criterionasme_elliptic_fatigue_safety_factor

The fatigue factor of safety along a proportional load line by the ASME ellipse (sa/Se)^2 + (sm/Sy)^2 = 1, and the equivalent fully reversed amplitude.

\left(\frac{n\sigma_a}{S_e}\right)^2 + \left(\frac{n\sigma_m}{S_y}\right)^2 = 1

Inputs

  • sa alternating stress amplitude [Pa]
  • sm mean stress (>= 0) [Pa]
  • Se fully corrected endurance limit [Pa]
  • Sy yield strength [Pa]

Returns

  • n_fatigue fatigue safety factor (ASME-elliptic, proportional loading)
  • sigma_ar_MPa equivalent fully reversed amplitude sa/sqrt(1 - (sm/Sy)^2), MPa

Applies when

  • sm >= 0
  • sm < Sy
  • proportional loading

Example

m.ask("ASME-elliptic safety factor: sa = 100 MPa, sm = 60 MPa, Se = 220 MPa, Sy = 450 MPa")
→ n_fatigue = 2.11105, sigma_ar_MPa = 100.901
Fatigue safety factor by the Gerber criteriongerber_fatigue_safety_factor

The fatigue factor of safety along a proportional load line by the Gerber parabola sa/Se + (sm/Sut)^2 = 1, and the equivalent fully reversed amplitude.

\frac{n\sigma_a}{S_e} + \left(\frac{n\sigma_m}{S_{ut}}\right)^2 = 1

Inputs

  • sa alternating stress amplitude [Pa]
  • sm mean stress (>= 0) [Pa]
  • Se fully corrected endurance limit [Pa]
  • Sut ultimate tensile strength [Pa]

Returns

  • n_fatigue fatigue safety factor (Gerber, proportional loading)
  • sigma_ar_MPa equivalent fully reversed amplitude sa/(1 - (sm/Sut)^2), MPa

Applies when

  • sm >= 0 (compressive means not covered)
  • sm < Sut
  • proportional loading

Example

m.ask("Gerber safety factor: sa = 120 MPa, sm = 80 MPa, Se = 250 MPa, Sut = 700 MPa")
→ n_fatigue = 1.97698, sigma_ar_MPa = 121.588
Fatigue safety factor by the modified Goodman criteriongoodman_fatigue_safety_factor

The fatigue factor of safety along a proportional load line by the modified Goodman line, the equivalent fully reversed amplitude, and (with Sy) Langer's first-cycle yield factor.

\frac{\sigma_a}{S_e} + \frac{\sigma_m}{S_{ut}} = \frac1n

Inputs

  • sa alternating stress amplitude [Pa]
  • sm mean stress (>= 0) [Pa]
  • Se fully corrected endurance limit [Pa]
  • Sut ultimate tensile strength [Pa]
  • Sy yield strength (optional: first-cycle yield check) [Pa] optional

Returns

  • n_fatigue fatigue safety factor (Goodman, proportional loading)
  • sigma_ar_MPa equivalent fully reversed amplitude sa/(1 - sm/Sut), MPa
  • n_yield Langer first-cycle yield factor Sy/(sa + sm) (with Sy)

Applies when

  • sm >= 0 (compressive means not covered)
  • sm < Sut
  • proportional loading (the load line through the origin)

Example

m.ask("Goodman safety factor: sa = 120 MPa, sm = 80 MPa, Se = 250 MPa, Sut = 700 MPa")
→ n_fatigue = 1.68269, sigma_ar_MPa = 135.484
Fatigue safety factor by the Soderberg criterionsoderberg_fatigue_safety_factor

The conservative Soderberg fatigue factor of safety (the line from Se to the yield strength) along a proportional load line, and the equivalent amplitude.

\frac{\sigma_a}{S_e} + \frac{\sigma_m}{S_y} = \frac1n

Inputs

  • sa alternating stress amplitude [Pa]
  • sm mean stress (>= 0) [Pa]
  • Se fully corrected endurance limit [Pa]
  • Sy yield strength [Pa]

Returns

  • n_fatigue fatigue safety factor (Soderberg)
  • sigma_ar_MPa equivalent fully reversed amplitude sa/(1 - sm/Sy), MPa

Applies when

  • sm >= 0
  • sm < Sy
  • proportional loading

Example

m.ask("Soderberg safety factor: sa = 100 MPa, sm = 60 MPa, Se = 220 MPa, Sy = 450 MPa")
→ n_fatigue = 1.70103, sigma_ar_MPa = 115.385
Fatigue strength at a given number of cycles (S-N line)sn_fatigue_strength

The fully reversed fatigue strength at N cycles (10^3 to 10^6) on the straight log-log S-N line through f*Sut at 10^3 and Se at 10^6 cycles.

S_f = aN^b

Inputs

  • Sut ultimate tensile strength [Pa]
  • Se endurance limit [Pa]
  • f fatigue strength fraction at 10^3 cycles
  • N number of cycles (10^3 to 10^6)

Returns

  • Sf_MPa fatigue strength at N cycles, MPa

Applies when

  • 10^3 <= N <= 10^6
  • 0 < f < 1, f Sut > Se

Example

m.ask("S-N fatigue strength: Sut = 700 MPa, Se = 300 MPa, f = 0.85, N = 1000000")
→ Sf_MPa = 300
Miner's rule damage with a single-slope S-N curveminer_damage_sn_curve

The Palmgren-Miner damage sum of stress-range blocks on an S-N curve N = Nc (Sc/S)^m, and how many repeats of the spectrum the part survives.

D = \sum_i\frac{n_i}{N_i},\quad N_i = N_c\Big(\frac{S_c}{S_i}\Big)^m

Inputs

  • ranges stress ranges in MPa (a list) vector
  • counts number of cycles of each range (a list) vector
  • Sc reference stress range of the curve at Nc cycles, MPa
  • m S-N slope (e.g. 3 for welded details)
  • Nc cycles at Sc (default 2e6) optional

Returns

  • damage Miner damage sum D
  • repeats_to_failure repeats of the spectrum until D = 1

Applies when

  • linear damage accumulation (Palmgren-Miner)
  • a single-slope curve without endurance limit

Example

m.ask("Miner's rule: ranges = [90], counts = [1000000], Sc = 90, m = 3")
→ damage = 0.5, repeats_to_failure = 2
Rainflow cycle counting of a load history (ASTM E1049)rainflow_counting

The cycles in a load or stress history by rainflow counting (three-point method, half cycles for the residue), as distinct ranges with their counts.

|x_3-x_2| \ge |x_2-x_1| \Rightarrow \text{count } |x_2-x_1|

Inputs

  • history the load or stress history, point by point (a list; any one unit) vector

Returns

  • ranges distinct ranges, largest first (in the history's unit)
  • counts cycles of each range (half cycles count 0.5)
  • total_cycles total number of cycles
  • max_range largest range

Applies when

  • at least 3 points, not constant
  • ASTM E1049-85: the first and last points are reversals, the residue counts as half cycles
  • ranges equal to 12 significant digits are merged

Example

m.ask("Rainflow counting: history = [0, 5, -3, 4, -2, 6, -4, 1, 0]")
→ ranges = [10.0, 9.0, 8.0, 6.0, 5.0, 1.0], counts = [0.5, 0.5, 0.5, 1.0, 1.0, 0.5], total_cycles = 4, max_range = 10
Shaft diameter for a design factor (DE-Goodman)shaft_diameter_de_goodman

The smallest solid-shaft diameter giving a required fatigue design factor under alternating and mean bending and torsion (distortion-energy Goodman).

d = \Big(\frac{16n}{\pi}\Big\{\frac{\sqrt{4(K_fM_a)^2+3(K_{fs}T_a)^2}}{S_e} + \frac{\sqrt{4(K_fM_m)^2+3(K_{fs}T_m)^2}}{S_{ut}}\Big\}\Big)^{1/3}

Inputs

  • n required fatigue design factor (>= 1)
  • Ma alternating bending moment [N*m]
  • Mm mean bending moment [N*m]
  • Ta alternating torque [N*m]
  • Tm mean torque [N*m]
  • Kf fatigue stress-concentration factor, bending
  • Kfs fatigue stress-concentration factor, torsion
  • Se fully corrected endurance limit [Pa]
  • Sut ultimate tensile strength [Pa]

Returns

  • d_mm required diameter, mm

Applies when

  • solid round shaft
  • the stress-concentration factors for the final size are assumed known
  • n >= 1

Example

m.ask("Shaft diameter DE-Goodman: n = 1.5, Ma = 150 N*m, Mm = 0 N*m, Ta = 0 N*m, Tm = 200 N*m, Kf = 1.6, Kfs = 1.4, Se = 200 MPa, Sut = 700 MPa")
→ d_mm = 28.6949
Shaft fatigue safety factor (DE-Goodman)shaft_fatigue_safety_factor

The fatigue factor of safety of a rotating solid shaft under alternating and mean bending and torsion by the distortion-energy Goodman criterion, with the von Mises stresses and (with Sy) the first-cycle yield factor.

\frac1n = \frac{16}{\pi d^3}\Big\{\frac{\sqrt{4(K_fM_a)^2+3(K_{fs}T_a)^2}}{S_e} + \frac{\sqrt{4(K_fM_m)^2+3(K_{fs}T_m)^2}}{S_{ut}}\Big\}

Inputs

  • d shaft diameter [m]
  • Ma alternating bending moment [N*m]
  • Mm mean bending moment [N*m]
  • Ta alternating torque [N*m]
  • Tm mean torque [N*m]
  • Kf fatigue stress-concentration factor, bending
  • Kfs fatigue stress-concentration factor, torsion
  • Se fully corrected endurance limit [Pa]
  • Sut ultimate tensile strength [Pa]
  • Sy yield strength (optional) [Pa] optional

Returns

  • n_fatigue fatigue safety factor (DE-Goodman)
  • sigma_a_vm_MPa alternating von Mises stress, MPa
  • sigma_m_vm_MPa mean von Mises stress, MPa
  • n_yield first-cycle yield factor (with Sy)

Applies when

  • solid round shaft, no axial load
  • Kf, Kfs >= 1
  • an alternating moment or torque present

Example

m.ask("Shaft fatigue safety factor: d = 40 mm, Ma = 150 N*m, Mm = 0 N*m, Ta = 0 N*m, Tm = 200 N*m, Kf = 1.6, Kfs = 1.4, Se = 200 MPa, Sut = 700 MPa")
→ n_fatigue = 4.06308, sigma_a_vm_MPa = 38.1972, sigma_m_vm_MPa = 38.593

Machine elements 15

Belt or rope friction on a drum (capstan equation)belt_friction_capstan

The largest tight-side tension a flat belt, rope or V-belt can hold for a given slack-side tension, friction coefficient and wrap angle.

\frac{T_1}{T_2} = e^{\mu\theta}\quad\Big(e^{\mu\theta/\sin(\beta/2)}\ \text{for a V-belt}\Big)

Inputs

  • T2 slack-side tension [N]
  • mu coefficient of friction
  • theta angle of wrap [rad]
  • beta included groove angle of a V-belt (optional; flat belt when absent) [rad] optional

Returns

  • T1 tight-side tension at impending slip [N]
  • ratio tension ratio T1/T2
  • friction_force net friction force T1 - T2 [N]

Applies when

  • impending slip, no centrifugal effect
  • mu > 0, wrap > 0

Example

m.ask("Capstan equation: T2 = 200 N, mu = 0.3, theta = 180 deg")
→ T1 = 513.266 N, ratio = 2.56633, friction_force = 313.266 N
Bolt tightening torque and preload (T = K F d)bolt_preload_torque

The tightening torque T = K F d that produces a bolt preload F with nut factor K and nominal diameter d, or the preload produced by a torque.

T = K F_i\,d

Inputs

  • K nut (torque) factor (about 0.2 for unlubricated steel)
  • d nominal bolt diameter [m]
  • F preload (give F or T) [N] optional
  • T tightening torque (give F or T) [N*m] optional

Returns

  • T tightening torque [N*m]
  • F bolt preload [N]
  • F_kN bolt preload, kN

Applies when

  • 0.05 <= K <= 0.5
  • exactly one of F and T

Example

m.ask("Bolt torque: K = 0.2, d = 12 mm, F = 25 kN")
→ T = 60 N*m, F = 25000 N, F_kN = 25
Eccentrically loaded bolt group (elastic method)eccentric_bolt_group

The direct shear per bolt, the largest resultant bolt force and which bolt carries it, for a group of identical bolts under a vertical load applied with a horizontal eccentricity.

\mathbf F_i = -\frac{P}{n}\hat{\mathbf y} + \frac{Pe}{\sum r_j^2}\,(y_i-\bar y,\; -(x_i-\bar x))

Inputs

  • bolts bolt positions, one row 'x y' per bolt, in mm matrix
  • P vertical load (downward) [N]
  • e horizontal distance of the load line from the bolt-group centroid (positive to the right) [m]

Returns

  • direct_kN direct shear per bolt, kN
  • max_bolt_force_kN largest resultant bolt force, kN
  • critical_bolt number of the most loaded bolt (1-based, the first if several are equal)
  • polar_sum_mm2 sum of r^2 about the centroid, mm^2

Applies when

  • identical bolts, rigid plate, elastic method
  • 2 to 40 bolts, not all at one point

Example

m.ask("Bolt group: bolts = [0 0; 0 100; 100 0; 100 100], P = 20 kN, e = 250 mm")
→ direct_kN = 5, max_bolt_force_kN = 21.5058, critical_bolt = 3, polar_sum_mm2 = 20000
Four-bar linkage position analysisfour_bar_linkage_position

The coupler and output-rocker angles and the transmission angle of a four-bar linkage at a given crank angle, on the open or the crossed branch.

K_1\cos\theta_4 - K_2\cos\theta_2 + K_3 = \cos(\theta_2-\theta_4),\quad \theta_4 = 2\arctan\frac{-B\mp\sqrt{B^2-4AC}}{2A}

Inputs

  • a input crank length [m]
  • b coupler length [m]
  • c output rocker length [m]
  • d ground link length [m]
  • theta2 crank angle from the ground link [rad]
  • branch assembly branch choice

Returns

  • theta3_deg coupler angle, degrees in [-180, 180)
  • theta4_deg output rocker angle, degrees in [-180, 180)
  • transmission_angle_deg transmission angle (acute), degrees

Applies when

  • ground pivots at (0, 0) and (d, 0)
  • open branch: the rocker pivot lies to the right of the directed coupler
  • refused when the linkage cannot close

Example

m.ask("Four-bar linkage: a = 2 m, b = 7 m, c = 9 m, d = 6 m, theta2 = 30 deg, branch = open")
→ theta3_deg = 88.8372, theta4_deg = 117.286, transmission_angle_deg = 28.4488
Helical compression spring: rate, deflection and shear stresshelical_compression_spring

The spring index, rate, deflection under a load and the wire shear stress (torsion alone, and with the direct-shear factor Ks = 1 + 0.5/C) of a round-wire helical spring.

k = \frac{Gd^4}{8D^3N_a},\quad \tau = K_s\frac{8FD}{\pi d^3},\quad K_s = 1 + \frac{0.5}{C}

Inputs

  • d wire diameter [m]
  • D mean coil diameter [m]
  • Na number of active coils
  • G shear modulus of the wire [Pa]
  • F axial load [N]

Returns

  • index spring index C = D/d
  • k spring rate [N/m]
  • deflection_mm deflection under F, mm
  • tau_torsion_MPa torsional shear stress 8FD/(pi d^3), MPa
  • tau_Ks_MPa shear stress with the direct-shear factor Ks, MPa

Applies when

  • C > 2
  • close-coiled (small helix angle)
  • curvature (Wahl) correction not included

Example

m.ask("Helical spring: d = 3 mm, D = 24 mm, Na = 10, G = 79 GPa, F = 100 N")
→ index = 8, k = 5786.13 N/m, deflection_mm = 17.2827, tau_torsion_MPa = 226.354, tau_Ks_MPa = 240.501
Lewis bending stress of a gear toothlewis_gear_bending_stress

The bending stress at the root of a spur-gear tooth by the Lewis equation sigma = Kv Wt/(F m Y) (SI, module m, form factor Y based on the module).

\sigma = \frac{K_v W_t}{F\,m\,Y}

Inputs

  • Wt transmitted (tangential) load [N]
  • F face width [m]
  • m module [m]
  • Y Lewis form factor (from the tooth count and pressure angle, based on the module)
  • Kv velocity (dynamic) factor, default 1 optional

Returns

  • sigma tooth bending stress [Pa]
  • sigma_MPa tooth bending stress, MPa

Applies when

  • Wt, F, m > 0
  • 0 < Y <= 1
  • Kv >= 1
  • load at the tip, one tooth in contact

Example

m.ask("Lewis bending stress: Wt = 2.5 kN, F = 40 mm, m = 4 mm, Y = 0.322")
→ sigma = 4.85248e+07 Pa, sigma_MPa = 48.5248
Power of a belt drive with centrifugal tensionbelt_drive_power

The centrifugal tension, slack-side tension and transmitted power of a flat or V-belt running at the allowable tight-side tension and impending slip.

\frac{T_1 - mv^2}{T_2 - mv^2} = e^{\mu\theta},\quad P = (T_1-T_2)v

Inputs

  • T1 allowable tight-side tension [N]
  • m belt mass per unit length [kg/m]
  • v belt speed [m/s]
  • mu coefficient of friction
  • theta wrap angle on the smaller pulley [rad]
  • beta included groove angle for a V-belt (optional) [rad] optional

Returns

  • Tc centrifugal tension m v^2 [N]
  • T2 slack-side tension [N]
  • P transmitted power [W]
  • P_kW transmitted power in kW

Applies when

  • impending slip on the smaller pulley
  • m v^2 < T1

Example

m.ask("Belt drive power: T1 = 1.2 kN, m = 0.4 kg/m, v = 20 m/s, mu = 0.3, theta = 160 deg")
→ Tc = 160 N, T2 = 609.987 N, P = 11800.3 W, P_kW = 11.8003
Power screw: raising and lowering torque, efficiency, self-lockingpower_screw_torque

The torque to raise and to lower a load with a square or Acme power screw (thread and collar friction), the raising efficiency and whether the screw is self-locking.

T_R = \frac{Fd_m}{2}\,\frac{l + \pi fd_m\sec\alpha}{\pi d_m - fl\sec\alpha} + \frac{Ff_cd_c}{2}

Inputs

  • F axial load [N]
  • dm mean thread diameter [m]
  • l lead [m]
  • f thread friction coefficient
  • alpha thread half-angle (0 for square, 14.5 deg for Acme; default 0) [rad] optional
  • fc collar friction coefficient (default 0) optional
  • dc collar mean diameter (needed with fc) [m] optional

Returns

  • T_raise torque to raise the load [N*m]
  • T_lower torque to lower the load (negative: the load lowers itself) [N*m]
  • efficiency efficiency when raising
  • self_locking yes if the thread alone holds the load

Applies when

  • alpha < 45 degrees
  • thread friction taken as f/cos(alpha)
  • single thrust collar

Example

m.ask("Power screw: F = 6.4 kN, dm = 30 mm, l = 12 mm, f = 0.08, fc = 0.08, dc = 40 mm")
→ T_raise = 30.3479 N*m, T_lower = 5.74271 N*m, efficiency = 0.402766, self_locking = no
Required catalogue rating of a rolling bearingbearing_catalog_rating

The basic dynamic load rating C10 a ball or roller bearing needs for a design load, life and speed at a required reliability (three-parameter Weibull, application factor).

C_{10} = a_fF_D\Big[\frac{x_D}{x_0 + (\theta-x_0)(\ln 1/R_D)^{1/b}}\Big]^{1/a}

Inputs

  • FD design (equivalent radial) load [N]
  • LD design life (hours) [s]
  • n speed (rpm) [rad/s]
  • R required reliability
  • kind ball (a = 3) or roller (a = 10/3) choice
  • af application (load) factor (default 1) optional
  • LR rating life of the catalogue, revolutions (default 1e6) optional
  • x0 Weibull guaranteed life multiple (default 0.02) optional
  • theta Weibull characteristic life multiple (default 4.459) optional
  • b Weibull shape (default 1.483) optional

Returns

  • C10 required catalogue rating [N]
  • C10_kN required rating in kN
  • design_life_multiple design life as a multiple of LR

Applies when

  • 0 < R < 1
  • Weibull defaults x0 = 0.02, theta = 4.459, b = 1.483 and LR = 1e6 revolutions unless given

Example

m.ask("Bearing catalogue rating: FD = 1.8 kN, LD = 30000 h, n = 500 rpm, R = 0.99, kind = ball, af = 1.2")
→ C10 = 34567.2 N, C10_kN = 34.5672, design_life_multiple = 900
Rolling-bearing life at a given reliabilitybearing_life_reliability

The rating (L10) life of a ball or roller bearing from its catalogue rating and load, and the life at another reliability from the three-parameter Weibull distribution, in revolutions and hours.

L_{10} = L_R\Big(\frac{C}{F}\Big)^a,\quad x = x_0 + (\theta-x_0)\Big(\ln\frac1R\Big)^{1/b}

Inputs

  • C catalogue (basic dynamic) load rating [N]
  • F equivalent radial load [N]
  • n speed (rpm) [rad/s]
  • R required reliability (e.g. 0.95 or 95%)
  • kind ball (a = 3) or roller (a = 10/3) bearing choice
  • LR rating life of the catalogue, revolutions (default 1e6) optional
  • x0 Weibull guaranteed life multiple (default 0.02) optional
  • theta Weibull characteristic life multiple (default 4.459) optional
  • b Weibull shape (default 1.483) optional

Returns

  • L10_rev rating life (90 % reliability), revolutions
  • L10_hours rating life in hours
  • life_multiple life at R as a multiple of the rating life
  • L_rev life at reliability R, revolutions
  • L_hours life at reliability R, hours

Applies when

  • 0 < R < 1
  • Weibull parameters of the catalogue (defaults: x0 = 0.02, theta = 4.459, b = 1.483)
  • constant load and speed

Example

m.ask("Bearing life: C = 30 kN, F = 4 kN, n = 1500 rpm, R = 0.95, kind = ball")
→ L10_rev = 4.21875e+08, L10_hours = 4687.5, life_multiple = 0.619056, L_rev = 2.61164e+08, L_hours = 2901.83
Slider-crank mechanism: slider position, velocity and accelerationslider_crank_kinematics

The slider position, velocity and acceleration and the connecting-rod angle of an in-line slider-crank mechanism at a crank angle, the crank turning at constant speed.

x = r\cos\theta + \sqrt{l^2 - r^2\sin^2\theta},\quad v = \omega\frac{dx}{d\theta},\quad a = \omega^2\frac{d^2x}{d\theta^2}

Inputs

  • r crank radius [m]
  • l connecting rod length [m]
  • theta crank angle from the line of stroke (top dead centre at 0) [rad]
  • omega constant crank speed (rad/s or rpm) [rad/s]

Returns

  • x distance of the slider pin from the crank centre [m]
  • v slider velocity (positive away from the crank) [m/s]
  • a slider acceleration [m/s^2]
  • rod_angle_deg connecting-rod angle to the line of stroke, degrees

Applies when

  • in-line (zero offset)
  • l > r
  • constant crank speed

Example

m.ask("Slider-crank: r = 50 mm, l = 200 mm, theta = 0 deg, omega = 100 rad/s")
→ x = 0.25 m, v = 0 m/s, a = -625 m/s^2, rod_angle_deg = 0
Speeds of a simple planetary (epicyclic) gear trainplanetary_gear_train

The third speed of a sun-planet-ring-carrier train from the other two (any member may be held: speed 0), with the planets' absolute speed and tooth number.

\frac{\omega_s - \omega_c}{\omega_r - \omega_c} = -\frac{N_r}{N_s}

Inputs

  • Ns teeth on the sun integer
  • Nr teeth on the ring (internal gear) integer
  • ws sun speed (signed; rpm or rad/s) [rad/s] optional
  • wr ring speed (signed) [rad/s] optional
  • wc carrier (arm) speed (signed) [rad/s] optional

Returns

  • ws_rpm sun speed, rpm
  • wr_rpm ring speed, rpm
  • wc_rpm carrier speed, rpm
  • wp_rpm absolute speed of each planet, rpm
  • Np teeth on each planet

Applies when

  • exactly two of the three speeds given
  • Nr > Ns, Nr - Ns even
  • same sign convention for every speed

Example

m.ask("Planetary gear train: Ns = 20, Nr = 80, ws = 1200 rpm, wr = 0 rpm")
→ ws_rpm = 1200, wr_rpm = 0, wc_rpm = 240, wp_rpm = -400, Np = 30
Spur gear mesh geometry and contact ratiospur_gear_contact_ratio

Pitch diameters, centre distance, length of the path of contact, base pitch and contact ratio of a pair of standard full-depth spur gears.

Z = \sqrt{r_{a1}^2-r_{b1}^2} + \sqrt{r_{a2}^2-r_{b2}^2} - C\sin\phi,\quad m_c = \frac{Z}{\pi m\cos\phi}

Inputs

  • N1 teeth on the pinion integer
  • N2 teeth on the gear integer
  • m module (e.g. 4 mm) [m]
  • phi pressure angle [rad]

Returns

  • d1_mm pinion pitch diameter, mm
  • d2_mm gear pitch diameter, mm
  • C_mm centre distance, mm
  • Z_mm length of the path of contact, mm
  • pb_mm base pitch, mm
  • contact_ratio contact ratio Z / p_b

Applies when

  • standard full-depth teeth: addendum = 1 module
  • standard centre distance
  • no interference (refused otherwise)
  • 10 <= pressure angle <= 30 degrees

Example

m.ask("Spur gear contact ratio: N1 = 20, N2 = 50, m = 4 mm, phi = 20 deg")
→ d1_mm = 80, d2_mm = 200, C_mm = 140, Z_mm = 19.552, pb_mm = 11.8085, contact_ratio = 1.65576
Torque capacity of a disc clutch or brakedisc_clutch_torque

The friction torque and the largest contact pressure of a plate (disc) clutch or brake with an annular friction face, by the uniform-wear or uniform-pressure assumption.

T_{wear} = \frac{Ff(D+d)}{4},\quad T_{press} = \frac{Ff}{3}\,\frac{D^3-d^3}{D^2-d^2}

Inputs

  • F axial actuating force [N]
  • f coefficient of friction
  • D outer diameter of the friction face [m]
  • d inner diameter of the friction face [m]
  • model uniform wear (worn-in) or uniform pressure (new) choice
  • pairs number of friction-surface pairs (default 1) integer optional

Returns

  • T torque capacity [N*m]
  • p_max_MPa largest contact pressure, MPa

Applies when

  • d < D
  • the same force on every pair

Example

m.ask("Disc clutch: F = 4 kN, f = 0.3, D = 200 mm, d = 100 mm, model = uniform wear")
→ T = 90 N*m, p_max_MPa = 0.254648
Wahl curvature factor of a helical springwahl_factor

The Wahl stress-correction factor K_W = (4C - 1)/(4C - 4) + 0.615/C of a round-wire helical spring (with the Bergstrasser and direct-shear factors), and with a load the corrected maximum shear stress.

K_W = \frac{4C-1}{4C-4} + \frac{0.615}{C},\quad \tau = K_W\frac{8FD}{\pi d^3}

Inputs

  • d wire diameter [m]
  • D mean coil diameter [m]
  • F axial load (optional) [N] optional

Returns

  • index spring index C = D/d
  • K_wahl Wahl factor
  • K_bergstrasser Bergstrasser factor (4C + 2)/(4C - 3)
  • K_s direct-shear factor 1 + 0.5/C
  • tau_MPa maximum shear stress K_W 8FD/(pi d^3), MPa (with F)

Applies when

  • C = D/d > 2
  • round wire, close-coiled

Example

m.ask("Wahl factor: d = 3 mm, D = 24 mm")
→ index = 8, K_wahl = 1.18402, K_bergstrasser = 1.17241, K_s = 1.0625

Pressure vessels 4

Shrink (press) fit: interface pressure and hoop stressesshrink_fit_pressure

The contact pressure of an interference fit between a hub and a solid or hollow shaft of the same material, and the hoop stresses it causes at the interface.

p = \frac{E\delta}{2R^3}\,\frac{(r_o^2-R^2)(R^2-r_i^2)}{r_o^2-r_i^2}

Inputs

  • delta radial interference (shaft radius minus hub bore radius) [m]
  • R nominal interface radius [m]
  • ro outer radius of the hub [m]
  • E Young's modulus (both parts) [Pa]
  • ri bore radius of a hollow shaft (default 0: solid) [m] optional

Returns

  • p_MPa interface pressure, MPa
  • hub_hoop_MPa hoop stress in the hub at the interface, MPa
  • shaft_hoop_MPa hoop stress in the shaft at the interface, MPa

Applies when

  • ri < R < ro
  • both parts of the same material
  • plane stress, elastic, long hub

Example

m.ask("Shrink fit: delta = 0.02 mm, R = 25 mm, ro = 50 mm, E = 207 GPa")
→ p_MPa = 62.1, hub_hoop_MPa = 103.5, shaft_hoop_MPa = -62.1
Stresses in a rotating disk (solid or with a central hole)rotating_disk_stresses

The largest hoop and radial stresses, the radius of the largest radial stress and the hoop stress at the rim of a thin disk of uniform thickness spinning at constant speed.

\sigma_\theta(r_i) = \frac{3+\nu}{4}\rho\omega^2\Big(r_o^2 + \frac{1-\nu}{3+\nu}r_i^2\Big),\quad \sigma_{r,max} = \frac{3+\nu}{8}\rho\omega^2(r_o-r_i)^2

Inputs

  • rho density [kg/m^3]
  • omega angular speed (rpm or rad/s) [rad/s]
  • nu Poisson's ratio
  • ro outer radius [m]
  • ri radius of the central hole (default 0: solid) [m] optional

Returns

  • hoop_max_MPa largest hoop stress (at the bore, or the centre of a solid disk), MPa
  • radial_max_MPa largest radial stress, MPa
  • r_radial_max radius of the largest radial stress (sqrt(ri ro); 0 for a solid disk) [m]
  • hoop_rim_MPa hoop stress at the outer rim, MPa

Applies when

  • thin disk of uniform thickness, plane stress
  • free inner and outer edges
  • 0 <= nu < 0.5

Example

m.ask("Rotating disk: rho = 7800 kg/m^3, omega = 3000 rpm, nu = 0.3, ro = 250 mm, ri = 50 mm")
→ hoop_max_MPa = 40.0311, radial_max_MPa = 12.7022, r_radial_max = 0.111803 m, hoop_rim_MPa = 10.0078
Thick-walled cylinder under pressure (Lame equations)thick_walled_cylinder

Radial and hoop stresses at a radius, the hoop stresses at both surfaces, the maximum shear at the bore and the closed-end axial stress of a thick cylinder under internal and external pressure.

\sigma_{r,\theta} = \frac{p_ia^2 - p_ob^2}{b^2-a^2} \mp \frac{(p_i-p_o)a^2b^2}{(b^2-a^2)r^2}

Inputs

  • pi internal pressure [Pa]
  • po external pressure [Pa]
  • a inner radius [m]
  • b outer radius [m]
  • r radius at which to evaluate (default: the bore, r = a) [m] optional

Returns

  • sr_MPa radial stress at r, MPa
  • st_MPa hoop stress at r, MPa
  • st_inner_MPa hoop stress at the bore, MPa
  • st_outer_MPa hoop stress at the outer surface, MPa
  • tau_max_inner_MPa maximum shear stress at the bore, MPa
  • sz_closed_MPa axial stress with closed ends, MPa

Applies when

  • a < b
  • pressures >= 0, not both zero
  • a <= r <= b
  • linear elastic

Example

m.ask("Thick-walled cylinder: pi = 100 MPa, po = 0 MPa, a = 50 mm, b = 100 mm")
→ sr_MPa = -100, st_MPa = 166.667, st_inner_MPa = 166.667, st_outer_MPa = 66.6667, tau_max_inner_MPa = 133.333, sz_closed_MPa = 33.3333
Thin-walled pressure vessel stresses (cylinder or sphere)thin_walled_pressure_vessel

Hoop and longitudinal stresses and the in-plane and absolute maximum shear stresses in the wall of a thin cylindrical or spherical pressure vessel.

\sigma_h = \frac{pr}{t},\quad \sigma_l = \frac{pr}{2t}

Inputs

  • p internal gauge pressure [Pa]
  • r inner radius [m]
  • t wall thickness [m]
  • shape vessel shape choice

Returns

  • hoop_MPa hoop (circumferential) stress, MPa
  • longitudinal_MPa longitudinal (axial) stress, MPa
  • tau_inplane_MPa maximum in-plane shear stress, MPa
  • tau_abs_MPa absolute maximum shear stress at the outer surface, MPa

Applies when

  • r/t >= 10 (thin wall)
  • closed ends, internal pressure only
  • r is the inner radius

Example

m.ask("Thin-walled pressure vessel: p = 2 MPa, r = 500 mm, t = 10 mm, shape = cylinder")
→ hoop_MPa = 100, longitudinal_MPa = 50, tau_inplane_MPa = 25, tau_abs_MPa = 50

Section properties 10

Composite section of rectangles (parallel-axis theorem)composite_section_properties

Area, centroid, centroidal second moments, product of inertia and principal second moments of a section built from non-overlapping rectangles.

I_x = \sum_i\Big(\frac{b_ih_i^3}{12} + A_i(y_i-\bar y)^2\Big),\quad I_{xy} = \sum_i A_i(x_i-\bar x)(y_i-\bar y)

Inputs

  • rects one row per rectangle: width b, height h, centre x, centre y, all in mm matrix

Returns

  • A area in mm^2
  • x_bar centroid x in mm
  • y_bar centroid y in mm
  • Ix centroidal second moment about x in mm^4
  • Iy centroidal second moment about y in mm^4
  • Ixy centroidal product of inertia in mm^4
  • I1 major principal second moment in mm^4
  • I2 minor principal second moment in mm^4

Applies when

  • rectangles do not overlap (touching is allowed)
  • 1 to 20 rectangles, all dimensions in mm

Example

m.ask("Composite section: rects = [200 20 0 10; 20 300 0 170]")
→ A = 10000, x_bar = 0, y_bar = 106, Ix = 1.06573e+08, Iy = 1.35333e+07, Ixy = 0, I1 = 1.06573e+08, I2 = 1.35333e+07
Section properties of a channel (C) sectionchannel_section_properties

Area, centroid distance from the back of the web, second moments, section moduli and radii of gyration of a channel with square corners.

\bar x = \frac{\sum A_i x_i}{\sum A_i},\quad I_y = \sum\Big(\frac{h_ib_i^3}{12} + A_i(x_i-\bar x)^2\Big)

Inputs

  • b flange width (including the web) [m]
  • h overall depth [m]
  • tf flange thickness [m]
  • tw web thickness [m]

Returns

  • A area [m^2]
  • x_bar distance of the centroid from the back of the web [m]
  • Ix second moment about the horizontal axis of symmetry [m^4]
  • Iy second moment about the vertical centroidal axis [m^4]
  • Zx section modulus about x [m^3]
  • Zy_min smaller section modulus about y (flange tips) [m^3]
  • rx radius of gyration about x [m]
  • ry radius of gyration about y [m]

Applies when

  • 2 tf < h
  • tw < b
  • square corners, no taper

Example

m.ask("Channel section: b = 80 mm, h = 200 mm, tf = 10 mm, tw = 7 mm")
→ A = 0.00286 m^2, x_bar = 0.0239196 m, Ix = 1.78553e-05 m^4, Iy = 1.79757e-06 m^4, Zx = 0.000178553 m^3, Zy_min = 3.20535e-05 m^3, rx = 0.0790134 m, ry = 0.0250704 m
Section properties of a hollow circle (tube)hollow_circular_section_properties

Area, second moment of area, polar moment, elastic and plastic section moduli and radius of gyration of a circular tube.

I = \frac{\pi(D^4-d^4)}{64},\quad J = \frac{\pi(D^4-d^4)}{32}

Inputs

  • D outer diameter [m]
  • d inner diameter [m]

Returns

  • A area [m^2]
  • I second moment of area about a diameter [m^4]
  • J polar second moment of area (torsion constant) [m^4]
  • Z elastic section modulus [m^3]
  • Zp plastic section modulus [m^3]
  • r radius of gyration [m]

Applies when

  • D > d >= 0

Example

m.ask("Hollow circular section: D = 60 mm, d = 40 mm")
→ A = 0.0015708 m^2, I = 5.10509e-07 m^4, J = 1.02102e-06 m^4, Z = 1.7017e-05 m^3, Zp = 2.53333e-05 m^3, r = 0.0180278 m
Section properties of a hollow rectangle (box)hollow_rectangular_section_properties

Area, second moments, elastic section moduli, radii of gyration and the plastic modulus about x of a rectangular hollow section of uniform wall thickness.

I_x = \frac{BH^3 - bh^3}{12},\quad Z_{p,x} = \frac{BH^2 - bh^2}{4}

Inputs

  • B outer width [m]
  • H outer depth [m]
  • t wall thickness [m]

Returns

  • A cross-sectional area [m^2]
  • Ix second moment of area about the horizontal centroidal axis [m^4]
  • Iy second moment of area about the vertical centroidal axis [m^4]
  • Zx elastic section modulus about x (Ix / distance to the extreme fibre) [m^3]
  • Zy elastic section modulus about y [m^3]
  • rx radius of gyration about x [m]
  • ry radius of gyration about y [m]
  • Zpx plastic section modulus about x [m^3]

Applies when

  • B, H, t > 0
  • 2t < min(B, H)
  • square corners (no corner radii)

Example

m.ask("Box section: B = 100 mm, H = 200 mm, t = 10 mm")
→ A = 0.0056 m^2, Ix = 2.77867e-05 m^4, Iy = 8.98667e-06 m^4, Zx = 0.000277867 m^3, Zy = 0.000179733 m^3, rx = 0.0704408 m, ry = 0.0400595 m, Zpx = 0.000352 m^3
Section properties of a polygonal sectionpolygon_section_properties

Area, centroid, centroidal second moments, product of inertia and principal second moments of any simple polygon given by its vertices.

A = \tfrac12\sum c_i,\quad I_x = \tfrac1{12}\sum c_i\,(y_i^2+y_iy_{i+1}+y_{i+1}^2) - A\bar y^2

Inputs

  • vertices vertices in order (either sense), one row 'x y' per vertex, in mm matrix

Returns

  • A area in mm^2
  • x_bar centroid x in mm
  • y_bar centroid y in mm
  • Ix centroidal second moment about x in mm^4
  • Iy centroidal second moment about y in mm^4
  • Ixy centroidal product of inertia in mm^4
  • I1 major principal second moment in mm^4
  • I2 minor principal second moment in mm^4

Applies when

  • 3 to 60 distinct vertices
  • a simple polygon (edges do not cross)
  • no holes

Example

m.ask("Polygon section: vertices = [0 0; 100 0; 100 200; 0 200]")
→ A = 20000, x_bar = 50, y_bar = 100, Ix = 6.66667e+07, Iy = 1.66667e+07, Ixy = 0, I1 = 6.66667e+07, I2 = 1.66667e+07
Section properties of a solid circlecircular_section_properties

Area, second moment of area, polar moment, elastic and plastic section moduli and radius of gyration of a solid circular section.

I = \frac{\pi d^4}{64},\quad J = \frac{\pi d^4}{32},\quad Z = \frac{\pi d^3}{32}

Inputs

  • d diameter [m]

Returns

  • A area [m^2]
  • I second moment of area about a diameter [m^4]
  • J polar second moment of area (torsion constant of a circle) [m^4]
  • Z elastic section modulus [m^3]
  • Zp plastic section modulus [m^3]
  • r radius of gyration [m]

Applies when

  • d > 0

Example

m.ask("Circular section: d = 50 mm")
→ A = 0.0019635 m^2, I = 3.06796e-07 m^4, J = 6.13592e-07 m^4, Z = 1.22718e-05 m^3, Zp = 2.08333e-05 m^3, r = 0.0125 m
Section properties of a solid rectanglerectangular_section_properties

Area, second moments of area, elastic section moduli, radii of gyration and polar moment of a solid rectangle b wide and h deep.

I_x = \frac{bh^3}{12},\quad Z_x = \frac{bh^2}{6},\quad r_x = \sqrt{I_x/A}

Inputs

  • b width (horizontal) [m]
  • h depth (vertical) [m]

Returns

  • A cross-sectional area [m^2]
  • Ix second moment of area about the horizontal centroidal axis [m^4]
  • Iy second moment of area about the vertical centroidal axis [m^4]
  • Zx elastic section modulus about x (Ix / distance to the extreme fibre) [m^3]
  • Zy elastic section modulus about y [m^3]
  • rx radius of gyration about x [m]
  • ry radius of gyration about y [m]
  • J_polar polar second moment about the centroid (Ix + Iy; not the torsion constant) [m^4]

Applies when

  • b, h > 0

Example

m.ask("Rectangular section: b = 100 mm, h = 200 mm")
→ A = 0.02 m^2, Ix = 6.66667e-05 m^4, Iy = 1.66667e-05 m^4, Zx = 0.000666667 m^3, Zy = 0.000333333 m^3, rx = 0.057735 m, ry = 0.0288675 m, J_polar = 8.33333e-05 m^4
Section properties of a symmetric I-sectioni_section_properties

Area, second moments, elastic and plastic section moduli, radii of gyration and the shape factor of a doubly symmetric I-section (flanges b x tf, web tw, overall depth h, no fillets).

I_x = \frac{bh^3 - (b-t_w)(h-2t_f)^3}{12},\quad Z_{p,x} = bt_f(h-t_f) + \frac{t_w(h-2t_f)^2}{4}

Inputs

  • b flange width [m]
  • h overall depth [m]
  • tf flange thickness [m]
  • tw web thickness [m]

Returns

  • A cross-sectional area [m^2]
  • Ix second moment of area about the horizontal centroidal axis [m^4]
  • Iy second moment of area about the vertical centroidal axis [m^4]
  • Zx elastic section modulus about x (Ix / distance to the extreme fibre) [m^3]
  • Zy elastic section modulus about y [m^3]
  • rx radius of gyration about x [m]
  • ry radius of gyration about y [m]
  • Zpx plastic section modulus about x [m^3]
  • Zpy plastic section modulus about y [m^3]
  • shape_factor_x shape factor Zpx / Zx

Applies when

  • 2 tf < h
  • tw < b
  • no root fillets

Example

m.ask("I-section: b = 150 mm, h = 300 mm, tf = 12 mm, tw = 8 mm")
→ A = 0.005808 m^2, Ix = 8.87092e-05 m^4, Iy = 6.76178e-06 m^4, Zx = 0.000591395 m^3, Zy = 9.0157e-05 m^3, rx = 0.123586 m, ry = 0.0341206 m, Zpx = 0.000670752 m^3, Zpy = 0.000139416 m^3, shape_factor_x = 1.13419
Section properties of a T-sectiont_section_properties

Area, centroid height, second moments, top and bottom section moduli and radii of gyration of a T-section (flange on top).

\bar y = \frac{\sum A_i y_i}{\sum A_i},\quad I_x = \sum\Big(\frac{b_ih_i^3}{12} + A_i(y_i - \bar y)^2\Big)

Inputs

  • bf flange width [m]
  • tf flange thickness [m]
  • h overall depth [m]
  • tw stem (web) thickness [m]

Returns

  • A area [m^2]
  • y_bar height of the centroid above the bottom of the stem [m]
  • Ix second moment about the horizontal centroidal axis [m^4]
  • Iy second moment about the vertical axis of symmetry [m^4]
  • Z_top section modulus for the top fibre [m^3]
  • Z_bottom section modulus for the bottom fibre [m^3]
  • rx radius of gyration about x [m]
  • ry radius of gyration about y [m]

Applies when

  • tf < h
  • tw <= bf
  • no fillets

Example

m.ask("T-section: bf = 120 mm, tf = 20 mm, h = 150 mm, tw = 15 mm")
→ A = 0.00435 m^2, y_bar = 0.106379 m, Ix = 8.87797e-06 m^4, Iy = 2.91656e-06 m^4, Z_top = 0.000203527 m^3, Z_bottom = 8.34558e-05 m^3, rx = 0.0451765 m, ry = 0.0258935 m
Section properties of an angle (L) section, with principal axesangle_section_properties

Area, centroid, centroidal second moments and product of inertia, principal second moments, the principal angle and the least radius of gyration of an equal or unequal angle.

I_{1,2} = \frac{I_x+I_y}{2} \pm \sqrt{\Big(\frac{I_x-I_y}{2}\Big)^2 + I_{xy}^2},\quad \tan2\varphi = \frac{-2I_{xy}}{I_x-I_y}

Inputs

  • b horizontal leg length [m]
  • h vertical leg length [m]
  • t thickness (both legs) [m]

Returns

  • A area [m^2]
  • x_bar centroid distance from the back of the vertical leg [m]
  • y_bar centroid distance from the bottom of the horizontal leg [m]
  • Ix centroidal second moment about x [m^4]
  • Iy centroidal second moment about y [m^4]
  • Ixy centroidal product of inertia (integral of x y dA) [m^4]
  • I1 major principal second moment [m^4]
  • I2 minor principal second moment [m^4]
  • principal_angle_deg angle of the major principal axis from x, degrees, in (-90, 90]
  • r_min least radius of gyration [m]

Applies when

  • t < b and t < h
  • square corners, no root radius

Example

m.ask("Angle section: b = 100 mm, h = 100 mm, t = 10 mm")
→ A = 0.0019 m^2, x_bar = 0.0286842 m, y_bar = 0.0286842 m, Ix = 1.80004e-06 m^4, Iy = 1.80004e-06 m^4, Ixy = -1.06579e-06 m^4, I1 = 2.86583e-06 m^4, I2 = 7.34254e-07 m^4, principal_angle_deg = 45, r_min = 0.0196583 m

Statics 3

Moment of a force about a point (2D)moment_of_a_force

The moment of a force (Fx, Fy) applied at (x, y) about the point (x0, y0), counterclockwise positive, and the perpendicular distance to its line of action.

M_O = (x - x_0)F_y - (y - y_0)F_x,\quad d = \frac{|M_O|}{|\mathbf F|}

Inputs

  • Fx x component of the force [N]
  • Fy y component of the force [N]
  • x x coordinate of the point of application [m]
  • y y coordinate of the point of application [m]
  • x0 x coordinate of the moment centre (default 0) [m] optional
  • y0 y coordinate of the moment centre (default 0) [m] optional

Returns

  • M moment about the point (counterclockwise positive) [N*m]
  • d perpendicular distance from the point to the line of action [m]

Applies when

  • the force is not zero

Example

m.ask("Moment of a force: Fx = 100 N, Fy = 200 N, x = 2 m, y = 1 m")
→ M = 300 N*m, d = 1.34164 m
Resultant of concurrent coplanar forcesresultant_of_concurrent_forces

The magnitude, components and direction of the resultant of forces acting through one point in a plane.

R = \sqrt{\Big(\sum F_i\cos\theta_i\Big)^2 + \Big(\sum F_i\sin\theta_i\Big)^2},\quad \theta_R = \operatorname{atan2}(R_y, R_x)

Inputs

  • F force magnitudes in N (a list) vector
  • theta direction of each force in degrees, counterclockwise from +x (a list) vector

Returns

  • R magnitude of the resultant [N]
  • Rx x component of the resultant [N]
  • Ry y component of the resultant [N]
  • direction_deg direction of the resultant in degrees, counterclockwise from +x, in (-180, 180]

Applies when

  • F and theta have the same length
  • magnitudes >= 0, at least one > 0
  • a zero resultant is reported with direction 0

Example

m.ask("Resultant of concurrent forces: F = [3, 4], theta = [0, 90]")
→ R = 5 N, Rx = 3 N, Ry = 4 N, direction_deg = 53.1301
Tensions in two cables holding a weighttwo_cable_equilibrium

The tensions in two cables, one rising to the left at angle alpha and one rising to the right at angle beta above the horizontal, that hold a weight W at rest.

T_1 = \frac{W\cos\beta}{\sin(\alpha+\beta)},\quad T_2 = \frac{W\cos\alpha}{\sin(\alpha+\beta)}

Inputs

  • W weight held [N]
  • alpha angle of the left cable above the horizontal [rad]
  • beta angle of the right cable above the horizontal [rad]

Returns

  • T1 tension in the left cable [N]
  • T2 tension in the right cable [N]

Applies when

  • W > 0
  • 0 < alpha, beta < 90 degrees

Example

m.ask("Two cable tensions: W = 500 N, alpha = 30 deg, beta = 45 deg")
→ T1 = 366.025 N, T2 = 448.288 N

Stress analysis 5

Combined axial force and biaxial bending of a rectangular sectioncombined_axial_and_bending_stress

Normal stresses at the four corners of a rectangular section carrying an axial force and bending moments about both axes, with the extreme values.

\sigma = \frac{N}{A} + \frac{M_xy}{I_x} + \frac{M_yx}{I_y}

Inputs

  • b width (along x) [m]
  • h depth (along y) [m]
  • N axial force (tension positive) [N]
  • Mx moment about x (positive: tension at +y) [N*m]
  • My moment about y (positive: tension at +x) [N*m]

Returns

  • sigma_corners_MPa stresses at the corners (+x,+y), (-x,+y), (-x,-y), (+x,-y), MPa
  • sigma_max_MPa largest (most tensile) stress, MPa
  • sigma_min_MPa smallest (most compressive) stress, MPa
  • sigma_axial_MPa uniform axial part N/A, MPa

Applies when

  • linear elastic, plane sections
  • moments about the centroidal axes

Example

m.ask("Combined axial and bending stress: b = 100 mm, h = 200 mm, N = -50 kN, Mx = 8 kN*m, My = 2 kN*m")
→ sigma_corners_MPa = [15.5, 3.5, -20.5, -8.5], sigma_max_MPa = 15.5, sigma_min_MPa = -20.5, sigma_axial_MPa = -2.5
Plane stress transformation to rotated axesplane_stress_transformation

The normal and shear stresses on axes rotated counterclockwise by theta from x, for a plane state of stress.

\sigma_{x'} = \frac{\sigma_x+\sigma_y}{2} + \frac{\sigma_x-\sigma_y}{2}\cos2\theta + \tau_{xy}\sin2\theta

Inputs

  • sx normal stress sigma_x [Pa]
  • sy normal stress sigma_y [Pa]
  • txy shear stress tau_xy [Pa]
  • theta rotation of the axes, counterclockwise from x [rad]

Returns

  • sx_t_MPa sigma_x' in MPa
  • sy_t_MPa sigma_y' in MPa
  • txy_t_MPa tau_x'y' in MPa

Applies when

  • plane stress
  • tension positive, theta counterclockwise

Example

m.ask("Plane stress transformation: sx = 80 MPa, sy = -40 MPa, txy = 25 MPa, theta = 30 deg")
→ sx_t_MPa = 71.6506, sy_t_MPa = -31.6506, txy_t_MPa = -39.4615
Principal stresses and maximum shear (Mohr's circle, plane stress)principal_stresses_2d

Principal stresses, their direction, the maximum in-plane and absolute shear stresses and the von Mises stress of a plane state of stress.

\sigma_{1,2} = \frac{\sigma_x+\sigma_y}{2} \pm \sqrt{\Big(\frac{\sigma_x-\sigma_y}{2}\Big)^2 + \tau_{xy}^2},\quad \tan2\theta_p = \frac{2\tau_{xy}}{\sigma_x-\sigma_y}

Inputs

  • sx normal stress sigma_x [Pa]
  • sy normal stress sigma_y [Pa]
  • txy shear stress tau_xy [Pa]

Returns

  • s1_MPa larger in-plane principal stress, MPa
  • s2_MPa smaller in-plane principal stress, MPa
  • tau_max_inplane_MPa maximum in-plane shear stress (radius of Mohr's circle), MPa
  • theta_p_deg angle from x to the sigma_1 direction, degrees in (-90, 90] (0 when the circle is a point)
  • tau_abs_max_MPa absolute maximum shear stress including sigma_z = 0, MPa
  • von_mises_MPa von Mises equivalent stress, MPa

Applies when

  • plane stress (sigma_z = 0)
  • tension positive

Example

m.ask("Principal stresses: sx = 50 MPa, sy = -10 MPa, txy = 40 MPa")
→ s1_MPa = 70, s2_MPa = -30, tau_max_inplane_MPa = 50, theta_p_deg = 26.5651, tau_abs_max_MPa = 50, von_mises_MPa = 88.8819
Principal stresses of a three-dimensional stress stateprincipal_stresses_3d

The three principal stresses, the absolute maximum shear, von Mises, hydrostatic and octahedral shear stresses of a general 3D state of stress.

\det(\boldsymbol\sigma - \sigma\mathbf I) = 0,\quad \tau_{max} = \frac{\sigma_1-\sigma_3}{2},\quad \tau_{oct} = \frac{\sqrt2}{3}\sigma_{vm}

Inputs

  • sx sigma_x [Pa]
  • sy sigma_y [Pa]
  • sz sigma_z [Pa]
  • txy tau_xy [Pa]
  • tyz tau_yz [Pa]
  • tzx tau_zx [Pa]

Returns

  • s1_MPa largest principal stress, MPa
  • s2_MPa intermediate principal stress, MPa
  • s3_MPa smallest principal stress, MPa
  • tau_max_MPa absolute maximum shear stress (s1 - s3)/2, MPa
  • von_mises_MPa von Mises stress, MPa
  • hydrostatic_MPa mean (hydrostatic) stress, MPa
  • tau_oct_MPa octahedral shear stress, MPa

Applies when

  • symmetric stress tensor
  • tension positive

Example

m.ask("Principal stresses 3D: sx = 100 MPa, sy = 0 MPa, sz = 0 MPa, txy = 0 MPa, tyz = 0 MPa, tzx = 0 MPa")
→ s1_MPa = 100, s2_MPa = 0, s3_MPa = 0, tau_max_MPa = 50, von_mises_MPa = 100, hydrostatic_MPa = 33.3333, tau_oct_MPa = 47.1405
Strain rosette: strains, principal strains and principal stressesstrain_rosette

From the readings of a three-gauge rosette (rectangular 0/45/90 or delta 0/60/120 degrees): the strain components, the principal strains and their direction, and the principal stresses (plane stress).

\varepsilon_{1,2} = \frac{\varepsilon_x+\varepsilon_y}{2} \pm \sqrt{\Big(\frac{\varepsilon_x-\varepsilon_y}{2}\Big)^2 + \Big(\frac{\gamma_{xy}}{2}\Big)^2},\quad \sigma_1 = \frac{E(\varepsilon_1+\nu\varepsilon_2)}{1-\nu^2}

Inputs

  • ea strain of gauge a (at 0 degrees), microstrain
  • eb strain of gauge b (45 or 60 degrees), microstrain
  • ec strain of gauge c (90 or 120 degrees), microstrain
  • E Young's modulus [Pa]
  • nu Poisson's ratio
  • layout rosette layout: rectangular (0/45/90) or delta (0/60/120) choice

Returns

  • ex strain eps_x, microstrain
  • ey strain eps_y, microstrain
  • gxy shear strain gamma_xy, microstrain
  • e1 larger principal strain, microstrain
  • e2 smaller principal strain, microstrain
  • theta_p_deg angle from gauge a to the eps_1 direction, degrees in (-90, 90]
  • s1_MPa larger principal stress, MPa
  • s2_MPa smaller principal stress, MPa

Applies when

  • gauge angles measured counterclockwise from gauge a
  • plane stress, linear elastic isotropic
  • 0 <= nu < 0.5

Example

m.ask("Strain rosette: ea = 400, eb = 300, ec = -100, E = 200 GPa, nu = 0.3, layout = rectangular")
→ ex = 400, ey = -100, gxy = 300, e1 = 441.548, e2 = -141.548, theta_p_deg = 15.4819, s1_MPa = 87.7106, s2_MPa = -1.99633

Stress and strain 3

Bar fixed at both ends with an axial load at a stepbar_fixed_at_both_ends

Reactions, stresses in both parts and the displacement of the loaded joint of a two-part bar held between two rigid supports, loaded axially at the joint.

R_A = P\frac{k_1}{k_1+k_2},\quad k_i = \frac{A_iE_i}{L_i},\quad \delta = \frac{P}{k_1+k_2}

Inputs

  • P axial load at the joint (towards end B) [N]
  • L1 length of part 1 (end A to the joint) [m]
  • A1 area of part 1 [m^2]
  • E1 modulus of part 1 [Pa]
  • L2 length of part 2 [m]
  • A2 area of part 2 [m^2]
  • E2 modulus of part 2 [Pa]

Returns

  • RA reaction at A [N]
  • RB reaction at B [N]
  • stress1_MPa stress in part 1 in MPa (tension positive)
  • stress2_MPa stress in part 2 in MPa (compression negative)
  • displacement_mm displacement of the joint in mm

Applies when

  • rigid supports, no gap
  • linear elastic, no buckling of the compressed part

Example

m.ask("Bar fixed at both ends: P = 60 kN, L1 = 0.4 m, A1 = 500 mm^2, E1 = 200 GPa, L2 = 0.4 m, A2 = 500 mm^2, E2 = 200 GPa")
→ RA = 30000 N, RB = 30000 N, stress1_MPa = 60, stress2_MPa = -60, displacement_mm = 0.12
Generalized Hooke's law: strains from a 3D stress stategeneralized_hookes_law

The six strain components and the volumetric strain of an isotropic linear-elastic material under a general three-dimensional stress state.

\varepsilon_x = \frac{1}{E}\big[\sigma_x - \nu(\sigma_y+\sigma_z)\big],\quad \gamma_{xy} = \frac{\tau_{xy}}{G},\quad G = \frac{E}{2(1+\nu)}

Inputs

  • sx sigma_x [Pa]
  • sy sigma_y [Pa]
  • sz sigma_z [Pa]
  • txy tau_xy [Pa]
  • tyz tau_yz [Pa]
  • tzx tau_zx [Pa]
  • E Young's modulus [Pa]
  • nu Poisson's ratio

Returns

  • ex eps_x, microstrain
  • ey eps_y, microstrain
  • ez eps_z, microstrain
  • gxy gamma_xy, microstrain
  • gyz gamma_yz, microstrain
  • gzx gamma_zx, microstrain
  • volumetric volumetric strain eps_x + eps_y + eps_z, microstrain

Applies when

  • isotropic, linear elastic
  • -1 < nu < 0.5
  • small strains

Example

m.ask("Generalized Hooke's law: sx = 100 MPa, sy = 50 MPa, sz = 0 MPa, txy = 30 MPa, tyz = 0 MPa, tzx = 0 MPa, E = 200 GPa, nu = 0.3")
→ ex = 425, ey = 100, ez = -225, gxy = 390, gyz = 0, gzx = 0, volumetric = 300
Stepped bar under axial loads at its jointsaxial_bar_segments

Internal axial force, normal stress of every segment and the total elongation of a bar fixed at its left end, made of segments in series, with axial loads at the joints.

\delta = \sum_i \frac{N_iL_i}{A_iE},\quad \sigma_i = \frac{N_i}{A_i}

Inputs

  • lengths segment lengths in mm, from the fixed end (a list) vector
  • areas segment cross-sectional areas in mm^2 (a list) vector
  • loads axial load at the far end of each segment in kN, positive pulling away from the support (a list) vector
  • E Young's modulus (all segments) [Pa]

Returns

  • elongation_mm total elongation of the bar in mm (negative = shortening)
  • N_kN internal axial force of each segment in kN (tension positive)
  • stress_MPa normal stress of each segment in MPa
  • max_abs_stress_MPa largest stress magnitude in MPa

Applies when

  • equal-length lists
  • left end fixed, right end free
  • linear elastic, no buckling

Example

m.ask("Stepped bar: lengths = [300, 500], areas = [400, 200], loads = [-20, 30], E = 200 GPa")
→ elongation_mm = 0.4125, N_kN = [10.0, 30.0], stress_MPa = [25.0, 150.0], max_abs_stress_MPa = 150

Structural analysis 2

Continuous beam under uniform loads (three-moment equation)continuous_beam_three_moment

The bending moments over the supports and the support reactions of a continuous beam of equal stiffness over 2 to 6 simply supported spans, each with its own uniform load.

M_{i-1}L_i + 2M_i(L_i+L_{i+1}) + M_{i+1}L_{i+1} = -\frac{w_iL_i^3 + w_{i+1}L_{i+1}^3}{4}

Inputs

  • spans span lengths in m, left to right (a list) vector
  • w uniform load on each span in kN/m (a list) vector

Returns

  • support_moments_kNm bending moment at each support in kN*m, end supports first and last (hogging negative)
  • reactions_kN reaction at each support in kN

Applies when

  • constant EI along the beam
  • simple supports, no settlement
  • end supports carry no moment

Example

m.ask("Continuous beam: spans = [6, 6], w = [10, 10]")
→ support_moments_kNm = [0.0, -45.0, 0.0], reactions_kN = [22.5, 75.0, 22.5]
Member forces of a plane truss (method of joints)truss_member_forces

The axial force in every member and the support reactions of a statically determinate plane pin-jointed truss on a pin and a roller, under joint loads.

\sum_{\text{members at } j} F_m\,\hat{\mathbf e}_{m} + \mathbf R_j + \mathbf P_j = \mathbf 0

Inputs

  • nodes node coordinates, one row 'x y' per node in m (node 1 is the first row) matrix
  • members members as pairs of node numbers, e.g. 1-2, 2-3 edges
  • pin node number of the pin support integer
  • roller node number of the roller support (vertical reaction) integer
  • loads joint loads, one row 'node Fx Fy' in kN (up and right positive) matrix

Returns

  • forces_kN member forces in kN in the order given (tension positive)
  • pin_Rx_kN horizontal reaction at the pin, kN
  • pin_Ry_kN vertical reaction at the pin, kN
  • roller_Ry_kN vertical reaction at the roller, kN
  • max_tension_kN largest tension, kN
  • max_compression_kN largest compression (magnitude), kN

Applies when

  • pin-jointed, loads at the joints
  • statically determinate: members + 3 = 2 x nodes, geometrically stable
  • roller on a horizontal surface

Example

m.ask("Truss member forces: nodes = [0 0; 4 0; 2 3], members = [1-2, 2-3, 3-1], pin = 1, roller = 2, loads = [3 0 -10]")
→ forces_kN = [3.33333333333, -6.00925212577, -6.00925212577], pin_Rx_kN = 0, pin_Ry_kN = 5, roller_Ry_kN = 5, max_tension_kN = 3.33333, max_compression_kN = 6.00925

Torsion 5

Angle of twist of a stepped shaftstepped_shaft_twist

Total angle of twist and the largest shear stress of a shaft made of solid circular segments in series carrying one torque.

\varphi = \sum_i\frac{TL_i}{GJ_i},\quad J_i = \frac{\pi d_i^4}{32}

Inputs

  • T torque carried by every segment [N*m]
  • lengths segment lengths in mm (a list) vector
  • diameters segment diameters in mm (a list, same order) vector
  • G shear modulus [Pa]

Returns

  • twist_rad total angle of twist [rad]
  • twist_deg total angle of twist in degrees
  • tau_max_MPa largest shear stress (smallest segment) in MPa

Applies when

  • equal-length lists
  • the same torque in every segment
  • stress concentrations at the steps not included

Example

m.ask("Stepped shaft: T = 500 N*m, lengths = [400, 600], diameters = [40, 30], G = 80 GPa")
→ twist_rad = 0.0571042 rad, twist_deg = 3.27183, tau_max_MPa = 94.314
Shaft fixed at both ends with a torque between themstatically_indeterminate_shaft

The reaction torques at both fixed ends, the shear stress in each part and the rotation at the loaded section of a shaft built in at both ends.

T_A = T_0\frac{b/J_2}{a/J_1 + b/J_2},\quad T_B = T_0 - T_A

Inputs

  • T0 torque applied between the ends [N*m]
  • a length of part 1 (from end A to the load) [m]
  • b length of part 2 (from the load to end B) [m]
  • d1 diameter of part 1 [m]
  • d2 diameter of part 2 [m]
  • G shear modulus [Pa]

Returns

  • TA reaction torque at A [N*m]
  • TB reaction torque at B [N*m]
  • tau1_MPa maximum shear stress in part 1, MPa
  • tau2_MPa maximum shear stress in part 2, MPa
  • twist_at_load_deg rotation of the loaded section in degrees

Applies when

  • both ends fully fixed
  • solid circular parts of one material

Example

m.ask("Statically indeterminate shaft: T0 = 1 kN*m, a = 0.5 m, b = 1.5 m, d1 = 50 mm, d2 = 50 mm, G = 80 GPa")
→ TA = 750 N*m, TB = 250 N*m, tau1_MPa = 30.5577, tau2_MPa = 10.1859, twist_at_load_deg = 0.437708
Torque and minimum diameter of a power-transmission shaftshaft_power_transmission

The torque a solid shaft transmits at a given power and speed, and the smallest diameter that keeps the torsional shear stress within an allowable value.

T = \frac{P}{\omega},\quad d_{min} = \Big(\frac{16T}{\pi\tau_{allow}}\Big)^{1/3}

Inputs

  • P transmitted power [W]
  • n rotational speed (rpm or rad/s) [rad/s]
  • tau_allow allowable shear stress [Pa]

Returns

  • T transmitted torque [N*m]
  • d_min_mm minimum solid-shaft diameter in mm
  • frequency_Hz rotational frequency in Hz

Applies when

  • P, n, tau_allow > 0
  • pure torsion (no bending), solid circular shaft

Example

m.ask("Shaft power transmission: P = 50 kW, n = 1500 rpm, tau_allow = 40 MPa")
→ T = 318.31 N*m, d_min_mm = 34.3495, frequency_Hz = 25
Torsion of a hollow circular shafthollow_shaft_torsion

Shear stresses at the outer and inner surfaces, polar moment and angle of twist of a hollow circular shaft under a torque.

\tau_{max} = \frac{16TD}{\pi(D^4-d^4)},\quad \varphi = \frac{TL}{GJ}

Inputs

  • T applied torque [N*m]
  • D outer diameter [m]
  • d inner diameter [m]
  • L length [m]
  • G shear modulus [Pa]

Returns

  • tau_max_MPa maximum shear stress (outer surface) in MPa
  • tau_inner_MPa shear stress at the inner surface in MPa (0 for a solid shaft)
  • twist_rad angle of twist [rad]
  • twist_deg angle of twist in degrees
  • J polar second moment of area [m^4]

Applies when

  • D > d > 0
  • linear elastic

Example

m.ask("Hollow shaft torsion: T = 2 kN*m, D = 60 mm, d = 40 mm, L = 2 m, G = 80 GPa")
→ tau_max_MPa = 58.7649, tau_inner_MPa = 39.1766, twist_rad = 0.0489708 rad, twist_deg = 2.80582, J = 1.02102e-06 m^4
Torsion of a solid circular shaftsolid_shaft_torsion

Maximum shear stress, polar moment and angle of twist of a solid circular shaft under a torque.

\tau_{max} = \frac{16T}{\pi d^3},\quad \varphi = \frac{TL}{GJ},\quad J = \frac{\pi d^4}{32}

Inputs

  • T applied torque [N*m]
  • d diameter [m]
  • L length [m]
  • G shear modulus [Pa]

Returns

  • tau_max_MPa maximum shear stress (outer surface) in MPa
  • tau_inner_MPa shear stress at the inner surface in MPa (0 for a solid shaft)
  • twist_rad angle of twist [rad]
  • twist_deg angle of twist in degrees
  • J polar second moment of area [m^4]

Applies when

  • T, d, L, G > 0
  • linear elastic, circular section, uniform torque

Example

m.ask("Solid shaft torsion: T = 1.2 kN*m, d = 50 mm, L = 1.5 m, G = 80 GPa")
→ tau_max_MPa = 48.8924, tau_inner_MPa = 0, twist_rad = 0.0366693 rad, twist_deg = 2.101, J = 6.13592e-07 m^4

Vibrations 14

All critical (whirling) speeds of a shaft with several disksshaft_whirling_speeds

The exact critical speeds of a simply supported massless shaft carrying point-mass disks, from the eigenvalues of its flexibility matrix.

\det\Big(\mathbf A\mathbf M - \frac{1}{\omega^2}\mathbf I\Big) = 0

Inputs

  • masses disk masses in kg (a list) vector
  • positions disk positions from the left bearing, in m (a list) vector
  • L bearing span [m]
  • E Young's modulus [Pa]
  • I second moment of area of the shaft [m^4]

Returns

  • omega critical speeds in rad/s, ascending
  • N_rpm critical speeds in rpm

Applies when

  • simply supported uniform massless shaft, point-mass disks (no rotary inertia or gyroscopics)
  • distinct positions

Example

m.ask("Shaft whirling speeds: masses = [50], positions = [0.5], L = 1 m, E = 200 GPa, I = 2e-7 m^4")
→ omega = [195.959179423], N_rpm = [1871.27232296]
Critical speed of a shaft carrying one diskshaft_critical_speed_single_disk

The lateral stiffness at the disk, the first critical (whirling) speed and the static deflection of a simply supported massless shaft carrying one disk.

k = \frac{3EIL}{a^2b^2},\quad \omega_{cr} = \sqrt{\frac{k}{m}}

Inputs

  • m disk mass [kg]
  • E Young's modulus of the shaft [Pa]
  • I second moment of area of the shaft [m^4]
  • L bearing span [m]
  • a distance of the disk from the left bearing [m]

Returns

  • k lateral stiffness of the shaft at the disk [N/m]
  • omega_cr critical speed [rad/s]
  • N_cr_rpm critical speed in rpm
  • static_deflection_mm static deflection under the disk's weight, mm

Applies when

  • simple (short) bearings, uniform massless shaft
  • gyroscopic effects neglected
  • 0 < a < L

Example

m.ask("Shaft critical speed: m = 50 kg, E = 200 GPa, I = 2e-7 m^4, L = 1 m, a = 0.5 m")
→ k = 1.92e+06 N/m, omega_cr = 195.959 rad/s, N_cr_rpm = 1871.27, static_deflection_mm = 0.255382
Damping ratio, damped frequency and logarithmic decrementdamped_sdof_parameters

The natural frequency, damping ratio, critical damping, damped natural frequency and logarithmic decrement of a viscously damped spring-mass system, and whether it is under- or overdamped.

\zeta = \frac{c}{2\sqrt{km}},\quad \omega_d = \omega_n\sqrt{1-\zeta^2},\quad \delta = \frac{2\pi\zeta}{\sqrt{1-\zeta^2}}

Inputs

  • m mass [kg]
  • c viscous damping coefficient (N*s/m) [kg/s]
  • k stiffness [N/m]

Returns

  • omega_n undamped natural frequency [rad/s]
  • zeta damping ratio c/c_c
  • omega_d damped natural frequency (0 if not underdamped) [rad/s]
  • f_d damped natural frequency in Hz [Hz]
  • c_critical critical damping 2 sqrt(k m) [kg/s]
  • log_decrement logarithmic decrement (0 if not underdamped)
  • regime underdamped, critically damped or overdamped

Applies when

  • m, k > 0, c >= 0
  • linear viscous damping

Example

m.ask("Damped SDOF: m = 10 kg, c = 40 N*s/m, k = 4000 N/m")
→ omega_n = 20 rad/s, zeta = 0.1, omega_d = 19.8997 rad/s, f_d = 3.16714 Hz, c_critical = 400 kg/s, log_decrement = 0.631484, regime = underdamped
First critical speed of a shaft with several disks (Dunkerley)dunkerley_critical_speed

Dunkerley's lower-bound estimate of the first critical speed of a simply supported massless shaft carrying several disks.

\frac{1}{\omega_{cr}^2} = \sum_i m_ia_{ii},\quad a_{ii} = \frac{a_i^2b_i^2}{3EIL}

Inputs

  • masses disk masses in kg (a list) vector
  • positions disk positions from the left bearing, in m (a list) vector
  • L bearing span [m]
  • E Young's modulus [Pa]
  • I second moment of area of the shaft [m^4]

Returns

  • omega_cr first critical speed (Dunkerley, a lower bound) [rad/s]
  • N_cr_rpm critical speed in rpm

Applies when

  • simply supported uniform massless shaft
  • disks at distinct positions inside the span

Example

m.ask("Dunkerley critical speed: masses = [50], positions = [0.5], L = 1 m, E = 200 GPa, I = 2e-7 m^4")
→ omega_cr = 195.959 rad/s, N_cr_rpm = 1871.27
First critical speed of a shaft with several disks (Rayleigh)rayleigh_critical_speed

Rayleigh's estimate of the first critical speed of a simply supported massless shaft carrying several disks, from the static deflections under the disks' weights.

\omega_{cr}^2 = \frac{g\sum m_iy_i}{\sum m_iy_i^2}

Inputs

  • masses disk masses in kg (a list) vector
  • positions disk positions from the left bearing, in m (a list) vector
  • L bearing span [m]
  • E Young's modulus [Pa]
  • I second moment of area of the shaft [m^4]

Returns

  • omega_cr first critical speed (Rayleigh, an upper bound) [rad/s]
  • N_cr_rpm critical speed in rpm
  • deflections_mm static deflection at each disk, mm

Applies when

  • simply supported uniform massless shaft
  • disks at distinct positions inside the span
  • g = 9.80665 m/s^2

Example

m.ask("Rayleigh critical speed: masses = [50], positions = [0.5], L = 1 m, E = 200 GPa, I = 2e-7 m^4")
→ omega_cr = 195.959 rad/s, N_cr_rpm = 1871.27, deflections_mm = [0.255381510417]
Force (or base-motion) transmissibility of a vibration isolatorvibration_transmissibility

The ratio of transmitted to applied force amplitude (equally, of mass to base displacement amplitude) for a damped isolator at a frequency ratio, and the isolation achieved.

TR = \sqrt{\frac{1 + (2\zeta r)^2}{(1-r^2)^2 + (2\zeta r)^2}}

Inputs

  • zeta damping ratio
  • r frequency ratio omega/omega_n

Returns

  • TR transmissibility
  • isolation_percent isolation (1 - TR) in percent (0 when TR >= 1)

Applies when

  • zeta >= 0, r > 0
  • not undamped resonance (r = 1 with zeta = 0)

Example

m.ask("Transmissibility: zeta = 0, r = 2")
→ TR = 0.333333, isolation_percent = 66.6667
Free vibration response of a damped spring-mass systemsdof_free_response

The displacement and velocity at time t of a damped single-degree-of-freedom system released from an initial displacement and velocity (under-, critically or overdamped).

x(t) = e^{-\zeta\omega_nt}\Big(x_0\cos\omega_dt + \frac{v_0+\zeta\omega_nx_0}{\omega_d}\sin\omega_dt\Big)

Inputs

  • m mass [kg]
  • c damping coefficient [kg/s]
  • k stiffness [N/m]
  • x0 initial displacement [m]
  • v0 initial velocity [m/s]
  • t time [s]

Returns

  • x displacement at t [m]
  • x_mm displacement at t in mm
  • v velocity at t [m/s]

Applies when

  • linear viscous damping
  • no external force
  • zeta within 1e-9 of 1 is treated as critical

Example

m.ask("SDOF free response: m = 1 kg, c = 20 N*s/m, k = 100 N/m, x0 = 10 mm, v0 = 0 m/s, t = 0.1 s")
→ x = 0.00735759 m, x_mm = 7.35759, v = -0.0367879 m/s
Natural frequencies and first mode of a spring-mass chainmdof_spring_mass_chain

All natural frequencies and the first mode shape of a chain of masses joined by springs, fixed to a wall at the left end (and optionally at the right end).

(\mathbf K - \omega^2\mathbf M)\boldsymbol\phi = \mathbf 0

Inputs

  • masses masses in kg, left to right (a list) vector
  • springs spring stiffnesses in N/m, the wall spring first (a list) vector
  • ends fixed-free (n springs) or fixed-fixed (n + 1 springs) choice

Returns

  • omega natural circular frequencies in rad/s, ascending
  • f_Hz natural frequencies in Hz
  • mode1 first mode shape, largest entry +1

Applies when

  • 1 to 12 masses
  • linear springs, no damping
  • springs: n (fixed-free) or n + 1 (fixed-fixed)

Example

m.ask("Spring-mass chain: masses = [2, 1], springs = [2000, 1000], ends = fixed-free")
→ omega = [22.360679775, 44.72135955], f_Hz = [3.55881271709, 7.11762543417], mode1 = [0.5, 1.0]
Natural frequencies of a uniform beam (Euler-Bernoulli)beam_natural_frequency

The n-th bending natural frequency of a uniform Euler-Bernoulli beam with simply supported, cantilever, fixed-fixed, fixed-pinned or free-free ends.

\omega_n = (\beta_nL)^2\sqrt{\frac{EI}{\rho AL^4}},\quad \cos\beta L\cosh\beta L = -1\ \text{(cantilever)}

Inputs

  • E Young's modulus [Pa]
  • I second moment of area [m^4]
  • rho density [kg/m^3]
  • A cross-sectional area [m^2]
  • L length [m]
  • ends end conditions choice
  • n mode number (default 1; free-free counts the elastic modes) integer optional

Returns

  • beta_L eigenvalue beta L
  • omega natural circular frequency [rad/s]
  • f natural frequency [Hz]

Applies when

  • slender uniform beam, no shear deformation or rotary inertia
  • mode 1 to 6

Example

m.ask("Beam natural frequency: E = 200 GPa, I = 1e-8 m^4, rho = 7850 kg/m^3, A = 1000 mm^2, L = 2 m, ends = simply-supported")
→ beta_L = 3.14159, omega = 39.384 rad/s, f = 6.26816 Hz
Natural frequency of a spring-mass systemsdof_natural_frequency

The natural circular frequency, frequency, period and static deflection (under gravity) of an undamped single-degree-of-freedom spring-mass system.

\omega_n = \sqrt{\frac{k}{m}},\quad f_n = \frac{1}{2\pi}\sqrt{\frac{k}{m}} = \frac{1}{2\pi}\sqrt{\frac{g}{\delta_{st}}}

Inputs

  • m mass [kg]
  • k spring stiffness [N/m]

Returns

  • omega_n natural circular frequency [rad/s]
  • f_n natural frequency [Hz]
  • period period [s]
  • static_deflection_mm static deflection m g/k in mm (g = 9.80665 m/s^2)

Applies when

  • m, k > 0
  • linear spring, no damping

Example

m.ask("SDOF natural frequency: m = 20 kg, k = 8 kN/m")
→ omega_n = 20 rad/s, f_n = 3.1831 Hz, period = 0.314159 s, static_deflection_mm = 24.5166
Steady-state response to a harmonic forceforced_vibration_amplitude

The steady-state amplitude, phase lag and dynamic magnification factor of a damped spring-mass system driven by a harmonic force F0 cos(omega t).

X = \frac{F_0/k}{\sqrt{(1-r^2)^2 + (2\zeta r)^2}},\quad \tan\phi = \frac{2\zeta r}{1-r^2}

Inputs

  • m mass [kg]
  • c damping coefficient [kg/s]
  • k stiffness [N/m]
  • F0 force amplitude [N]
  • omega forcing frequency (rad/s or rpm) [rad/s]

Returns

  • X steady-state amplitude [m]
  • X_mm amplitude in mm
  • phase_deg phase lag of the displacement behind the force, degrees (0 to 180)
  • magnification dynamic magnification X k/F0
  • r frequency ratio omega/omega_n

Applies when

  • steady state (transient decayed)
  • not undamped resonance

Example

m.ask("Forced vibration: m = 10 kg, c = 40 N*s/m, k = 4000 N/m, F0 = 100 N, omega = 20 rad/s")
→ X = 0.125 m, X_mm = 125, phase_deg = 90, magnification = 5, r = 1
Stiffness of an undamped isolator for a target transmissibilityvibration_isolator_design

The mount stiffness, natural frequency, frequency ratio and static deflection an undamped isolator needs so that a machine running at omega transmits only a fraction TR of its force.

TR = \frac{1}{r^2-1},\quad k = m\Big(\frac{\omega}{r}\Big)^2

Inputs

  • m isolated mass [kg]
  • omega forcing frequency (rad/s or rpm) [rad/s]
  • TR target transmissibility (0 < TR < 1, e.g. 0.1 or 10%)

Returns

  • k required total stiffness [N/m]
  • f_n natural frequency of the mounted system [Hz]
  • r frequency ratio omega/omega_n
  • static_deflection_mm static deflection of the mounts, mm

Applies when

  • undamped isolator
  • 0 < TR < 1 (isolation region r > sqrt(2))

Example

m.ask("Vibration isolator design: m = 200 kg, omega = 1500 rpm, TR = 0.1")
→ k = 448618 N/m, f_n = 7.53778 Hz, r = 3.31662, static_deflection_mm = 4.37193
Torsional natural frequency of a two-rotor systemtwo_rotor_torsional_vibration

The torsional natural frequency of two rotors joined by an elastic shaft, the ratio of their vibration amplitudes and (with the shaft length) where the node lies.

\omega = \sqrt{\frac{k_t(J_1+J_2)}{J_1J_2}},\quad l_1 = \frac{J_2L}{J_1+J_2}

Inputs

  • J1 mass moment of inertia of rotor 1 [kg*m^2]
  • J2 mass moment of inertia of rotor 2 [kg*m^2]
  • kt torsional stiffness of the shaft (N*m/rad) [N*m/rad]
  • L shaft length (optional: gives the node position) [m] optional

Returns

  • omega torsional natural frequency [rad/s]
  • f natural frequency in Hz [Hz]
  • amplitude_ratio amplitude of rotor 2 / rotor 1 (negative: opposite phase)
  • node_from_rotor1 distance of the node from rotor 1 (with L) [m]

Applies when

  • shaft inertia neglected
  • free-free system (no fixed end)

Example

m.ask("Two-rotor torsional vibration: J1 = 2 kg*m^2, J2 = 6 kg*m^2, kt = 30 kN*m/rad, L = 1.2 m")
→ omega = 141.421 rad/s, f = 22.5079 Hz, amplitude_ratio = -0.333333, node_from_rotor1 = 0.9 m
Vibration due to rotating unbalancerotating_unbalance_response

The steady-state amplitude of a machine on springs and dampers excited by a rotating unbalance, the unbalance force and the force transmitted to the foundation.

X = \frac{m_ue\omega^2}{\sqrt{(k-M\omega^2)^2 + (c\omega)^2}},\quad F_T = X\sqrt{k^2+(c\omega)^2}

Inputs

  • M total mass of the machine [kg]
  • mu unbalanced mass [kg]
  • e eccentricity of the unbalanced mass [m]
  • k total stiffness of the mounts [N/m]
  • c damping coefficient [kg/s]
  • omega rotational speed [rad/s]

Returns

  • X amplitude of the machine [m]
  • X_mm amplitude in mm
  • F_transmitted force amplitude transmitted to the foundation [N]
  • F_unbalance rotating unbalance force mu e omega^2 [N]

Applies when

  • vertical motion only, steady state
  • mu < M

Example

m.ask("Rotating unbalance: M = 100 kg, mu = 0.5 kg, e = 50 mm, k = 400 kN/m, c = 0 N*s/m, omega = 100 rad/s")
→ X = 0.000416667 m, X_mm = 0.416667, F_transmitted = 166.667 N, F_unbalance = 250 N
Questions

Frequently asked

What does mechanical-engineering-ai999x do?

Mechanical Engineering answers questions in mechanical engineering: statics, stress and strain, beams and frames, section properties, torsion, columns, fatigue, machine elements, vibrations and structural analysis. Each answer gives the value with its unit, the steps and the formula in LaTeX.

How do I install mechanical-engineering-ai999x?

With pip: pip install mechanical-engineering-ai999x. The same files are on Hugging Face (hf download AI999X/mechanical-engineering-ai999x --local-dir mechanical-engineering-ai999x) and GitHub.

Does it run offline?

Yes. It is a Python package that runs on an ordinary CPU without a network connection (Python >=3.10); no GPU and no API key are needed.

How many capabilities does mechanical-engineering-ai999x have?

90 capabilities in 13 topics, including Machine elements, Fatigue, Vibrations, Beams, Section properties.

Which field and tasks does it cover?

Field: Engineering. Tasks: Question Answering, Token Classification, Text Classification, Sentence Similarity, Feature Extraction.

What does an answer look like?

Asked "Simply supported beam with point load: L = 6 m, P = 20 kN, a = 2 m, E = 200 GPa, I = 8e-5 m^4", it answers: RA = 13333.3 N, RB = 6666.67 N, M_max = 26666.7 N*m, V_max = 13333.3 N, deflection_at_load_mm = 4.44444, max_deflection_mm = 4.8385, x_max = 2.73401 m.

What happens when a question cannot be answered?

It says so and names what is missing or out of range, instead of guessing a number.

More from AI999X

Explore every model.