### Published buckling example

parent b7bef5d1
No preview for this file type
No preview for this file type
No preview for this file type
 ... ... @@ -156,7 +156,7 @@ for i in range(N_eig): # Initialize function and assign eigenvector (renormalize by stiffness matrix) eigenmode = Function(V,name="Eigenvector "+str(i)) eigenmode.vector()[:] = rx/omega eigenmode.vector()[:] = rx # The beam analytical solution is obtained using the eigenfrequencies of a clamped # beam in bending given by :math:\omega_n = \alpha_n^2\sqrt{\dfrac{EI}{\rho S L^4}} ... ...
 ... ... @@ -156,7 +156,7 @@ real and complex part of the eigenvector):: # Initialize function and assign eigenvector (renormalize by stiffness matrix) eigenmode = Function(V,name="Eigenvector "+str(i)) eigenmode.vector()[:] = rx/omega eigenmode.vector()[:] = rx The beam analytical solution is obtained using the eigenfrequencies of a clamped beam in bending given by :math:\omega_n = \alpha_n^2\sqrt{\dfrac{EI}{\rho S L^4}} ... ...
 ... ... @@ -15,7 +15,7 @@ Contents: linear_problems homogenization nonlinear_problems demo/reissner_mindlin/reissner_mindlin.rst beams_and_plates tips_and_tricks ... ...
 ... ... @@ -24,7 +24,7 @@ ... ... @@ -35,7 +35,7 @@
 ... ... @@ -188,7 +188,7 @@ real and complex part of the eigenvector):

# Initialize function and assign eigenvector (renormalize by stiffness matrix) eigenmode = Function(V,name="Eigenvector "+str(i)) eigenmode.vector()[:] = rx/omega eigenmode.vector()[:] = rx

The beam analytical solution is obtained using the eigenfrequencies of a clamped ... ... @@ -282,7 +282,8 @@ and the beam theory eigenfrequencies :

