{ "cells": [ { "cell_type": "markdown", "id": "4b581768", "metadata": {}, "source": [ "# Tutorial: static, buckling, frequency and non-linear analyses of a von Mises truss\n", "\n", "This tutorial runs one of the analytic problems of the unit tests of\n", "`structsolve`, the function `von_mises_truss` of\n", "`tests/analytic_problems.py`, copied below, through the analyses of\n", "`structsolve`: linear static, linear buckling, frequency, and non-linear\n", "static with the Newton-Raphson and the arc-length methods.\n", "\n", "The shallow von Mises truss of height 1 is loaded through a linear spring of\n", "stiffness $k_s$. The degree of freedom 0 is the apex deflection $w = c_0$,\n", "the degree of freedom 1 the displacement $c_1$ of the loaded point, and the\n", "internal force vector is\n", "\n", "$$\n", "\\boldsymbol{F}_{int} = \\begin{Bmatrix} w^3 - 3 w^2 + 2 w + k_s (c_0 - c_1) \\\\ k_s (c_1 - c_0) \\end{Bmatrix}\n", "$$\n", "\n", "with the tangent stiffness matrix $\\boldsymbol{K}_C + \\boldsymbol{K}_G$, where $\\boldsymbol{K}_C$ is the\n", "linear stiffness matrix and $\\boldsymbol{K}_G$ contains the derivative $3 w^2 - 6 w$ of\n", "the non-linear terms. The truss reaches a limit point at\n", "$w = 1 - 1/\\sqrt{3}$, under the limit load $F_{lim} = 2/(3\\sqrt{3})$. The\n", "reference load is `frac` times the limit load." ] }, { "cell_type": "markdown", "id": "630952bd", "metadata": {}, "source": [ "The model is given to `structsolve` by the four callables of `Analysis`, which return the external and the internal force vectors and the two parts of the tangent stiffness matrix:" ] }, { "cell_type": "code", "execution_count": 1, "id": "47bae04e", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.255563Z", "iopub.status.busy": "2026-10-22T15:58:21.255446Z", "iopub.status.idle": "2026-10-22T15:58:21.728371Z", "shell.execute_reply": "2026-10-22T15:58:21.727795Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "reference load: [0. 0.57735027]\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.sparse import csr_matrix\n", "\n", "from structsolve import Analysis, freq, lb\n", "\n", "frac = 1.5\n", "ks = 10.\n", "F_lim = 2/(3*np.sqrt(3))\n", "w_lim = 1 - 1/np.sqrt(3)\n", "fext = np.array([0., frac*F_lim])\n", "kC = np.array([[2. + ks, -ks], [-ks, ks]])\n", "\n", "\n", "def calc_fext(inc=1., silent=True):\n", " return inc*fext\n", "\n", "\n", "def calc_fint(c, silent=True):\n", " w = c[0]\n", " return np.array([w**3 - 3*w**2 + 2*w + ks*(c[0] - c[1]),\n", " ks*(c[1] - c[0])])\n", "\n", "\n", "def calc_kC(c=None, NLgeom=False, silent=True):\n", " return csr_matrix(kC)\n", "\n", "\n", "def calc_kG(c=None, NLgeom=False, silent=True):\n", " w = c[0]\n", " return csr_matrix(np.array([[3*w**2 - 6*w, 0.], [0., 0.]]))\n", "\n", "\n", "def analysis(**kwargs):\n", " an = Analysis(calc_fext=calc_fext, calc_fint=calc_fint, calc_kC=calc_kC,\n", " calc_kG=calc_kG)\n", " for name, value in kwargs.items():\n", " setattr(an, name, value)\n", " return an\n", "\n", "\n", "print('reference load:', fext)" ] }, { "cell_type": "markdown", "id": "0c228396", "metadata": {}, "source": [ "## Linear static analysis\n", "\n", "`Analysis.static(NLgeom=False)` solves $\\boldsymbol{K}_{C0} \\boldsymbol{c} = \\boldsymbol{F}_{ext}$ with the callables `calc_kC()` and `calc_fext()`:" ] }, { "cell_type": "code", "execution_count": 2, "id": "bcd8afd3", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.730056Z", "iopub.status.busy": "2026-10-22T15:58:21.729798Z", "iopub.status.idle": "2026-10-22T15:58:21.734575Z", "shell.execute_reply": "2026-10-22T15:58:21.734015Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "linear solution: [0.28867513 0.34641016]\n" ] } ], "source": [ "an = analysis()\n", "increments, cs = an.static(NLgeom=False, silent=True)\n", "c_lin = cs[0]\n", "print('linear solution:', c_lin)" ] }, { "cell_type": "markdown", "id": "f2de7df6", "metadata": {}, "source": [ "## Linear buckling analysis\n", "\n", "The geometric stiffness matrix of the linear solution gives the eigenvalue problem $(\\boldsymbol{K}_{C0} + \\lambda \\boldsymbol{K}_G(\\boldsymbol{c}_{lin})) \\boldsymbol{u} = \\boldsymbol{0}$. With only two degrees of freedom the dense solver is used explicitly, `sparse_solver=False`, which returns all the load multipliers:" ] }, { "cell_type": "code", "execution_count": 3, "id": "7f98ffbb", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.736037Z", "iopub.status.busy": "2026-10-22T15:58:21.735900Z", "iopub.status.idle": "2026-10-22T15:58:21.741822Z", "shell.execute_reply": "2026-10-22T15:58:21.741337Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load multipliers: [ 1.3494814e+00 -7.2057594e+16]\n", "linear buckling estimate of the limit load factor: 1.3494814008979579\n", "limit load factor: 0.6666666666666666\n" ] } ], "source": [ "K0 = calc_kC()\n", "KG = calc_kG(c_lin)\n", "eigvals, eigvecs = lb(K0, KG, silent=True, sparse_solver=False)\n", "print('load multipliers:', eigvals)\n", "print('linear buckling estimate of the limit load factor:', eigvals[0])\n", "print('limit load factor:', 1/frac)" ] }, { "cell_type": "markdown", "id": "e39887f0", "metadata": {}, "source": [ "The linear buckling analysis assumes a linear pre-buckling path, with $\\boldsymbol{K}_G$ proportional to the load. The path of the truss is strongly non-linear before its limit point, and the estimate is here about twice the limit load factor. The non-linear analyses below trace the actual path. The row of the loaded point is null in $\\boldsymbol{K}_G$, and the second load multiplier, of the order of $10^{16}$, is infinite up to the round-off." ] }, { "cell_type": "markdown", "id": "6f5a0b4b", "metadata": {}, "source": [ "## Non-linear static analyses\n", "\n", "The Newton-Raphson method controls the load factor, and the arc-length methods of Riks and Crisfield control the arc length, such that the load factor may decrease after the limit point:" ] }, { "cell_type": "code", "execution_count": 4, "id": "2e190ed1", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.743550Z", "iopub.status.busy": "2026-10-22T15:58:21.743442Z", "iopub.status.idle": "2026-10-22T15:58:21.817326Z", "shell.execute_reply": "2026-10-22T15:58:21.816710Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NR 12 increments, last load factor 1.000\n", "arc_length_riks 18 increments, last load factor 1.000\n", "arc_length_crisfield 14 increments, last load factor 1.000\n" ] } ], "source": [ "results = {}\n", "for method in ['NR', 'arc_length_riks', 'arc_length_crisfield']:\n", " an = analysis(NL_method=method, initialInc=0.05)\n", " an.static(NLgeom=True, silent=True)\n", " results[method] = (np.array(an.increments), np.array(an.cs))\n", " print('%-21s %3d increments, last load factor %.3f'\n", " % (method, len(an.increments), an.increments[-1]))" ] }, { "cell_type": "markdown", "id": "6c8875fe", "metadata": {}, "source": [ "All the analyses finish at the load factor 1.0. The load-displacement curves of `an.increments` and `an.cs`, with the load $\\lambda \\, \\mathrm{frac} \\, F_{lim}$ normalized by the limit load, against the exact equilibrium path $F = w^3 - 3 w^2 + 2 w$ of the apex:" ] }, { "cell_type": "code", "execution_count": 5, "id": "757a845c", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.819261Z", "iopub.status.busy": "2026-10-22T15:58:21.819105Z", "iopub.status.idle": "2026-10-22T15:58:21.948491Z", "shell.execute_reply": "2026-10-22T15:58:21.947789Z" } }, "outputs": [ { "data": { "image/png": "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O8jRC1dItWTcfi3BSLXa8XU3sO619s62I77dxa7TCVnG4W3SZ0pINh6NZ8OR+CzbZuzgq6DRaEhXMkpptEw1E+G45+pzguMXUvL6khRZed5cb9SoUUycOPGW42+88UaBJSTr16/nk08+YefOncTExLBs2TJ69ux52/usW7eO8PBwDhw4QEhICK+//jpDhgwpkPhEwTObzZKQCFGMXEsY0ix2HAqU9rz+/3vz0XiS0q3O3oMbexPKeBl5vs31HvkR3+4i+nIaaTckF6lX21cL8GJ1+H3Oti9+t5ujcVeyjCfE1y1TQrL91GX2RidkE3vm66U9jZTxMuJu1OFh0ONm1OFh0OFh1OHllvnrtm/TUO6rEYC7UYf71TbuRn3Gn4aM5MnmsOHwPAFAqZSymMl4bTQaqBLgefsX1gXlKSGJiorihx9+uOX4c889x5QpU+42pmylpKRQv359nn32WR599NE7tj9x4gRdu3Zl0KBBLFy4kE2bNjFs2DACAgJydH9RtFgsFj777DMZshGikNkdyvWeAYsdvU5D+VIeztt/2XuOFLPthqEKmzOBqOjvydB2VZ1tH525mfgr5ozk4mpPg92R8c3euGIplg5t6Ww78vs9xCVnvaquVlnvTAnJwZikbHsN0q4Og1xTsbQHiqLgYdRnJA9XL24GHQFemT9bhrerSlK67YakQedMGjxuWu0ye0DT272MmeSk9PveuL2YtTb87HZOpTYErvWewMsdauT4XK4iTwlJQEAAe/bsoXr16pmO79mzh8DAwHwJLCtdunShS5cuOW4fERFBhQoVnEnSPffcw44dO/j0008lISkqEqIh9eKtxz38wS800yGTycTYsWOZsWcGWo2WIfWv93RF7I3AkXaZYRWyeH9k8VhCFCcOh0K67dZeBG83PVUDvACw2h18u+20s9cg7YakIdVip16oL8PaVXM+XquP/3a2tdgcmc7XrmYA85+913n9jR/33fKlf03TSqUyJSSnLqYSfyXrJOPm89Qr70dCquWWXgR3g44QP7dMbd/tXhurXbklacj4e+avujnP5Dxx6BhWNsdt89v6038D0CotncOGupg0WqoEePJyhxp0rqNeXAUlTwnJoEGDGDx4MMePH6dly5ZoNBo2btzIxx9/zCuvvJLfMebZli1b6NixY6ZjnTp1Ys6cOVitVqn4qbaEaPiiMdiy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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "w = np.linspace(0, 2.3, 200)\n", "fig, ax = plt.subplots(figsize=(6, 4))\n", "ax.plot(w, (w**3 - 3*w**2 + 2*w)/F_lim, 'k-', lw=0.8, label='exact path')\n", "styles = {'NR': 'o--', 'arc_length_riks': 's-', 'arc_length_crisfield': 'x-'}\n", "for method, (inc, cs) in results.items():\n", " ax.plot(cs[:, 0], inc*frac, styles[method], ms=4, label=method)\n", "ax.axvline(w_lim, color='gray', ls=':', lw=0.8)\n", "ax.set_xlabel('apex deflection $w$')\n", "ax.set_ylabel('load / limit load')\n", "ax.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a0996a1d", "metadata": {}, "source": [ "The Newton-Raphson increments follow the path below the limit load and then jump to the inverted configuration, where the load is again larger than the limit load: the analysis converges, but the unstable part of the path is skipped. The arc-length methods pass the limit point, the load factor decreasing and becoming negative during the snap-through, and reach the same final state:" ] }, { "cell_type": "code", "execution_count": 6, "id": "68b00039", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.949881Z", "iopub.status.busy": "2026-10-22T15:58:21.949763Z", "iopub.status.idle": "2026-10-22T15:58:21.952643Z", "shell.execute_reply": "2026-10-22T15:58:21.952164Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NR largest jump of w: 1.889, final c: [2.21463146 2.27236649]\n", "arc_length_riks largest jump of w: 0.311, final c: [2.21463146 2.27236649]\n", "arc_length_crisfield largest jump of w: 0.313, final c: [2.21463146 2.27236649]\n" ] } ], "source": [ "for method, (inc, cs) in results.items():\n", " print('%-21s largest jump of w: %.3f, final c: %s'\n", " % (method, np.diff(cs[:, 0]).max(), cs[-1]))" ] }, { "cell_type": "markdown", "id": "ad11e8cb", "metadata": {}, "source": [ "## Frequency analysis along the path\n", "\n", "With unit masses at both degrees of freedom, $\\boldsymbol{M} = \\boldsymbol{I}$, the frequency analysis of the tangent stiffness matrix $\\boldsymbol{K}_T(\\boldsymbol{c}) = \\boldsymbol{K}_C + \\boldsymbol{K}_G(\\boldsymbol{c})$ at each converged state of the Riks analysis gives $\\omega^2 = -\\lambda^2$. The lowest $\\omega^2$ vanishes where $\\boldsymbol{K}_T$ is singular, at the limit points $w = 1 \\mp 1/\\sqrt{3}$, and is negative between them, where the equilibrium is unstable:" ] }, { "cell_type": "code", "execution_count": 7, "id": "45769028", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T15:58:21.954264Z", "iopub.status.busy": "2026-10-22T15:58:21.954156Z", "iopub.status.idle": "2026-10-22T15:58:22.056161Z", "shell.execute_reply": "2026-10-22T15:58:22.055622Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "inc, cs = results['arc_length_riks']\n", "M = csr_matrix(np.eye(2))\n", "omega2 = []\n", "for c in cs:\n", " KT = calc_kC(c, NLgeom=True) + calc_kG(c, NLgeom=True)\n", " lambda2, _ = freq(KT, M, silent=True, sparse_solver=False,\n", " symmetric=True, sort=False)\n", " omega2.append(-lambda2.max())\n", "\n", "fig, ax = plt.subplots(figsize=(6, 3))\n", "ax.plot(cs[:, 0], omega2, 's-', ms=4)\n", "ax.axhline(0, color='k', lw=0.8)\n", "for wl in (1 - 1/np.sqrt(3), 1 + 1/np.sqrt(3)):\n", " ax.axvline(wl, color='gray', ls=':', lw=0.8)\n", "ax.set_xlabel('apex deflection $w$')\n", "ax.set_ylabel(r'lowest $\\omega^2$')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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 }