1 Introduction

Shell structures are ubiquitous in various engineering disciplines and there exists a huge variety of shell elements for analyzing them within finite element methods. As a major classification of shell elements, one can distinguish between (bivariate) shells and solid shells. While the former are formulated on bivariate domains and derived from shell theories, solid shells are trivariate solid elements and their formulation is based on 3D continuum theory. Whereas standard solid elements applied to thin structures typically require excessively fine meshes with several elements through the thickness to avoid geometric locking phenomena, in particular shear, membrane and curvature-thickness locking, solid shell elements are designed such that more accurate analyses can be obtained with only one element in the thickness direction. Essentially, solid shells are solid elements enhanced by certain anti-locking techniques, like, e.g., \(\bar{{\varvec{B}}}\)- and \(\bar{{\varvec{F}}}\)-formulations, assumed natural strains (ANS), or enhanced assumed strains (EAS). The advantages of solid shells compared to bivariate shell elements are, among others: (\(\bullet \)) generally simpler formulation and implementation (standard solid theory vs. shell theories); (\(\bullet \)) avoidance of rotational degrees of freedom, which are necessary in most classical shell elements; (\(\bullet \)) straight-forward use of nonlinear constitutive models, which are generally derived in the context of 3D solids; (\(\bullet \)) higher accuracy when three-dimensional stress states are important locally, e.g., for double-sided contact in sheet metal forming simulations. Solid shells are well established in classical finite element analysis [6, 12, 20, 25, 26, 28, 29, 31].

In this paper we make use of the peculiar features of Isogeometric Analysis (IGA) (see, e.g., the monograph [9] or the recent special issue [16]), which have been shown to have a great potential in particular for structural analysis. So far, most of the IGA structural formulations proposed in the literature have been developed in the framework of bivariate shells (see, e.g., [1, 3, 4, 11, 14, 18, 19, 22,23,24, 30] and references therein), while only a few papers deal with IGA solid shell elements [5, 7, 8, 13, 14, 21].

In this context, it is well-known that high-order finite element methods have the capability of alleviating locking phenomena by raising the interpolation order, being potentially less effective in the case of discretizations with high-continuity. On the other hand, degree elevation may cause the appearance of stress oscillations. In addition, higher-order IGA with standard quadrature rules can become numerically very costly and, therefore, there is a high interest in developing isogeometric solid shell elements which combine high-order accuracy with the efficiency of low-order approximations, i.e., quadratic elements. In [7], the concept of assumed natural strains (ANS) [10, 17] was firstly applied to isogeometric solid shells. The general idea of the ANS method is to replace the strain components which cause locking by an “assumed” strain field. This approach can be summarized as follows: The compatible strains are evaluated at the so-called tying points instead of the integration points, where the tying points correspond to points of a reduced integration rule; an assumed strain field is then extrapolated from these tying points at element level; the assumed strain field is finally used in the weak form and integrated at the standard integration points. Different sets of tying points are used for different strain components, which makes the implementation a bit cumbersome and also this affects numerical efficiency, due to the increased number of shape function evaluations (at the different sets of tying points and at the standard integration points), and, consequently, the memory requirements. Another important aspect is that this method requires the general element formulation to be set in a curvilinear or local Cartesian coordinate frame for being able to separate the strains into in-plane and out-of-plane components.

In the present paper we propose two novel solid shell formulations, where shear and membrane locking effects are counteracted by projecting those strain components which cause locking onto coarser polynomial spaces at element level through local \(L^2\) projections. The first formulation is inspired by the ANS method in the sense that the projection spaces correspond to the spaces of the assumed strain fields in the ANS method, with the consequence that different projection operators are used for different strain components. Its advantage, compared to the ANS method is that no tying points are necessary and shape functions are evaluated only at the standard integration points, which enhances the efficiency of the method. Secondly, we explore a simplified formulation where the same projection is applied to all strain components. In this case, the whole formulation and implementation becomes much more efficient. In fact, this formulation does not even need a local coordinate system (as it is the case for many solid shell formulations), which makes its implementation into existing standard solid elements straight forward and particularly easy. Numerical studies on several benchmark examples show that both formulations perform well, showing the same level of accuracy as the ANS formulation [7]. In this paper, we use NURBS basis functions for the discretization, however, the proposed formulations can be equally applied to standard Lagrangian finite elements.

2 Standard solid and solid shell formulations

The formulations presented in this work are based on classical 3D linear elasticity. Thus, assuming, for the sake of simplicity, a combination of Dirichlet and homogeneous Neumann boundary conditions, the problem’s weak form can be written as

$$\begin{aligned} \int _\varOmega \delta {\varvec{\varepsilon }}:{\varvec{\sigma }}\,\text {d}\varOmega = \int _\varOmega \delta {\varvec{u}}\cdot {\varvec{f}} \,\text {d}\varOmega \, , \end{aligned}$$
(1)

