# # .. _OrthotropicElasticity: # @@ -11,10 +14,10 @@ # Introduction # ------------ # -# In this numerical tour, we will show how to tackle the case of orthotropic elasticity (in a 2D setting). The corresponding file can be obtained from +# In this numerical tour, we will show how to tackle the case of orthotropic elasticity (in a 2D setting). The corresponding file can be obtained from # :download:orthotropic_elasticity.py. # -# We consider here the case of a square plate perforated by a circular hole of +# We consider here the case of a square plate perforated by a circular hole of # radius :math:R, the plate dimension is :math:2L\times 2L with :math:L \gg R # Only the top-right quarter of the plate will be considered. Loading will consist # of a uniform traction on the top/bottom boundaries, symmetry conditions will also @@ -27,7 +30,7 @@ from mshr import * L, R = 1., 0.1 N = 50 # mesh density - + domain = Rectangle(Point(0.,0.), Point(L, L)) - Circle(Point(0., 0.), R) mesh = generate_mesh(domain, N) @@ -35,7 +38,7 @@ mesh = generate_mesh(domain, N) # Constitutive relation # --------------------- # -# Constitutive relations will be defined using an engineering (or Voigt) notation (i.e. +# Constitutive relations will be defined using an engineering (or Voigt) notation (i.e. # second order tensors will be written as a vector of their components) contrary # to the :ref:LinearElasticity2D example which used an intrinsic notation. In # the material frame, which is assumed to coincide here with the global :math:(Oxy) @@ -46,13 +49,13 @@ mesh = generate_mesh(domain, N) # .. math:: # \begin{Bmatrix} \varepsilon_{xx} \\ \varepsilon_{yy} \\ 2\varepsilon_{xy} # \end{Bmatrix} = \begin{bmatrix} 1/E_x & -\nu_{xy}/E_x & 0\\ -# -\nu_{yx}/E_y & 1/E_y & 0 \\ 0 & 0 & 1/G_{xy} \end{bmatrix}\begin{Bmatrix} +# -\nu_{yx}/E_y & 1/E_y & 0 \\ 0 & 0 & 1/G_{xy} \end{bmatrix}\begin{Bmatrix} # \sigma_{xx} \\ \sigma_{yy} \\ \sigma_{xy} # \end{Bmatrix} # # with :math:E_x, E_y the two Young's moduli in the orthotropy directions, :math:\nu_{xy} # the in-plane Poisson ration (with the following relation ensuring the constitutive -# relation symmetry :math:\nu_{yx}=\nu_{xy}E_y/E_x) and :math:G_{xy} being the +# relation symmetry :math:\nu_{yx}=\nu_{xy}E_y/E_x) and :math:G_{xy} being the # shear modulus. This relation needs to be inverted to obtain the stress components as a function # of the strain components :math:\boldsymbol{\sigma}=\mathbf{C}\boldsymbol{\varepsilon} with # :math:\mathbf{C}=\mathbf{S}^{-1}:: @@ -89,7 +92,7 @@ def sigma(v): # Problem position and resolution # -------------------------------- # -# Different parts of the quarter plate boundaries are now defined as well as the +# Different parts of the quarter plate boundaries are now defined as well as the # exterior integration measure ds:: class Top(SubDomain): @@ -127,7 +130,7 @@ a = inner(sigma(du), eps(u_))*dx T = Constant((0, 1e-3)) l = dot(T, u_)*ds(1) -# Symmetric boundary conditions are applied on the Top and Left boundaries +# Symmetric boundary conditions are applied on the Top and Left boundaries # and the problem is solved:: # symmetry boundary conditions diff --git a/doc/_build/html/_downloads/reissner_mindlin_dg.py b/doc/_build/html/_downloads/reissner_mindlin_dg.py index 7d8822be6e39c6a52d01e26dabf870d231f3df72..c0f3af5b03abadf24c0e07ee75096e9f237203cf 100644 --- a/doc/_build/html/_downloads/reissner_mindlin_dg.py +++ b/doc/_build/html/_downloads/reissner_mindlin_dg.py @@ -1,4 +1,7 @@ -# +raw:: html + +

+ # .. _ReissnerMindlinQuads: # # ========================================== diff --git a/doc/_build/html/_sources/demo/2D_plasticity/vonMises_plasticity.py.rst.txt b/doc/_build/html/_sources/demo/2D_plasticity/vonMises_plasticity.py.rst.txt index 95444e1529acb68a3111a312abc631bc238d98ab..215cf0882615ef88fc6a829fd8e42037a6bd4ddc 100644 --- a/doc/_build/html/_sources/demo/2D_plasticity/vonMises_plasticity.py.rst.txt +++ b/doc/_build/html/_sources/demo/2D_plasticity/vonMises_plasticity.py.rst.txt @@ -1,6 +1,10 @@ .. _vonMisesPlasticity: +.. raw:: html + +

