1 Introduction

The finite element method, as a powerful numerical analysis tool, is widely used in numerous fields including modeling crack propagation (Nguyen et al. 2022), fluid problems (Vu-Huu et al. 2022), damage identification (Ghannadi 2023), and thermo-metallo-mechanical analyses (Ling 2023). At the same time, the finite element method also forms one of the foundational theories of CAE software. The accuracy of analysis, computational efficiency, and software usability are the three key indicators for evaluating the performance of CAE software, directly determining its practical value in engineering applications (Gao et al. 2019). Currently, the theoretical research of the Finite Element Method can generally meet the requirements of engineering applications in terms of analysis accuracy, and the deficiencies in computational efficiency can be compensated for by the development of computing devices and parallel computing technologies. From a practical perspective, the bottleneck in the application of the finite element method lies in the usability of the software. For instance, modeling the combination of shells and solids as shown in Fig. 1 may lead to compatibility issues due to different nodal parameters of the elements, potentially resulting in analytical challenges if not addressed appropriately (Karpik et al. 2023; Lu et al. 2023).

Currently, there are two main approaches to solving the problem of incompatible nodal parameters in finite elements of different dimensions in engineering. The first approach involves adding additional constraints, such as MPC constraints, to establish a correspondence between different nodal parameters (Lu 2023). The second approach is to attach shell or beam elements to solid elements, enabling them to be coupled with external beam/shell elements at nodes. However, both methods have limitations. The first method requires analysts to have a solid theoretical foundation and increases the computational complexity of the analysis process, while the second method is primarily an empirical approximation and lacks strong theoretical support (Wang and Shi 2017). Therefore, the existing methods may not effectively solve the problem of incompatible nodal parameters in finite elements of different dimensions.

Fig. 1
figure 1

Shell-solid hybrid model

The difficulty in resolving the compatibility issues of nodal parameters between elements of different dimensions in engineering is not merely superficial, but stems from the fundamental inadequacy of finite element theory. To completely eliminate compatibility issues between elements of different dimensions, the most fundamental approach is to establish a multidimensional compatible finite element system based on unified nodal parameters (Yang et al. 2021).

In previous research on multi-dimensional compatible finite element systems, the more mature theoretical systems mainly include the absolute nodal coordinate formulation (ANCF) (Shabana and Mikkola 2003) and solid elements with rotational degrees of freedom.

The ANCF was originally proposed relative to the rotating frame of reference formulation of dynamics of multibody systems and is a type of finite element system constructed using unified nodal parameters (Gerstmayr et al. 2013). Although this method theoretically solves the compatibility problem between finite elements of different dimensions, it expands the nodal parameters of the element to 12, resulting in a significant increase in computational time and seriously affecting computational efficiency. Furthermore, this method’s computational accuracy decreases in situations with small deformation fields, such as in microelectronic manufacturing equipment (Otsuka et al. 2022).

For traditional solid elements, they only contain translational nodal parameters and do not include rotational nodal parameters, making it impossible to couple with beam, shell, and other elements at nodes. Therefore, adding rotational degrees of freedom to solid elements is an intuitive approach to solving the compatibility problem.

Previous researchers have conducted extensive research on solid elements with rotational degrees of freedom. Yunus et al. (1991) and Pawlak et al. (1991) were the first to propose hexahedral elements (HEX8R and HEX8RX) and tetrahedral elements (TET4R and TET4RX) with rotational degrees of freedom, and these elements’ performance was better than that of elements with only translational degrees of freedom under the same shape, as demonstrated by the patch test. Sze and Ghali (1993) and Sze and Pan (2000) introduced a hybrid eight-node brick element (HBR) with rotational degrees of freedom and a hybrid stress four-node tetrahedral element (HT4R18 and HT4R14) based on Allman (1984) displacement interpolation. In recent years, Hua and To (2007) proposed a mixed variational principle and derived two simple and effective tetrahedral finite elements with rotational degrees of freedom. Meftah et al. (2013) proposed a new three-dimensional 6-node solid element (SFR6) based on the concept of space fiber rotation (SFR). Then, Meftah et al. (2015) proposed total Lagrangian formulations for hexahedral elements (SFR8 and SFR8I) based on the SFR concept, improving accuracy in linear elasticity problems. However, the coordinating element SFR8 is too rigid and yields values far beyond the reference solution. Zouari et al. (2018) established updated Lagrangian formulations for two 8-node hexahedral elements with rotational DOF based on Meftah, achieving higher numerical accuracy in analysis than total Lagrangian formulations. Nodargi et al. (2016) proposed a mixed tetrahedral element(HWT4R14) with rotational degrees of freedom for large-displacement analysis of inelastic structures. Boujelben and Ibrahimbegovic (2017) established an eight-node solid element with rotational degrees of freedom using reasonable variational formulas and a non-conforming mode method. Shang et al. (2020, 2021) developed an 8-node hexahedral solid element with rotational DOF using the modified couple stress theory, exhibiting high accuracy and insensitivity to mesh distortion.

In the past three decades, extensive research has been conducted by scholars to improve the accuracy of hexahedral solid elements. Simo et al. (1993) proposed an improved version of assumed enhanced strain tri-linear elements, which can better simulate 3D finite deformation problems. Long et al. (1999a, b) introduced a novel natural coordinate system, which comprises four coordinate components, known as the quadrilateral area coordinate method (QACM). Li et al. (2008) proposed the hexahedral volume coordinate method (HVCM) to address orientation defects caused by non-local coordinate systems, leading to the development of three new incompatible 8-node hexahedral elements (HVCC8, HVCC8-ES, and HVCC8-EM). While showing better performance and insensitivity to mesh distortion than conventional isoparametric elements, these elements failed to strictly pass the constant stress/strain patch test, requiring further discussion on their convergence. Hadjesfandiari and Dargush (2011) proposed a new theory of solid mechanics - the theory of coupled stress. Hu et al. (2019) introduced the 8-node nonconforming solid element H8i9, which is simple to compute and provides similar calculated values to the reference solution for large deformations or moderate mesh coarseness. Zhou et al. (2017) developed the 8-node, 24-DOF hexahedral element US-ATFH8 using the virtual work principle. Established in a locally oblique coordinate system, this element exhibits a linear relationship with Cartesian coordinates and does not require a Jacobi determinant for stiffness matrix calculation, making it insensitive to mesh distortion. Krysl (2016) proposed the solid element H8 MSGSO based on the optimization of stabilization energy, which retains good accuracy even with coarse mesh, although it typically requires more than two layers of elements in the thickness direction.

As an important component of multidimensional compatible finite element systems, this paper proposes an 8-node solid element (Solid-H8-TC) with rotational degrees of freedom based on the “trial-correction” displacement interpolation method. The proposed Solid-H8-TC element has six nodal parameters, including three translational and rotational displacements. The displacement field of the Solid-H8-TC element is trialed using trilinear interpolation and then corrected using cubic interpolation. The second section of this paper provides a theoretical derivation of the trial-correction displacement interpolation and verifies its convergence through the patch test. The third section mainly uses a series of numerical examples to verify the performance (convergence, accuracy, compatibility and application in orthotropic composite materials) of the Solid-H8-TC element. Finally, conclusions are drawn in the fourth section.