where \(\varOmega \) denotes the domain occupied by the elastic body; \({\varvec{u}}\) is the elastic displacement vector field (assumed to satisfy the prescribed Dirichlet boundary conditions); \({\varvec{\sigma }}= {\mathbb {C}} : {\varvec{\varepsilon }}\) is the stress tensor, being \({\mathbb {C}}\) the elasticity tensor, and \({\varvec{\varepsilon }}= \nabla ^S {\varvec{u}}\) is the strain tensor (\(\nabla ^S\) denotes the symmetric gradient operator); and \({\varvec{f}}\) is the external load vector field. Finally, \(\delta {\varvec{u}}\) is a virtual displacement vector field (that satisfies homogenous Dirichlet boundary conditions where displacements are prescribed) and \(\delta {\varvec{\varepsilon }}\) is the virtual strain tensor field.

The elastic displacement \({\varvec{u}}\) is approximated as

$$\begin{aligned} {\varvec{u}} \approx \sum _{k=1}^{n} N_k(\xi ,\eta ,\zeta ) \, {\varvec{u}}_k \,, \end{aligned}$$
(2)

where \(N_k\in {\mathbb {R}}\) are the NURBS basis functions [9], n is the total number of functions, \((\xi ,\eta ,\zeta )\) are the coordinates in the parametric domain, and \({\varvec{u}}_k\in {\mathbb {R}}^3\) are the control point displacements (i.e., the problem unknowns). Following a standard approach (see, e.g., [15]), we obtain the classical formulation for the element stiffness matrix to be

$$\begin{aligned} {\varvec{k}}_e&= \int _{\varOmega _e} {\varvec{B}}^\top {\varvec{D}} {\varvec{B}} \, \text {d}\varOmega _e\,, \end{aligned}$$
(3)

where \(\varOmega _e\) is the element domain, \({\varvec{B}}\) is the strain-displacement matrix, and \({\varvec{D}}\) is the material matrix. The strain-displacement matrix can generally be constructed as

$$\begin{aligned} {\varvec{B}} = \left( \begin{array}{cccc} {\varvec{B}}_1&{\varvec{B}}_2&\ldots&{\varvec{B}}_{n_e} \end{array} \right) \,, \end{aligned}$$
(4)

being \(n_e\) the number of shape functions per element, with the submatrices \({\varvec{B}}_k\) defined as

$$\begin{aligned} {\varvec{B}}_k = \left( \begin{array}{ccc} N_{k,x} &{} \quad 0 &{} \quad 0 \\ 0 &{} \quad N_{k,y} &{} \quad 0 \\ 0 &{} \quad 0 &{} \quad N_{k,z} \\ N_{k,y} &{} \quad N_{k,x} &{} \quad 0 \\ N_{k,z} &{} \quad 0 &{} \quad N_{k,x} \\ 0 &{} \quad N_{k,z} &{} \quad N_{k,y} \end{array} \right) \,, \end{aligned}$$
(5)

where the comma subscript indicates a partial derivative, e.g., \(N_{k,x} = \partial N_k/\partial x\). Thus, the strain tensor can be approximated as

$$\begin{aligned} \underline{{\varvec{\varepsilon }}} \approx \sum _{k=1}^{n} {\varvec{B}}_k \, {\varvec{u}}_k \,, \end{aligned}$$
(6)

where \(\underline{{\varvec{\varepsilon }}}\) is the Voigt representation of the strain tensor in the Cartesian coordinate system, i.e., \(\underline{{\varvec{\varepsilon }}} =[\varepsilon _{xx},\,\varepsilon _{yy},\, \varepsilon _{zz},\,2\varepsilon _{xy},2\, \varepsilon _{xz},\,2\varepsilon _{yz}]^\top \).

In many solid shell formulations it is necessary to express the strains and, accordingly, the strain-displacement matrix in a curvilinear coordinate system aligned with the shell’s geometry in order to separate the strains into in-plane and out-of-plane components. Typically, the geometry is modeled such that the first two coordinates \((\xi ,\eta )\) correspond to the in-plane directions of the shell and the third one \((\zeta )\) to the thickness direction. We can then compute the curvilinear base vectors \({\varvec{g}}_i\) as

$$\begin{aligned} {\varvec{g}}_i&= \frac{\partial {\varvec{x}}}{\partial \xi _i} = \sum _{k=1}^{n} \frac{\partial N_k}{\partial \xi _i} {\varvec{x}}_k\,, \quad i=\lbrace 1,\,2,\,3\rbrace \,, \end{aligned}$$
(7)

where we used \((\xi _1,\xi _2,\xi _3)=(\xi ,\eta ,\zeta )\) for a shorter notation (see Fig. 1), and \({\varvec{x}}_k\) are the geometry control point coordinates.

Fig. 1
figure 1

Solid shell curvilinear coordinates and its associated covariant basis

Using the basis (7), we can compute the strain-displacement matrix, referred to the curvilinear system and in a row-wise way, as