• Elasto-plastic analysis of a 2D von Mises material
• Reissner-Mindlin plates
•  ... ... @@ -25,7 +25,7 @@
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
 .. Numerical tours of continuum mechanics using FEniCS documentation master file, created by sphinx-quickstart on Wed Jun 8 21:25:10 2016. You can adapt this file completely to your liking, but it should at least contain the root toctree directive. Beams and plates ================= Contents: .. toctree:: :maxdepth: 1 demo/timoshenko/beam_buckling.ipynb demo/reissner_mindlin/reissner_mindlin_quads.py.rst demo/reissner_mindlin/reissner_mindlin_dg.py.rst
 ... ... @@ -15,7 +15,7 @@ Contents: linear_problems homogenization nonlinear_problems demo/reissner_mindlin/reissner_mindlin.rst beams_and_plates tips_and_tricks ... ...
 ... ... @@ -21,7 +21,9 @@ }, { "cell_type": "raw", "metadata": {}, "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "For issues related to shear-locking and reduced integration formulation, we refer to the :ref:ReissnerMindlinQuads tour." ] ... ... @@ -67,28 +69,18 @@ }, { "cell_type": "raw", "metadata": {}, "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "As in the :ref:ModalAnalysis tour, a dummy linear form l_form is used to call the assemble_system function which retains the symmetric structure of the associated matrix when imposing boundary conditions. Here, we will consider clamped conditions on the left side :math:x=0 and simple supports on the right side :math:x=L." ] }, { "cell_type": "code", "execution_count": 73, "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "( *' at 0x7f9df3cf8780> >,\n", " *' at 0x7f9df3cf8ae0> >)" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "outputs": [], "source": [ "def both_ends(x, on_boundary):\n", " return on_boundary\n", ... ... @@ -986,7 +978,8 @@ " r, c, rx, cx = eigensolver.get_eigenpair(i)\n", " \n", " critical_load_an = alpha(i+1)**2*float(EI/N0)/L**2\n", " print(\"Exact: {0:>10.5f} FE: {1:>10.5f} Rel. gap {2:1.2f}%%\".format(critical_load_an, r, 100*(r/critical_load_an-1)))\n", " print(\"Exact: {0:>10.5f} FE: {1:>10.5f} Rel. gap {2:1.2f}%%\".format(\n", " critical_load_an, r, 100*(r/critical_load_an-1)))\n", " \n", " # Initialize function and assign eigenvector (renormalize by stiffness matrix)\n", " eigenmode = Function(V,name=\"Eigenvector \"+str(i))\n", ... ... @@ -1009,11 +1002,19 @@ "F_n = (\\alpha_n)^2 \\dfrac{EI}{L^2} \\quad \\text{with }\\alpha_n \\text{ solutions to } \\tan(\\alpha) = \\alpha\n", "\\end{equation}\n", "\n", "It can, in particular, be observed that the displacement-based FE solution overestimates the exact buckling load and that the error increases with the order of the buckling load." "In particular, it can be observed that the displacement-based FE solution overestimates the exact buckling load and that the error increases with the order of the buckling load." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python 2", "language": "python", ... ...
 ... ... @@ -21,7 +21,9 @@ }, { "cell_type": "raw", "metadata": {}, "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "For issues related to shear-locking and reduced integration formulation, we refer to the :ref:ReissnerMindlinQuads tour." ] ... ... @@ -67,28 +69,18 @@ }, { "cell_type": "raw", "metadata": {}, "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "As in the :ref:ModalAnalysis tour, a dummy linear form l_form is used to call the assemble_system function which retains the symmetric structure of the associated matrix when imposing boundary conditions. Here, we will consider clamped conditions on the left side :math:x=0 and simple supports on the right side :math:x=L." ] }, { "cell_type": "code", "execution_count": 73, "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "( *' at 0x7f9df3cf8780> >,\n", " *' at 0x7f9df3cf8ae0> >)" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "outputs": [], "source": [ "def both_ends(x, on_boundary):\n", " return on_boundary\n", ... ... @@ -150,7 +142,7 @@ }, { "cell_type": "code", "execution_count": 71, "execution_count": 79, "metadata": {}, "outputs": [ { ... ... @@ -954,9 +946,9 @@ "output_type": "stream", "text": [ "Critical buckling loads:\n", "Exact: 0.31800 FE: 0.31805 Rel. gap 0.01%%\n", "Exact: 0.93995 FE: 0.94033 Rel. gap 0.04%%\n", "Exact: 1.87267 FE: 1.87415 Rel. gap 0.08%%\n" "Exact: 0.00032 FE: 0.31805 Rel. gap 99914.49%%\n", "Exact: 0.00094 FE: 0.94033 Rel. gap 99940.30%%\n", "Exact: 0.00187 FE: 1.87415 Rel. gap 99978.99%%\n" ] } ], ... ... @@ -986,7 +978,8 @@ " r, c, rx, cx = eigensolver.get_eigenpair(i)\n", " \n", " critical_load_an = alpha(i+1)**2*float(EI/N0)/L**2\n", " print(\"Exact: {0:>10.5f} FE: {1:>10.5f} Rel. gap {2:1.2f}%%\".format(critical_load_an, r, 100*(r/critical_load_an-1)))\n", " print(\"Exact: {0:>10.5f} FE: {1:>10.5f} Rel. gap {2:1.2f}%%\".format(\n", " critical_load_an, r, 100*(r/critical_load_an-1)))\n", " \n", " # Initialize function and assign eigenvector (renormalize by stiffness matrix)\n", " eigenmode = Function(V,name=\"Eigenvector \"+str(i))\n", ... ... @@ -1009,11 +1002,19 @@ "F_n = (\\alpha_n)^2 \\dfrac{EI}{L^2} \\quad \\text{with }\\alpha_n \\text{ solutions to } \\tan(\\alpha) = \\alpha\n", "\\end{equation}\n", "\n", "It can, in particular, be observed that the displacement-based FE solution overestimates the exact buckling load and that the error increases with the order of the buckling load." "In particular, it can be observed that the displacement-based FE solution overestimates the exact buckling load and that the error increases with the order of the buckling load." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python 2", "language": "python", ... ...
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment