sfepy.terms.terms_shells module

Terms implementing shell elements.

class sfepy.terms.terms_shells.Shell10XTerm(name, arg_str, integral, region, **kwargs)[source]

The shell10x element term based on the Reissner-Mindlin theory [1], [2], corresponding to a shell of thickness t.

The term requires a custom 3D quadrature, where the z components of quadrature point coordinates are transformed from [0, 1] to [-t/2, t/2], and the quadrature weights are multiplied by t. The variables \ul{v} and \ul{u} have to use Shell10XField and have six components. The reference element mapping is implemented by Shell10XMapping. The term does not implement the piezo-electric components of the shell10x element yet.

The term has to be used with quadrilateral cells in 3D and should behave as the linear elastic term, but with fewer degrees of freedom for the same accuracy for shell-like structures. The shell has six degrees of freedom in each of the four nodes: {\mathbf u}_i = [ u_i, v_i, w_i, \alpha_i,
\beta_i, \gamma_i ]^T, i = 1, 2, 3, 4. The strain and stress vectors are calculated in a local (co-rotational) coordinate system given by basis vectors {\mathbf e}'_1, {\mathbf e}'_2 and {\mathbf e}'_3. It holds that

[ u'_i, v'_i, w'_i, \alpha'_i, \beta'_i, \gamma'_i ]^T
= {\hat{\mathbf H}}^T{\mathbf u}_i\,


{\hat{\mathbf H}} = \left[ \begin{array}{cc} {\mathbf H} & \\ & {\mathbf
H} \\ \end{array} \right]\qquad
{\mathrm{and}} \qquad {\mathbf H} =
[{\mathbf e}'_1 \, {\mathbf e}'_2 \, {\mathbf e}'_3]

is a nodal DOF transformation matrix.

The local displacements u', v' and w' at any point in the layer characterized by the isoparametric coordinates \xi, \eta and \zeta (\xi, \eta, \zeta \in
\left\langle-1,1\right\rangle) are interpolated from the nodal displacement and rotation values (i.e. both membrane and bending components) using standard isoparametric approximation functions for a quadrilateral, hence

u'(\xi,\eta,\zeta) &=& \sum\limits_{i=1}^{4}
N_i(\xi,\eta)\cdot ( u'_i + \bar{u}_i )\, , \\
v'(\xi,\eta,\zeta) &=&
\sum\limits_{i=1}^{4} N_i(\xi,\eta)\cdot ( v'_i + \bar{v}_i )\, , \\
w'(\xi,\eta,\zeta) &=& \sum\limits_{i=1}^{4} N_i(\xi,\eta)\cdot
( w'_i + \bar{w}_i )\,

where \tilde{u}_i, \tilde{v}_i and \tilde{w}_i are the bending components of displacements calculated from displacements due to rotations \tilde{\alpha}_i and \tilde{\beta}_i about local nodal axes \tilde{\mathbf{e}}_i as

\left[ \begin{array}{c} \bar{u}\\ \bar{v}\\ \bar{w}\\ \end{array}
\right]_i = \tilde{\zeta} \left[ \begin{array}{cc} & \\
\tilde{\mathbf{e}}_1 & -\tilde{\mathbf{e}}_2 \\ & \\ \end{array}
\right]_i \left[ \begin{array}{c}
\tilde{\mathbf{e}}_2^T \\ \tilde{\mathbf{e}}_1^T \\ \end{array}
\right]_i \left[ \begin{array}{c} \alpha' \\ \beta' \\ \gamma' \\
\end{array} \right]_i \,

where \tilde{\zeta} = (t/2)\zeta. The local nodal axes \tilde{\mathbf{e}}_i are constructed in order to describe the behavior of warped (non-planar) elements adequately.

The term employs three shell element enhancements:

  • DSG method

  • EAS method

  • drilling rotations lock (parameter \chi - a good value is about 10^{-7})

For detailed theoretical information see the references.


Zemčík, R., Rolfes, R., Rose, M. and Tessmer, J. (2006),

High-Performance 4-Node Shell Element with Piezoelectric Coupling Mechanics of Advanced Materials and Structures Vol. 13, Iss. 5, doi:10.1080/15376490600777657


Zemčík, R., Rolfes, R., Rose, M. and Teßmer, J. (2007),

High-performance four-node shell element with piezoelectric coupling for the analysis of smart laminated structures. Int. J. Numer. Meth. Engng., 70: 934–961. doi:10.1002/nme.1909


\int_{\Omega} D_{ijkl}\ e_{ij}(\ul{v}) e_{kl}(\ul{u})

Call signature:


(material_d, material_drill, virtual, state)

  • material_d : D

  • material_drill : \chi

  • virtual : \ul{v}

  • state : \ul{u}

arg_shapes = {'material_d': '6, 6', 'material_drill': '.: 1', 'state': 6, 'virtual': (6, 'state')}
arg_types = ('material_d', 'material_drill', 'virtual', 'state')
static function(out, mtx_k, el_u, fmode)[source]
geometries = ['3_2_4']
get_fargs(mtx_d, drill, virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)[source]

Get physical quadrature points corresponding to the term region and integral.

integration = 'custom'
name = 'dw_shell10x'
poly_space_base = 'shell10x'

Set the term integral.