$$\begin{aligned} \widetilde{{\varvec{B}}}_k = \left( \begin{array}{c} N_{k,\xi }\,{\varvec{g}}_1^\top \\ N_{k,\eta }\,{\varvec{g}}_2^\top \\ N_{k,\zeta }\,{\varvec{g}}_3^\top \\ N_{k,\xi }\,{\varvec{g}}_2^\top + N_{k,\eta }\,{\varvec{g}}_1^\top \\ N_{k,\xi }\,{\varvec{g}}_3^\top + N_{k,\zeta }\,{\varvec{g}}_1^\top \\ N_{k,\eta }\,{\varvec{g}}_3^\top + N_{k,\zeta }\,{\varvec{g}}_2^\top \end{array} \right) \,. \end{aligned}$$
(8)

Analogously as for the Cartesian system (6), the curvilinear (covariant) strain components \(\underline{\widetilde{{\varvec{\varepsilon }}}} = [{\tilde{\varepsilon }}^{xx},\,{\tilde{\varepsilon }}^{yy},\, {\tilde{\varepsilon }}^{zz},\,2{\tilde{\varepsilon }}^{xy},\,2 {\tilde{\varepsilon }}^{xz},\,2{\tilde{\varepsilon }}^{yz}]^\top \) can be expressed as

$$\begin{aligned} \underline{\widetilde{{\varvec{\varepsilon }}}} \approx \sum _{k=1}^{n} \widetilde{{\varvec{B}}}_k \, {\varvec{u}}_k \,, \end{aligned}$$
(9)

where, in the same way as in (4), the submatrices \(\widetilde{{\varvec{B}}}_k\) can be gathered as

$$\begin{aligned} \widetilde{{\varvec{B}}} = \left( \begin{array}{cccc} \widetilde{{\varvec{B}}}_1&\widetilde{{\varvec{B}}}_2&\ldots&\widetilde{{\varvec{B}}}_{n_e} \end{array} \right) . \end{aligned}$$
(10)

It should be noted that in (8) the derivatives with respect to the natural NURBS coordinates \((\xi ,\eta ,\zeta )\) are used. Also note that, in contrast to the classical matrix \({\varvec{B}}\), the curvilinear matrix \(\widetilde{{\varvec{B}}}\) is, in general, fully populated, as it can be observed comparing Eqs. (5) and (8).

For consistency, also the Cartesian material matrix \({\varvec{D}}\) needs to be expressed in the curvilinear system. This is obtained via the transformation matrix \({\varvec{R}}\) (see, for instance, [5]):

$$\begin{aligned} \begin{aligned} {\varvec{R}}&= \left[ \begin{matrix} J_{11}^2 &{} \quad J_{21}^2 &{} \quad J_{31}^2 &{} \quad J_{11}J_{21}\\ J_{12}^2 &{} \quad J_{22}^2 &{} \quad J_{32}^2 &{} \quad J_{12}J_{22}\\ J_{13}^2 &{} \quad J_{23}^2 &{} \quad J_{33}^2 &{} \quad J_{13}J_{23}\\ 2J_{11}J_{12} &{} \quad 2J_{22}J_{21} &{} \quad 2J_{31}J_{32} &{} \quad J_{11}J_{22}+J_{21}J_{12}\\ 2J_{11}J_{13} &{} \quad 2J_{21}J_{23} &{} \quad 2J_{31}J_{33} &{} \quad J_{11}J_{23}+J_{21}J_{13}\\ 2J_{12}J_{13} &{} \quad 2J_{22}J_{23} &{} \quad 2J_{32}J_{33} &{} \quad J_{12}J_{23}+J_{22}J_{13} \end{matrix}\right. \\&\qquad \qquad \quad \left. \begin{matrix} J_{11}J_{31} &{} \quad J_{21}J_{31} \\ J_{12}J_{32} &{} \quad J_{22}J_{32} \\ J_{13}J_{33} &{} \quad J_{23}J_{33} \\ J_{11}J_{32}+J_{31}J_{12} &{} \quad J_{21}J_{32}+J_{31}J_{22} \\ J_{11}J_{33}+J_{31}J_{13} &{} \quad J_{21}J_{33}+J_{31}J_{23} \\ J_{12}J_{33}+J_{32}J_{13} &{} \quad J_{22}J_{33}+J_{32}J_{23} \end{matrix}\right] , \end{aligned} \end{aligned}$$
(11)

where \(J_{ij}\) are the components of the Jacobian matrix:

$$\begin{aligned} {\varvec{J}} = \left( \begin{array}{lll} \dfrac{\partial x}{\partial \xi } &{}\quad \dfrac{\partial x}{\partial \eta } &{} \quad \dfrac{\partial x}{\partial \zeta } \\ \dfrac{\partial y}{\partial \xi } &{} \quad \dfrac{\partial y}{\partial \eta } &{}\quad \dfrac{\partial y}{\partial \zeta } \\ \dfrac{\partial z}{\partial \xi } &{} \quad \dfrac{\partial z}{\partial \eta } &{}\quad \dfrac{\partial z}{\partial \zeta } \end{array} \right) = \left( \begin{array}{ccc} {\varvec{g}}_1&\quad {\varvec{g}}_2&\quad {\varvec{g}}_3 \end{array} \right) . \end{aligned}$$
(12)