+ ================================================== Elasto-plastic analysis of a 2D von Mises material ================================================== diff --git a/doc/_build/html/_sources/demo/elasticity/2D_elasticity.py.rst.txt b/doc/_build/html/_sources/demo/elasticity/2D_elasticity.py.rst.txt index 6d2d53f0823618a633b9256ff0eae252f628433b..ec8b17b75f3c90d1afd575db431e6880544d4fe7 100644 --- a/doc/_build/html/_sources/demo/elasticity/2D_elasticity.py.rst.txt +++ b/doc/_build/html/_sources/demo/elasticity/2D_elasticity.py.rst.txt @@ -1,8 +1,11 @@ .. # gedit: set fileencoding=utf8 : +.. raw:: html + +

-.. _LinearElasticity2D: +.. _LinearElasticity2D: ========================= 2D linear elasticity diff --git a/doc/_build/html/_sources/demo/elasticity/orthotropic_elasticity.py.rst.txt b/doc/_build/html/_sources/demo/elasticity/orthotropic_elasticity.py.rst.txt index 757385d69f466f12a77c28a40829cc066107b8a0..84408aa5818f2e2e6a90bca03c1e254560e3fa7b 100644 --- a/doc/_build/html/_sources/demo/elasticity/orthotropic_elasticity.py.rst.txt +++ b/doc/_build/html/_sources/demo/elasticity/orthotropic_elasticity.py.rst.txt @@ -1,5 +1,8 @@ .. # gedit: set fileencoding=utf8 : +.. raw:: html + +

.. _OrthotropicElasticity: @@ -11,10 +14,10 @@ Introduction ------------ -In this numerical tour, we will show how to tackle the case of orthotropic elasticity (in a 2D setting). The corresponding file can be obtained from +In this numerical tour, we will show how to tackle the case of orthotropic elasticity (in a 2D setting). The corresponding file can be obtained from :download:orthotropic_elasticity.py. -We consider here the case of a square plate perforated by a circular hole of +We consider here the case of a square plate perforated by a circular hole of radius :math:R, the plate dimension is :math:2L\times 2L with :math:L \gg R Only the top-right quarter of the plate will be considered. Loading will consist of a uniform traction on the top/bottom boundaries, symmetry conditions will also @@ -27,7 +30,7 @@ between a rectangle and a circle:: L, R = 1., 0.1 N = 50 # mesh density - + domain = Rectangle(Point(0.,0.), Point(L, L)) - Circle(Point(0., 0.), R) mesh = generate_mesh(domain, N) @@ -35,7 +38,7 @@ between a rectangle and a circle:: Constitutive relation --------------------- -Constitutive relations will be defined using an engineering (or Voigt) notation (i.e. +Constitutive relations will be defined using an engineering (or Voigt) notation (i.e. second order tensors will be written as a vector of their components) contrary to the :ref:LinearElasticity2D example which used an intrinsic notation. In the material frame, which is assumed to coincide here with the global :math:(Oxy) @@ -46,13 +49,13 @@ frame, the orthotropic constitutive law writes :math:\boldsymbol{\varepsilon}=\ .. math:: \begin{Bmatrix} \varepsilon_{xx} \\ \varepsilon_{yy} \\ 2\varepsilon_{xy} \end{Bmatrix} = \begin{bmatrix} 1/E_x & -\nu_{xy}/E_x & 0\\ - -\nu_{yx}/E_y & 1/E_y & 0 \\ 0 & 0 & 1/G_{xy} \end{bmatrix}\begin{Bmatrix} + -\nu_{yx}/E_y & 1/E_y & 0 \\ 0 & 0 & 1/G_{xy} \end{bmatrix}\begin{Bmatrix} \sigma_{xx} \\ \sigma_{yy} \\ \sigma_{xy} \end{Bmatrix} with :math:E_x, E_y the two Young's moduli in the orthotropy directions, :math:\nu_{xy} the in-plane Poisson ration (with the following relation ensuring the constitutive -relation symmetry :math:\nu_{yx}=\nu_{xy}E_y/E_x) and :math:G_{xy} being the +relation symmetry :math:\nu_{yx}=\nu_{xy}E_y/E_x) and :math:G_{xy} being the shear modulus. This relation needs to be inverted to obtain the stress components as a function of the strain components :math:\boldsymbol{\sigma}=\mathbf{C}\boldsymbol{\varepsilon} with :math:\mathbf{C}=\mathbf{S}^{-1}:: @@ -89,7 +92,7 @@ second-order tensor or using the Voigt engineering notation:: Problem position and resolution -------------------------------- -Different parts of the quarter plate boundaries are now defined as well as the +Different parts of the quarter plate boundaries are now defined as well as the exterior integration measure ds:: class Top(SubDomain): @@ -101,7 +104,7 @@ exterior integration measure ds:: class Bottom(SubDomain): def inside(self, x, on_boundary): return near(x[1],0) and on_boundary - + # exterior facets MeshFunction facets = MeshFunction("size_t", mesh, 1) facets.set_all(0) @@ -122,12 +125,12 @@ on the top boundary:: u_ = TestFunction(V) u = Function(V, name='Displacement') a = inner(sigma(du), eps(u_))*dx - + # uniform traction on top boundary T = Constant((0, 1e-3)) l = dot(T, u_)*ds(1) -Symmetric boundary conditions are applied on the Top and Left boundaries +Symmetric boundary conditions are applied on the Top and Left boundaries and the problem is solved:: # symmetry boundary conditions @@ -135,12 +138,12 @@ and the problem is solved:: DirichletBC(V.sub(1), Constant(0.), facets, 3)] solve(a == l, u, bc) - + import matplotlib.pyplot as plt p = plot(sigma(u)[1,1]/T[1], mode='color') plt.colorbar(p) plt.title(r"$\sigma_{yy}$",fontsize=26) - + The :math:\sigma_{xx} and :math:\sigma_{yy} components should look like that: diff --git a/doc/_build/html/_sources/demo/modal_analysis_dynamics/cantilever_modal.py.rst.txt b/doc/_build/html/_sources/demo/modal_analysis_dynamics/cantilever_modal.py.rst.txt index d52f9e8bb75715f1382cb7480df9f63f4cc45d2a..c3d082b75896dbce1ec289d298350b6be2d111ff 100644 --- a/doc/_build/html/_sources/demo/modal_analysis_dynamics/cantilever_modal.py.rst.txt +++ b/doc/_build/html/_sources/demo/modal_analysis_dynamics/cantilever_modal.py.rst.txt @@ -1,3 +1,6 @@ +.. raw:: html + +