2 Theory Formulization

Figure 2 illustrates the rotation angle of a solid element. In the case of a rigid element, angles \({\theta _{x1}}\) and \({\theta _{x2}}\) are identical, as depicted in Fig. 2a. As a result, any of these rotations can be utilized to define the rotation angle of rigid rotation, denoted as \({\theta _x}\). In the same way, the true rotation angles \({\theta _y}\) and \({\theta _z}\) can be expressed as follows:

Fig. 2
figure 2

Definition of true rotation angle

$$\begin{aligned} \begin{array}{c} {\theta _x} = {\theta _{x1}} = \frac{{\partial w}}{{\partial y}} = {\theta _{x2}} = - \frac{{\partial v}}{{\partial z}}\\ {\theta _y} = {\theta _{y1}} = \frac{{\partial u}}{{\partial z}} = {\theta _{y2}} = - \frac{{\partial w}}{{\partial x}}\\ {\theta _z} = {\theta _{z1}} = \frac{{\partial v}}{{\partial x}} = {\theta _{z2}} = - \frac{{\partial u}}{{\partial y}} \end{array}. \end{aligned}$$
(1)

For the deformable element, angles \({\theta _{x1}}\) and \({\theta _{x2}}\) exhibit different values as shown in Fig. 2b, and its true rotation angle \({\theta _x}\) is expressed as the Eq. 2 shown below. Similarly, we can obtain the following conclusion: the true rotation angles \({\theta _y}\) and \({\theta _z}\) can be determined as follows:

$$\begin{aligned} \begin{array}{c} {\theta _x} = \frac{1}{2}\left({\theta _{x1}} + {\theta _{x2}}\right) = \frac{1}{2}(\frac{{\partial w}}{{\partial y}} - \frac{{\partial v}}{{\partial z}})\\ {\theta _y} = \frac{1}{2}\left({\theta _{y1}} + {\theta _{y2}}\right) = \frac{1}{2}\left(\frac{{\partial u}}{{\partial z}} - \frac{{\partial w}}{{\partial x}}\right)\\ {\theta _z} = \frac{1}{2}\left({\theta _{z1}} + {\theta _{z2}}\right) = \frac{1}{2}\left(\frac{{\partial v}}{{\partial \mathrm{{x}}}} - \frac{{\partial u}}{{\partial y}}\right) \end{array}. \end{aligned}$$
(2)

In order to construct the shape functions, the physical coordinate system of an 8-node hexahedral element shown in Fig. 3a is represented by the natural coordinate system shown in Fig. 3b, and the coordinate transformation can be described as:

Fig. 3
figure 3

8-node hexahedral element

$$\begin{aligned} \begin{array}{c} x(\xi ,\eta ,\zeta ) = \mathbf{{N}}(\xi ,\eta ,\zeta ){\mathbf{{x}}_e}\\ y(\xi ,\eta ,\zeta ) = \mathbf{{N}}(\xi ,\eta ,\zeta ){\mathbf{{y}}_e}\\ z(\xi ,\eta ,\zeta ) = \mathbf{{N}}(\xi ,\eta ,\zeta ){\mathbf{{z}}_e} \end{array}, \end{aligned}$$
(3)

where \({x_e}\), \({y_e}\) and \({z_e}\) are vectors of nodal coordinates along the x-, y- and z-axes, respectively, and \(N(\xi ,\eta ,\zeta )\) is the matrix of shape function, which can be obtained by using the following formula:

$$\begin{aligned} \begin{array}{c} N(\xi ,\eta ,\zeta ) = [{n_1},{n_2},{n_3},{n_4},{n_5},{n_6},{n_7},{n_8}]\\ n_{i} = \frac{1}{8}(1 + \xi _{i} \xi )(1 + \eta _{i} \eta )(1 + \zeta _{i} \zeta ) \end{array}. \end{aligned}$$
(4)

where \((\xi _{i},\eta _{i},\zeta _{i})\) represents the natural coordinates of node i.

2.1 Displacement Interpolation

Each node \({p_i}\) (\(i = 1 \sim 8\)) in the hexahedral element has six nodal parameters, which are three translational displacements \({\mathrm{{u}}_i}\), \({\mathrm{{v}}_i}\) and \({\mathrm{{w}}_i}\) three true rotation angles \(\theta _x^i\), \(\theta _y^i\) and \(\theta _z^i\). These nodal parameters can be utilized by the displacement fields \(u\left( {\xi ,\eta ,\zeta } \right)\), \(v\left( {\xi ,\eta ,\zeta } \right)\) and \(w\left( {\xi ,\eta ,\zeta } \right)\) for interpolation.

This paper presents a new idea of constructing a trial-correction interpolation formula for establishing the interpolation of the displacement fields, in which the displacement fields \(u\left( {\xi ,\eta ,\zeta } \right)\), \(v\left( {\xi ,\eta ,\zeta } \right)\) and \(w\left( {\xi ,\eta ,\zeta } \right)\) are a combination of a trial term (superscript t) and a correction term (subscript c), i.e.

$$\begin{aligned} \begin{array}{c} u\left( {\xi ,\eta ,\zeta } \right) = {u^t}\left( {\xi ,\eta ,\zeta } \right) + {u^c}\left( {\xi ,\eta ,\zeta } \right) \\ v\left( {\xi ,\eta ,\zeta } \right) = {v^t}\left( {\xi ,\eta ,\zeta } \right) + {v^c}\left( {\xi ,\eta ,\zeta } \right) \\ w\left( {\xi ,\eta ,\zeta } \right) = {w^t}\left( {\xi ,\eta ,\zeta } \right) + {w^c}\left( {\xi ,\eta ,\zeta } \right) \end{array}, \end{aligned}$$
(5)

where \({u^t}\left( {\xi ,\eta ,\zeta } \right)\), \({v^t}\left( {\xi ,\eta ,\zeta } \right)\) and \({w^t}\left( {\xi ,\eta ,\zeta } \right)\) can be represented as:

$$\begin{aligned} \begin{array}{l} {u^t}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{N}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{u}}_{e}} = \mathbf{{N}}_u^t\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{d}}_{e}}\\ {v^t}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{N}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{v}}_{e}} = \mathbf{{N}}_v^t\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{d}}_{e}}\\ {w^t}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{N}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{w}}_{e}} = \mathbf{{N}}_w^t\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{d}}_{e}} \end{array}, \end{aligned}$$
(6)

and \({\mathbf{{d}}_e}\) is the nodal parameter vector, can be stated as:

