From: Jean-Paul Pelteret Date: Mon, 4 Jan 2016 09:11:27 +0000 (+0100) Subject: Updates to address WB's comments (29/12/2015) X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=723f594f33f122fde9a3222acd26f6b42600ba62;p=code-gallery.git Updates to address WB's comments (29/12/2015) --- diff --git a/Quasi_static_Finite_strain_Compressible_Elasticity/README.md b/Quasi_static_Finite_strain_Compressible_Elasticity/README.md index 3605f01..beeb093 100644 --- a/Quasi_static_Finite_strain_Compressible_Elasticity/README.md +++ b/Quasi_static_Finite_strain_Compressible_Elasticity/README.md @@ -29,8 +29,9 @@ is prevented in order to impose plane strain conditions. ![Problem geometry](./doc/problem_setup.png) -Note that we perform a three-dimensional computation as two-dimensional -elasticity corresponds to neither plane-strain nor plane-stress conditions. +Note that we perform a three-dimensional computation as, for this particular +formulation, the two-dimensional case corresponds to neither plane-strain +nor plane-stress conditions. ## Requirements @@ -58,10 +59,10 @@ make run ## Recommended Literature -* C. Miehe (1994), Aspects of the formulation and finite element implementation of large strain isotropic elasticity International Journal for Numerical Methods in Engineering 37 , 12, 1981-2004; -* G.A. Holzapfel (2001), Nonlinear Solid Mechanics. A Continuum Approach for Engineering, John Wiley & Sons; -* P. Wriggers (2008), Nonlinear finite element methods, Springer; -* T.J.R. Hughes (2000), The Finite Element Method: Linear Static and Dynamic Finite Element Analysis, Dover. +* C. Miehe (1994), Aspects of the formulation and finite element implementation of large strain isotropic elasticity International Journal for Numerical Methods in Engineering 37 , 12, 1981-2004. DOI: [10.1002/nme.1620371202](http://doi.org/10.1002/nme.1620371202); +* G.A. Holzapfel (2001), Nonlinear Solid Mechanics. A Continuum Approach for Engineering, John Wiley & Sons. ISBN: [978-0-471-82319-3](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471823198.html); +* P. Wriggers (2008), Nonlinear finite element methods, Springer. DOI: [10.1007/978-3-540-71001-1](http://doi.org/10.1007/978-3-540-71001-1); +* T.J.R. Hughes (2000), The Finite Element Method: Linear Static and Dynamic Finite Element Analysis, Dover. ISBN: [978-0486411811](http://store.doverpublications.com/0486411818.html) The derivation of the finite-element problem, namely the definition and linearisation of the residual and their subsequent discretisation are quite @@ -89,8 +90,10 @@ And an example of the displaced solution is given in the next image. Below we briefly document the tip displacement as predicted for different discretisation levels and ansatz for the displacement field. -A direct comparison of the following results can be made with those found -in Miehe (1994). +A direct and, by visual inspection, favourable comparison of the following +results can be made with those found in Miehe (1994). +Since the material is compressible, shear-locking is not exhibited by the +beam for low-order elements. #### Number of degrees of freedom diff --git a/Quasi_static_Finite_strain_Compressible_Elasticity/cook_membrane.cc b/Quasi_static_Finite_strain_Compressible_Elasticity/cook_membrane.cc index fbfc824..4d5adee 100644 --- a/Quasi_static_Finite_strain_Compressible_Elasticity/cook_membrane.cc +++ b/Quasi_static_Finite_strain_Compressible_Elasticity/cook_membrane.cc @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -589,7 +590,7 @@ namespace Cook_Membrane return det_F; } - protected: + private: // Define constitutive model parameters $\kappa$ (bulk modulus) and the // neo-Hookean model parameter $c_1$: const double kappa; @@ -679,17 +680,13 @@ namespace Cook_Membrane public: PointHistory() : - material(NULL), F_inv(StandardTensors::I), tau(SymmetricTensor<2, dim>()), Jc(SymmetricTensor<4, dim>()) {} virtual ~PointHistory() - { - delete material; - material = NULL; - } + {} // The first function is used to create a material object and to // initialize all tensors correctly: The second one updates the stored @@ -697,8 +694,8 @@ namespace Cook_Membrane // $\textrm{Grad}\mathbf{u}_{\textrm{n}}$. void setup_lqp (const Parameters::AllParameters ¶meters) { - material = new Material_Compressible_Neo_Hook_One_Field(parameters.mu, - parameters.nu); + material.reset(new Material_Compressible_Neo_Hook_One_Field(parameters.mu, + parameters.nu)); update_values(Tensor<2, dim>()); } @@ -766,7 +763,7 @@ namespace Cook_Membrane // materials are used in different regions of the domain, as well as the // inverse of the deformation gradient... private: - Material_Compressible_Neo_Hook_One_Field *material; + std_cxx11::shared_ptr< Material_Compressible_Neo_Hook_One_Field > material; Tensor<2, dim> F_inv; @@ -1351,11 +1348,14 @@ Point grid_y_transform (const Point &pt_in) // (modelling a plane strain condition) if (dim == 3) repetitions[dim-1] = 1; + + const Point bottom_left = (dim == 3 ? Point(0.0, 0.0, -0.5) : Point(0.0, 0.0)); + const Point top_right = (dim == 3 ? Point(48.0, 44.0, 0.5) : Point(48.0, 44.0)); GridGenerator::subdivided_hyper_rectangle(triangulation, repetitions, - Point(0.0, 0.0, -0.5), - Point(48.0, 44.0, 0.5)); + bottom_left, + top_right); // Since we wish to apply a Neumann BC to the right-hand surface, we // must find the cell faces in this part of the domain and mark them with