The material matrix in the curvilinear system is then obtained as

$$\begin{aligned} \widetilde{{\varvec{D}}} = {{\varvec{R}}}^{-\top } {{\varvec{D}}R}^{-1}\,, \end{aligned}$$
(13)

and the element stiffness matrix can be computed as

$$\begin{aligned} {\varvec{k}}_e&= \int _{\varOmega _e} \widetilde{{\varvec{B}}}^\top \widetilde{{\varvec{D}}} \widetilde{{\varvec{B}}} \,\text {d}\varOmega _e. \end{aligned}$$
(14)

Note that, in the same way, \(\widetilde{{\varvec{B}}}\) can be alternatively calculated as \(\widetilde{{\varvec{B}}} = {\varvec{R}}{\varvec{B}}\).

3 Solid shell locking alleviation

In this section, we present two different approaches to alleviate shear and membrane locking effects through local modifications of the strain-displacement matrices, for both the curvilinear (14) and the Cartesian (3) formulations.

To this end, we propose a procedure based on the projection of the strain components causing locking onto coarser polynomial spaces. In fact, in the same way as in other problems, like, e.g., quasi-incompressible elasticity, locking phenomena arise as a consequence of the excess of constraints on the numerical solution. In order to reduce these constraints, the affected part of the elastic energy is interpolated by means of coarser polynomial spaces. In particular, for the case of solid shells, we interpolate the different components of the strain tensor using element-wise lower order polynomial spaces that are discontinuous across elements.

3.1 ANS-inspired locking alleviation using local projections

Let us first introduce the strain tensor expressed in the covariant basis:

$$\begin{aligned} {\varvec{\varepsilon }} = \sum ^{3}_{i,j=1} {\tilde{\varepsilon }}^{ij} {\varvec{g}}_i\otimes {\varvec{g}}_j\,. \end{aligned}$$
(15)

In order to alleviate the possible shear and membrane locking phenomena, the strain tensor \({\varvec{\varepsilon }}\) is replaced with its modified version \(\overline{{\varvec{\varepsilon }}}\) that results from a local \(L^2\) projection of each covariant component of \({\varvec{\varepsilon }}\) onto different coarser polynomial spaces defined for each parametric element \({\hat{\varOmega }}_e\). Accordingly, each component \({\tilde{\varepsilon }}^{ij}\) of \({\varvec{\varepsilon }}\) is substituted by a new component \(\overline{\varepsilon }^{ij}\) of \(\overline{{\varvec{\varepsilon }}}\), obtained through its \(L^2\) projection onto a reduced order space. Thus, the modified strain tensor reads

$$\begin{aligned} \overline{{\varvec{\varepsilon }}} = \sum ^{3}_{i,j=1} \overline{\varepsilon }^{ij} {\varvec{g}}_i\otimes {\varvec{g}}_j\,,\quad \text {with }\overline{\varepsilon }^{ij} = \varPi ^{\left( i,j\right) }({\tilde{\varepsilon }}^{ij})\,, \end{aligned}$$
(16)

where \(\varPi ^{\left( i,j\right) }\) is the element-wise \(L^2\) projection operator onto the space \({\mathbb {Q}}^{(i,j)}(\hat{\varOmega }_e)\) for each ij strain component.

Thus, in each single parametric element \(\hat{\varOmega }_e\), the \(L^2\) projection can be implicitly expressed as:

$$\begin{aligned} \begin{aligned} \int _{\hat{\varOmega }_e} {\tilde{\varepsilon }}^{ij} \theta _h\, \text {d}{\hat{\varOmega }}_e&= \int _{\hat{\varOmega }_e} \overline{\varepsilon }^{ij}\theta _h\, \text {d}{\hat{\varOmega }}_e\,, \\&\quad \forall \theta _h, \overline{\varepsilon }^{ij} \in {\mathbb {Q}}^{(i,j)}(\hat{\varOmega }_e),\,\, {\tilde{\varepsilon }}^{ij} \in L^2(\hat{\varOmega }_e)\,. \end{aligned} \end{aligned}$$
(17)

Assuming that the problem solution is discretized with the same degree p along the three parametric directions, and inspired by the ANS method proposed for isogeometric analysis in [7, 8], the different strain components are then treated as follows:

  • \({\tilde{\varepsilon }}^{11}\) and \({\tilde{\varepsilon }}^{13}\) are projected onto the local element space \({\mathbb {Q}}^{(1,1)}={\mathbb {Q}}_{p-1,p,p}({\hat{\varOmega }}_e)\);

  • \({\tilde{\varepsilon }}^{22}\) and \({\tilde{\varepsilon }}^{23}\) are projected onto the local element space \({\mathbb {Q}}^{(2,2)}={\mathbb {Q}}_{p,p-1,p}({\hat{\varOmega }}_e)\);

  • \({\tilde{\varepsilon }}^{12}\) is projected onto the local element space \({\mathbb {Q}}^{(1,2)}={\mathbb {Q}}_{p-1,p-1,p}({\hat{\varOmega }}_e)\);

  • \({\tilde{\varepsilon }}^{33}\) remains unprojected, i.e., \(\overline{\varepsilon }_{33} = {\tilde{\varepsilon }}_{33}\).

\({\mathbb {Q}}_{q,r,s}({\hat{\varOmega }}_e)\) is the space of polynomials of degrees \(\le (q,r,s)\), along the three parametric directions of the parametric domain element \({\hat{\varOmega }}_e\).

The above-introduced polynomial spaces are local to each element and discontinuous across different elements. Therefore, the projections of the different strain components can be computed at each element independently from the others, making this operation computationally inexpensive and embarrassingly parallel.

Thus, the element-wise projection can be explicitly written in matrix form as:

$$\begin{aligned} \overline{{{\mathbf {\mathsf{{f}}}}}}^{ij} = {\mathbb {P}}^{(i,j)}\, \tilde{{{\mathbf {\mathsf{{f}}}}}}^{ij}\,, \end{aligned}$$
(18)

where the column vectors \(\tilde{{{\mathbf {\mathsf{{f}}}}}}^{ij}\in {\mathbb {R}}^{n_q}\) and \(\overline{{{\mathbf {\mathsf{{f}}}}}}^{ij}\in {\mathbb {R}}^{n_q}\) are the values of \({\tilde{\varepsilon }}^{ij}\) and \(\overline{\varepsilon }^{ij}\), respectively, evaluated at the \(n_q\) quadrature points of a single element \({\hat{\varOmega }}_e\), while \({\mathbb {P}}^{(i,j)}\in {\mathbb {R}}^{n_q\times n_q}\) is the linear projection operator expressed in matrix form. Due to the fact that the projections are performed in the parametric domain, and the same projection spaces are chosen for all elements, the operators \({\mathbb {P}}^{(i,j)}\) are constant from element to element. In Appendix A we provide closed-form expressions of the matrices \({\mathbb {P}}^{(i,j)}\), for degrees \(p=1\) and \(p=2\), ready to be used in isogeometric or finite element analysis codes.

By means of the above defined projections, the modified strain can be represented as

$$\begin{aligned} \underline{\overline{{\varvec{\varepsilon }}}} \approx \sum _{k=1}^{n} \overline{{\varvec{B}}}_k \, {\varvec{u}}_k \,, \end{aligned}$$
(19)

where \(\overline{{\varvec{B}}}_k\) is written row-wise as

$$\begin{aligned} \overline{{\varvec{B}}}_k = \left( \begin{array}{c} \varPi ^{(1,1)}\left( N_{k,\xi }\,{\varvec{g}}_1^\top \right) \\ \varPi ^{(2,2)}\left( N_{k,\eta }\,{\varvec{g}}_2^\top \right) \\ N_{k,\zeta }\,{\varvec{g}}_3^\top \\ \varPi ^{(1,2)}\left( N_{k,\xi }\,{\varvec{g}}_2^\top + N_{k,\eta }\,{\varvec{g}}_1^\top \right) \\ \varPi ^{(1,1)}\left( N_{k,\xi }\,{\varvec{g}}_3^\top + N_{k,\zeta }\,{\varvec{g}}_1^\top \right) \\ \varPi ^{(2,2)}\left( N_{k,\eta }\,{\varvec{g}}_3^\top + N_{k,\zeta }\,{\varvec{g}}_2^\top \right) \end{array} \right) \,. \end{aligned}$$
(20)

In the same way as for (10), we can define

$$\begin{aligned} \overline{{\varvec{B}}} = \left( \begin{array}{cccc} \overline{{\varvec{B}}}_1&\overline{{\varvec{B}}}_2&\ldots&\overline{{\varvec{B}}}_{n_e} \end{array} \right) , \end{aligned}$$
(21)

such that the element stiffness matrix is computed as

$$\begin{aligned} \overline{{\varvec{k}}}_e&= \int _{\varOmega _e} \overline{{\varvec{B}}}^\top \widetilde{{\varvec{D}}} \overline{{\varvec{B}}} \,\text {d}\varOmega _e. \end{aligned}$$
(22)

3.2 Simplified Cartesian locking alleviation using local projections

In this work we also explore the possibility of projecting all strain components, including \({\tilde{\varepsilon }}^{33}\), onto the reduced polynomial space \({\mathbb {Q}}_{p-1,p-1,p}(\hat{\varOmega }_e)\). In such a case, all strain components are projected directly using their Cartesian version, and their transformation to curvilinear components is no longer needed, which renders the operation much simpler.

