![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
## 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
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
#include <deal.II/base/tensor.h>
#include <deal.II/base/timer.h>
#include <deal.II/base/work_stream.h>
+#include <deal.II/base/std_cxx11/shared_ptr.h>
#include <deal.II/dofs/dof_renumbering.h>
#include <deal.II/dofs/dof_tools.h>
return det_F;
}
- protected:
+ private:
// Define constitutive model parameters $\kappa$ (bulk modulus) and the
// neo-Hookean model parameter $c_1$:
const double kappa;
public:
PointHistory()
:
- material(NULL),
F_inv(StandardTensors<dim>::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
// $\textrm{Grad}\mathbf{u}_{\textrm{n}}$.
void setup_lqp (const Parameters::AllParameters ¶meters)
{
- material = new Material_Compressible_Neo_Hook_One_Field<dim>(parameters.mu,
- parameters.nu);
+ material.reset(new Material_Compressible_Neo_Hook_One_Field<dim>(parameters.mu,
+ parameters.nu));
update_values(Tensor<2, dim>());
}
// 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<dim> *material;
+ std_cxx11::shared_ptr< Material_Compressible_Neo_Hook_One_Field<dim> > material;
Tensor<2, dim> F_inv;
// (modelling a plane strain condition)
if (dim == 3)
repetitions[dim-1] = 1;
+
+ const Point<dim> bottom_left = (dim == 3 ? Point<dim>(0.0, 0.0, -0.5) : Point<dim>(0.0, 0.0));
+ const Point<dim> top_right = (dim == 3 ? Point<dim>(48.0, 44.0, 0.5) : Point<dim>(48.0, 44.0));
GridGenerator::subdivided_hyper_rectangle(triangulation,
repetitions,
- Point<dim>(0.0, 0.0, -0.5),
- Point<dim>(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