$$\begin{aligned} \begin{array}{l} {\mathbf{{d}}_e} = {\left[ {\begin{array}{*{20}{c}} {\mathbf{{d}}_1}&{}{\mathbf{{d}}_2}&{}{\mathbf{{d}}_3}&{}{\mathbf{{d}}_4} &{}{\mathbf{{d}}_5}&{}{\mathbf{{d}}_6}&{}{\mathbf{{d}}_7}&{}{\mathbf{{d}}_8} \end{array}} \right] ^T}\\ {\mathbf{{d}}_i}^{} = {\left[ {\begin{array}{*{20}{c}} {{u_i}}&{}{{v_i}}&{}{{w_i}}&{}{\theta _i^x}&{}{\theta _i^y}&{}{\theta _i^z} \end{array}} \right] } \end{array}. \end{aligned}$$
(7)

The shape functions \(\mathbf{{N}}_u^t\left( {\xi ,\eta ,\zeta } \right)\), \(\mathbf{{N}}_v^t\left( {\xi ,\eta ,\zeta } \right)\) and \(\mathbf{{N}}_w^t\left( {\xi ,\eta ,\zeta } \right)\) are constructed in the following manner:

$$\begin{aligned} \begin{array}{l} \mathbf{{N}}_u^t\left( {\xi ,\eta ,\zeta } \right) = \left[ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\mathbf{{N}}_{u1}^t}&{}{\mathbf{{N}}_{u2}^t} \end{array}}&{}{\mathbf{{N}}_{u3}^t}&{}{\mathbf{{N}}_{u4}^t}&{}{\mathbf{{N}}_{u5}^t} \end{array}}&{}{\mathbf{{N}}_{u6}^t}&{}{\mathbf{{N}}_{u7}^t}&{}{\mathbf{{N}}_{u8}^t} \end{array}} \right] \\ \mathbf{{N}}_{ui}^t = \left[ {\begin{array}{*{20}{c}} {{n_i}}&{}0&{}0&{}0&{}0&{}0 \end{array}} \right] \\ \mathbf{{N}}_v^t\left( {\xi ,\eta ,\zeta } \right) = \left[ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\mathbf{{N}}_{v1}^t}&{}{\mathbf{{N}}_{v2}^t} \end{array}}&{}{\mathbf{{N}}_{v3}^t}&{}{\mathbf{{N}}_{v4}^t}&{}{\mathbf{{N}}_{v5}^t} \end{array}}&{}{\mathbf{{N}}_{v6}^t}&{}{\mathbf{{N}}_{v7}^t}&{}{\mathbf{{N}}_{v8}^t} \end{array}} \right] \\ \mathbf{{N}}_{vi}^t = \left[ {\begin{array}{*{20}{c}} 0&{}{{n_i}}&{}0&{}0&{}0&{}0 \end{array}} \right] \\ \mathbf{{N}}_w^t\left( {\xi ,\eta ,\zeta } \right) = \left[ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {\mathbf{{N}}_{w1}^t}&{}{\mathbf{{N}}_{w2}^t} \end{array}}&{}{\mathbf{{N}}_{w3}^t}&{}{\mathbf{{N}}_{w4}^t}&{}{\mathbf{{N}}_{w5}^t} \end{array}}&{}{\mathbf{{N}}_{w6}^t}&{}{\mathbf{{N}}_{w7}^t}&{}{\mathbf{{N}}_{w8}^t} \end{array}} \right] \\ \mathbf{{N}}_{wi}^t = \left[ {\begin{array}{*{20}{c}} 0&{}0&{}{{n_i}}&{}0&{}0&{}0 \end{array}} \right] \end{array}. \end{aligned}$$
(8)

Equation (2) provides a method to calculate the true rotation angle induced by the trial term, given by:

$$\begin{aligned} \begin{array}{l} \theta _{\mathrm{{x}}}^t = \frac{1}{2}\left(\frac{{\partial {w^t}}}{{\partial y}} - \frac{{\partial {v^t}}}{{\partial z}}\right) = \mathbf{{B}}_x^t(\xi ,\eta ,\zeta ){\mathbf{{d}}_e}\\ \theta _y^t = \frac{1}{2}\left(\frac{{\partial {u^t}}}{{\partial z}} - \frac{{\partial {w^t}}}{{\partial x}}\right) = \mathbf{{B}}_y^t(\xi ,\eta ,\zeta ){\mathbf{{d}}_e}\\ \theta _{\mathrm{{z}}}^t = \frac{1}{2}\left(\frac{{\partial {v^t}}}{{\partial \mathrm{{x}}}} - \frac{{\partial {u^t}}}{{\partial y}}\right) = \mathbf{{B}}_z^t(\xi ,\eta ,\zeta ){\mathbf{{d}}_e} \end{array}, \end{aligned}$$
(9)

where \(\mathbf{{B}}_x^t(\xi ,\eta ,\zeta )\), \(\mathbf{{B}}_y^t(\xi ,\eta ,\zeta )\)and \(\mathbf{{B}}_z^t(\xi ,\eta ,\zeta )\) are specified as:

$$\begin{aligned} \begin{array}{l} \mathbf{{B}}_{x\mathrm{{i}}}^t(\xi ,\eta ,\zeta ) = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{xi,1}^t}&{}{\mathbf{{B}}_{xi,2}^t}&{}{\mathbf{{B}}_{xi,3}^t}&{}{\mathbf{{B}}_{xi,4}^t}&{}{\mathbf{{B}}_{xi,5}^t}&{}{\mathbf{{B}}_{xi,6}^t}&{}{\mathbf{{B}}_{xi,7}^t}&{}{\mathbf{{B}}_{xi,8}^t} \end{array}} \right] \\ \mathbf{{B}}_{xi,j}^t = \left[ {\begin{array}{*{20}{c}} 0&{}{ - \frac{{\partial {n_j}}}{{2\partial z}}}&{}{\frac{{\partial {n_j}}}{{2\partial y}}}&{}0&{}0&{}0 \end{array}} \right] \\ \mathbf{{B}}_{yi}^t(\xi ,\eta ,\zeta ) = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{yi,1}^t}&{}{\mathbf{{B}}_{yi,2}^t}&{}{\mathbf{{B}}_{yi,3}^t}&{}{\mathbf{{B}}_{yi,4}^t}&{}{\mathbf{{B}}_{yi,5}^t}&{}{\mathbf{{B}}_{yi,6}^t}&{}{\mathbf{{B}}_{yi,7}^t}&{}{\mathbf{{B}}_{yi,8}^t} \end{array}} \right] \\ \mathbf{{B}}_{yi,j}^t = \left[ {\begin{array}{*{20}{c}} {\frac{{\partial {n_j}}}{{2\partial z}}}&{}0&{}{ - \frac{{\partial {n_j}}}{{2\partial x}}}&{}0&{}0&{}0 \end{array}} \right] \\ \mathbf{{B}}_{zi}^t(\xi ,\eta ,\zeta ) = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{zi,1}^t}&{}{\mathbf{{B}}_{zi,2}^t}&{}{\mathbf{{B}}_{zi,3}^t}&{}{\mathbf{{B}}_{zi,4}^t}&{}{\mathbf{{B}}_{zi,5}^t}&{}{\mathbf{{B}}_{zi,6}^t}&{}{\mathbf{{B}}_{zi,7}^t}&{}{\mathbf{{B}}_{zi,8}^t} \end{array}} \right] \\ \mathbf{{B}}_{zi,j}^t = \left[ {\begin{array}{*{20}{c}} { - \frac{{\partial {n_j}}}{{2\partial y}}}&{}{\frac{{\partial {n_j}}}{{2\partial x}}}&{}0&{}0&{}0&{}0 \end{array}} \right] \end{array}. \end{aligned}$$
(10)

Equation (3) provides a way to compute the partial derivatives in Eq. (10), which can be expressed as follows:

$$\begin{aligned} \begin{array}{l} \left[ {\begin{array}{*{20}{c}} {\frac{{\partial {n_i}}}{{\partial y}}}\\ {\frac{{\partial {n_i}}}{{\partial x}}}\\ {\frac{{\partial {n_i}}}{{\partial z}}} \end{array}} \right] = {\mathbf{{J}}^{ - 1}}\left( {\begin{array}{*{20}{c}} \xi &{}\eta &{}\zeta \end{array}} \right) \left[ {\begin{array}{*{20}{c}} {\frac{{\partial {{n_i}}}}{{\partial \xi }}}\\ {\frac{{\partial {{n_i}}}}{{\partial \eta }}}\\ {\frac{{\partial {{n_i}}}}{{\partial \zeta }}} \end{array}} \right] \end{array}. \end{aligned}$$
(11)

and \(\mathbf{{J}}\left( {\xi ,\eta ,\zeta } \right)\) is the Jacobi matrix.

Thus, for the six parameters of node, it is not difficult to arrive at the following expression:

$$\begin{aligned} \begin{array}{l} u_i^t\left( {\xi ,\eta ,\zeta } \right) = {u^t}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = {u_i}\\ v_i^t\left( {\xi ,\eta ,\zeta } \right) = {v^t}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = {v_i}\\ w_i^t\left( {\xi ,\eta ,\zeta } \right) = {w^t}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = {w_i}\\ \theta _{xi}^t = \theta _x^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \mathbf{{B}}_x^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) {\mathbf{{d}}_e}\\ \theta _{yi}^t = \theta _y^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \mathbf{{B}}_y^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) {\mathbf{{d}}_e}\\ \theta _{zi}^t = \theta _z^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \mathbf{{B}}_z^t\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) {\mathbf{{d}}_e} \end{array}, \end{aligned}$$
(12)

here, \({\xi _i}\), \({\eta _i}\) and \({\zeta _i}\) represent the natural coordinates of node \({p_i}\), and the correction terms \(u_i^c\), \(v_i^c\), \(w_i^c\), \(\theta _{xi}^c\), \(\theta _{yi}^c\) and \(\theta _{zi}^c\) must satisfy the following conditions:

$$\begin{aligned} \begin{array}{l} u_i^c = {u_i} - u_i^t = 0\\ v_i^c = {v_i} - v_i^t = 0\\ w_i^c = {w_i} - w_i^t = 0\\ \theta _{xi}^c = {\theta _{xi}} - \theta _{xi}^t = \mathbf{{B}}_{xi}^c{\mathbf{{d}}_e}\\ \theta _{yi}^c = {\theta _{yi}} - \theta _{yi}^t = \mathbf{{B}}_{yi}^c{\mathbf{{d}}_e}\\ \theta _{zi}^c = {\theta _{zi}} - \theta _{zi}^t = \mathbf{{B}}_{zi}^c{\mathbf{{d}}_e} \end{array}, \end{aligned}$$
(13)

with \(\mathbf{{B}}_{xi}^c\), \(\mathbf{{B}}_{yi}^c\) and \(\mathbf{{B}}_{zi}^c\) given as:

$$\begin{aligned} \begin{array}{l} \mathbf{{B}}_{\mathrm{{xi}}}^c = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{xi,1}^c}&{}{\mathbf{{B}}_{xi,2}^c}&{}{\mathbf{{B}}_{xi,3}^c}&{}{\mathbf{{B}}_{xi,4}^c} &{}{\mathbf{{B}}_{xi,5}^c}&{}{\mathbf{{B}}_{xi,6}^c}&{}{\mathbf{{B}}_{xi,7}^c}&{}{\mathbf{{B}}_{xi,8}^c} \end{array}} \right] \\ \mathbf{{B}}_{xi,j}^c = \left[ {\begin{array}{*{20}{c}} 0&{}{\frac{{d{n_j}}}{{2dz}}}&{}{ - \frac{{d{n_j}}}{{2dy}}}&{}{{n_j} \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }&{}0&{}0 \end{array}} \right] \\ \mathbf{{B}}_{yi}^c = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{yi,1}^c}&{}{\mathbf{{B}}_{yi,2}^c}&{}{\mathbf{{B}}_{yi,3}^c}&{} {\mathbf{{B}}_{yi,4}^c}&{}{\mathbf{{B}}_{yi,5}^c}&{}{\mathbf{{B}}_{yi,6}^c}&{}{\mathbf{{B}}_{yi,7}^c}&{}{\mathbf{{B}}_{yi,8}^c} \end{array}} \right] \\ \mathbf{{B}}_{yi,j}^c = \left[ {\begin{array}{*{20}{c}} { - \frac{{d{n_j}}}{{2dz}}}&{}0&{}{\frac{{d{n_j}}}{{2dx}}}&{}0&{}{{n_j} \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }&{}0 \end{array}} \right] \\ \mathbf{{B}}_{zi}^c = \left[ {\begin{array}{*{20}{c}} {\mathbf{{B}}_{zi,1}^c}&{}{\mathbf{{B}}_{zi,2}^c}&{}{\mathbf{{B}}_{zi,3}^c}&{} {\mathbf{{B}}_{zi,4}^c}&{}{\mathbf{{B}}_{zi,5}^c}&{}{\mathbf{{B}}_{zi,6}^c}&{}{\mathbf{{B}}_{zi,7}^c}&{}{\mathbf{{B}}_{zi,8}^c} \end{array}} \right] \\ \mathbf{{B}}_{zi,j}^c = \left[ {\begin{array}{*{20}{c}} {\frac{{d{n_j}}}{{2dy}}}&{}{ - \frac{{d{n_j}}}{{2dx}}}&{}0&{}0&{}0&{}{{n_j} \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \end{array}. \end{aligned}$$
(14)

Using trinomial cubic interpolation to express \(u^c\left( {\xi ,\eta ,\zeta } \right)\), \(v^c\left( {\xi ,\eta ,\zeta } \right)\)and \(w^c\left( {\xi ,\eta ,\zeta } \right)\):

$$\begin{aligned} \begin{array}{l} {u^\mathrm{{c}}}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) \alpha \\ {v^c}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) \beta \\ {w^c}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) \gamma \end{array}, \end{aligned}$$
(15)

here, \(\mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right)\) represents a row vector composed of 32 interpolation basis functions with filled cells as shown in Fig. 4. And \(\alpha\), \(\beta\), \(\gamma\) are the vectors of undetermined coefficients.

Fig. 4
figure 4

Interpolation basis functions for displacement correction terms in hexahedral solid elements

In order to find the undetermined coefficients \(\alpha\), \(\beta\) and \(\gamma\) at node \({p_i}\), the following equations are established:

$$\begin{aligned} \begin{array}{l} \left[ {\begin{array}{*{20}{c}} {\mathbf{{P}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\xi }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\eta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\zeta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \alpha = \left[ {\begin{array}{*{20}{c}} {{u^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_\xi ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_\eta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_\zeta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} 1&{}0\\ 0&{}{\mathbf{{J}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \left[ {\begin{array}{*{20}{c}} {{u^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \\ \left[ {\begin{array}{*{20}{c}} {\mathbf{{P}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\xi }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\eta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\zeta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \beta = \left[ {\begin{array}{*{20}{c}} {{v^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_\xi ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_\eta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_\zeta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} 1&{}0\\ 0&{}{\mathbf{{J}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \left[ {\begin{array}{*{20}{c}} {{v^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \\ \left[ {\begin{array}{*{20}{c}} {\mathbf{{P}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\xi }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\eta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {{\mathbf{{P}}_\zeta }\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \gamma = \left[ {\begin{array}{*{20}{c}} {{w^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_\xi ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_\eta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_\zeta ^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} 1&{}0\\ 0&{}{\mathbf{{J}}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \left[ {\begin{array}{*{20}{c}} {{w^c}\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] \end{array}, \end{aligned}$$
(16)

with the subscripts \(\xi\), \(\eta\), \(\zeta\), x, y and z representing the corresponding partial derivatives. Supposing that the correction terms \(u_{}^c\left( {\xi ,\eta ,\zeta } \right)\), \(\mathrm{{v}}_{}^c\left( {\xi ,\eta ,\zeta } \right)\) and \(\mathrm{{w}}_{}^c\left( {\xi ,\eta ,\zeta } \right)\) exhibit stiffness characteristic at nodes, i.e:

$$\begin{aligned} \begin{array}{l} u_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = v_y^c \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = w_z^c \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = 0\\ - v_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = w_y^c \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \theta _x^c\\ - w_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = u_z^c \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \theta _y^c\\ - u_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = v_x^c \left( {{\xi _i},{\eta _i},{\zeta _i}} \right) = \theta _z^c \end{array}. \end{aligned}$$
(17)

Based on Eq. (13), it does not fail to re-express Eq. (15) as follows:

$$\begin{aligned} \begin{array}{l} \left[ {\begin{array}{*{20}{c}} {u_i^c}\\ {u_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {u_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \mathbf{{S}}_i^u{\mathbf{{d}}_e},\left[ {\begin{array}{*{20}{c}} {v_i^c}\\ {v_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {v_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \mathbf{{S}}_i^v{\mathbf{{d}}_e},\\ \left[ {\begin{array}{*{20}{c}} {w_i^c}\\ {w_x^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_y^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) }\\ {w_z^c\left( {{\xi _i},{\eta _i},{\zeta _i}} \right) } \end{array}} \right] = \mathbf{{S}}_i^w{\mathbf{{d}}_e} \end{array}, \end{aligned}$$
(18)

where

$$\begin{aligned} \begin{array}{l} \mathbf{{S}}_i^u = \left[ {\begin{array}{*{20}{c}} 0\\ 0\\ {\mathbf{{B}}_{zi}^c}\\ { - \mathbf{{B}}_{yi}^c} \end{array}} \right] ,\mathbf{{S}}_i^v = \left[ {\begin{array}{*{20}{c}} 0\\ { - \mathbf{{B}}_{zi}^c}\\ 0\\ {\mathbf{{B}}_{xi}^c} \end{array}} \right] ,\mathbf{{S}}_i^w = \left[ {\begin{array}{*{20}{c}} 0\\ {\mathbf{{B}}_{yi}^c}\\ { - \mathbf{{B}}_{xi}^c}\\ 0 \end{array}} \right] \end{array}. \end{aligned}$$
(19)

Substituting Eq. (19) into Eq. (16), which are as follows:

$$\begin{aligned} \begin{array}{l} {\mathbf{{A}}_i}\alpha = \mathbf{{J}}_i^e\mathbf{{S}}_i^u{\mathbf{{d}}_e}\\ {\mathbf{{A}}_i}\beta = \mathbf{{J}}_i^e\mathbf{{S}}_i^v{\mathbf{{d}}_e}\\ {\mathbf{{A}}_i}\gamma = \mathbf{{J}}_i^e\mathbf{{S}}_i^w{\mathbf{{d}}_e} \end{array}. \end{aligned}$$
(20)

Rewriting as simultaneous equations, Eq. (20) can be converted into:

$$\begin{aligned} \begin{array}{l} \mathbf{{A}}\alpha = {\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_u}{\mathbf{{d}}_e}\\ \mathbf{{A}}\beta = {\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_v}{\mathbf{{d}}_e}\\ \mathbf{{A}}\gamma = {\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_w}{\mathbf{{d}}_e} \end{array}, \end{aligned}$$
(21)

where

$$\begin{aligned} \begin{array}{l} \mathbf{{A}} = \left[ {\begin{array}{*{20}{c}} {{\mathbf{{A}}_1}}\\ {{\mathbf{{A}}_2}}\\ {{\mathbf{{A}}_3}}\\ {{\mathbf{{A}}_4}}\\ {{\mathbf{{A}}_5}}\\ {{\mathbf{{A}}_6}}\\ {{\mathbf{{A}}_7}}\\ {{\mathbf{{A}}_8}} \end{array}} \right] ,{\mathbf{{J}}_e} = \left[ {\begin{array}{*{20}{c}} {\mathbf{{J}}_1^e}&{}0&{}0&{}0&{}0&{}0&{}0&{}0\\ 0&{}{\mathbf{{J}}_2^e}&{}0&{}0&{}0&{}0&{}0&{}0\\ 0&{}0&{}{\mathbf{{J}}_3^e}&{}0&{}0&{}0&{}0&{}0\\ 0&{}0&{}0&{}{\mathbf{{J}}_4^e}&{}0&{}0&{}0&{}0\\ 0&{}0&{}0&{}0&{}{\mathbf{{J}}_5^e}&{}0&{}0&{}0\\ 0&{}0&{}0&{}0&{}0&{}{\mathbf{{J}}_6^e}&{}0&{}0\\ 0&{}0&{}0&{}0&{}0&{}0&{}{\mathbf{{J}}_7^e}&{}0\\ 0&{}0&{}0&{}0&{}0&{}0&{}0&{}{\mathbf{{J}}_8^e} \end{array}} \right] \\ {\mathbf{{S}}_u} = \left[ {\begin{array}{*{20}{c}} {\mathbf{{S}}_u^1}\\ {\mathbf{{S}}_u^2}\\ {\mathbf{{S}}_u^3}\\ {\mathbf{{S}}_u^4}\\ {\mathbf{{S}}_u^5}\\ {\mathbf{{S}}_u^6}\\ {\mathbf{{S}}_u^7}\\ {\mathbf{{S}}_u^8} \end{array}} \right] ,\begin{array}{*{20}{c}} {} \end{array}{\mathbf{{S}}_v} = \left[ {\begin{array}{*{20}{c}} {\mathbf{{S}}_v^1}\\ {\mathbf{{S}}_v^2}\\ {\mathbf{{S}}_v^3}\\ {\mathbf{{S}}_v^4}\\ {\mathbf{{S}}_v^5}\\ {\mathbf{{S}}_v^6}\\ {\mathbf{{S}}_v^7}\\ {\mathbf{{S}}_v^8} \end{array}} \right] ,\begin{array}{*{20}{c}} {} \end{array}{\mathbf{{S}}_w} = \left[ {\begin{array}{*{20}{c}} {\mathbf{{S}}_w^1}\\ {\mathbf{{S}}_w^2}\\ {\mathbf{{S}}_w^3}\\ {\mathbf{{S}}_w^4}\\ {\mathbf{{S}}_w^5}\\ {\mathbf{{S}}_w^6}\\ {\mathbf{{S}}_w^7}\\ {\mathbf{{S}}_w^8} \end{array}} \right] \end{array}. \end{aligned}$$
(22)

By solving Eq. (21), the interpolation coefficients can be given as:

$$\begin{aligned} \begin{array}{l} \alpha = {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_u}{\mathbf{{d}}_e}\\ \beta = {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_v}{\mathbf{{d}}_e}\\ \gamma = {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_w}{\mathbf{{d}}_e} \end{array}. \end{aligned}$$
(23)

Substituting Eq. (23) into Eq. (15), which are as follows:

$$\begin{aligned} \begin{array}{l} {u^c}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{S_u}{\mathbf{{d}}_e}\\ {v^c}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{S_v}{\mathbf{{d}}_e}\\ {w^c}\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{S_w}{\mathbf{{d}}_e} \end{array}. \end{aligned}$$
(24)

Consequently, the shape functions are not difficult to arrive at the following expressions:

$$\begin{aligned} \begin{array}{l} \mathbf{{N}}_u^c\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_u}\\ \mathbf{{N}}_v^c\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_v}\\ \mathbf{{N}}_w^c\left( {\xi ,\eta ,\zeta } \right) = \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_{\mathrm{{e}}}}{\mathbf{{S}}_w} \end{array}. \end{aligned}$$
(25)

Substituting Eqs. (6), (24) and (25) into Eq. (5), and the following equation are obtained:

$$\begin{aligned} \begin{array}{l} {{u}}\left( {\xi ,\eta ,\zeta } \right) = \left( {\mathbf{{N}}_u^t \left( {\xi ,\eta ,\zeta } \right) } \right. + \left. {\mathbf{{N}}_u^c \left( {\xi ,\eta ,\zeta } \right) } \right) {\mathbf{{d}}_e}\\ {{v}}\left( {\xi ,\eta ,\zeta } \right) = \left( {\mathbf{{N}}_v^t \left( {\xi ,\eta ,\zeta } \right) } \right. + \left. {\mathbf{{N}}_v^c \left( {\xi ,\eta ,\zeta } \right) } \right) {\mathbf{{d}}_e}\\ {{w}}\left( {\xi ,\eta ,\zeta } \right) = \left( {\mathbf{{N}}_w^t \left( {\xi ,\eta ,\zeta } \right) } \right. + \left. {\mathbf{{N}}_w^c \left( {\xi ,\eta ,\zeta } \right) } \right) {\mathbf{{d}}_e} \end{array}. \end{aligned}$$
(26)

2.2 Stiffness Matrix

The elemental strain components can be obtained by taking the derivative of the displacement, and the strains can be defined as:

$$\begin{aligned} \left[ {\begin{array}{*{20}{c}} {{\varepsilon _x}}\\ {{\varepsilon _y}}\\ {{\varepsilon _z}}\\ {{\gamma _{xy}}}\\ {{\gamma _{xz}}}\\ {{\gamma _{yz}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\frac{{\partial u}}{{\partial x}}}\\ {\frac{{\partial v}}{{\partial y}}}\\ {\frac{{\partial w}}{{\partial z}}}\\ {\frac{{\partial u}}{{\partial x}} + \frac{{\partial v}}{{\partial y}}}\\ {\frac{{\partial u}}{{\partial x}} + \frac{{\partial w}}{{\partial z}}}\\ {\frac{{\partial v}}{{\partial y}} + \frac{{\partial w}}{{\partial z}}} \end{array}} \right] = \left( {{\mathbf{{B}}^t} + \left. {{\mathbf{{B}}^c}} \right) } \right. {\mathbf{{d}}_e}, \end{aligned}$$
(27)

where the strain matrices \({B^t}\) and \({B^c}\) correspond to, respectively, the trial and correction terms, which are specified as:

$$\begin{aligned} \mathbf{{B}}_{}^k = \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{N}}_u^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial x}}}\\ {\frac{{\partial \mathbf{{N}}_v^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial y}}}\\ {\frac{{\partial \mathbf{{N}}_w^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial z}}}\\ {\frac{{\partial \mathbf{{N}}_u^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial x}} + \frac{{\partial \mathbf{{N}}_v^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial y}}}\\ {\frac{{\partial \mathbf{{N}}_u^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial x}} + \frac{{\partial \mathbf{{N}}_w^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial z}}}\\ {\frac{{\partial \mathbf{{N}}_v^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial y}} + \frac{{\partial \mathbf{{N}}_z^k\left( {\xi ,\eta ,\zeta } \right) }}{{\partial z}}} \end{array}} \right] ,\begin{array}{*{20}{c}} {} \end{array}\left( {k = t,c} \right) , \end{aligned}$$
(28)

then one may calculate the partial derivatives with respect to x, y, and z as:

$$\begin{aligned}{} & {} \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial x}}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial y}}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial z}}} \end{array}} \right] = {\mathbf{{J}}^{ - 1}}\left( {\xi ,\eta ,\zeta } \right) \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \xi }}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \eta }}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{t}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \zeta }}} \end{array}} \right] ,\begin{array}{*{20}{c}} {} \end{array}\left( {l = u,v,w} \right) , \end{aligned}$$
(29)
$$\begin{aligned}{} & {} \begin{array}{l} \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial x}}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial y}}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial z}}} \end{array}} \right] = {\mathbf{{J}}^{ - 1}}\left( {\xi ,\eta ,\zeta } \right) \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \xi }}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \eta }}}\\ {\frac{{\partial \mathbf{{N}}_l^\mathrm{{c}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \zeta }}} \end{array}} \right] \\ = {\mathbf{{J}}^{ - 1}}\left( {\xi ,\eta ,\zeta } \right) \left[ {\begin{array}{*{20}{c}} {\frac{{\partial \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \xi }}}\\ {\frac{{\partial \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \eta }}}\\ {\frac{{\partial \mathbf{{P}}\left( {\xi ,\eta ,\zeta } \right) }}{{\partial \zeta }}} \end{array}} \right] {\mathbf{{A}}^{ - 1}}{\mathbf{{J}}_e}{\mathbf{{S}}_l},\begin{array}{*{20}{c}} {} \end{array}\left( {l = u,v,w} \right) . \end{array} \end{aligned}$$
(30)

The overall strain matrix B is expressed as:

$$\begin{aligned} \mathbf{{B}} = {\mathbf{{B}}^\mathrm{{t}}} + {\mathbf{{B}}^\mathrm{{c}}}. \end{aligned}$$
(31)

Based on the derived strain matrix \(\textbf{B}\), the stiffness matrix \({\mathbf{{K}}_{\mathrm{{e}}}}\) of the solid element can be calculated as follows:

$$\begin{aligned} {\mathbf{{K}}_{\mathrm{{e}}}} = \int _{{V_c}} {{\mathbf{{B}}^T}{} \mathbf{{c}}{} \mathbf{{B}}dV} = \int _{ - 1}^1 {\int _{ - 1}^1 {\int _{ - 1}^1 {{\mathbf{{B}}^T}{} \mathbf{{c}}{} \mathbf{{B}}\det \left[ J \right] d\xi d\eta d\zeta } } }, \end{aligned}$$
(32)

where \({V_c}\) is the integration domain of the element, and \(\mathbf{{c}}\) is the material constant matrix.

2.3 Patch Test

The patch test (Wang 2001; Macneal and Harder 1985) represents an important approach for evaluating the quality and convergence of finite element models. It plays a critical role in ensuring the accuracy and reliability of engineering design and analysis.