Thus, the new strain-displacement matrix \(\widehat{{\varvec{B}}}_k\) is computed as:

$$\begin{aligned} \widehat{{\varvec{B}}}_k = \left( \begin{array}{ccc} {\widehat{N}}_{k,x} &{} 0 &{} 0 \\ 0 &{} {\widehat{N}}_{k,y} &{} 0 \\ 0 &{} 0 &{} {\widehat{N}}_{k,z} \\ {\widehat{N}}_{k,y} &{} {\widehat{N}}_{k,x} &{} 0 \\ {\widehat{N}}_{k,z} &{} 0 &{} {\widehat{N}}_{k,x} \\ 0 &{} {\widehat{N}}_{k,z} &{} {\widehat{N}}_{k,y} \end{array} \right) \,, \end{aligned}$$
(23)

where \({\widehat{N}}_{k,x_i}\) are simply the projected basis function derivatives, i.e.,

$$\begin{aligned} {\widehat{N}}&_{k,x_i} = \varPi ^{(1,2)}(N_{k,x_i})\,, \end{aligned}$$
(24)

for \(i=\lbrace 1,2,3\rbrace \) and \((x_1,\,x_2,\,x_3)=(x,\,y,\,z)\). Then, as before, the local stiffness matrix is simply computed as:

$$\begin{aligned} \widehat{{\varvec{k}}}_e&= \int _{\varOmega _e} \widehat{{\varvec{B}}}^\top {\varvec{D}} \widehat{{\varvec{B}}} \, \text {d}\varOmega _e\,. \end{aligned}$$
(25)

This methodology presents a fundamental advantage with respect to the projections presented in the previous section: It requires the use of Cartesian coordinates only [notice the use of Cartesian coordinates of the involved derivatives in (24) and the use of the Cartesian version of tensor \({\varvec{D}}\) in (25)], making it simpler and faster. Moreover, it is worth mentioning that this approach differs from reduced integration techniques, which in some cases may lead to unphysical instabilities, while, on the basis of our numerical tests, the proposed method seems to be always stable. As it will be shown in the numerical experiments gathered in Sect. 4, the performance of this simplified technique is as good as the ANS-inspired one, presented in Sect. 3.1, and even superior in some cases.

4 Numerical examples

In this section we present a series of numerical experiments, classically used to test shell and solid-shell formulation capabilities for alleviating locking effects, with the aim of illustrating the performance of the proposed solid-shell elements.

In particular we first present two classical beam tests, and we then analyze the celebrated set of three benchmarks known as the “shell obstacle course”, proposed by Belytschko et al. [2].

In these five test cases we compare the performance of different quadratic solid shell elements, namely: The ANS-inspired version of our quadratic solid-shell element, described in Sect. 3.1 and labeled hereinafter as “

figure a

SS\(_{\text {ANS}}\)”; the simplified quadratic solid-shell element, formulated in Cartesian coordinates and detailed in Sect. 3.2, denoted as “

figure b

SS”; and, finally, the quadratic ANS element proposed in [7] and labeled as “

figure c

ANS”. Quadratic formulations are also compared with the standard cubic isogeometric element (simply denoted as “

figure d

\(p=3\)”), known to show a good behavior even in the presence of shear and membrane locking conditions. Additionally, we also include in all the test cases the results corresponding to the standard isogeometric quadratic element, denoted as “

figure e

\(p=2\)”.

4.1 Straight cantilever beam

This first example is a straight cantilever beam, clamped at one face and subjected to a distributed load, with resultant F, along the top edge of the opposite face (see Fig. 2). A Young modulus \(E=1000\) and a Poisson ratio \(\nu =0\) are assumed, while the beam length and width are \(L=100\) and \(w=1\), respectively. The beam thickness is indicated by t. In all numerical tests a single element is used for the beam cross section, while a variable number of elements along the longitudinal direction are considered.

Fig. 2
figure 2

Straight cantilever beam: problem description. One face is clamped whereas a distributed load (with resultant F) is applied along the top edge of the opposite face. Beam deflection is measured at the bottom edge of the free end. \(E=1000\), \(\nu =0\), \(L=100\), and \(w=1\). Different slendernesses L/t are considered

Even if the nature of the formulation proposed in this paper is three dimensional, under the geometrical setting, boundary, loading, and material conditions described above, the model behaves as a 2D beam. This test helps in evaluating the effect of shear locking, isolated from other possible effects, for all the considered discretizations.

Considering a high slenderness value \(L/t=100\), the normalized deflection of the beam tip is reported in Fig. 3a for different numbers of control points along the beam length. As it can be seen, all considered solid-shell elements are able to capture the exact solution, even for the coarsest considered mesh (this is not the case for standard quadratic elements).

Fig. 3
figure 3

Straight cantilever beam: normalized vertical deflection at the tip for different discretizations and slendernesses

Fig. 4
figure 4