.. _ModalAnalysis: diff --git a/doc/_build/html/_sources/demo/reissner_mindlin/reissner_mindlin_dg.py.rst.txt b/doc/_build/html/_sources/demo/reissner_mindlin/reissner_mindlin_dg.py.rst.txt index 6e4ab393df9edced5cca75b93ae295954dd22d7c..fa70b4f0d5b0b4f5bda9df529d2d52cf0c9384c9 100644 --- a/doc/_build/html/_sources/demo/reissner_mindlin/reissner_mindlin_dg.py.rst.txt +++ b/doc/_build/html/_sources/demo/reissner_mindlin/reissner_mindlin_dg.py.rst.txt @@ -1,3 +1,6 @@ +.. raw:: html + +

.. _ReissnerMindlinQuads: diff --git a/doc/_build/html/_sources/intro.rst.txt b/doc/_build/html/_sources/intro.rst.txt index 362f76570a923f1f2dfacb877a304b4a74084645..3f0047589105e1a202444e5776b836d6223667ba 100644 --- a/doc/_build/html/_sources/intro.rst.txt +++ b/doc/_build/html/_sources/intro.rst.txt @@ -11,10 +11,10 @@ What is it about ? ------------------------ -These numerical tours will introduce you to a wide variety of topics in -computational continuum and structural mechanics using the finite element software FEniCS. +These numerical tours will introduce you to a wide variety of topics in +computational continuum and structural mechanics using the finite element software FEniCS. Many covered topics can be considered as standard and will help the reader in -getting started with FEniCS using solid mechanics examples. +getting started with FEniCS using solid mechanics examples. Other topics will also be more exploratory and will reflect currently investigated research topics, illustrating the versatility of FEniCS. @@ -22,33 +22,40 @@ illustrating the versatility of FEniCS. The full set of demos can be obtained from the *COmputational MEchanics Toolbox* (COMET) available at https://gitlab.enpc.fr/jeremy.bleyer/comet-fenics. +-------------------- +Citing and license +-------------------- + If you find these demos useful for your research work, please consider citing them using the following Zenodo DOI https://doi.org/10.5281/zenodo.1287832 .. code-block:: none - @article{bleyer2018numericaltours, - title={Numerical Tours of Computational Mechanics with FEniCS}, - DOI={10.5281/zenodo.1287832}, - publisher={Zenodo}, - author={Jeremy Bleyer}, + @article{bleyer2018numericaltours, + title={Numerical Tours of Computational Mechanics with FEniCS}, + DOI={10.5281/zenodo.1287832}, + publisher={Zenodo}, + author={Jeremy Bleyer}, year={2018}} +All this work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License _ |license|. + +.. |license| image:: https://i.creativecommons.org/l/by-sa/4.0/88x31.png ----------------------- -How do I get started ? +How do I get started ? ----------------------- -You can find instructions on how to install FEniCS on the FEniCS project website -http://fenicsproject.org. In the following numerical tours, we will use the +You can find instructions on how to install FEniCS on the FEniCS project website +http://fenicsproject.org. In the following numerical tours, we will use the Python interface for the different FEniCS scripts. These demos have been written using FEniCS 2017.2.0 but many should work with older versions. -FEniCS is also distributed along with an important number of documented or -undocumented examples, some of them will be revisited in these tours but do not +FEniCS is also distributed along with an important number of documented or +undocumented examples, some of them will be revisited in these tours but do not hesitate over looking at other interesting examples. -In the following, we will assume that readers possess basic knowledge of FEniCS commands. +In the following, we will assume that readers possess basic knowledge of FEniCS commands. In particular, we advise you to go first through the documentation and tutorials https://fenicsproject.org/tutorial/ if this is not the case. @@ -56,9 +63,9 @@ if this is not the case. About the author ---------------------- -Jeremy Bleyer _ is a researcher -in Solid and Structural Mechanics at Laboratoire Navier _, -a joint research unit of Ecole Nationale des Ponts et Chaussées _, +Jeremy Bleyer _ is a researcher +in Solid and Structural Mechanics at Laboratoire Navier _, +a joint research unit of Ecole Nationale des Ponts et Chaussées _, IFSTTAR _ and CNRS _ (UMR 8205). email: jeremy.bleyer@enpc.fr diff --git a/doc/_build/html/demo/2D_plasticity/vonMises_plasticity.py.html b/doc/_build/html/demo/2D_plasticity/vonMises_plasticity.py.html index 8be996a5278bc1a53a171c64a2db6d3959a040e1..000fd76c9478faaf7b23f4015ef16c2433ef9ec2 100644 --- a/doc/_build/html/demo/2D_plasticity/vonMises_plasticity.py.html +++ b/doc/_build/html/demo/2D_plasticity/vonMises_plasticity.py.html @@ -51,8 +51,8 @@
-
-