The displacement fields are set as shown in Table 1. Taking \({\varepsilon _x}\) as an example, by substituting the node coordinates of nodes \(p_i\) into the displacement function, the nodal displacement can be determined as follows:

Table 1 Displacement fields for constant strains
$$\begin{aligned} \begin{array}{l} {\mathrm{{d}}_i} = \left[ {\begin{array}{*{20}{c}} {{u_i}}\\ {{v_i}}\\ {{w_i}}\\ {{\theta _{xi}}}\\ {{\theta _{yi}}}\\ {{\theta _{zi}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{a_0} + {a_1}{x_{\mathrm{{i}}}}}\\ 0\\ 0\\ 0\\ { - \frac{{{a_1}}}{2}}\\ {\frac{{{a_1}}}{2}} \end{array}} \right] \end{array}. \end{aligned}$$
(33)

According to Eq. (33), it does not fail to prove that:

$$\begin{aligned} \begin{array}{l} {\mathbf{{S}}_u}{\mathbf{{d}}_e} = 0\\ {\mathbf{{S}}_{\mathrm{{v}}}}{\mathbf{{d}}_e} = 0\\ {\mathbf{{S}}_w}{\mathbf{{d}}_e} = 0 \end{array}. \end{aligned}$$
(34)

Bring Eq. (34) into Eq. (24) to get:

$$\begin{aligned} \begin{array}{l} {u^c}\left( {\xi ,\eta ,\zeta } \right) = 0\\ {v^c}\left( {\xi ,\eta ,\zeta } \right) = 0\\ {w^c}\left( {\xi ,\eta ,\zeta } \right) = 0 \end{array}. \end{aligned}$$
(35)

Thus, the displacement fields are then given by:

$$\begin{aligned} \begin{array}{l} u\left( {\xi ,\eta ,\zeta } \right) = {u^\mathrm{{t}}}\left( {\xi ,\eta ,\zeta } \right) \\ v\left( {\xi ,\eta ,\zeta } \right) = {v^t}\left( {\xi ,\eta ,\zeta } \right) \\ w\left( {\xi ,\eta ,\zeta } \right) = {w^t}\left( {\xi ,\eta ,\zeta } \right) \end{array}. \end{aligned}$$
(36)

From the above derivation, it can be seen that the Solid-H8-TC element is equivalent to the classical isoparametric element when \({\varepsilon _x}\) is constant. Similarly, the same conclusion can be drawn when the stress in other directions is constant. Consequently, the Solid-H8-TC element can pass the patch test.

3 Numerical Examples

3.1 Cantilever Beam Test

In order to study the efficiency of the Solid-H8-TC element in the field of orthotropic materials, a cantilever beam as shown in Fig. 5 was tested with a length of \(L=6.0\) and a rectangular cross-section \((b=0.1, h=2b)\). One end was fixed while a unit upward load was applied to the other end. Table 2 presents the computation time and normalized tip displacement results for isotropic materials \((E=1.0\times {10^7}, m=0.3)\), orthotropic materials \((E_1=4E_2=5E_3=1.0\times {10^7}, G_{12}=G_{13}=5G_{23}=3.846\times {10^6}, m_{12}=m_{13}=0.3, m_{23}=0.05)\) under different meshes. The results are compared with classical isoparametric elements, and the corresponding line plot is shown in Fig. 6. The reference value of the tip displacement under the two materials is 0.1081 (Meftah et al. 2015).

Fig. 5
figure 5

Cantilever beam model for orthotropic material testing

Fig. 6
figure 6

The normalized displacement at the end of the cantilever beam in orthotropic material testing

Table 2 Normalized results of dimensionless tip displacement of cantilever beam and its calculation time

It can be observed from Table 2 that the Solid-H8-TC element has higher accuracy and faster convergence rate compared to the Isoparametric element, regardless of whether the material is isotropic or orthotropic. For isotropic materials, when the individual mesh size of Solid-H8-TC element is 0.1\(\times\) 0.1\(\times\) 0.1, its accuracy can reach 99.2%, while the isoparametric element requires a mesh size of 0.05\(\times\) 0.05\(\times\) 0.05 to achieve this accuracy. As for the computation time, at the same mesh size, the isoparametric element has lower calculation time than the Solid-H8-TC element. However, when the displacement accuracy reaches 99.2%, the Solid-H8-TC element only takes 11.15s, much a lower than the isoparametric element’s 33.95s.

The proposed Solid-H8-TC element uses a trial-correction displacement interpolation format. Based on the 8-node hexahedral element with rotational degrees of freedom, an additional correction term obtained by cubic polynomial interpolation is added. Although this addition increases the calculation time of a single element, it effectively improves the convergence rate and numerical accuracy of the element.

3.2 Cook’s Skew Beam Problem

Figure 7 displays the example of a skewed beam proposed by Cook and Saunders (1984), which has its left side fixed and is subjected to a shear distribution load on the right side. Table 3 presents the calculated results of the maximum principal stress at point A, the minimum principal stress at point B, and the vertical deflection at point C. In addition, this paper cited existing studies (Wilson et al. 1973; Li et al. 2008; Hu et al. 2019) and plotted three line charts in Figs. 8, 9 and 10.

Fig. 7
figure 7

Cook’s skew beam problem: load, dimensions and \(2 \times 2 \times 2\) mesh

As shown in line charts 8, 9 and 10, it is evident that the HVCC8 element exhibits the best performance in terms of principal stress and deflection. However, when the mesh is not coarse, the Solid-H8-TC element proposed in this paper demonstrates numerical performance similar to that of the HVCC8 element. Moreover, for the minimum principal stress, the numerical values computed by the Solid-H8-TC element in this paper gradually increase with the refinement of the mesh and ultimately approach the reference solution. This feature enhances the reliability of the Solid-H8-TC element for practical engineering applications.

Table 3 Results of Cook’s problem in dimensionless form

The HVCC8 element, constructed by Li et al. (2008) using the hexahedral volume coordinate method (HVCM), can address directional defects and maintain high accuracy even in the case of mesh distortion. In contrast, the Solid-H8-TC element proposed in this paper is constructed in the local natural coordinate system and leverages the introduction of a correction term to improve its performance. Furthermore, the Solid-H8-TC element passed the patch test and demonstrated good convergence, enabling it to obtain numerical solutions approaching the reference solution under conditions of fine mesh.

Fig. 8
figure 8

Maximum principal stress at point A of Cook’s problem

Fig. 9
figure 9

Minimum principal stress at point B of Cook’s problem

Fig. 10
figure 10

Vertical deflection at point C of Cook’s problem

3.3 Thin Curved Beam

MacNea (Macneal and Harder 1985) proposed a thin curved beam, as depicted in Fig. 11, with an inner radius of \(R=4.12\), the thickness of \(h=0.2\), the width of \(t=0.1\), the Young’s modulus is \(E=1.0\times {10^7}\), and the Poisson’s ratio is \(\nu =0.3\). The right side of the beam is fixed on the ground, and the left side is subjected to a unit out-of-plane shear load \(P=1\). The exact solution for the downward deflection at point A under this loading is 0.08734 (Li et al. 2008). Table 4 summarizes the normalized downward deflections at point A, and comparative data are presented in the point diagram. 12.

As indicated by Fig. 12, the HVCC8 element exhibits the best performance. The Solid-H8-TC element proposed in this paper demonstrates higher accuracy than the Abaqus C3D8 and classical isoparametric elements. Furthermore, the Solid-H8-TC element passes the patch test, and its accuracy approaches the true solution as the mesh is refined.

Fig. 11
figure 11

Bending of the thin curved beam

Table 4 Normalized displacement of each element in bending of the thin curved beam test
Fig. 12
figure 12

Normalized displacement line graph of each element in bending of the thin curved beam test

3.4 Engineering Application

In this section, the compatibility between the Solid-H8-TC element and the shell element was verified using the rigid-flexible coupling positioning stage(RFCPS). Figure 13 depicts the physical model of the RFCPS, which primarily consists of three parts: the working stage, the stiff frame, and the flexure hinge set. A series of flexure hinges connects the worktable to the frame. RFCPS uses the elastic deformation of the flexure hinge to make up for the positioning inaccuracy of the rigid frame, enabling nano-level positioning and meeting the precision positioning requirements of the semiconductor industry.

Fig. 13
figure 13

Rigid-flexible coupling positioning stage model

Fig. 14
figure 14

Analytical model of rigid-flexible coupling positioning stage

Table 5 The maximum displacement of the working stage along the direction of the force

The simplified model is shown in Fig. 14, where the flexible hinge is represented by shell elements. The driving force F is applied at the center of the working stage, while the outer side of the rigid frame is restricted by a preset limit. The model has a Young’s modulus of \(E=72000 MPa\) and a Poisson’s ratio of \(\nu =0.3\). To facilitate comparison, the Abaqus element (a combination of C3D20R and S4R elements in hybrid modeling) was introduced. The data for the Solid-H8-TC element and the Abaqus element are presented in Table. 5, and a line graph is plotted in Fig. 15.

Fig. 15
figure 15

Line graph of maximum displacement along the direction of applied force on the working stage

It can be seen from the point-fold Fig. 15 that the Solid-H8-TC element performs better than the Abaqus element. Moreover, the Solid-H8-TC element exhibits relatively good numerical accuracy even when the mesh size is 15 mm. Additionally, as the mesh is refined continuously, the numerical accuracy of the Solid-H8-TC element approaches the reference solution (The reference solution of RFCPS obtained by discretizing it using a C3D8 mesh with a size of 1 mm in the Abaqus software) more closely.

The following reasons may explain the outcome of the appeal. Firstly, The Solid-H8-TC element can be directly integrated with the shell element, eliminating the need for additional shell elements at the joints, as is required by the Abaqus C3D8 element. This not only simplifies the modeling process but also ensures compatibility and minimizes the risk of potential issues. Additionally, the displacement field of the Solid-H8-TC element employs a trial-correction interpolation scheme, which significantly enhances the element’s performance.

4 Conclusions

To address the issue of incompatibility between nodal parameters of elements of different dimensions, this paper utilizes trilinear and cubic interpolations to propose a new interpolation formula, namely the “trial-correction” displacement interpolation, and applies it to construct the Solid-H8-TC element. A series of numerical examples and comparisons were conducted to evaluate the performance of the Solid-H8-TC element, revealing the following findings:

  1. (1)

    The Solid-H8-TC element successfully passed rigorous patch tests, indicating its capability to accurately capture fundamental physical phenomena. Moreover, in terms of numerical accuracy, the element achieves a numerical precision of over 99% as the mesh is refined.

  2. (2)

    Distinguishing itself from many other finite elements, the Solid-H8-TC element possesses a unique advantage in that it can directly combine with shell elements without requiring additional constraint conditions, thereby resolving the compatibility issues of nodal parameters between finite elements of different dimensions. Engineering application experimental data also demonstrate that when the Solid-H8-TC element is mixed with shell elements, the normalized numerical result at a mesh length of 15 mm is 1.010, significantly surpassing Abaqus’ 0.010.

In addition, the experimental-corrected interpolation formula proposed in this paper is a highly parameterized interpolation formula with excellent scalability, making it very suitable as a theoretical basis for studying various types of elements (including plane, beam, shell, etc.). In the engineering application experiments of this paper, the traditional shell element with corner nodes is used in conjunction with the Solid-H8-TC element. If the interpolation proposed in this paper is used to construct shell elements, it may enhance compatibility and potentially yield superior results. This powerful feature provides researchers with greater flexibility in selecting the correct interpolation method for their analysis needs, enabling them to optimize their analysis processes and obtain more accurate results.

Despite the notable advantages of the Solid-H8-TC element, it also faces some common challenges in hexahedral mesh generation. For instance, generating hexahedral meshes for complex geometric shapes can be challenging. Additionally, the limitation of the Solid-H8-TC element lies in its higher number of nodes, which can lead to increased computational costs when analyzing with fine meshes. Nevertheless, the proposed Solid-H8-TC element will serve as a robust tool for constructing high-performance hexahedral finite element models.