{ "cells": [ { "cell_type": "markdown", "id": "e4d078d0", "metadata": {}, "source": [ "Tutorial: static analysis with inertia relief\n", "===\n", "\n", "A structure without supports, e.g. a launch vehicle or a spacecraft in flight,\n", "can move as a rigid body: its stiffness matrix is singular and the linear\n", "static solution cannot be applied as it stands. When the loads are not\n", "balanced, the free structure accelerates, and inertia relief balances the\n", "loads with the d'Alembert (inertia) forces of this rigid-body acceleration.\n", "The displacements are then computed relative to a statically determinate\n", "reference support, whose reactions vanish.\n", "\n", "The analysis is done by `pyfe3d.solver.apply_inertia_relief`, from the assembled\n", "stiffness matrix `KC0` and the mass matrix `M` of the elements' `update_M`,\n", "see the user guide page [Inertia relief](inertia_relief.rst). This notebook\n", "verifies it in four cases:\n", "\n", "1. three nodes joined by two springs, a singular system of rank 2, with\n", " balanced and unbalanced loads, a fictitious support and inertia relief,\n", " derived symbolically and solved with pyfe3d;\n", "2. a chain of springs and point masses under unbalanced loads, with two\n", " reference supports;\n", "3. a free-free beam of 10 `BeamC` elements under a balanced load set, its own\n", " weight balanced by two point loads and opposite axial end forces;\n", "4. a free-free beam and a free-free bar under an end force, against\n", " closed-form solutions derived and checked with SymPy below.\n", "\n", "The references are:\n", "\n", "- Barnett, A. R., Widrick, T. W., Ludwiczak, D. R., *Closed-Form Static\n", " Analysis with Inertia Relief and Displacement-Dependent Loads Using a\n", " MSC/NASTRAN DMAP Alter*, NASA TM-106836, NASA Lewis Research Center,\n", " Cleveland, OH, 1995,\n", " [ntrs.nasa.gov/citations/19950013233](https://ntrs.nasa.gov/citations/19950013233):\n", " p. 2, the quasistatic flight phases and MSC/NASTRAN Solution 91; p. 6,\n", " Eqs. (16)-(22), the rigid-body transformation and accelerations; p. 7,\n", " Eqs. (23) and (24), the displacements relative to the reference support;\n", "- Bathe, K. J., *Finite Element Procedures*, 2nd ed., K. J. Bathe,\n", " Watertown, MA, 2014: Sec. 4.2.2, Eqs. (4.42)-(4.45), the partition into\n", " unknown and prescribed displacements and the reactions; Sec. 8.2.5,\n", " pp. 726-727, the stiffness matrix of an unrestrained system is positive\n", " semi-definite, with one zero eigenvalue per rigid-body mode;\n", "- Farhat, C., Géradin, M., On the general solution by a direct method of a\n", " large-scale singular system of linear equations: application to the\n", " analysis of floating structures, *International Journal for Numerical\n", " Methods in Engineering*, 41(4), 675-696, 1998,\n", " [doi:10.1002/(SICI)1097-0207(19980228)41:4<675::AID-NME305>3.0.CO;2-8](https://doi.org/10.1002/%28SICI%291097-0207%2819980228%2941%3A4%3C675%3A%3AAID-NME305%3E3.0.CO%3B2-8),\n", " for the null space of large sparse singular stiffness matrices;\n", "- Cavaliere, F., Zlotnik, S., Sevilla, R., Larráyoz, X., Díez, P.,\n", " Nonintrusive reduced order model for parametric solutions of inertia\n", " relief problems, *International Journal for Numerical Methods in\n", " Engineering*, 122(16), 4270-4291, 2021,\n", " [doi:10.1002/nme.6702](https://doi.org/10.1002/nme.6702), for inertia\n", " relief in general.\n", "\n", "The models and the same checks are in `tests/test_inertia_relief.py`, from\n", "which the model builders are imported below." ] }, { "cell_type": "markdown", "id": "3082fa12", "metadata": {}, "source": [ "The procedure in pyfe3d notation\n", "---\n", "\n", "The degrees of freedom are partitioned as in the linear static analysis of\n", "pyfe3d, see the overview: `bu` selects the free degrees of freedom, set $u$,\n", "and `bk` the constrained ones, set $k$, with the prescribed values `uk`. The\n", "reference degrees of freedom of inertia relief, the r-set of Barnett et al.\n", "(1995, p. 6), belong here to $k$, and the remaining ones, their l-set, to\n", "$u$. In inertia relief,\n", "`bk` contains the reference degrees of freedom `bref`, with `uk = 0`, plus any\n", "degree of freedom that the model itself constrains (`bfix` below, e.g. the\n", "rollers of a model along a line).\n", "\n", "The $n_r$ rigid-body modes are the columns of $\\boldsymbol{\\Phi}$,\n", "$\\boldsymbol{K}_{C0} \\boldsymbol{\\Phi} = \\boldsymbol{0}$. A static solution\n", "$\\boldsymbol{K}_{C0} \\boldsymbol{u} = \\boldsymbol{F}_{ext}$ exists only when\n", "$\\boldsymbol{\\Phi}^\\top \\boldsymbol{F}_{ext} = \\boldsymbol{0}$, i.e. when the\n", "resultant forces and moments vanish. With a statically determinate reference\n", "support, unit displacements at the reference degrees of freedom,\n", "$\\boldsymbol{\\Phi}_k = \\boldsymbol{I}$, give the rigid-body modes from the\n", "stiffness matrix itself (Barnett et al. 1995, p. 6, Eq. (19)):\n", "\n", "$$\n", "\\boldsymbol{\\Phi} = \\begin{bmatrix} \\boldsymbol{\\Phi}_u \\\\ \\boldsymbol{\\Phi}_k \\end{bmatrix}\n", "= \\begin{bmatrix} -\\boldsymbol{K}_{{C0}_{uu}}^{-1} \\boldsymbol{K}_{{C0}_{uk}} \\\\ \\boldsymbol{I} \\end{bmatrix}\n", "$$\n", "\n", "The structure deforms elastically and accelerates as a rigid body,\n", "$\\ddot{\\boldsymbol{u}} = \\boldsymbol{\\Phi} \\ddot{\\boldsymbol{\\alpha}}$.\n", "Premultiplying $\\boldsymbol{M} \\ddot{\\boldsymbol{u}} + \\boldsymbol{K}_{C0}\n", "\\boldsymbol{u} = \\boldsymbol{F}_{ext}$ by $\\boldsymbol{\\Phi}^\\top$, with\n", "$\\boldsymbol{\\Phi}^\\top \\boldsymbol{K}_{C0} = \\boldsymbol{0}$, gives the\n", "rigid-body accelerations (Barnett et al. 1995, p. 6, Eqs. (21) and (22)):\n", "\n", "$$\n", "\\boldsymbol{\\Phi}^\\top \\boldsymbol{M} \\boldsymbol{\\Phi} \\, \\ddot{\\boldsymbol{\\alpha}} = \\boldsymbol{\\Phi}^\\top \\boldsymbol{F}_{ext}\n", "$$\n", "\n", "The d'Alembert forces $\\boldsymbol{F}_I = -\\boldsymbol{M} \\boldsymbol{\\Phi}\n", "\\ddot{\\boldsymbol{\\alpha}}$ balance the external loads,\n", "$\\boldsymbol{\\Phi}^\\top (\\boldsymbol{F}_{ext} + \\boldsymbol{F}_I) =\n", "\\boldsymbol{0}$, and the displacements relative to the reference support are\n", "(Barnett et al. 1995, p. 7, Eqs. (23) and (24)):\n", "\n", "$$\n", "\\boldsymbol{K}_{{C0}_{uu}} \\boldsymbol{u}_u = \\boldsymbol{F}_{{ext}_u} - \\boldsymbol{M}_u \\boldsymbol{\\Phi} \\ddot{\\boldsymbol{\\alpha}}, \\qquad \\boldsymbol{u}_k = \\boldsymbol{0}\n", "$$\n", "\n", "The reactions of the reference support are the residual at the reference\n", "degrees of freedom, $\\boldsymbol{R}_k = (\\boldsymbol{K}_{C0} \\boldsymbol{u} -\n", "\\boldsymbol{F}_{ext} - \\boldsymbol{F}_I)_k$, as in Bathe (2014), Eq. (4.45),\n", "or $\\boldsymbol{F}_{{int}_k} - \\boldsymbol{f}_k$ in the overview of pyfe3d.\n", "Since $\\boldsymbol{R}_u = \\boldsymbol{0}$ and $\\boldsymbol{\\Phi}^\\top\n", "\\boldsymbol{K}_{C0} = \\boldsymbol{0}$, premultiplying the residual by\n", "$\\boldsymbol{\\Phi}^\\top$ gives $\\boldsymbol{\\Phi}_k^\\top \\boldsymbol{R}_k =\n", "-\\boldsymbol{\\Phi}^\\top (\\boldsymbol{F}_{ext} + \\boldsymbol{F}_I) =\n", "\\boldsymbol{0}$, hence $\\boldsymbol{R}_k = \\boldsymbol{0}$: the reference\n", "support carries no load.\n", "\n", "**Choice of the reference support.** Any set of $n_r$ degrees of freedom whose\n", "rows $\\boldsymbol{\\Phi}_k$ form a non-singular matrix, i.e. a statically\n", "determinate support, can be chosen: it suppresses the rigid-body modes\n", "without restraining any deformation. The displacements are measured relative\n", "to it, and so they change with the choice by a rigid-body motion\n", "$\\boldsymbol{\\Phi} \\boldsymbol{\\alpha}$, whereas the strains and internal\n", "forces do not. A support with more degrees of freedom than $n_r$ is\n", "statically indeterminate and would carry reactions; one that does not\n", "suppress all the rigid-body modes leaves $\\boldsymbol{K}_{{C0}_{uu}}$\n", "singular.\n", "\n", "These steps are implemented by `pyfe3d.solver.apply_inertia_relief`, which also\n", "checks that the reference support is statically determinate. Its argument\n", "`bfix` holds the degrees of freedom constrained by the model itself, which\n", "are excluded from\n", "$\\boldsymbol{\\Phi}$.\n", "\n", "The small function below collects its results in a dictionary, with the\n", "d'Alembert forces $\\boldsymbol{F}_I$, for the printouts of the cases." ] }, { "cell_type": "code", "execution_count": 1, "id": "e1312fef", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:10.199191Z", "iopub.status.busy": "2026-10-30T23:31:10.199028Z", "iopub.status.idle": "2026-10-30T23:31:11.165483Z", "shell.execute_reply": "2026-10-30T23:31:11.164837Z" } }, "outputs": [], "source": [ "import os\n", "import sys\n", "sys.path.insert(0, os.path.join('..', '..', 'tests'))\n", "\n", "import numpy as np\n", "import sympy as sp\n", "import matplotlib.pyplot as plt\n", "from scipy.sparse import csc_matrix\n", "from scipy.sparse.linalg import spsolve\n", "\n", "from pyfe3d import DOF\n", "from test_inertia_relief import (spring_chain, point_masses, spring_forces,\n", " beam_prop, beam_model, geometric_rigid_modes,\n", " beam_end_forces, reference_dofs, chain_data)\n", "\n", "\n", "from pyfe3d.solver import apply_inertia_relief\n", "\n", "\n", "def run_inertia_relief(KC0, M, fext, bref, bfix=None):\n", " \"\"\"Results of pyfe3d.solver.apply_inertia_relief, with the d'Alembert forces\"\"\"\n", " u, acc, Phi, R = apply_inertia_relief(KC0, M, fext, bref, bfix,\n", " return_reactions=True)\n", " finertia = -(M @ (Phi @ acc)) # d'Alembert (inertia) forces\n", " bk = bref if bfix is None else bref | bfix\n", " return dict(u=u, acc=acc, Phi=Phi, R=R, finertia=finertia,\n", " ftot=fext + finertia, bu=~bk)" ] }, { "cell_type": "markdown", "id": "7580c2a1", "metadata": {}, "source": [ "Case 1: three nodes joined by two springs\n", "---\n", "\n", "Three nodes along $x$, a spring $k_1$ between the nodes 1 and 2 and a spring\n", "$k_2$ between the nodes 2 and 3, the point masses $m_1$, $m_2$, $m_3$ and the\n", "forces $F_1$, $F_2$, $F_3$, all able to move only along $x$. The linear static\n", "system\n", "\n", "$$\n", "\\begin{bmatrix} k_1 & -k_1 & 0 \\\\ -k_1 & k_1 + k_2 & -k_2 \\\\ 0 & -k_2 & k_2 \\end{bmatrix}\n", "\\begin{Bmatrix} u_1 \\\\ u_2 \\\\ u_3 \\end{Bmatrix}\n", "= \\begin{Bmatrix} F_1 \\\\ F_2 \\\\ F_3 \\end{Bmatrix}\n", "$$\n", "\n", "has a stiffness matrix whose rows add to zero, of rank 2, with the rigid\n", "translation $\\boldsymbol{\\phi} = \\{1, 1, 1\\}^\\top$ in its null space,\n", "$\\boldsymbol{K}_{C0} \\boldsymbol{\\phi} = \\boldsymbol{0}$, so its inverse does\n", "not exist. Adding the three rows, i.e. premultiplying by\n", "$\\boldsymbol{\\phi}^\\top$, shows that a solution exists only for balanced\n", "loads:\n", "\n", "$$\n", "\\boldsymbol{\\phi}^\\top \\boldsymbol{F}_{ext} = F_1 + F_2 + F_3 = 0\n", "$$\n", "\n", "**Balanced loads.** Rows 1 and 3 give $k_1 (u_2 - u_1) = -F_1$ and $k_2 (u_3 -\n", "u_2) = F_3$, and row 2 is minus their sum. They fix the elongations of the\n", "springs but not the position of the system:\n", "\n", "$$\n", "\\boldsymbol{u} = \\begin{Bmatrix} 0 \\\\ -F_1/k_1 \\\\ -F_1/k_1 + F_3/k_2 \\end{Bmatrix}\n", "+ \\alpha \\begin{Bmatrix} 1 \\\\ 1 \\\\ 1 \\end{Bmatrix}\n", "$$\n", "\n", "with an arbitrary amplitude $\\alpha$ of the rigid translation, which does not\n", "change the spring forces.\n", "\n", "**Fictitious support.** Prescribing $\\bar{u}_1 = 0$, a statically determinate\n", "support (in pyfe3d notation, `bref`, part of `bk`, is the $x$ degree of\n", "freedom of node 1, and `bu` those of the nodes 2 and 3), the partition gives\n", "\n", "$$\n", "\\boldsymbol{K}_{{C0}_{uu}} = \\begin{bmatrix} k_1 + k_2 & -k_2 \\\\ -k_2 & k_2 \\end{bmatrix},\n", "\\qquad \\det \\boldsymbol{K}_{{C0}_{uu}} = k_1 k_2 > 0,\n", "\\qquad \\boldsymbol{K}_{{C0}_{uk}} = \\begin{Bmatrix} -k_1 \\\\ 0 \\end{Bmatrix}\n", "$$\n", "\n", "and $\\boldsymbol{K}_{{C0}_{uu}} \\{u_2, u_3\\}^\\top = \\{F_2, F_3\\}^\\top$, i.e.\n", "$u_2 = (F_2 + F_3)/k_1$ and $u_3 = u_2 + F_3/k_2$, with the reaction $R_1 =\n", "-k_1 u_2 - F_1 = -(F_1 + F_2 + F_3)$. For balanced loads, $u_2 = -F_1/k_1$,\n", "the solution above with $\\alpha = 0$, and $R_1 = 0$: the support does not\n", "change the solution. For unbalanced loads, e.g. $F_1 = F_2 = 0$ and $F_3 =\n", "F$, the support carries the reaction $R_1 = -F$ and the spring $k_1$ the\n", "full force $F$, which is not the state of the free system: the fictitious\n", "support alone gives unrealistic reactions and internal forces.\n", "\n", "**Inertia relief.** The free system accelerates as a rigid body, and the\n", "loads are balanced by the d'Alembert forces of this acceleration. With the\n", "same support, now the reference support, the rigid-body mode follows from\n", "the stiffness matrix, $\\boldsymbol{\\Phi}_u = -\\boldsymbol{K}_{{C0}_{uu}}^{-1}\n", "\\boldsymbol{K}_{{C0}_{uk}} = \\{1, 1\\}^\\top$, i.e. $\\boldsymbol{\\Phi} =\n", "\\boldsymbol{\\phi}$, and, with $\\boldsymbol{M} = \\mathrm{diag}(m_1, m_2,\n", "m_3)$, $\\boldsymbol{\\Phi}^\\top \\boldsymbol{M} \\boldsymbol{\\Phi} = m_1 + m_2 +\n", "m_3$, so\n", "\n", "$$\n", "\\ddot{\\alpha} = \\frac{F_1 + F_2 + F_3}{m_1 + m_2 + m_3}\n", "$$\n", "\n", "The two free equations are\n", "\n", "$$\n", "\\begin{bmatrix} k_1 + k_2 & -k_2 \\\\ -k_2 & k_2 \\end{bmatrix}\n", "\\begin{Bmatrix} u_2 \\\\ u_3 \\end{Bmatrix}\n", "= \\begin{Bmatrix} F_2 - m_2 \\ddot{\\alpha} \\\\ F_3 - m_3 \\ddot{\\alpha} \\end{Bmatrix}\n", "$$\n", "\n", "whose solution, adding the two rows for the first, is\n", "\n", "$$\n", "u_2 = \\frac{F_2 + F_3 - (m_2 + m_3) \\ddot{\\alpha}}{k_1}, \\qquad\n", "u_3 = u_2 + \\frac{F_3 - m_3 \\ddot{\\alpha}}{k_2}\n", "$$\n", "\n", "For $F_1 = F_2 = 0$ and $F_3 = F$, the spring forces are $k_1 u_2 = m_1\n", "\\ddot{\\alpha}$ and $k_2 (u_3 - u_2) = (m_1 + m_2) \\ddot{\\alpha}$, the forces\n", "that accelerate the masses on the left of each spring, and the reaction of\n", "the reference support is $R_1 = -k_1 u_2 - (F_1 - m_1 \\ddot{\\alpha}) = 0$.\n", "For balanced loads, $\\ddot{\\alpha} = 0$ and the fictitious support is\n", "recovered.\n", "\n", "**Reference support at node 3**, $\\bar{u}_3 = 0$: the solution changes by\n", "the rigid translation $-u_3 \\boldsymbol{\\phi}$, and the spring forces are\n", "unchanged.\n", "\n", "SymPy verifies these expressions:" ] }, { "cell_type": "code", "execution_count": 2, "id": "44987cba", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.168181Z", "iopub.status.busy": "2026-10-30T23:31:11.167826Z", "iopub.status.idle": "2026-10-30T23:31:11.711550Z", "shell.execute_reply": "2026-10-30T23:31:11.710939Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rank: 2 , null space: [[1, 1, 1]]\n", "balanced loads: u = [alpha, -F_1/k_1 + alpha, -F_1/k_1 + F_3/k_2 + alpha]\n", "fictitious support: u2 = (F_2 + F_3)/k_1 , u3 = (F_2*k_2 + F_3*k_1 + F_3*k_2)/(k_1*k_2) , R1 = -F_1 - F_2 - F_3\n", "K_uu = [[k_1 + k_2, -k_2], [-k_2, k_2]] , det = k_1*k_2 , K_uk = [-k_1, 0]\n", "alpha_dd = (F_1 + F_2 + F_3)/(m_1 + m_2 + m_3)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "u2 = -(F_1*m_2 + F_1*m_3 - F_2*m_1 - F_3*m_1)/(k_1*(m_1 + m_2 + m_3)) \n", "u3 = -(F_1*k_1*m_3 + F_1*k_2*m_2 + F_1*k_2*m_3 + F_2*k_1*m_3 - F_2*k_2*m_1 - F_3*k_1*m_1 - F_3*k_1*m_2 - F_3*k_2*m_1)/(k_1*k_2*(m_1 + m_2 + m_3))\n", "F3 = F: k1 u2 = F*m_1/(m_1 + m_2 + m_3) , k2 (u3 - u2) = F*(m_1 + m_2)/(m_1 + m_2 + m_3) , R1 = 0\n", "reference at node 3: u = u(reference at node 1) - u3 phi\n" ] } ], "source": [ "k1, k2, m1, m2, m3, F1, F2, F3, F = sp.symbols('k_1 k_2 m_1 m_2 m_3 F_1 F_2 F_3 F')\n", "K3 = sp.Matrix([[k1, -k1, 0], [-k1, k1 + k2, -k2], [0, -k2, k2]])\n", "M3s = sp.diag(m1, m2, m3)\n", "F3v = sp.Matrix([F1, F2, F3])\n", "print('rank:', K3.rank(), ', null space:', [list(v) for v in K3.nullspace()])\n", "assert K3.rank() == 2 and list(K3.nullspace()[0]) == [1, 1, 1]\n", "assert list(K3*sp.ones(3, 1)) == [0, 0, 0]\n", "\n", "# solvability: adding the rows gives F1 + F2 + F3 = 0\n", "u1s, u2s, u3s, alpha = sp.symbols('u_1 u_2 u_3 alpha')\n", "us = sp.Matrix([u1s, u2s, u3s])\n", "assert sp.expand((sp.ones(1, 3)*(K3*us))[0]) == 0\n", "# balanced loads, F2 = -F1 - F3: u = {0, -F1/k1, -F1/k1 + F3/k2} + alpha phi\n", "bal = {F2: -F1 - F3}\n", "u_bal = sp.Matrix([0, -F1/k1, -F1/k1 + F3/k2]) + alpha*sp.ones(3, 1)\n", "assert sp.simplify(K3*u_bal - F3v.subs(bal)) == sp.zeros(3, 1)\n", "print('balanced loads: u =', list(u_bal))\n", "\n", "# fictitious support u1 = 0 without inertia forces: R1 = -(F1 + F2 + F3)\n", "u23 = K3[1:, 1:].inv()*F3v[1:, :]\n", "R1_fict = sp.simplify((K3[0, 1:]*u23)[0] - F1)\n", "print('fictitious support: u2 =', sp.factor(u23[0]), ', u3 =', sp.factor(u23[1]),\n", " ', R1 =', R1_fict)\n", "assert sp.simplify(u23[0] - (F2 + F3)/k1) == 0\n", "assert sp.simplify(u23[1] - (F2 + F3)/k1 - F3/k2) == 0\n", "assert sp.simplify(R1_fict + F1 + F2 + F3) == 0\n", "assert sp.simplify(R1_fict.subs(bal)) == 0\n", "assert sp.simplify(u23.subs(bal) - u_bal[1:, :].subs(alpha, 0)) == sp.zeros(2, 1)\n", "\n", "# reference support at node 1: k = {1}, u = {2, 3}\n", "Kuu = K3[1:, 1:]\n", "Kuk = K3[1:, :1]\n", "print('K_uu =', Kuu.tolist(), ', det =', sp.factor(Kuu.det()), ', K_uk =', list(Kuk))\n", "assert sp.simplify(Kuu.det() - k1*k2) == 0\n", "Phi3 = sp.Matrix.vstack(sp.eye(1), sp.simplify(-Kuu.inv()*Kuk))\n", "assert list(Phi3) == [1, 1, 1]\n", "add3 = sp.simplify(((Phi3.T*M3s*Phi3).inv()*(Phi3.T*F3v))[0])\n", "assert sp.simplify(add3 - (F1 + F2 + F3)/(m1 + m2 + m3)) == 0\n", "Ftot3 = F3v - M3s*Phi3*add3\n", "assert sp.simplify((Phi3.T*Ftot3)[0]) == 0\n", "uu = sp.simplify(Kuu.inv()*Ftot3[1:, :])\n", "u2_cf = (F2 + F3 - (m2 + m3)*add3)/k1\n", "u3_cf = u2_cf + (F3 - m3*add3)/k2\n", "assert sp.simplify(uu[0] - u2_cf) == 0 and sp.simplify(uu[1] - u3_cf) == 0\n", "print('alpha_dd =', add3)\n", "print('u2 =', sp.factor(uu[0]), '\\nu3 =', sp.factor(uu[1]))\n", "\n", "# F1 = F2 = 0, F3 = F: spring forces and reaction\n", "sub = {F1: 0, F2: 0, F3: F}\n", "a = add3.subs(sub)\n", "N1, N2 = k1*uu[0].subs(sub), k2*(uu[1] - uu[0]).subs(sub)\n", "R1 = -k1*uu[0].subs(sub) - (0 - m1*a)\n", "assert sp.simplify(N1 - m1*a) == 0 and sp.simplify(N2 - (m1 + m2)*a) == 0\n", "assert sp.simplify(R1) == 0\n", "print('F3 = F: k1 u2 =', sp.factor(N1), ', k2 (u3 - u2) =', sp.factor(N2), ', R1 =', sp.simplify(R1))\n", "\n", "# reference support at node 3: k = {3}, u = {1, 2}\n", "u_n1 = sp.Matrix([0, uu[0], uu[1]])\n", "Kuu3 = K3[:2, :2]\n", "u12 = sp.simplify(Kuu3.inv()*Ftot3[:2, :])\n", "u_n3 = sp.Matrix([u12[0], u12[1], 0])\n", "assert sp.simplify(u_n3 - (u_n1 - uu[1]*sp.ones(3, 1))) == sp.zeros(3, 1)\n", "print('reference at node 3: u = u(reference at node 1) - u3 phi')" ] }, { "cell_type": "markdown", "id": "3948bb8a", "metadata": {}, "source": [ "The same model with pyfe3d: two `Spring` elements with `kxe` $= k_1$ and $k_2$,\n", "the other degrees of freedom constrained (`bfix`), the point masses in a\n", "diagonal $\\boldsymbol{M}$, with $k_1 = 2000$ N/m, $k_2 = 500$ N/m, $m_1 = 1$\n", "kg, $m_2 = 2$ kg, $m_3 = 3$ kg. First the fictitious support alone, `bref` without inertia forces, solved\n", "as a linear static analysis: for the balanced loads $F_1 = -5$ N, $F_2 = 1$\n", "N, $F_3 = 4$ N it gives $u_2 = 2.5$ mm, $u_3 = 10.5$ mm and $R_1 = 0$; for\n", "$F_1 = F_2 = 0$, $F_3 = F = 12$ N, $u_2 = 6$ mm, $u_3 = 30$ mm and $R_1 =\n", "-12$ N. Then inertia relief, with two load sets: $F_1 = F_2 = 0$, $F_3 = F =\n", "12$ N, for which $\\ddot{\\alpha} = 2$ m/s$^2$, $u_2 = 1$ mm and $u_3 =\n", "13$ mm; and $F_1 = 3$ N, $F_2 = -4$ N, $F_3 = 10$ N. The rank and the null\n", "space of the $3 \\times 3$ stiffness matrix of the $x$ degrees of freedom are\n", "computed numerically." ] }, { "cell_type": "code", "execution_count": 3, "id": "b31f0070", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.713855Z", "iopub.status.busy": "2026-10-30T23:31:11.713645Z", "iopub.status.idle": "2026-10-30T23:31:11.733046Z", "shell.execute_reply": "2026-10-30T23:31:11.732301Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K (x dofs) =\n", " [[ 2000. -2000. 0.]\n", " [-2000. 2500. -500.]\n", " [ 0. -500. 500.]]\n", "rank = 2 , row sums = [0. 0. 0.]\n", "null space, normalised to node 1: [1. 1. 1.]\n", "fictitious support, F = [-5. 1. 4.] N: u = [ 0. 2.5 10.5] mm, R1 = 0.0e+00 N (closed form -0.0e+00 N)\n", "fictitious support, F = [ 0. 0. 12.] N: u = [ 0. 6. 30.] mm, R1 = -1.2e+01 N (closed form -1.2e+01 N)\n", "\n", "F = [ 0. 0. 12.] N, closed form: alpha_dd = 2.0000 m/s2, u2 = 1.0000 mm, u3 = 13.0000 mm\n", " reference node 1: Phi = [1. 1. 1.], alpha_dd = 2.0000, u = [ 0. 1. 13.] mm, spring forces = [2. 6.] N, R = 0.0e+00 N, Phi^T F_tot = 0.0e+00\n", " reference node 3: Phi = [1. 1. 1.], alpha_dd = 2.0000, u = [-13. -12. 0.] mm, spring forces = [2. 6.] N, R = 8.9e-16 N, Phi^T F_tot = 0.0e+00\n", "\n", "F = [ 3. -4. 10.] N, closed form: alpha_dd = 1.5000 m/s2, u2 = -0.7500 mm, u3 = 10.2500 mm\n", " reference node 1: Phi = [1. 1. 1.], alpha_dd = 1.5000, u = [ 0. -0.75 10.25] mm, spring forces = [-1.5 5.5] N, R = 0.0e+00 N, Phi^T F_tot = 0.0e+00\n", " reference node 3: Phi = [1. 1. 1.], alpha_dd = 1.5000, u = [-10.25 -11. 0. ] mm, spring forces = [-1.5 5.5] N, R = 8.9e-16 N, Phi^T F_tot = 0.0e+00\n" ] } ], "source": [ "from scipy.linalg import null_space\n", "\n", "k1_, k2_ = 2000., 500.\n", "mst = np.array([1., 2., 3.])\n", "KCt, bfixt, springst = spring_chain([k1_, k2_])\n", "Mt = point_masses(mst)\n", "Nt = KCt.shape[0]\n", "Kx = KCt.toarray()[0::DOF, 0::DOF]\n", "print('K (x dofs) =\\n', Kx)\n", "print('rank =', np.linalg.matrix_rank(Kx), ', row sums =', Kx.sum(axis=1))\n", "ns = null_space(Kx)[:, 0]\n", "print('null space, normalised to node 1:', ns/ns[0])\n", "assert np.linalg.matrix_rank(Kx) == 2\n", "assert np.allclose(ns/ns[0], 1.)\n", "\n", "# fictitious support u1 = 0 alone, without inertia forces\n", "bref1 = np.zeros(Nt, dtype=bool)\n", "bref1[0] = True\n", "bu1 = ~(bref1 | bfixt)\n", "for Fs in ([-5., 1., 4.], [0., 0., 12.]):\n", " Fs = np.array(Fs)\n", " fext = np.zeros(Nt)\n", " fext[0::DOF] = Fs\n", " u = np.zeros(Nt)\n", " u[bu1] = spsolve(csc_matrix(KCt)[bu1, :][:, bu1], fext[bu1])\n", " R1 = (KCt @ u - fext)[0]\n", " u2 = (Fs[1] + Fs[2])/k1_\n", " u3 = u2 + Fs[2]/k2_\n", " print('fictitious support, F = %s N: u = %s mm, R1 = %.1e N (closed form %.1e N)'\n", " % (Fs, np.round(1e3*u[0::DOF], 6), R1, -Fs.sum()))\n", " assert np.allclose(u[0::DOF], [0., u2, u3], rtol=1e-12, atol=1e-16)\n", " assert np.isclose(R1, -Fs.sum(), rtol=1e-12, atol=1e-13*abs(Fs).max())\n", " if Fs.sum() == 0:\n", " # the balanced general solution with alpha = 0\n", " assert np.allclose(u[0::DOF], [0., -Fs[0]/k1_, -Fs[0]/k1_ + Fs[2]/k2_],\n", " rtol=1e-12)\n", "\n", "for Fs in ([0., 0., 12.], [3., -4., 10.]):\n", " Fs = np.array(Fs)\n", " fext = np.zeros(Nt)\n", " fext[0::DOF] = Fs\n", " acc = Fs.sum()/mst.sum()\n", " u2 = (Fs[1] + Fs[2] - (mst[1] + mst[2])*acc)/k1_\n", " u3 = u2 + (Fs[2] - mst[2]*acc)/k2_\n", " print('\\nF =', Fs, 'N, closed form: alpha_dd = %.4f m/s2, u2 = %.4f mm, u3 = %.4f mm'\n", " % (acc, 1e3*u2, 1e3*u3))\n", " out = {}\n", " for r in (0, 2):\n", " bref = np.zeros(Nt, dtype=bool)\n", " bref[DOF*r] = True\n", " o = run_inertia_relief(KCt, Mt, fext, bref, bfixt)\n", " out[r] = o\n", " Nsp = spring_forces(springst, o['u'])\n", " print(' reference node %d: Phi = %s, alpha_dd = %.4f, u = %s mm, spring forces = %s N, '\n", " 'R = %.1e N, Phi^T F_tot = %.1e'\n", " % (r + 1, o['Phi'][0::DOF, 0], o['acc'][0], np.round(1e3*o['u'][0::DOF], 6),\n", " np.round(Nsp, 6), o['R'][DOF*r], (o['Phi'].T @ o['ftot'])[0]))\n", " assert np.allclose(o['Phi'][0::DOF, 0], 1., rtol=1e-14)\n", " assert np.isclose(o['acc'][0], acc, rtol=1e-14)\n", " assert abs(o['R'][DOF*r]) < 1e-13*abs(Fs).max()\n", " assert abs(o['Phi'].T @ o['ftot']).max() < 1e-13*abs(Fs).max()\n", " assert np.allclose(Nsp, [k1_*u2, k2_*(u3 - u2)], rtol=1e-12)\n", " assert np.allclose(out[0]['u'][0::DOF], [0., u2, u3], rtol=1e-12, atol=1e-16)\n", " assert np.allclose(out[2]['u'][0::DOF], np.array([0., u2, u3]) - u3, rtol=1e-12, atol=1e-16)\n", " if Fs[0] == Fs[1] == 0:\n", " assert np.isclose(k1_*u2, mst[0]*acc, rtol=1e-12)\n", " assert np.isclose(k2_*(u3 - u2), (mst[0] + mst[1])*acc, rtol=1e-12)" ] }, { "cell_type": "markdown", "id": "5ce75c21", "metadata": {}, "source": [ "With the fictitious support alone, the balanced loads give the general\n", "solution with $\\alpha = 0$ and no reaction, whereas the unbalanced loads\n", "give the reaction $-(F_1 + F_2 + F_3)$. With inertia relief, the rank, the\n", "null space, $\\boldsymbol{\\Phi}$, $\\ddot{\\alpha}$, $u_2$, $u_3$\n", "and the spring forces match the closed form, the reaction of the reference\n", "support vanishes, and moving the reference support from node 1 to node 3\n", "shifts every displacement by $-u_3$ without changing the spring forces." ] }, { "cell_type": "markdown", "id": "0c9196f4", "metadata": {}, "source": [ "Case 2: a chain of springs and point masses\n", "---\n", "\n", "Five point masses $m_i$ joined by four springs $k_j$ along $x$, free-free,\n", "under unbalanced loads $F_i$. As in case 1, the rigid-body acceleration is\n", "$\\ddot{\\alpha} = \\sum_i F_i / \\sum_i m_i$ and the inertia forces are\n", "$-m_i \\ddot{\\alpha}$. Cutting the spring $j$, between the nodes $j$ and\n", "$j + 1$ (numbered from 0), the equilibrium of the part to its right with the\n", "inertia forces gives the spring force, positive in tension,\n", "\n", "$$\n", "N_j = \\sum_{i > j} \\left(F_i - m_i \\ddot{\\alpha}\\right)\n", "$$\n", "\n", "and the displacements relative to the reference node $r$ follow from\n", "$u_{j+1} - u_j = N_j / k_j$ with $u_r = 0$. Two reference supports are used,\n", "node 0 and node 3; both are statically determinate (one degree of freedom\n", "for the one rigid-body mode). The spring forces must be the same, and the\n", "displacements must differ by a rigid translation." ] }, { "cell_type": "code", "execution_count": 4, "id": "8ba1c862", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.734699Z", "iopub.status.busy": "2026-10-30T23:31:11.734553Z", "iopub.status.idle": "2026-10-30T23:31:11.745425Z", "shell.execute_reply": "2026-10-30T23:31:11.744775Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "k_j [N/m] = [1000. 2000. 1500. 3000.] \n", "m_i [kg] = [1. 2. 1.5 0.5 3. ] \n", "F_i [N] = [ 0. 5. -2. 0. 12.]\n", "\n", "reference node 0\n", " alpha_dd = 1.875000 m/s2 (closed form 1.875000)\n", " inertia forces [N] = [-1.875 -3.75 -2.8125 -0.9375 -5.625 ]\n", " Phi^T F_tot = 1.3e-15\n", " reaction R_r [N] = -8.9e-16\n", " spring forces FE [N] = [1.875 0.625 5.4375 6.375 ]\n", " closed form [N] = [1.875 0.625 5.4375 6.375 ]\n", " u FE [mm] = [0. 1.875 2.1875 5.8125 7.9375]\n", " u closed form [mm] = [0. 1.875 2.1875 5.8125 7.9375]\n", "\n", "reference node 3\n", " alpha_dd = 1.875000 m/s2 (closed form 1.875000)\n", " inertia forces [N] = [-1.875 -3.75 -2.8125 -0.9375 -5.625 ]\n", " Phi^T F_tot = 4.4e-16\n", " reaction R_r [N] = 5.6e-16\n", " spring forces FE [N] = [1.875 0.625 5.4375 6.375 ]\n", " closed form [N] = [1.875 0.625 5.4375 6.375 ]\n", " u FE [mm] = [-5.8125 -3.9375 -3.625 0. 2.125 ]\n", " u closed form [mm] = [-5.8125 -3.9375 -3.625 0. 2.125 ]\n", "\n", "u(ref 3) - u(ref 0) [mm] = [-5.8125 -5.8125 -5.8125 -5.8125 -5.8125] (a rigid translation)\n" ] } ], "source": [ "ks, ms, Fc = chain_data()\n", "print('k_j [N/m] =', ks, '\\nm_i [kg] =', ms, '\\nF_i [N] =', Fc)\n", "KC0c, bfix_c, springs_c = spring_chain(ks)\n", "Mc = point_masses(ms)\n", "Nc = KC0c.shape[0]\n", "fext_c = np.zeros(Nc)\n", "fext_c[0::DOF] = Fc\n", "\n", "acc_ref = Fc.sum()/ms.sum()\n", "Nj_ref = np.array([(Fc[j+1:] - ms[j+1:]*acc_ref).sum() for j in range(len(ks))])\n", "res = {}\n", "for r in (0, 3):\n", " bref = np.zeros(Nc, dtype=bool)\n", " bref[DOF*r] = True\n", " out = run_inertia_relief(KC0c, Mc, fext_c, bref, bfix_c)\n", " res[r] = out\n", " u_ref = np.concatenate(([0.], np.cumsum(Nj_ref/ks)))\n", " u_ref -= u_ref[r]\n", " print('\\nreference node %d' % r)\n", " print(' alpha_dd = %.6f m/s2 (closed form %.6f)' % (out['acc'][0], acc_ref))\n", " print(' inertia forces [N] =', np.round(out['finertia'][0::DOF], 6))\n", " print(' Phi^T F_tot = %.1e' % (out['Phi'].T @ out['ftot'])[0])\n", " print(' reaction R_r [N] = %.1e' % out['R'][DOF*r])\n", " print(' spring forces FE [N] =', np.round(spring_forces(springs_c, out['u']), 6))\n", " print(' closed form [N] =', np.round(Nj_ref, 6))\n", " print(' u FE [mm] =', np.round(1e3*out['u'][0::DOF], 6))\n", " print(' u closed form [mm] =', np.round(1e3*u_ref, 6))\n", " assert np.isclose(out['acc'][0], acc_ref, rtol=1e-14)\n", " assert abs(out['R'][DOF*r]) < 1e-13*abs(Fc).max()\n", " assert abs(out['Phi'].T @ out['ftot']).max() < 1e-13*abs(Fc).max()\n", " assert np.allclose(spring_forces(springs_c, out['u']), Nj_ref, rtol=1e-12)\n", " assert np.allclose(out['u'][0::DOF], u_ref, rtol=1e-12, atol=1e-16)\n", "\n", "diff = res[3]['u'][0::DOF] - res[0]['u'][0::DOF]\n", "print('\\nu(ref 3) - u(ref 0) [mm] =', np.round(1e3*diff, 6), '(a rigid translation)')\n", "assert np.allclose(diff, diff[0], rtol=1e-12)" ] }, { "cell_type": "code", "execution_count": 5, "id": "7f1eba82", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.747708Z", "iopub.status.busy": "2026-10-30T23:31:11.747551Z", "iopub.status.idle": "2026-10-30T23:31:11.894690Z", "shell.execute_reply": "2026-10-30T23:31:11.894102Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6, 3.5))\n", "xn = np.arange(len(ms))\n", "for r, marker in [(0, 'o'), (3, 's')]:\n", " ax.plot(xn, 1e3*res[r]['u'][0::DOF], marker=marker, label='reference node %d' % r)\n", "ax.set_xlabel('node')\n", "ax.set_ylabel('$u$ relative to the reference support [mm]')\n", "ax.set_xticks(xn)\n", "ax.grid(True, alpha=0.3)\n", "ax.legend()\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b11af90c", "metadata": {}, "source": [ "The rigid-body acceleration, the inertia forces and the spring forces are\n", "those of the closed form and do not depend on the reference node; the\n", "displacements, measured from the reference node, differ by the rigid\n", "translation $u_3 - u_0$ of the first solution." ] }, { "cell_type": "markdown", "id": "3209bca4", "metadata": {}, "source": [ "Case 3: a free-free beam under a balanced load set\n", "---\n", "\n", "A steel beam of length $L = 2$ m along the global $x$ axis, rectangular\n", "cross section of width $b = 0.02$ m along $y$ and height $h = 0.05$ m along\n", "$z$, $E = 210$ GPa, $G = E/2.6$, $\\rho = 7850$ kg/m$^3$, is modelled with 10\n", "`BeamC` elements and the consistent mass matrix (`mtype=0`), with the rotary\n", "inertia of the section. The element axes are the global axes. It has six\n", "rigid-body modes and no support.\n", "\n", "The loads are:\n", "\n", "- its own weight, as the product of the mass matrix and the uniform\n", " acceleration field $-g$ along $z$, $\\boldsymbol{F}_g = \\boldsymbol{M}\n", " \\boldsymbol{a}_g$, $g = 9.81$ m/s$^2$, whose resultant is $-W$ with $W = m L\n", " g$ and $m = \\rho A$, applied at the centre of mass $x = L/2$;\n", "- two upward point loads $W/2$ along $+z$ at the nodes $x = a = 0.4$ m and\n", " $x = L - a = 1.6$ m, symmetric about the centre of mass, such that the\n", " resultant force along $z$ and the resultant moment about $y$ vanish;\n", "- opposite axial forces, $-P$ at $x = 0$ and $+P$ at $x = L$, $P = 1000$ N.\n", "\n", "The load set is balanced in force and moment, so inertia relief must give\n", "zero rigid-body accelerations and zero reactions of the reference support, to\n", "round-off. Two statically determinate reference supports are used: the six\n", "degrees of freedom of the first node (`'clamp'`), and $u, v, w, r_x$ of the\n", "first node with $v, w$ of the last node (`'pin-roller'`)." ] }, { "cell_type": "code", "execution_count": 6, "id": "adce0bb7", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.896566Z", "iopub.status.busy": "2026-10-30T23:31:11.896397Z", "iopub.status.idle": "2026-10-30T23:31:11.901902Z", "shell.execute_reply": "2026-10-30T23:31:11.901242Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "W from M a_g = 154.017000 N, m L g = 154.017000 N\n", "resultants of the external loads, Phi_geo^T F_ext = [ 0.00000000e+00 0.00000000e+00 4.44089210e-15 0.00000000e+00\n", " -2.24265051e-14 0.00000000e+00]\n" ] } ], "source": [ "L3, nel3, g, Pax, a3 = 2., 10, 9.81, 1000., 0.4\n", "prop3 = beam_prop() # rotary inertia included\n", "xs3, KC03, M3, beams3 = beam_model(L3, nel3, prop3, mtype=0)\n", "N3 = KC03.shape[0]\n", "m3 = prop3.intrho\n", "\n", "agrav = np.zeros(N3)\n", "agrav[2::DOF] = -g # uniform acceleration field -g along z\n", "fgrav = M3 @ agrav # own weight, consistent nodal loads\n", "W = -fgrav[2::DOF].sum()\n", "fext3 = fgrav.copy()\n", "for xa in (a3, L3 - a3):\n", " fext3[DOF*np.argmin(abs(xs3 - xa)) + 2] += W/2\n", "fext3[0] -= Pax\n", "fext3[DOF*nel3] += Pax\n", "print('W from M a_g = %.6f N, m L g = %.6f N' % (W, m3*L3*g))\n", "assert np.isclose(W, m3*L3*g, rtol=1e-13)\n", "\n", "Phig = geometric_rigid_modes(xs3) # translations and rotations about the origin\n", "print('resultants of the external loads, Phi_geo^T F_ext =', Phig.T @ fext3)\n", "assert abs(Phig.T @ fext3).max() < 1e-12*W" ] }, { "cell_type": "markdown", "id": "c159f6c2", "metadata": {}, "source": [ "The rigid-body modes computed from the stiffness matrix, $\\boldsymbol{\\Phi} =\n", "[-\\boldsymbol{K}_{{C0}_{uu}}^{-1} \\boldsymbol{K}_{{C0}_{uk}}; \\boldsymbol{I}]$,\n", "satisfy $\\boldsymbol{K}_{C0} \\boldsymbol{\\Phi} = \\boldsymbol{0}$ and span the\n", "same space as the geometric rigid-body modes, translations and rotations about\n", "the origin: the least-squares fit $\\boldsymbol{\\Phi}_{geo} \\boldsymbol{C} =\n", "\\boldsymbol{\\Phi}$ has a zero residual. $\\boldsymbol{\\Phi}^\\top \\boldsymbol{M}\n", "\\boldsymbol{\\Phi}$ is the $6 \\times 6$ rigid-body mass matrix about the\n", "reference node." ] }, { "cell_type": "code", "execution_count": 7, "id": "b5da897b", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.903745Z", "iopub.status.busy": "2026-10-30T23:31:11.903599Z", "iopub.status.idle": "2026-10-30T23:31:11.913240Z", "shell.execute_reply": "2026-10-30T23:31:11.912564Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "reference support: clamp\n", " max |K_C0 Phi| / max |K_C0| = 1.1e-16\n", " residual of Phi_geo C = Phi = 5.8e-13\n", " rigid-body accelerations = [ 1.45e-14 0.00e+00 -2.03e-14 0.00e+00 -1.49e-14 -0.00e+00]\n", " Phi^T F_tot = [ 2.27e-13 0.00e+00 -9.71e-15 0.00e+00 -4.61e-15 0.00e+00]\n", " reactions R_k = [ 0.00e+00 0.00e+00 -7.37e-14 0.00e+00 1.68e-14 0.00e+00]\n", " max |R_u| = 2.2e-13\n", "reference support: pin-roller\n", " max |K_C0 Phi| / max |K_C0| = 1.1e-16\n", " residual of Phi_geo C = Phi = 8.9e-14\n", " rigid-body accelerations = [1.45e-14 0.00e+00 3.90e-14 0.00e+00 0.00e+00 2.50e-14]\n", " Phi^T F_tot = [ 2.27e-13 0.00e+00 -3.25e-15 0.00e+00 0.00e+00 7.47e-15]\n", " reactions R_k = [0.00e+00 0.00e+00 2.84e-14 0.00e+00 0.00e+00 4.35e-14]\n", " max |R_u| = 4.9e-13\n", "\n", "Phi^T M Phi with the clamp at x = 0 (m L = 15.7000 kg, m L^3/3 = 20.9333 kg m2):\n", "[[ 1.5700e+01 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00]\n", " [ 0.0000e+00 1.5700e+01 0.0000e+00 0.0000e+00 0.0000e+00 1.5700e+01]\n", " [ 0.0000e+00 0.0000e+00 1.5700e+01 0.0000e+00 -1.5700e+01 0.0000e+00]\n", " [ 0.0000e+00 0.0000e+00 0.0000e+00 3.7942e-03 0.0000e+00 0.0000e+00]\n", " [ 0.0000e+00 0.0000e+00 -1.5700e+01 0.0000e+00 2.0937e+01 0.0000e+00]\n", " [ 0.0000e+00 1.5700e+01 0.0000e+00 0.0000e+00 0.0000e+00 2.0934e+01]]\n" ] } ], "source": [ "res3 = {}\n", "for choice in ('clamp', 'pin-roller'):\n", " bref = reference_dofs(len(xs3), choice)\n", " out = run_inertia_relief(KC03, M3, fext3, bref)\n", " res3[choice] = out\n", " Phi = out['Phi']\n", " C = np.linalg.lstsq(Phig, Phi, rcond=None)[0]\n", " print('reference support: %s' % choice)\n", " print(' max |K_C0 Phi| / max |K_C0| = %.1e' % (abs(KC03 @ Phi).max()/abs(KC03).max()))\n", " print(' residual of Phi_geo C = Phi = %.1e' % abs(Phig @ C - Phi).max())\n", " print(' rigid-body accelerations =', np.array2string(out['acc'], precision=2))\n", " print(' Phi^T F_tot =', np.array2string(Phi.T @ out['ftot'], precision=2))\n", " print(' reactions R_k =', np.array2string(out['R'][bref], precision=2))\n", " print(' max |R_u| = %.1e' % abs(out['R'][out['bu']]).max())\n", " assert abs(KC03 @ Phi).max() < 1e-6*abs(KC03).max()\n", " assert abs(Phig @ C - Phi).max() < 1e-10\n", " assert abs(out['acc'][:3]).max() < 1e-12*g\n", " assert abs(Phi.T @ out['ftot']).max() < 1e-10*W\n", " assert abs(out['R'][bref]).max() < 1e-10*W\n", "print('\\nPhi^T M Phi with the clamp at x = 0 (m L = %.4f kg, m L^3/3 = %.4f kg m2):'\n", " % (m3*L3, m3*L3**3/3))\n", "print(np.array2string(res3['clamp']['Phi'].T @ (M3 @ res3['clamp']['Phi']), precision=4))" ] }, { "cell_type": "markdown", "id": "fda2f51d", "metadata": {}, "source": [ "The rigid-body accelerations, the reactions of both reference supports and\n", "$\\boldsymbol{\\Phi}^\\top \\boldsymbol{F}_{tot}$ vanish to round-off: for a\n", "balanced load set, inertia relief reduces to the fictitious support of the\n", "singular static problem.\n", "\n", "The internal forces follow from the end forces of each element, `finte` of\n", "`update_probe_finte`, minus the element's own share of the distributed load,\n", "$\\boldsymbol{M}_e \\boldsymbol{a}_g$ (the `beam_end_forces` function of the\n", "test). Taking the bending moment $M(x)$ as the moment about $y$ at the first\n", "node of each element, it is compared with the statics of the beam,\n", "\n", "$$\n", "M(x) = -\\frac{m g x^2}{2} + \\frac{W}{2} \\langle x - a \\rangle + \\frac{W}{2} \\langle x - (L - a) \\rangle\n", "$$\n", "\n", "with $\\langle x - a \\rangle = \\max(x - a, 0)$, and the axial force with $P$." ] }, { "cell_type": "code", "execution_count": 8, "id": "6809e28c", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:11.915320Z", "iopub.status.busy": "2026-10-30T23:31:11.915145Z", "iopub.status.idle": "2026-10-30T23:31:12.173342Z", "shell.execute_reply": "2026-10-30T23:31:12.172727Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "clamp max |M_FE - M_statics| = 6.5e-14 N m, axial forces [N]: [1000.]\n", "pin-roller max |M_FE - M_statics| = 5.8e-14 N m, axial forces [N]: [1000.]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "difference of the two solutions = rigid-body motion, residual 6.3e-19 m\n", "axial elongation u(L) - u(0) = 9.5238e-06 m, P L/(E A) = 9.5238e-06 m\n" ] } ], "source": [ "Mcf3 = (-m3*g*xs3**2/2 + W/2*np.clip(xs3 - a3, 0, None)\n", " + W/2*np.clip(xs3 - (L3 - a3), 0, None))\n", "fig, axes = plt.subplots(1, 2, figsize=(10, 3.8))\n", "for choice, ls in [('clamp', '-o'), ('pin-roller', '--s')]:\n", " out = res3[choice]\n", " S = beam_end_forces(beams3, prop3, out['u'], M3, agrav)\n", " Mfe = np.append(S[:, 4], -S[-1, 10])\n", " print('%-10s max |M_FE - M_statics| = %.1e N m, axial forces [N]: %s'\n", " % (choice, abs(Mfe - Mcf3).max(), np.unique(np.round(S[:, 6], 9))))\n", " assert np.allclose(Mfe, Mcf3, atol=1e-10*abs(Mcf3).max())\n", " assert np.allclose(S[:, 6], Pax, rtol=1e-12)\n", " axes[0].plot(xs3, 1e6*out['u'][2::DOF], ls, label='w, %s' % choice)\n", " axes[1].plot(xs3, Mfe, ls, label=choice)\n", "axes[1].plot(xs3, Mcf3, 'k:', lw=2, label='statics')\n", "axes[0].set_ylabel(r'$w$ relative to the reference support [$\\mu$m]')\n", "axes[1].set_ylabel('bending moment $M$ [N m]')\n", "for ax in axes:\n", " ax.set_xlabel('$x$ [m]')\n", " ax.grid(True, alpha=0.3)\n", " ax.legend()\n", "plt.tight_layout()\n", "plt.show()\n", "\n", "du = res3['pin-roller']['u'] - res3['clamp']['u']\n", "C = np.linalg.lstsq(Phig, du, rcond=None)[0]\n", "print('difference of the two solutions = rigid-body motion, residual %.1e m'\n", " % abs(Phig @ C - du).max())\n", "print('axial elongation u(L) - u(0) = %.4e m, P L/(E A) = %.4e m'\n", " % (res3['clamp']['u'][DOF*nel3] - res3['clamp']['u'][0], Pax*L3/(prop3.E*prop3.A)))\n", "assert abs(Phig @ C - du).max() < 1e-12*abs(du).max()\n", "assert np.isclose(res3['clamp']['u'][DOF*nel3], Pax*L3/(prop3.E*prop3.A), rtol=1e-12)" ] }, { "cell_type": "markdown", "id": "907fabc5", "metadata": {}, "source": [ "The deformed shape depends on the reference support: relative to the clamp at\n", "$x = 0$ the beam deflects as a cantilever, relative to the pin-roller as a\n", "simply supported beam. The two differ by a rigid-body motion, while the\n", "bending moment, equal to the statics, and the axial force $P$ are the same." ] }, { "cell_type": "markdown", "id": "8b648ee8", "metadata": {}, "source": [ "Case 4: free-free beam and bar under an end force, closed form\n", "---\n", "\n", "**Beam.** A uniform free-free beam of length $L$, mass per unit length $m$,\n", "bending stiffness $E I$ and shear stiffness $G A$, under a transverse force\n", "$P$ along $+z$ at $x = L$. With $\\theta$ the rigid rotation such that the\n", "rigid-body deflection is $w = w_c + \\theta (x - L/2)$, Newton's and Euler's\n", "equations, about the centre of mass with $J = m L^3/12$, give\n", "\n", "$$\n", "m L \\ddot{w}_c = P, \\qquad \\frac{m L^3}{12} \\ddot{\\theta} = P \\frac{L}{2}\n", "\\quad \\Rightarrow \\quad\n", "\\ddot{w}_c = \\frac{P}{m L}, \\qquad \\ddot{\\theta} = \\frac{6 P}{m L^2}\n", "$$\n", "\n", "The rigid-body acceleration field is $\\ddot{w}(x) = \\frac{P}{m L} \\left(\n", "\\frac{6 x}{L} - 2 \\right)$, e.g. $\\ddot{w}(0) = -2 P/(m L)$ and\n", "$\\ddot{w}(L) = 4 P/(m L)$, and the inertia load per unit length is linear in\n", "$x$:\n", "\n", "$$\n", "q(x) = -m \\ddot{w}(x) = \\frac{P}{L} \\left( 2 - \\frac{6 x}{L} \\right)\n", "$$\n", "\n", "whose resultant, $-P$, and moment, $-P L$ about $x = 0$, balance the end force.\n", "In pyfe3d's convention, the rotation $r_y$ moves the point $x$ of the axis by\n", "$w = -x \\, r_y$, so $\\ddot{r}_y = -\\ddot{\\theta}$.\n", "\n", "The deflection relative to the reference support follows from the Timoshenko\n", "beam with the strains of `BeamC`, curvature $r_y'$ and shear strain $\\gamma\n", "= w' + r_y$. The stationarity of $\\Pi = \\int_0^L \\left[ \\frac{E I}{2}\n", "r_y'^2 + \\frac{G A}{2} (w' + r_y)^2 - q w \\right] dx - P w(L)$ gives, with\n", "the shear force $Q = G A (w' + r_y)$,\n", "\n", "$$\n", "Q' = -q, \\qquad E I r_y'' = Q\n", "$$\n", "\n", "with the natural (free-end) conditions $Q(0) = 0$, $r_y'(0) = 0$, $Q(L) = P$,\n", "$r_y'(L) = 0$. Integrating from the free end $x = 0$, $Q = -\\int_0^x q \\, dx$\n", "and $E I r_y' = \\int_0^x Q \\, dx = -M(x)$, with\n", "\n", "$$\n", "M(x) = \\frac{P x^2 (L - x)}{L^2}\n", "$$\n", "\n", "The conditions at $x = L$ are then satisfied automatically, because the loads\n", "are balanced. Integrating once more, $w' = Q/(G A) - r_y$, and\n", "\n", "$$\n", "w(x) = \\frac{P}{E I L^2} \\left( \\frac{L x^4}{12} - \\frac{x^5}{20} \\right) - \\frac{M(x)}{G A} + c_0 + c_1 x\n", "$$\n", "\n", "where $c_0$ and $c_1$, a rigid-body motion, are fixed by the reference\n", "support: $c_0 = c_1 = 0$ for the clamp at $x = 0$ ($w = r_y = 0$, and $Q(0) =\n", "0$ gives $w'(0) = 0$); $c_0 = 0$, $c_1 = -P L^2/(30 E I)$ for the pin-roller\n", "$w(0) = w(L) = 0$. The first term is the Euler-Bernoulli solution of $E I\n", "w'''' = q$ with the free-end conditions $w''(0) = w'''(0) = 0$, the second\n", "the shear deflection. The end deflection relative to the clamp is $w(L) = P\n", "L^3/(30 E I)$, and the bending moment is largest at $x = 2L/3$, $M = 4 P\n", "L/27$.\n", "\n", "**Bar.** A free-free bar of axial stiffness $E A$ under an axial force $P$ at\n", "$x = L$: $\\ddot{u} = P/(m L)$, the inertia load $n = -P/L$, and $(E A u')' =\n", "-n$ with $E A u'(0) = 0$ gives the axial force $N(x) = E A u' = P x/L$, with\n", "$N(L) = P$ automatically, and, relative to $u(0) = 0$,\n", "\n", "$$\n", "u(x) = \\frac{P x^2}{2 E A L}\n", "$$\n", "\n", "SymPy checks these expressions below, independently of the derivation above:\n", "Newton-Euler from the acceleration field, the integration of the Timoshenko\n", "equations, the free-end conditions at $x = L$, the Euler-Bernoulli limit and\n", "the bar." ] }, { "cell_type": "code", "execution_count": 9, "id": "3e1b9712", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:12.175389Z", "iopub.status.busy": "2026-10-30T23:31:12.175230Z", "iopub.status.idle": "2026-10-30T23:31:12.457231Z", "shell.execute_reply": "2026-10-30T23:31:12.456476Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Newton-Euler: {theta_dd: 6*P/(L**2*m), wc_dd: P/(L*m)}\n", "q(x) = -2*P*(-L + 3*x)/L**2\n", "M(x) = -P*x**2*(-L + x)/L**2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "clamp: w(L) = L**3*P/(30*EI) ; pin-roller: c1 = -L**2*P/(30*EI)\n", "maximum moment at x = [2*L/3] , M = [4*L*P/27]\n", "bar: N(x) = P*x/L , u(x) = P*x**2/(2*EA*L)\n" ] } ], "source": [ "x, s, L, P, m, EI, GA, EA = sp.symbols('x s L P m EI GA EA', positive=True)\n", "wc, th = sp.symbols('wc_dd theta_dd')\n", "# Newton-Euler: resultant and moment about the centre of mass of m*acc = loads\n", "acc = wc + th*(x - L/2)\n", "sol = sp.solve([sp.integrate(m*acc, (x, 0, L)) - P,\n", " sp.integrate(m*acc*(x - L/2), (x, 0, L)) - P*L/2], [wc, th])\n", "print('Newton-Euler:', sol)\n", "assert sp.simplify(sol[wc] - P/(m*L)) == 0 and sp.simplify(sol[th] - 6*P/(m*L**2)) == 0\n", "q = sp.expand(-m*acc.subs(sol))\n", "print('q(x) =', sp.factor(q))\n", "assert sp.simplify(q - P/L*(2 - 6*x/L)) == 0\n", "\n", "# Timoshenko: Q' = -q, Q(0) = 0; EI ry'' = Q, ry'(0) = 0\n", "Q = -sp.integrate(q.subs(x, s), (s, 0, x))\n", "dry = sp.integrate(Q.subs(x, s), (s, 0, x))/EI\n", "Mx = sp.factor(-EI*dry)\n", "print('M(x) =', Mx)\n", "assert sp.simplify(Q.subs(x, L) - P) == 0 # Q(L) = P automatically\n", "assert sp.simplify(dry.subs(x, L)) == 0 # ry'(L) = 0 automatically\n", "assert sp.simplify(Mx - P*x**2*(L - x)/L**2) == 0\n", "c0, c1 = sp.symbols('c0 c1')\n", "ry = sp.integrate(dry.subs(x, s), (s, 0, x)) - c1 # ry(0) = -c1\n", "w = sp.integrate((Q/GA - ry).subs(x, s), (s, 0, x)) + c0\n", "# the equations and all boundary conditions\n", "assert sp.simplify(sp.diff(GA*(sp.diff(w, x) + ry), x) + q) == 0\n", "assert sp.simplify(EI*sp.diff(ry, x, 2) - GA*(sp.diff(w, x) + ry)) == 0\n", "w_cf = P/(EI*L**2)*(L*x**4/12 - x**5/20) - Mx/GA + c0 + c1*x\n", "assert sp.simplify(w - w_cf) == 0\n", "# Euler-Bernoulli limit: EI w(4) = q, w2(0) = w3(0) = 0 (derivatives)\n", "w_eb = P/(EI*L**2)*(L*x**4/12 - x**5/20)\n", "assert sp.simplify(EI*sp.diff(w_eb, x, 4) - q) == 0\n", "assert sp.diff(w_eb, x, 2).subs(x, 0) == 0 and sp.diff(w_eb, x, 3).subs(x, 0) == 0\n", "# reference supports\n", "w_clamp = w.subs({c0: 0, c1: 0})\n", "c1_pr = sp.solve(w.subs({c0: 0}).subs(x, L), c1)[0]\n", "print('clamp: w(L) =', sp.simplify(w_clamp.subs(x, L)),\n", " '; pin-roller: c1 =', sp.simplify(c1_pr))\n", "assert sp.simplify(w_clamp.subs(x, L) - P*L**3/(30*EI)) == 0\n", "assert sp.simplify(c1_pr + P*L**2/(30*EI)) == 0\n", "xm = sp.solve(sp.diff(Mx, x), x)\n", "print('maximum moment at x =', xm, ', M =', [sp.simplify(Mx.subs(x, v)) for v in xm])\n", "\n", "# bar: (EA u')' = -n, n = -m*P/(m*L), EA u'(0) = 0\n", "n = -m*P/(m*L)\n", "Nx = -sp.integrate(n.subs(x, s), (s, 0, x))\n", "u_bar = sp.integrate((Nx/EA).subs(x, s), (s, 0, x))\n", "assert sp.simplify(Nx.subs(x, L) - P) == 0\n", "assert sp.simplify(u_bar - P*x**2/(2*EA*L)) == 0\n", "print('bar: N(x) =', Nx, ', u(x) =', u_bar)" ] }, { "cell_type": "markdown", "id": "8ff7bc10", "metadata": {}, "source": [ "**Finite element model.** The beam of case 3, $L = 2$ m, 10 `BeamC` elements,\n", "with $P = 100$ N at $x = L$ along $+z$. Two choices make the model and the\n", "closed form describe the same beam: the shear correction factor $5/6$ is put\n", "in `prop.G` ($G A$ above is `prop.G*prop.A`); and the rotary inertia of the\n", "bending in the plane $xz$, `intrhoz2`, is set to zero, as in the closed form\n", "(the rotary inertia about $x$, `intrhoy2`, is kept, so that\n", "$\\boldsymbol{\\Phi}^\\top \\boldsymbol{M} \\boldsymbol{\\Phi}$ stays non-singular).\n", "\n", "With the consistent mass matrix, the nodal deflections of `BeamC` match the\n", "closed form to round-off, so the tolerance is $10^{-9}$ relative to the\n", "largest deflection, independent of the mesh; the bending moment is recovered\n", "as in case 3. With the lumped mass matrix (`mtype=1`), the inertia load is\n", "lumped at the nodes and the deflection converges with the mesh: the relative\n", "error, measured with 10, 20 and 40 elements, is $0.75/n^2$ to $0.80/n^2$ for\n", "the clamp and $1.10/n^2$ for the pin-roller, and the tolerance asserted is\n", "$1.5/n^2$ for $n$ elements." ] }, { "cell_type": "code", "execution_count": 10, "id": "c07ca12c", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:12.459047Z", "iopub.status.busy": "2026-10-30T23:31:12.458876Z", "iopub.status.idle": "2026-10-30T23:31:12.535126Z", "shell.execute_reply": "2026-10-30T23:31:12.534387Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "reference support: clamp\n", " accelerations of the reference dofs: [ 0. 0. -12.73885 0. -19.10828 -0. ]\n", " Phi^T F_tot = 2.5e-14, reactions = 3.9e-12\n", " x [m] w FE [mm] w closed [mm] M FE [N m] M closed\n", " 0.00 0.00000000 0.00000000 -0.000000 0.000000\n", " 0.20 0.00011650 0.00011650 1.800000 1.800000\n", " 0.40 0.00205044 0.00205044 6.400000 6.400000\n", " 0.60 0.00993394 0.00993394 12.600000 12.600000\n", " 0.80 0.02936198 0.02936198 19.200000 19.200000\n", " 1.00 0.06629524 0.06629524 25.000000 25.000000\n", " 1.20 0.12596297 0.12596297 28.800000 28.800000\n", " 1.40 0.21176587 0.21176587 29.400000 29.400000\n", " 1.60 0.32417890 0.32417890 25.600000 25.600000\n", " 1.80 0.45965417 0.45965417 16.200000 16.200000\n", " 2.00 0.60952381 0.60952381 -0.000000 -0.000000\n", " relative error: w 1.0e-13, M 1.3e-13\n", " Newton-Euler: w0_dd = -12.738854, ry0_dd = -19.108280 m/s2, rad/s2\n", "reference support: pin-roller\n", " accelerations of the reference dofs: [ 0. 0. -12.73885 0. 0. 25.47771]\n", " Phi^T F_tot = 5.4e-15, reactions = 7.2e-13\n", " x [m] w FE [mm] w closed [mm] M FE [N m] M closed\n", " 0.00 0.00000000 0.00000000 -0.000000 0.000000\n", " 0.20 -0.06083589 -0.06083589 1.800000 1.800000\n", " 0.40 -0.11985432 -0.11985432 6.400000 6.400000\n", " 0.60 -0.17292320 -0.17292320 12.600000 12.600000\n", " 0.80 -0.21444754 -0.21444754 19.200000 19.200000\n", " 1.00 -0.23846667 -0.23846667 25.000000 25.000000\n", " 1.20 -0.23975131 -0.23975131 28.800000 28.800000\n", " 1.40 -0.21490080 -0.21490080 29.400000 29.400000\n", " 1.60 -0.16344015 -0.16344015 25.600000 25.600000\n", " 1.80 -0.08891726 -0.08891726 16.200000 16.200000\n", " 2.00 0.00000000 -0.00000000 -0.000000 -0.000000\n", " relative error: w 3.1e-14, M 4.1e-14\n", " Newton-Euler: w_dd(0) = -12.738854, w_dd(L) = 25.477707 m/s2\n", "\n", "shear deflection max |M/(G A)| / max |w_clamp| = 7.2e-04\n" ] } ], "source": [ "L4, P4 = 2., 100.\n", "prop4 = beam_prop(rotary_xz=False)\n", "prop4.G = 5/6*prop4.E/2.6\n", "m4, EI4, GA4 = prop4.intrho, prop4.E*prop4.Iyy, prop4.G*prop4.A\n", "w_np = sp.lambdify((x, L, P, EI, GA, c0, c1), w_cf)\n", "M_np = sp.lambdify((x, L, P), Mx)\n", "\n", "\n", "def closed_form(xs, choice):\n", " cc1 = 0. if choice == 'clamp' else -P4*L4**2/(30*EI4)\n", " return w_np(xs, L4, P4, EI4, GA4, 0., cc1), M_np(xs, L4, P4)\n", "\n", "\n", "res4 = {}\n", "xs4, KC04, M4, beams4 = beam_model(L4, 10, prop4, mtype=0)\n", "fext4 = np.zeros(KC04.shape[0])\n", "fext4[DOF*10 + 2] = P4\n", "for choice in ('clamp', 'pin-roller'):\n", " out = run_inertia_relief(KC04, M4, fext4, reference_dofs(len(xs4), choice))\n", " res4[choice] = out\n", " wcf, Mcf = closed_form(xs4, choice)\n", " S = beam_end_forces(beams4, prop4, out['u'], M4, -(out['Phi'] @ out['acc']))\n", " Mfe = np.append(S[:, 4], -S[-1, 10])\n", " err_w = abs(out['u'][2::DOF] - wcf).max()/abs(wcf).max()\n", " err_M = abs(Mfe - Mcf).max()/abs(Mcf).max()\n", " print('reference support: %s' % choice)\n", " print(' accelerations of the reference dofs:', np.array2string(out['acc'], precision=5))\n", " print(' Phi^T F_tot = %.1e, reactions = %.1e'\n", " % (abs(out['Phi'].T @ out['ftot']).max(), abs(out['R'][reference_dofs(len(xs4), choice)]).max()))\n", " print(' %6s %14s %14s %12s %12s' % ('x [m]', 'w FE [mm]', 'w closed [mm]', 'M FE [N m]', 'M closed'))\n", " for xi, wf, wc_, mf, mc in zip(xs4, out['u'][2::DOF], wcf, Mfe, Mcf):\n", " print(' %6.2f %14.8f %14.8f %12.6f %12.6f' % (xi, 1e3*wf, 1e3*wc_, mf, mc))\n", " print(' relative error: w %.1e, M %.1e' % (err_w, err_M))\n", " assert err_w < 1e-9 and err_M < 1e-10\n", " assert abs(out['Phi'].T @ out['ftot']).max() < 1e-10*P4\n", " if choice == 'clamp':\n", " # Newton-Euler at the first node: w'' = -2P/(mL), ry'' = -6P/(mL^2)\n", " assert np.isclose(out['acc'][2], -2*P4/(m4*L4), rtol=1e-12)\n", " assert np.isclose(out['acc'][4], -6*P4/(m4*L4**2), rtol=1e-12)\n", " print(' Newton-Euler: w0_dd = %.6f, ry0_dd = %.6f m/s2, rad/s2'\n", " % (-2*P4/(m4*L4), -6*P4/(m4*L4**2)))\n", " else:\n", " assert np.isclose(out['acc'][2], -2*P4/(m4*L4), rtol=1e-12)\n", " assert np.isclose(out['acc'][5], 4*P4/(m4*L4), rtol=1e-12)\n", " print(' Newton-Euler: w_dd(0) = %.6f, w_dd(L) = %.6f m/s2'\n", " % (-2*P4/(m4*L4), 4*P4/(m4*L4)))\n", "print('\\nshear deflection max |M/(G A)| / max |w_clamp| = %.1e'\n", " % (abs(closed_form(xs4, 'clamp')[1]).max()/GA4/abs(closed_form(xs4, 'clamp')[0]).max()))" ] }, { "cell_type": "code", "execution_count": 11, "id": "ff509fa0", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:12.536951Z", "iopub.status.busy": "2026-10-30T23:31:12.536790Z", "iopub.status.idle": "2026-10-30T23:31:12.553624Z", "shell.execute_reply": "2026-10-30T23:31:12.552862Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lumped mass matrix (mtype=1), relative error of the deflection\n", " n clamp n^2 err pin-roller n^2 err\n", " 10 0.752 1.101\n", " 20 0.791 1.096\n", " 40 0.798 1.098\n" ] } ], "source": [ "print('lumped mass matrix (mtype=1), relative error of the deflection')\n", "print('%5s %14s %14s' % ('n', 'clamp n^2 err', 'pin-roller n^2 err'))\n", "for nel in (10, 20, 40):\n", " xs_, KC0_, M_, beams_ = beam_model(L4, nel, prop4, mtype=1)\n", " f_ = np.zeros(KC0_.shape[0])\n", " f_[DOF*nel + 2] = P4\n", " errs = []\n", " for choice in ('clamp', 'pin-roller'):\n", " out = run_inertia_relief(KC0_, M_, f_, reference_dofs(len(xs_), choice))\n", " wcf = closed_form(xs_, choice)[0]\n", " errs.append(abs(out['u'][2::DOF] - wcf).max()/abs(wcf).max())\n", " assert errs[-1] < 1.5/nel**2\n", " print('%5d %14.3f %14.3f' % (nel, nel**2*errs[0], nel**2*errs[1]))" ] }, { "cell_type": "code", "execution_count": 12, "id": "ac9e8d59", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:12.555605Z", "iopub.status.busy": "2026-10-30T23:31:12.555437Z", "iopub.status.idle": "2026-10-30T23:31:12.794861Z", "shell.execute_reply": "2026-10-30T23:31:12.793818Z" } }, "outputs": [ { "data": { "image/png": "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nds657BLh0RCiNdFREQQFhaWqBl5eHg4T548AcDJyYmYGLk4JtJXXFwcvXv3pmTJkowYMULtOEKIdNSgQYNMV3ibfMfbz8+Phg0bsnfvXu7fv8+jR4+MfoQQWdPDhw9ZsmQJVapUoWzZsuxa9x32ypvveusA15x2VHGTgZuEUEPz5s3p0aMHW7du5c6dO9y9e5etW7fSs2dPWrRoAcDJkycpXry4ukFFlrNgwQJOnz7NsmXLsLGxUTuOECId1a9fn+vXr3P79m21o5iNyYX34sWLWbVqFSdOnGDbtm1s3brV6EcIkXU8e/aMDRs20KxZM1xcXBgwYAD58uVj8+bN3Ll9m3ldqqMjvsh+VcLjic3csbR4fa0QIj0sWbKE+vXr0759ewoXLsz7779P+/btqV+/PosXLwagZMmSfP/99yna78GDB2nWrBnvvfceOp2Obdu2Ga1XFIVJkybx3nvvYW9vT506dbh48aK53pbQuH///ZexY8cyYMAAvLy81I4jhEhnderUAchU/bxNLrxjYmKoXr26ObMIITQkJiaG7du307FjR5ydnenYsSP3799nzpw53L17l99++41WrVphY2ODt4crizpXxCWncXNyl5x2LOpc0TCPtxAi/WXPnp1ly5bx4MEDwwjnDx48YOnSpWTLlg2A8uXLU758+RTt99mzZ5QrV44FCxYkuX727NnMnTuXBQsWcOrUKVxcXGjQoAGRkZGpfUtC4xRFYcCAATg5OTF9+nS14wghVJAnTx7Kly/Pvn371I5iNib38e7Vqxfr169n/Pjx5swjhMjAoqKi2LNnj6Fly6NHj/Dw8GDcuHG0b9/+rfNue3u40sDdhRM37nP9TjhFC+ajapG8cqdbiAwie/bslC1b1mz7a9y4MY0bN05ynaIo+Pv7M3bsWFq1agXA6tWryZ8/P+vXr6dv375myyG056effmLnzp388ssvRoP+CSGylnr16rFp0yYURUGn0/73xRQV3r6+voa/6/V6li5dyp49eyhbtizW1tZG286dO9c8CYUQqnr06BE7d+5k69atBAQE8OzZM4oXL06/fv3o0KEDZcqUSfa+LC10VCuShyLZ43B2zoOFFN1CZAjpPVhqcHAwoaGhNGzY0LDM1taW2rVrc/To0TcW3tHR0URHRxseJwz+ptfrE+VOKb1ej6Ioqd6PGrScHYzzP3z4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H+bMn5LzkMl9vN3c3AgJCUnUB/nBgwe4ublp8vZ/unAqBE6FsATKuOrJ/45/dBcXF+bPn8+XX37JlClTGDFiBHPmzGHcuHH07NkTGxsbs8ZLaDothBAieQ4fPsxnn30GwP79+6lRo0b8iv//vAdAr48fvdzZ2aQ+3WnJz8+PyZMn4+npiaur61tnBhEiucaOHUtwcDBnz559a9EthBApYWdnR9WqVTlw4IDJhbdaTD77v2narqdPn0ofnjTw/vvvs2zZMv7++2/q1q3LwIEDKVGiBKtWrTLbvNlCCCGST1EU5s+fT926dSlWrBhnz579X9GtIYsXL2bVqlWcOHGCbdu2sXXrVqMfIVLqwIED+Pv7M336dNzd3dWOI4TIZBL6eb/eQiujS/Ed74QR5HQ6HePHjzeaizEuLo4TJ05Qvnx5swUUxooWLcratWsZNWoUEydOpHv37sycOZPJkyfTpk0bzTVVEUIILXr69Cm9e/fmxx9/xNfXl5kzZ2r2rl5MTAzVq1dXO4bIJCIjI+nWrRsfffQRQ4YMUTuOECITql27NlOmTOHSpUt4eHioHSfZUlylBQUFERQUhKIonD9/3vA4KCiIv//+m3LlyrFq1ao0iCpe5eHhwebNmzl9+jT/1969x+V4/38Af913R9EBhcwppyxNkY7kTDlkGIppacv5bL7EsDLEjzGbyXFszNgcprbJYUKUkGIWGWNziBKSQ1T39fujb32lg+67+76v+6rX8/HoQVef+7pfXT7uz/2+ruv+fGxsbODr64t27dohMjISKn5sn4iIyuHKlStwc3NDZGQkdu7cic8//1yyRTcABAUFYfv27WLHoEpi+vTpuH//PrZs2cKLAUSkEe7u7jAwMMCxY8fEjqIUpa94R0dHAwACAwOxatUqtUzqQqpzcnLC/v37ceLECcydOxf9+/eHq6srFi5ciO7du/OzekREavTTTz/ho48+Qv369XH69OlKcRttdnY21q9fj8OHD6NNmzbFTiKsWLFCpGQkNb/88gs2btyI9evXw8amPCvZExEpz8TEBO3bt0dMTAwmTJggdpxyU/lU5ObNm1l065COHTsiOjoaBw8ehCAI6NmzJ7p164bY2FixoxERSd7Lly8xZcoUDB06FH369MGZM2cqRdENABcuXICjoyPkcjkuXrxY5E62pKQkseORRNy9excffvgh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S5cuFZo1ayYYGxsLNWvWFDp27Cj8+uuvxfapreOvbN959OiRUK1aNWH9+vUl7k9bx75gOYzS+oGu93tl8+tSv1c2u671eVX6jq70+5JyAxA2b95c2EbX+35VIOUxmeOxeK9NyuYXBN15bZLymCzl8ViV/LrU7zkea6/fy/4bmoiIiIiIiIg0gJ/xJiIiIiIiItIgFt5EREREREREGsTCm4iIiIiIiEiDWHgTERERERERaRALbyIiIiIiIiINYuFNREREREREpEEsvImIiIiIiIg0iIU3ERERERERkQax8CYiIiIiIiLSIBbeRKRRXbp0gUwmg0wmQ1JSUoX2NXLkyMJ9/fzzz2rJR0REVFVwTCYSDwtvItK4UaNGITU1Ffb29hXaz6pVq5CamqqmVERERFUPx2QiceiLHYCIKj8TExPUq1evwvsxNzeHubm5GhIRERFVTRyTicTBK95EpJQffvgBxsbGuH37duG2oKAgtGnTBpmZmeXeT5cuXTBp0iRMnToVNWvWRN26dbF+/Xo8ffoUgYGBMDU1RbNmzbB//35N/BpERESSxzGZSDpYeBORUvz8/GBra4uwsDAAQGhoKA4cOID9+/crfeb722+/haWlJU6fPo1JkyZh3LhxGDJkCDw8PHDu3Dl4eXnB398fz54908SvQkREJGkck4mkg4U3ESlFJpNh0aJF2LhxIxYvXoxVq1YhKioKb731ltL7cnBwwNy5c9GiRQvMnj0b1apVg6WlJUaNGoUWLVpg/vz5yMjIwIULFzTwmxAREUkbx2Qi6eBnvIlIaf369YOdnR1CQ0Nx8OBBtG7dWqX9tGnTpvDvenp6qF27Nt55553CbXXr1gUApKWlVSwwERFRJcUxmUgaeMWbiJR24MABXL58GXl5eYUDsSoMDAyKfC+TyYpsk8lkAACFQqHycxAREVVmHJOJpIGFNxEp5dy5cxgyZAjWrVsHLy8vzJs3T+xIREREVRLHZCLp4K3mRFRuN27cQN++fREcHAx/f3/Y2dnB2dkZCQkJcHJyEjseERFRlcExmUhaeMWbiMrlwYMH6N27N/r37485c+YAAJycnODj44NPPvlE5HRERERVB8dkIunhFW8iKpdatWrh0qVLxbbv27dPpf0dPXq02LYbN24U2yYIgkr7JyIiqqw4JhNJD694E5HGrVmzBjVq1MAff/xRof2MHTsWNWrUUFMqIiKiqodjMpE4ZAJPXRGRBt2+fRvPnz8HADRq1AiGhoYq7ystLQ2PHz8GAFhbW6N69epqyUhERFQVcEwmEg8LbyIiIiIiIiIN4q3mRERERERERBrEwpuIiIiIiIhIg1h4ExEREREREWkQC28iIiIiIiIiDWLhTURERERERKRBLLyJiIiIiIiINIiFNxEREREREZEGsfAmIiIiIiIi0iAW3kREREREREQaxMKbiIiIiIiISIP+HwkJepVkniAnAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xf = np.linspace(0, L4, 201)\n", "fig, axes = plt.subplots(1, 2, figsize=(10, 3.8))\n", "for choice, mk in [('clamp', 'o'), ('pin-roller', 's')]:\n", " wcf_f, Mcf_f = closed_form(xf, choice)\n", " axes[0].plot(xf, 1e3*wcf_f, 'k-', lw=1)\n", " axes[0].plot(xs4, 1e3*res4[choice]['u'][2::DOF], mk, label='BeamC, %s' % choice)\n", "axes[1].plot(xf, closed_form(xf, 'clamp')[1], 'k-', lw=1, label='closed form')\n", "S = beam_end_forces(beams4, prop4, res4['clamp']['u'], M4,\n", " -(res4['clamp']['Phi'] @ res4['clamp']['acc']))\n", "axes[1].plot(xs4, np.append(S[:, 4], -S[-1, 10]), 'o', label='BeamC')\n", "axes[0].set_ylabel('$w$ relative to the reference support [mm]')\n", "axes[1].set_ylabel('bending moment $M$ [N m]')\n", "for ax in axes:\n", " ax.set_xlabel('$x$ [m]')\n", " ax.grid(True, alpha=0.3)\n", " ax.legend()\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "73624355", "metadata": {}, "source": [ "The bar: the same `BeamC` model under an axial force $P = 100$ N at $x = L$,\n", "with the clamp at $x = 0$ as reference support. The nodal displacements match\n", "$u = P x^2/(2 E A L)$ to round-off. The axial force of each element, constant\n", "since $u$ is interpolated linearly, $E A (u_2 - u_1)/L_e$, equals $N$ at the\n", "element midpoint, because the secant slope of a quadratic is its slope at the\n", "midpoint; the end forces recovered as in case 3 give $N$ at the nodes." ] }, { "cell_type": "code", "execution_count": 13, "id": "7eb99f20", "metadata": { "execution": { "iopub.execute_input": "2026-10-30T23:31:12.796765Z", "iopub.status.busy": "2026-10-30T23:31:12.796570Z", "iopub.status.idle": "2026-10-30T23:31:12.806749Z", "shell.execute_reply": "2026-10-30T23:31:12.806093Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "u_dd = 6.369427 m/s2, P/(m L) = 6.369427 m/s2\n", " x [m] u FE [um] u closed [um] N_e [N] P x_m/L\n", " 0.00 0.00000000 0.00000000 5.0000 5.0000\n", " 0.20 0.00476190 0.00476190 15.0000 15.0000\n", " 0.40 0.01904762 0.01904762 25.0000 25.0000\n", " 0.60 0.04285714 0.04285714 35.0000 35.0000\n", " 0.80 0.07619048 0.07619048 45.0000 45.0000\n", " 1.00 0.11904762 0.11904762 55.0000 55.0000\n", " 1.20 0.17142857 0.17142857 65.0000 65.0000\n", " 1.40 0.23333333 0.23333333 75.0000 75.0000\n", " 1.60 0.30476190 0.30476190 85.0000 85.0000\n", " 1.80 0.38571429 0.38571429 95.0000 95.0000\n", " 2.00 0.47619048 0.47619048\n", "relative error of u: 1.1e-16\n" ] } ], "source": [ "fext5 = np.zeros(KC04.shape[0])\n", "fext5[DOF*10] = P4\n", "out = run_inertia_relief(KC04, M4, fext5, reference_dofs(len(xs4), 'clamp'))\n", "EA4 = prop4.E*prop4.A\n", "ucf = P4*xs4**2/(2*EA4*L4)\n", "Ne = EA4*np.diff(out['u'][0::DOF])/(L4/10)\n", "xmid = (xs4[1:] + xs4[:-1])/2\n", "S = beam_end_forces(beams4, prop4, out['u'], M4, -(out['Phi'] @ out['acc']))\n", "print('u_dd = %.6f m/s2, P/(m L) = %.6f m/s2' % (out['acc'][0], P4/(m4*L4)))\n", "print('%6s %14s %14s %10s %10s' % ('x [m]', 'u FE [um]', 'u closed [um]', 'N_e [N]', 'P x_m/L'))\n", "for i, xi in enumerate(xs4):\n", " row = '%6.2f %14.8f %14.8f' % (xi, 1e6*out['u'][DOF*i], 1e6*ucf[i])\n", " if i < 10:\n", " row += ' %10.4f %10.4f' % (Ne[i], P4*xmid[i]/L4)\n", " print(row)\n", "assert np.isclose(out['acc'][0], P4/(m4*L4), rtol=1e-13)\n", "assert np.allclose(out['u'][0::DOF], ucf, atol=1e-12*ucf.max())\n", "assert np.allclose(Ne, P4*xmid/L4, rtol=1e-11)\n", "assert np.allclose(S[:, 6], P4*xs4[1:]/L4, rtol=1e-11)\n", "print('relative error of u: %.1e' % (abs(out['u'][0::DOF] - ucf).max()/ucf.max()))" ] }, { "cell_type": "markdown", "id": "99515b8c", "metadata": {}, "source": [ "Summary\n", "---\n", "\n", "- The inertia-relief procedure, built from `KC0` and `M` with the partition\n", " `bu`/`bk` of pyfe3d, reproduces the closed form of the three-node example,\n", " its rigid-body acceleration $(F_1 + F_2 + F_3)/(m_1 + m_2 + m_3)$ and its\n", " displacements, to round-off; with balanced loads, the fictitious support\n", " alone gives the same solution and no reaction, with unbalanced loads a\n", " reaction equal to minus the resultant.\n", "- In every case, the loads with the d'Alembert forces satisfy\n", " $\\boldsymbol{\\Phi}^\\top \\boldsymbol{F}_{tot} = \\boldsymbol{0}$ and the\n", " reference support carries no reaction.\n", "- For a balanced load set (case 3), the rigid-body accelerations vanish and\n", " inertia relief is the fictitious-support solution of the singular static\n", " problem.\n", "- The displacements depend on the reference support, by a rigid-body motion;\n", " the spring forces, bending moments and axial forces do not (cases 1, 2 and 3).\n", "- Against the closed forms of the free-free beam and bar (case 4), `BeamC`\n", " with the consistent mass matrix is exact at the nodes; with the lumped mass\n", " matrix the deflection converges as $1/n^2$." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.13" } }, "nbformat": 4, "nbformat_minor": 5 }