Straight cantilever beam: Normalized error of the beam’s \(\sigma _{13}\) resultant at cross sections, plotted along the longitudinal axis. The applied load at the beam’s tip (\(x=L\)) is taken as reference value fo the shear stress resultant. 8 elements along the beam’s length and two different slendernesses are considered

On the other hand, in Fig. 3b we report the results obtained in the case of a fixed discretization (8 elements along the beam’s length) and different (high) values of the slenderness L/t. As in the previous case, except for the standard quadratic element, all discretizations are able to capture the correct results, even for quite severe slendernesses.

Fig. 5
figure 5

Straight cantilever beam: normalized vertical deflection versus beam slenderness for different in-plane mesh distortions (8 elements along the beam’s length)

It is well known that higher order finite elements (isogeometric or standard isoparametric) tend to provide good results for primal variables, even if some locking is present. Derived quantities (stress and strain), however, may still suffer from severe oscillations in formulations that are not completely locking-free. In that sense, and in order to illustrate the performance of the proposed methods, we present in Fig. 4 the relative error of the shear stress \(\sigma _{13}\) resultants along the beam’s axis. The resultants are computed as the integral of \(\sigma _{13}\) on beam’s cross sections, being the applied load at the beam’s tip the reference value.

As it can be seen in Fig. 4, both, the ANS-inspired and the simplified quadratic solid-shell formulations, as well as the cubic element, present small resultant errors and oscillations, even for very high slendernesses. However, the standard quadratic formulation predicts much worse stresses, even in the case in which the computed deflection is not so low (cf. Figs. 3b, 4a).

The stress resultant oscillations, higher for extreme slendernesses, are mitigated when the number of elements along the beam’s axis is increased. Other stress components not affected by locking, namely, \(\sigma _{11}\) and \(\sigma _{33}\) in this example, present smaller errors than \(\sigma _{13}\) and no oscillations.

Finally, in order to test also the robustness of the proposed solid-shell elements, we report in Fig. 5 the results obtained when different in-plane mesh distortions are considered. These distortions are generated in such a way that the in-plane distortion angle is maximum at the center of the beam and linearly fades to zero at both ends (see Fig. 5), as proposed in [26].

As it can be seen in Fig. 5a, for moderate angle distortions (\(30^\circ \)), the proposed Cartesian solid-shell element clearly outperforms the proposed ANS-inspired and ANS elements for large values of the slenderness, while for less slender beams, all elements present similar results.

For severe distortion angles (\(60^\circ \)), instead, Fig. 5b shows that the Cartesian solid-shell element still provides better results than the other quadratic solid-shell formulations, but all of them attain quite inaccurate results for very slender beams (\(L/t\ge 1000\)).

In all distorted cases the standard cubic element presents good results in the full considered range of slendernesses.

4.2 Curved cantilever beam

The second example is a classical benchmark for membrane locking (see [11]). The problem is sketched in Fig. 6 and consists of a quarter of ring beam clamped at one end and subjected to a radial distributed force along the exterior edge of the opposite face, whose resultant is F. The radius of the beam’s middle fiber is \(R=10\) and the width is \(w=1\). As before, the Young’s modulus and Poisson’s ratio are \(E=1000\) and \(\nu =0\), respectively.

Fig. 6
figure 6

Curved cantilever beam: problem description. One face is clamped whereas a radial distributed load (with resultant F) is applied along the exterior edge of the opposite face. The radial beam deflection is measured at the interior edge of the free end of the beam. \(E=1000\), \(\nu =0\), \(R=10\), and \(w=1\). Different slendernesses R/t are considered

Fig. 7
figure 7

Curved cantilever beam: normalized radial deflection for different slenderness values (10 elements along the beam’s length)

A mesh consisting of a single element for the beam cross section and 10 elements along the circumferential direction is considered. The computed radial displacement at the beam tip is reported in Fig. 7 as a function of the slenderness R/t. As it can be seen, all considered solid-shell elements significantly enhance the response of the standard quadratic formulation and all present very similar results that are practically locking-free, except for the case of extremely slender beams (\(R/t=10^4\)) for which the standard ANS formulation produces poor results.

4.3 Shell obstacle course I: Scordelis–Lo roof

The first test of the shell obstacle course is the well-known Scordelis–Lo roof [27]. The roof, illustrated in Fig. 8, has a cylindrical geometry and is supported by rigid diaphragms at both extremes. The structure radius is \(R=25\), its length is \(L=50\), and the thickness is \(t=0.25\). The roof is subjected to its self-weight, whose value is \(\rho g = 360\), where \(\rho \) is the density and g is the gravity acceleration. The elastic moduli are \(E=4.32\cdot 10^{8}\) and \(\nu =0\). Due to symmetry conditions, only one quarter of the structure is modeled. The same number of elements are considered along each in-plane direction while only one element through the thickness is used.

Fig. 8
figure 8