+

+

# Elasto-plastic analysis of a 2D von Mises material¶

## Introduction¶

This example is concerned with the incremental analysis of an elasto-plastic @@ -410,6 +410,7 @@ when considering a zero hardening modulus.

• Introduction diff --git a/doc/_build/html/demo/elasticity/2D_elasticity.py.html b/doc/_build/html/demo/elasticity/2D_elasticity.py.html index d8b290f5130936c420412dfd25d21b9ced0b3800..4fa50fe06e2f047940116c20fb6915fb7651f1f0 100644 --- a/doc/_build/html/demo/elasticity/2D_elasticity.py.html +++ b/doc/_build/html/demo/elasticity/2D_elasticity.py.html @@ -51,7 +51,7 @@
-
+

# 2D linear elasticity¶

## Introduction¶

@@ -220,6 +220,7 @@ writing/reading. Prefered output format is now .xdmf:

• Introduction diff --git a/doc/_build/html/demo/elasticity/axisymmetric_elasticity.html b/doc/_build/html/demo/elasticity/axisymmetric_elasticity.html index 75109eb68fe15a5d0e9d743f77b89860eddd978c..2932a809f5c3af91485df591a99383603945ed31 100644 --- a/doc/_build/html/demo/elasticity/axisymmetric_elasticity.html +++ b/doc/_build/html/demo/elasticity/axisymmetric_elasticity.html @@ -217,7 +217,7 @@ div.nboutput div.output_area.stderr { .ansi-bold { font-weight: bold; } .ansi-underline { text-decoration: underline; } -
+

The corresponding files can be obtained from:

• Jupyter Notebook: axisymmetric_elasticity.ipynb`
• @@ -2805,6 +2805,7 @@ if (IPython.notebook.kernel != null) {
• Introduction diff --git a/doc/_build/html/demo/elasticity/orthotropic_elasticity.py.html b/doc/_build/html/demo/elasticity/orthotropic_elasticity.py.html index 0d4fbf37ff18c0cc66c5ebed1ff55534f958caed..032ca662c01b42748e5f91708470be85bf482ba3 100644 --- a/doc/_build/html/demo/elasticity/orthotropic_elasticity.py.html +++ b/doc/_build/html/demo/elasticity/orthotropic_elasticity.py.html @@ -51,7 +51,7 @@
-
+