{ "cells": [ { "cell_type": "markdown", "id": "8e0899db", "metadata": {}, "source": [ "# Getting started: plate properties for CLPT, FSDT and TSDT\n", "\n", "This tutorial creates laminates with `laminated_plate` and `isotropic_plate`\n", "and inspects the matrices used by the classical laminated plate theory\n", "(CLPT), the first-order shear deformation theory (FSDT) and the third-order\n", "shear deformation theory (TSDT), the equivalent properties, the effect of an\n", "offset of the reference surface, and the moments of the density used in mass\n", "matrices. SI units are used throughout." ] }, { "cell_type": "code", "execution_count": 1, "id": "ab5bbc2d", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:00.880534Z", "iopub.status.busy": "2026-10-22T13:32:00.880275Z", "iopub.status.idle": "2026-10-22T13:32:01.584011Z", "shell.execute_reply": "2026-10-22T13:32:01.582867Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from composites import laminated_plate, isotropic_plate\n", "\n", "np.set_printoptions(precision=4, suppress=False, linewidth=100)\n", "\n", "# E11, E22, nu12, G12, G13, G23 of a CFRP ply\n", "laminaprop = (142e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 3.2e9)\n", "rho = 1600. # kg/m^3\n", "plyt = 0.125e-3 # m" ] }, { "cell_type": "markdown", "id": "b89a3a8f", "metadata": {}, "source": [ "## A quasi-isotropic laminate\n", "\n", "The stacking sequence is given from the bottom to the top ply. `ABD` is the\n", "6x6 matrix of the CLPT and of the FSDT, relating $\\{N_{xx}, N_{yy}, N_{xy},\n", "M_{xx}, M_{yy}, M_{xy}\\}$ to the membrane strains and curvatures of the\n", "reference surface." ] }, { "cell_type": "code", "execution_count": 2, "id": "0567da1b", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.587565Z", "iopub.status.busy": "2026-10-22T13:32:01.587186Z", "iopub.status.idle": "2026-10-22T13:32:01.598169Z", "shell.execute_reply": "2026-10-22T13:32:01.597078Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "h = 0.001\n", "A =\n", " [[5.9947e+07 1.8214e+07 0.0000e+00]\n", " [1.8214e+07 5.9947e+07 1.8626e-09]\n", " [0.0000e+00 1.8626e-09 2.0866e+07]]\n", "B =\n", " [[ 0.0000e+00 8.5265e-14 0.0000e+00]\n", " [ 8.5265e-14 0.0000e+00 0.0000e+00]\n", " [ 0.0000e+00 0.0000e+00 -2.8422e-13]]\n", "D =\n", " [[8.3812 1.2715 0.5232]\n", " [1.2715 2.1027 0.5232]\n", " [0.5232 0.5232 1.4925]]\n" ] } ], "source": [ "qi = laminated_plate([0, 45, -45, 90, 90, -45, 45, 0], plyt=plyt,\n", " laminaprop=laminaprop, rho=rho)\n", "print('h =', qi.h)\n", "print('A =\\n', qi.A)\n", "print('B =\\n', qi.B)\n", "print('D =\\n', qi.D)" ] }, { "cell_type": "markdown", "id": "5e9fda6e", "metadata": {}, "source": [ "`B` is zero for this symmetric laminate, up to round-off. `A` is isotropic, $A_{11} =\n", "A_{22}$, $A_{66} = (A_{11} - A_{12})/2$ and $A_{16} = A_{26} = 0$, whereas\n", "`D` is not: the $\\pm 45$ plies give $D_{16}$ and $D_{26}$.\n", "\n", "## FSDT: transverse shear stiffness\n", "\n", "`Ats` contains the shear correction, by default with the equilibrium\n", "approach `'rohwer'`, and it is used as it is in an FSDT model. `Abar_ts` is\n", "the uncorrected constant-strain stiffness. `scf_k13` and `scf_k23` are the\n", "ratios between them, informative only." ] }, { "cell_type": "code", "execution_count": 3, "id": "fbf7b711", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.601832Z", "iopub.status.busy": "2026-10-22T13:32:01.601528Z", "iopub.status.idle": "2026-10-22T13:32:01.607108Z", "shell.execute_reply": "2026-10-22T13:32:01.605824Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ats =\n", " [[2948931.4831 43511.7955]\n", " [ 43511.7955 3247625.5097]]\n", "Abar_ts =\n", " [[4.1500e+06 2.9104e-11]\n", " [2.9104e-11 4.1500e+06]]\n", "scf_k13 = 0.7826, scf_k23 = 0.7106\n" ] } ], "source": [ "print('Ats =\\n', qi.Ats)\n", "print('Abar_ts =\\n', qi.Abar_ts)\n", "print('scf_k13 = %.4f, scf_k23 = %.4f' % (qi.scf_k13, qi.scf_k23))" ] }, { "cell_type": "markdown", "id": "8cb951f0", "metadata": {}, "source": [ "## TSDT: higher-order matrices\n", "\n", "The TSDT uses as well `E`, `F`, `H`, the integrals of the ply stiffnesses\n", "times $z^3$, $z^4$, $z^6$, and the uncorrected transverse shear matrices\n", "`Abar_ts`, `Dts`, `Fts`, integrals times $1$, $z^2$, $z^4$. As `B`, the\n", "odd integral `E` is zero for a symmetric laminate, up to round-off." ] }, { "cell_type": "code", "execution_count": 4, "id": "be41c93e", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.610132Z", "iopub.status.busy": "2026-10-22T13:32:01.609876Z", "iopub.status.idle": "2026-10-22T13:32:01.616151Z", "shell.execute_reply": "2026-10-22T13:32:01.615028Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E =\n", " [[0.0000e+00 1.0164e-20 0.0000e+00]\n", " [1.0164e-20 1.3553e-20 0.0000e+00]\n", " [0.0000e+00 0.0000e+00 6.7763e-21]]\n", "F =\n", " [[1.4909e-06 1.2375e-07 7.3577e-08]\n", " [1.2375e-07 2.1560e-07 7.3577e-08]\n", " [7.3577e-08 7.3577e-08 1.5690e-07]]\n", "H =\n", " [[2.8914e-13 1.4855e-14 8.8139e-15]\n", " [1.4855e-14 3.0086e-14 8.8139e-15]\n", " [8.8139e-15 8.8139e-15 2.0775e-14]]\n", "Dts =\n", " [[0.3013 0.0148]\n", " [0.0148 0.3904]]\n", "Fts =\n", " [[4.2830e-08 2.0874e-09]\n", " [2.0874e-09 6.0920e-08]]\n" ] } ], "source": [ "for name in ('E', 'F', 'H', 'Dts', 'Fts'):\n", " print(name, '=\\n', getattr(qi, name))" ] }, { "cell_type": "markdown", "id": "39ff2c37", "metadata": {}, "source": [ "## Equivalent properties and the isotropic plate\n", "\n", "The equivalent membrane moduli follow from the inverse of `ABD`. An\n", "isotropic plate with these moduli and the same thickness has the same `A`,\n", "but not the same `D`, because the bending stiffness depends on the position\n", "of the plies through the thickness." ] }, { "cell_type": "code", "execution_count": 5, "id": "f789f77d", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.619660Z", "iopub.status.busy": "2026-10-22T13:32:01.619392Z", "iopub.status.idle": "2026-10-22T13:32:01.626152Z", "shell.execute_reply": "2026-10-22T13:32:01.624875Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "e1 = 5.441e+10, e2 = 5.441e+10, g12 = 2.087e+10, nu12 = 0.3038\n", "A, max relative difference: 2.485714270108366e-16\n", "D11 laminate / D11 isotropic: 1.6777\n", "D22 laminate / D22 isotropic: 0.4209\n" ] } ], "source": [ "print('e1 = %.4g, e2 = %.4g, g12 = %.4g, nu12 = %.4f'\n", " % (qi.e1, qi.e2, qi.g12, qi.nu12))\n", "iso = isotropic_plate(thickness=qi.h, E=qi.e1, nu=qi.nu12, rho=rho)\n", "print('A, max relative difference:',\n", " np.abs(iso.A - qi.A).max()/np.abs(qi.A).max())\n", "print('D11 laminate / D11 isotropic: %.4f' % (qi.D11/iso.D11))\n", "print('D22 laminate / D22 isotropic: %.4f' % (qi.D22/iso.D22))" ] }, { "cell_type": "markdown", "id": "05e9ca13", "metadata": {}, "source": [ "## An unsymmetric laminate\n", "\n", "A cross-ply with two plies couples membrane and bending, `B` $\\neq 0$, and\n", "the odd integral `E` is no longer zero." ] }, { "cell_type": "code", "execution_count": 6, "id": "cf41c362", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.629456Z", "iopub.status.busy": "2026-10-22T13:32:01.628958Z", "iopub.status.idle": "2026-10-22T13:32:01.636214Z", "shell.execute_reply": "2026-10-22T13:32:01.634973Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "B =\n", " [[-1.0464e+03 0.0000e+00 1.8684e-15]\n", " [ 0.0000e+00 1.0464e+03 6.2207e-14]\n", " [ 1.8684e-15 6.2207e-14 0.0000e+00]]\n", "E =\n", " [[-8.1753e-06 0.0000e+00 1.4597e-23]\n", " [ 0.0000e+00 8.1753e-06 4.8599e-22]\n", " [ 1.4597e-23 4.8599e-22 0.0000e+00]]\n" ] } ], "source": [ "cp = laminated_plate([0, 90], plyt=plyt, laminaprop=laminaprop, rho=rho)\n", "print('B =\\n', cp.B)\n", "print('E =\\n', cp.E)" ] }, { "cell_type": "markdown", "id": "855ee9b5", "metadata": {}, "source": [ "## Effect of the offset\n", "\n", "`offset` is the position of the mid-surface relative to the reference\n", "surface. For an isotropic plate the closed form is $B = d h C$ and $D = h\n", "(d^2 + h^2/12) C$, with $d$ the offset: $B$ grows linearly and $D$\n", "quadratically with the offset, while $A$ and `Ats` do not change." ] }, { "cell_type": "code", "execution_count": 7, "id": "bad78584", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.640411Z", "iopub.status.busy": "2026-10-22T13:32:01.640011Z", "iopub.status.idle": "2026-10-22T13:32:01.911369Z", "shell.execute_reply": "2026-10-22T13:32:01.910160Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A55 constant: True\n" ] }, { "data": { "image/png": "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lW8rKioSvLy8hP/+97/l2+RyubB69WqNYx/fFhwcLDz//PNa32fVqlVC27ZtBbVaXb6tsLBQaNCggbB7925BEARh5syZwtixY2sUd5s2bYQdO3ZUun/AgAFC3759NbZ1795deP/992v0+kREZHpYpxGJixOvEBmJGzduoLi4GH369CnfZmVlhR49euDSpUu1eq3Q0FCMHz8eMTExCAoKwrhx48rvXJ4+fRrXr1+Hvb29xjEFBQW4ceNGrd7n0qVLuH37NoYMGVJluU6dOmk89/T0RGpqaq3ei4iITAfrNCJxMckjMhKCIAAAJBJJhe2Pb6vOiBEjkJCQgJ07d+Lvv//G4MGDMWfOHHzzzTdQq9Xo2rUrfvvttwrHubq61up9duzYgaFDh6JBgwZVlrOystJ4LpFIoFara/VeRERkOlinEYmLY/KIjESrVq1gbW2NI0eOlG8rLi7GqVOn0L59+1q/nqurK2bNmoV169Zh4cKFWLFiBQAgICAA165dg5ubG1q1aqXxkMvlAABra2uoVKpq32P79u0YM2ZMrWMjIiLzxjqNSFxM8oiMhK2tLUJDQ/Huu+8iMjIScXFxmD17NvLz8/Hiiy/W6rU++eQTbN++HdevX8fFixfx559/lleqU6dOhYuLC8aOHYvDhw8jPj4eBw8exBtvvIHbt28DAJo3b47z58/jypUrSEtLQ3FxcYX3SE1NxcmTJzF69Oi6f3giIjIrrNOIxMUkj8iIfPXVVxg/fjymT5+OgIAAXL9+Hbt370ajRo1q9TrW1taYN28eOnXqhP79+8PCwgIbN24EADRs2BCHDh1C06ZN8cwzz6B9+/Z44YUXcP/+fTg4OAAAZs+ejbZt26Jbt25wdXXF0aNHK7xHREQEevbsCTc3t7p/cCIiMjus04jEIxHKOk0TEdXCmDFj0LdvX7z33ntih0JERFQnrNPI3LAlj4ieSN++fTF58mSxwyAiIqoz1mlkbtiSR0REREREZEbYkkdERERERGRGmOQRERERERGZESZ5REREREREZoRJHhERERERkRlhkkdERERERGRGmOQRERERERGZESZ5REREREREZoRJHhERERERkRlhkkdERERERGRG/h8sAHAVhvuaTQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h = 2e-3\n", "offsets = np.linspace(-h/2, h/2, 21)\n", "B11, D11, A55 = [], [], []\n", "for d in offsets:\n", " lam = isotropic_plate(thickness=h, E=70e9, nu=0.3, offset=d, rho=2700.)\n", " B11.append(lam.B11)\n", " D11.append(lam.D11)\n", " A55.append(lam.A55)\n", "lam0 = isotropic_plate(thickness=h, E=70e9, nu=0.3, rho=2700.)\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(9, 3.5))\n", "ax[0].plot(offsets/h, np.array(B11)/(lam0.A11*h), 'o-')\n", "ax[0].set_xlabel('offset / h')\n", "ax[0].set_ylabel('B11 / (A11 h)')\n", "ax[1].plot(offsets/h, np.array(D11)/lam0.D11, 'o-')\n", "ax[1].set_xlabel('offset / h')\n", "ax[1].set_ylabel('D11 / D11(offset = 0)')\n", "fig.tight_layout()\n", "print('A55 constant:', np.allclose(A55, lam0.A55, rtol=1e-12))" ] }, { "cell_type": "markdown", "id": "83dcaf84", "metadata": {}, "source": [ "## Moments of the density\n", "\n", "The mass matrices use the moments $I_n = \\int \\rho z^n dz$: `intrho`,\n", "`intrhoz`, `intrhoz2` for the CLPT and the FSDT, and also `intrhoz3`,\n", "`intrhoz4`, `intrhoz6` for the TSDT. Without offset the odd moments of a\n", "homogeneous plate vanish; with an offset $d$, $I_1 = \\rho h d$ and $I_2 =\n", "\\rho h (d^2 + h^2/12)$." ] }, { "cell_type": "code", "execution_count": 8, "id": "9b225988", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.914014Z", "iopub.status.busy": "2026-10-22T13:32:01.913782Z", "iopub.status.idle": "2026-10-22T13:32:01.920684Z", "shell.execute_reply": "2026-10-22T13:32:01.919471Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "offset = 0\n", " intrho = 5.400000e+00\n", " intrhoz = 0.000000e+00\n", " intrhoz2 = 1.800000e-06\n", " intrhoz3 = 0.000000e+00\n", " intrhoz4 = 1.080000e-12\n", " intrhoz6 = 7.714286e-19\n", "offset = 0.0005\n", " intrho = 5.400000e+00\n", " intrhoz = 2.700000e-03\n", " intrhoz2 = 3.150000e-06\n", " intrhoz3 = 3.375000e-09\n", " intrhoz4 = 4.117500e-12\n", " intrhoz6 = 6.593304e-18\n", "rho h d = 2.700000e-03\n", "rho h (d^2 + h^2/12) = 3.150000e-06\n" ] } ], "source": [ "names = ('intrho', 'intrhoz', 'intrhoz2', 'intrhoz3', 'intrhoz4', 'intrhoz6')\n", "d = 0.5e-3\n", "for lam, label in ((lam0, 'offset = 0'),\n", " (isotropic_plate(thickness=h, E=70e9, nu=0.3, offset=d,\n", " rho=2700.), 'offset = %g' % d)):\n", " print(label)\n", " for name in names:\n", " print(' %-9s = % .6e' % (name, getattr(lam, name)))\n", "print('rho h d = % .6e' % (2700.*h*d))\n", "print('rho h (d^2 + h^2/12) = % .6e' % (2700.*h*(d**2 + h**2/12)))" ] }, { "cell_type": "markdown", "id": "be01327f", "metadata": {}, "source": [ "With different densities per ply, e.g. a sandwich with a light core, the\n", "argument `rhos` of `laminated_plate` gives one density per ply." ] }, { "cell_type": "code", "execution_count": 9, "id": "babd38da", "metadata": { "execution": { "iopub.execute_input": "2026-10-22T13:32:01.923793Z", "iopub.status.busy": "2026-10-22T13:32:01.923483Z", "iopub.status.idle": "2026-10-22T13:32:01.930051Z", "shell.execute_reply": "2026-10-22T13:32:01.928910Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mass per unit area: 1.3000 kg/m^2\n", "intrho = 1.300000e+00\n", "intrhoz = 0.000000e+00\n", "intrhoz2 = 2.518333e-05\n", "intrhoz3 = 6.617445e-24\n", "intrhoz4 = 6.150631e-10\n", "intrhoz6 = 1.565537e-14\n" ] } ], "source": [ "face = laminaprop\n", "core = (0.1e9, 0.1e9, 0.3, 0.04e9, 0.04e9, 0.04e9)\n", "sw = laminated_plate([0, 90, 0, 0, 90, 0], plyts=[plyt, plyt, 5e-3, 5e-3,\n", " plyt, plyt],\n", " laminaprops=[face, face, core, core, face, face],\n", " rhos=[rho, rho, 50., 50., rho, rho])\n", "print('mass per unit area: %.4f kg/m^2' % sw.intrho)\n", "for name in names:\n", " print('%-9s = % .6e' % (name, getattr(sw, name)))" ] } ], "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 }