Scordelis–Lo roof problem [2]: Problem description. The cylindrical roof, supported by rigid diaphragms at both extrema is under the action of its self-weight \(\rho g\). The displacement at mid-span point A is measured. Due to symmetry conditions, only one quarter of the geometry is considered, setting the proper symmetry boundary conditions. \(E=4.32\times 10^{8}\), \(\nu =0\), \(R=25\), \(L=50\), \(t=0.25\), and \(\rho g = 360\)

The reference displacement is the vertical deflection of point A in Fig. 8, whose “exact” value is 0.3024 (as reported in [2]). The results for the different elements considered, varying the number of in-plane control points, are reported in Fig. 9. As it can be seen, the proposed solid-shell elements (as well as the ANS formulation) present results as good as those granted by the cubic discretization.

Fig. 9
figure 9

Scordelis–Lo roof problem: vertical deflection at point A versus number of in-plane control points per side

4.4 Shell obstacle course II: pinched hemispherical shell

The second test of the shell obstacle course consists in a hemispherical structure pinched by two couples of opposite concentrated forces on diametrically opposed points of the equator section. Due to the problem symmetry only one quarter of the structure is modeled, setting suitable symmetry boundary conditions, as illustrated in Fig. 10. Moreover, the top point of the hemisphere is fixed, while the equator section of the hemisphere can move freely. The structure has a thickness \(t=0.04\) and the middle surface of the hemisphere has a radius \(R=10\). The applied forces have magnitude \(F=1\) and the material properties are \(E=6.825\times 10^{7}\) and \(\nu =0.3\). In Fig. 11 we plot the numerically computed radial deflection at point A (see Fig. 10) versus the number of control points along each in-plane direction and compare those results with the reference solution 0.0924 reported in [2]. A similar behavior to that observed in the Scordelis–Lo roof case is obtained.

Fig. 10
figure 10

Pinched hemispherical shell [2]: Problem description. The hemispherical structure, fixed at the top point, is subjected to the action of diametrically opposed forces (applied at points A and B in the picture). The equator (bottom) section can move freely. The radial deflection at point A is measured. Due to symmetry conditions, only one quarter of the geometry is considered, setting the proper symmetry boundary conditions. \(E=6.825\times 10^{7}\), \(\nu =0.3\), \(R=10\), \(t=0.04\) and \(F=1\)

Fig. 11
figure 11

Pinched hemispherical shell [2]: Radial deflection at point A versus the number of control points along each in-plane direction

4.5 Shell obstacle course III: pinched cylinder

The last test case of the shell obstacle course, is the so-called pinched cylinder. The problem consists of a cylinder with rigid end diaphragms subjected to a pair of concentrated forces; due to the problem symmetry only one eight of the problem is studied, setting the proper symmetry boundary conditions, as shown in Fig. 12. The cylinder middle surface has radius \(R=300\), while its length is \(L=600\) and its thickness \(t=3\). The two opposite concentrated forces have value \(F=1\), and the material properties are \(E=3\times 10^{6}\) and \(\nu =0.3\).

Fig. 12
figure 12

Pinched cylinder [2]: problem description. The cylindrical structure is supported by two rigid diaphragms at both ends while a pair of diametrically opposed concentrated forces are applied at the center of the cylinder. The radial deflection of the point where loads are applied is measured. Due to symmetry conditions, only one eighth of the geometry is considered, setting the proper symmetry boundary conditions. \(E=3\times 10^{6}\), \(\nu =0.3\), \(R=300\), \(L=600\), \(t=3\), and \(F=1\)

Fig. 13
figure 13

Pinched cylinder: radial deflection versus the number control points along each in-plane direction

The numerically computed radial deflections (measured at the point where loads are applied) are plotted in Fig. 13 versus the number of control points along each in-plane direction and compared with the reference solution \(1.8248\times 10^{-5}\) reported in [2]. As in the previous test cases, all quadratic solid-shell elements present similar behaviors, representing a very significant improvement over the standard quadratic element. In this case, we have to note however that the standard cubic element shows a slightly superior performance.

5 Conclusions

In this paper, we have presented a new approach to alleviate shear and membrane locking effects in solid shells. The approach is based on local projections of strains onto coarser polynomial spaces. We have explored two different formulations based on this method. The first one is inspired by the ANS method and uses different projection spaces for the different strain components, while in the second formulation, the same projection is used for all strain components. Both formulations have shown very good performance in terms of predicted displacements in all numerical tests with the same level of accuracy as the ANS formulation presented in [7]. The computed stress resultants also present small errors and oscillations.

The advantages of the proposed formulations are their simplicity and numerical efficiency, requiring much fewer function evaluations at the element level than the ANS method. Comparing the two presented formulations, the second one is even simpler and more efficient than the first one. This formulation requires only a standard Cartesian-based element formulation and can be integrated into existing solid implementations very easily. In this paper, we restricted to linear elastic problems. The extension to nonlinear mechanics is planned as future work, as well as the treatment of the curvature-thickness locking phenomenon, that may appear in certain configurations for very thin structures.