1 Introduction

Stabilization of numerical methods is an important research topic for high-speed compressible flows modeled by the Navier–Stokes equations. Basically, stabilization strategies intend to avoid the occurrence of numerical instabilities which normally have two main sources, the high value of convective terms in the original partial differential equation and the sharp gradients and shocks in localized zones of the solution. Also, these techniques should be able to predict the boundary layer, properly.

Based on the FEM, several stabilized formulations for compressive flows have been developed during the last decades. Donea [2] originally derived a class of stabilized FEM using the Lax-Wendroff/Taylor-Galerkin scheme. Based on the idea of the streamline diffusion, Hughes et al. [3, 4] extended the classical streamline-upwind/Petrov–Galerkin (SUPG), initially proposed by Brooks and Hughes [5] for incompressible flows. The SUPG method has been widely used by several authors for compressible flows [69]. In conjunction with the SUPG formulation and based on scaled residuals, new ways for determining the stabilization and shock-capturing parameters, categorized as \(YZ\beta \) shock-capturing, are recently introduced by Tezduyar and Senga [10] for inviscid supersonic flows. The extension of this method to different element types and more complex geometries is presented in [11, 12]. This method is widely used for three-dimensional edge-based computations [13], in combination with variable subgrid scale (V-SGS) method [14] and also for drug delivery problems in incompressible flows [15]. Other popular stabilization techniques for compressible flows were based on the Galerkin least squares method [1618] which coincides with the original SUPG method under some specified conditions. Unified stabilized FEM formulations for compressible and incompressible flows were presented by Hauke and Hughes [18] and Mittal and Tezduyar [19]. Using of the fractional step concept [20, 21], Zienkiewicz and co-workers introduced the characteristic-based split method [2225], which benefited from the anisotropic shock capturing term presented by Codina [26]. Another artificial diffusion schemes were developed by Peraire et al. [27], Morgan et al. [28] and Zienkiewicz and Wu [29]. Based on the idea of limiters, Boris and Book [30] developed the flux corrected transport and Löhner et al. [31] extended this scheme to unstructured meshes in the FEM. Recently, the so-called variational multiscale method, originally introduced by Hughes [32] has been successfully applied to derive stabilized finite element formulations for flow problems [3339]. Based on the finite volume scheme and following the idea of artificial diffusion, an important numerical improvement was conducted by Jameson et al. [40] using a series of second and fourth order stabilization methods. The study of finite volume flux vector splitting was presented by Anderson et al. [41] where several advantages of the MUSCL-type approach over standard flux-differencing scheme were discussed.

Within the family of stabilization techniques, the Finite Increment Calculus (FIC, or Finite Calculus in short) formulation has been successfully implemented for the stabilization of advective-diffusive transport and incompressible fluid flow problems by Oñate and co-workers [4249]. In this paper, a FIC-based stabilized formulation for the numerical solution of the compressible Navier–Stokes equations is considered in the context of Galerkin FEM using an implicit scheme. In a previous work [1], we proposed an explicit FIC–FEM formulation for the numerical solution of the Euler equations.

The FIC technique is based on writing the balance of fluxes in the momentum, mass balance and energy conservation equations in a space-time domain of finite size. It aims to preventing the creation of instabilities that usually appear in the numerical solution of fluid flow problems due to the high convective terms and sharp gradients. This leads to a modified non-local form of the standard governing equations in mechanics that incorporate additional residual terms that depend on characteristic lengths in space and time. In the context of the compressible flow equations, the FIC approach introduces two stabilization terms, called the streamline term and the transverse term. Generally, the streamline term takes care of the instabilities produced from the convective terms while the transverse term smooths the solution in the high gradient zones. An implicit algorithm is implemented to overcome the stability limitations depending on the mesh size. This implicit algorithm takes advantage of Newton method for solving of the non-linear system of equations using the exact Jacobian matrix. The final linear system of equations is solved at each iteration with a preconditioned GMRES method.

In this work we explore the advantages of the FIC formulation to provide appropriate numerical solutions for the compressible Navier–Stokes equations in conjunction with an implicit solver. Some numerical test examples related to inviscid and laminar viscous flows are presented. By studying the quality of solutions near shock waves, the boundary layer and the stagnation point it is found that the usual oscillations observed in the Galerkin FEM [22], especially near high gradient zones, are eliminated by implementing the FIC stabilization terms without introducing an excessive numerical dissipation.

The layout of the paper is the following: In Sect. 2 the compressible Navier–Stokes equations are described. Section 3 presents the derivation of the stabilized formulation based on the FIC scheme. The spatial discretization of the proposed stabilized formulation via the FEM and the solution method for steady state problems are presented in Sect. 4. Numerical results for inviscid and laminar viscous flows in subsonic, transonic and supersonic regimes are shown in Sect. 5. Finally, conclusions and general remarks are summarized in Sect. 6.

2 Governing equations

The two-dimensional (2D) compressible Navier–Stokes equations, obtained from the combination of the mass balance, momentum and energy equations, can be written in the following conservative form:

$$\begin{aligned} \frac{\partial \mathbf U}{\partial t}+\frac{\partial \mathbf{F}_i}{\partial x_i}-\frac{\partial \mathbf{G}_i}{\partial x_i}=\mathbf{0}\,\, \text{ for } \, \,i = 1,2, \end{aligned}$$
(1)

where \(\mathbf U,\,\mathbf F\) and \(\mathbf G\) are the vectors of conservative variables, inviscid fluxes and viscous fluxes, respectively which can be expressed as

$$\begin{aligned} {\mathbf {U}}= & {} \left[ \begin{array}{c}\rho \\ \rho v_1\\ \rho v_2\\ \rho e \end{array}\right] \qquad {\mathbf {F}}_i=\left[ \begin{array}{c}\rho v_i\\ \rho v_1 v_i+p\delta _{i1}\\ \rho v_2 v_i+p\delta _{i2}\\ v_i (p+\rho e)\end{array}\right] \nonumber \\ {\mathbf {G}}_i= & {} \left[ \begin{array}{c}0\\ \sigma _{1i} \\ \sigma _{2i} \\ k \frac{\partial T}{\partial {x_i}} + v_j \sigma _{ij} \end{array}\right] , \end{aligned}$$
(2)

where \(\rho ,\,\mathbf v,\,p,\,T\), and e are the density, the velocity vector, the static pressure, the absolute temperature, and the total internal energy per unit mass, respectively. \(\varvec{\sigma }\) is the viscous stress tensor, k is the thermal conductivity coefficient and \(\delta _{ij}\) is the Kronecker delta. In the above equations \(i, j = 1, n_d\) with \(n_d\) is the number of space dimensions (\(n_d = 2\) for 2D flow problems).

The Navier-Poisson law for a Newtonian fluid expresses the components of the viscous stress tensor \(\varvec{\sigma }\) in term of the velocity. For an isotropic media

$$\begin{aligned} \sigma _{ij} = \mu \left( \frac{\partial v_i}{\partial {x_j}} + \frac{\partial v_j}{\partial {x_i}}\right) + \lambda \frac{\partial v_k}{\partial {x_k}} \delta _{ij} \,\, \text{ for } \,\,k=1,2, \end{aligned}$$
(3)

where a bulk viscosity of \( (3\lambda + 2\mu ) = 0\) is assumed. In Eq. (3) \( \mu = \mu (T)\) is the dynamic viscosity coefficient which is calculated from Sutherland’s equation [50].

The standard sum convention for terms with repeated indices is adopted in the paper, unless otherwise specified.

By defining \(\gamma = 1.4 \) as the ratio of specific heats, the assumed equation of state for an ideal gas has the following form

$$\begin{aligned} p = (\gamma - 1) \rho (e-0.5 v_j v_j). \end{aligned}$$
(4)

The Euler equations for a non-viscous fluid can be recovered from the Navier–Stokes equations Eq. (1) by neglecting the viscous stress and the heat conduction terms. i.e., \({\mathbf {G}}_i = {\mathbf {0}}\).

3 Derivation of the stabilized formulation

In this section, we derive the FIC-based stabilized formulation for the mass, momentum and energy equations is presented. Although the same idea is applied to construct the stabilized formulation for each component, the strategy used for the momentum and energy equations is somehow different from the one implemented for the mass equation. This difference is due to the implementation of the FIC scheme in space for stabilization of the momentum and energy equations, while a space-time FIC scheme is used to stabilize the mass equation.

3.1 FIC scheme for Navier–Stokes equations

The FIC-based stabilized formulation for the Navier–Stokes equations is obtained by writing the mass balance equation in a space-time domain of finite size using higher order Taylor series expansions as [42, 45, 47]

Mass balance

$$\begin{aligned} r_d -\frac{1}{2} \mathbf{h}_{d}.\varvec{\nabla } r_{d} + \frac{1}{2} \tau _d \frac{\partial r_d}{\partial t} = {0}. \end{aligned}$$
(5)

The same idea is implemented for the momentum and energy balance equations in a space domain of finite size as

Momentum

$$\begin{aligned} r_{m_i} -\frac{1}{2} \mathbf{h}_{m_i}. \varvec{\nabla } r_{m_i} = {0}. \end{aligned}$$
(6)

Energy

$$\begin{aligned} r_e -\frac{1}{2} \mathbf{h}_{e}. \varvec{\nabla } r_{e} = {0}. \end{aligned}$$
(7)

In Eqs. (5), (6) and (7) \(\mathbf{h}_{d},\,\mathbf{h}_{m_i}\) and \(\mathbf{h}_{e}\) are characteristic length vectors, \(\tau _d\) is a stabilization parameter and \(r_d,\,r_{m_i}\) and \(r_e\) are the residuals of the mass equation, the ith momentum equation and the energy equation, respectively, defined as

$$\begin{aligned}&r_d:= \frac{\partial \rho }{\partial t}+\frac{\partial (\rho {v}_j)}{\partial x_j} = {0} \end{aligned}$$
(8)
$$\begin{aligned}&r_{m_i}:= \frac{\partial (\rho {v}_i)}{\partial t}+\frac{\partial }{\partial x_j}(\rho v_i v_j) + \frac{\partial p}{\partial x_i} - \frac{\partial }{\partial {x_j}} (\sigma _{ij}) =0 \end{aligned}$$
(9)
$$\begin{aligned}&r_{e}:= \frac{\partial {(\rho e)}}{\partial t}+\frac{\partial }{\partial x_j}(v_j (\rho e + p)) - \frac{\partial }{\partial {x_j}} \Bigg (\sigma _{ij} v_i + k \frac{\partial T}{\partial {x_j}}\Bigg )\nonumber \\&\qquad = {0}, \end{aligned}$$
(10)

with \(i, j = 1, n_d\).

More details on the definition of Eqs. (5), (6) and (7) can be found in [42]. Other applications of the FIC scheme to incompressible flows and convection-diffusion problems are presented in [4347].

The time derivative term \(\frac{\partial r_d}{\partial t}\) in Eq. (5) needs to be modified in order to provide the required stability. For this reason, \(r_d\) from Eq. (8) is substituted in the time-derivative term of Eq. (5). By neglecting the term \(\frac{1}{2} \tau _d \frac{\partial ^2 \rho }{\partial t^2}\) from the deduced equation, the stabilized final mass balance equation has the form

$$\begin{aligned} r_d -\frac{1}{2} \mathbf{h}_{d}.\varvec{\nabla } r_{d} + \frac{1}{2} \tau _d \frac{\partial }{\partial x_i} \frac{\partial (\rho {v}_i)}{\partial t}= {0}. \end{aligned}$$
(11)

The term \(\frac{\partial (\rho {v}_i)}{\partial t}\) in the above equation can be expressed in term of the terms of Eq. (9) as

$$\begin{aligned} -\frac{\partial (\rho {v}_i)}{\partial t} = \frac{\partial (\rho v_i v_j)}{\partial x_j} + \frac{\partial p}{\partial x_i} - \frac{\partial }{\partial {x_j}} (\sigma _{ij}) = \varvec{\nabla }. (\mathbf{F}_{m_i}-\mathbf{G}_{m_i}), \end{aligned}$$
(12)

where \(\varvec{\nabla } . (\mathbf{F}_{m_i}-\mathbf{G}_{m_i})\) is the divergence of the flux terms corresponding to the ith momentum equation.

Substituting Eq. (12) into (11) the FIC-based form of the mass equation can be expressed as

$$\begin{aligned} r_d -\frac{1}{2} \mathbf{h}_{d}.\varvec{\nabla } r_{d} - \frac{1}{2} \tau _d \varvec{\nabla }.(\varvec{\nabla }. (\mathbf{F}_{m}-\mathbf{G}_{m})) = 0. \end{aligned}$$
(13)

It is to be mentioned that although the neglected term \(\frac{1}{2} \tau _d \frac{\partial ^2 \rho }{\partial t^2}\) in Eq. (11) can be obtained using an explicit finite difference scheme, we have found that this term has not an important role for steady state flow problems. However, we suggest to consider this term for unsteady cases.

3.2 Definition of the stabilization parameters

As shown in Eqs. (13), (6) and (7), the modified governing equations via the FIC method introduce naturally an additional term into the standard mass, momentum and energy equations through some stabilization parameters, namely characteristic length vectors \(\mathbf{h}_{d},\,\mathbf{h}_{m_i}\) and \(\mathbf{h}_{e}\), as well as the pseudo-time stabilization parameter \(\tau _d\).

Stabilization of the Navier–Stokes equations can be achieved by an appropriate definition of these parameters in such a way that unstable solutions, usually created in the numerical simulations of high-speed flow problems due to the high convective terms and sharp gradients, disappear. For this purpose, the characteristic length vectors \(\mathbf{h}_{m_i}\) and \(\mathbf{h}_{e}\) corresponding to the momentum and energy equations are defined as

$$\begin{aligned} {\mathbf{h}}_{m_i}= & {} \beta _{m_{i}} \ell \frac{\mathbf{v}}{|{\mathbf{v}}| + v_{c}} + (1-\beta _{m_{i}}) \ell \frac{{\varvec{\nabla }} v_i}{| {\varvec{\nabla }} {v}_i |}\text{ sgn } (r_{m_i}) \end{aligned}$$
(14)
$$\begin{aligned} {\mathbf{h}}_{e}= & {} \beta _e \ell \frac{\mathbf{v}}{|{\mathbf{v}}|+v_c} + (1-\beta _e), \ell \frac{{\varvec{\nabla }} T}{| {\varvec{\nabla }} T |}\text{ sgn } (r_e), \end{aligned}$$
(15)

where \(\beta _{m_i}\) and \(\beta _e\) are constant parameters ranging between zero and one, \(\ell \) is a characteristic element size corresponding to the momentum and energy equations, \(\text{ sgn }(.)\) denotes the sign function, \(|\mathbf{v}|\) is the modulus of the velocity vector and \(v_c = \sqrt{\gamma \frac{p}{\rho }} \) is the speed of the sound in the flow.

In Eqs. (14) and (15) the characteristic length vector corresponding to each equation is defined as the summation of two terms. The first one is the streamline stabilization term. This term handles the instabilities due to the high convective terms by adding extra diffusion in the direction of the velocity. On the other hand, the instabilities generated near zones with some sharp gradients are treated via the second term, called transverse stabilization term. This term introduces an isotropic (residual-based) diffusion matrix.

The same idea is applied for deriving of the characteristic length vector \(\mathbf{h}_{d}\) and the pseudo-time stabilization parameter \(\tau _d\) corresponding to the mass equation. Their expression is

$$\begin{aligned} \mathbf{h}_{d} = (1-\beta _d) \ell \frac{\varvec{\nabla } \rho }{| \varvec{\nabla } \rho |} \text{ sgn } (r_d) \qquad \tau _d = \beta _d \frac{\ell }{|\mathbf{v}|+v_c}, \end{aligned}$$
(16)

where \(0\le \beta _d\le 1\). Comparing Eqs. (13) and (16), we see that parameters \(\tau _d\) and \(\mathbf{h}_{d}\) in the stabilized formulation of the mass equation have the same functionality as the streamline stabilization term and the transverse stabilization term, respectively, introduced for the momentum and energy equations.

3.3 General stabilized formulation

By substituting the stabilization parameters from Eqs. (16), (14) and (15) into Eqs. (13), (6) and (7), the general FIC-based stabilized formulation for the compressible Navier–Stokes equations is obtained as

Mass balance

$$\begin{aligned}&r_d -\frac{1}{2} (1-\beta _d) \ell ~\text{ sgn } \text{( }r_d) \frac{\varvec{\nabla } \rho }{| \varvec{\nabla } \rho |}.\varvec{\nabla } r_{d}\nonumber \\&\quad \quad -\frac{1}{2} \beta _d \ell \frac{1}{|\mathbf{v}|+v_c} \varvec{\nabla }.(\varvec{\nabla }. (\mathbf{F}_{m}-\mathbf{G}_{m})) = 0. \end{aligned}$$
(17)

Momentum

$$\begin{aligned}&{r_m}_i -\frac{1}{2} (1-\beta _{m_i}) \ell ~\text{ sgn } ({r_m}_i)\frac{{\varvec{\nabla }} v_i}{| {\varvec{\nabla }} v_i |}.{\varvec{\nabla }} {r_m}_i\nonumber \\&\quad \quad -\frac{1}{2} \beta _{m_i} \ell \frac{\mathbf{v}}{|{\mathbf{v}}|+v_c}.{\varvec{\nabla }} r_{m_i} = 0. \end{aligned}$$
(18)

Energy

$$\begin{aligned} r_e -\frac{1}{2} (1-\beta _e) \ell ~\text{ sgn } (r_e) \frac{{\varvec{\nabla }} T}{| {\varvec{\nabla }} T |}. {\varvec{\nabla }} r_{e} - \frac{1}{2} \beta _e \ell \frac{\mathbf{v}}{|{\mathbf{v}}|+v_c}.{\varvec{\nabla }} r_{e} = {0}. \end{aligned}$$
(19)

Note that expressing the stabilization terms as a function of the residuals of the corresponding balance equations (see Eqs. (17), (18) and (19)), the consistency of the proposed FIC method is enforced.

3.4 Selection of the stabilization parameters

The rationale behind the choice of the stabilization parameters \(\beta _{m_i}\) and \(\beta _e\) is that they should account for streamline and transverse diffusion effects. Note that for \(\beta _{m_i},\,\beta _e=0\) the original SUPG stabilization scheme for the momentum and energy balance equations is recovered, where a stabilization diffusion is added in the direction of the velocity. On the other hand, \(\beta _{m_i},\,\beta _e=1\) introduces an isotropic diffusion term only.

A possible choice for choosing these parameters is

$$\begin{aligned} \beta _{m_i} =1 - \frac{\mathbf{v}.{\pmb \nabla } v_i}{|\mathbf{v}| |{\pmb \nabla } v_i|},\qquad \beta _{e} =1 - \frac{\mathbf{v}.{\pmb \nabla } T}{|\mathbf{v}| |{\pmb \nabla } T|}. \end{aligned}$$
(20)

Note that for situations when the velocity field is orthogonal to the gradient \({\pmb \nabla } v_i\) then \(\beta _{m_i}=1\), whereas \(\beta _{m_i}=0\) if \(\mathbf{v}\) is parallel to \({\pmb \nabla } v_i\). The same occurs for \(\beta _e\) when \(\mathbf{v}\) is orthogonal or parallel to \({\pmb \nabla } T\).

The form of Eq. (20) introduces a non-linearity in the computation of \(\beta _{m_i}\) and \(\beta _e\). This can be overcome in transient problems by assuming that \(\beta _{m_i}\) and \(\beta _d\) are constant within a time step and equal to the value computed for the previous time increment.

For the steady state problems considered in this work we have assumed that the stabilization parameters \(\beta _{m_i}\) and \(\beta _e\) are constant throughout the non linear solution (i.e., \(\beta _{m_i} =\beta _d =\beta \). This assumption simplifies the convergence of the iterative process.

Accurate results have been obtained for all the problems solved with \(\beta = 0.5\). This choice was based on the good results obtained with this assumption for inviscid compressible flow problem in [1]. The effect of choosing different values for \(\beta \) on the quality of the results is studied in [1] as well as in the example presented in Sect. 5.2.

As for the stabilization parameter \(\beta _d\) in the mass balance equation, in this work the simplest choice \(\beta _d =\beta \) has been made. The optimal definition of \(\beta _d\) is an open research topic.

The FEM is implemented in this work for the discretization of equations in space. Hence the characteristic element size is defined as \(\ell = (2\Omega ^e)^{1/2}\) where \(\Omega ^e\) is the element area for 2D problems. Clearly, for \(\ell \rightarrow 0\) the standard infinitesimal form of the balance Eqs. (8), (9) and (10) is recovered from the general stabilized formulation.

4 Numerical solution

We present the spatial discretization of the stabilized Navier–Stokes Eqs. (17)–(19) as well as the methodology implemented for solving the resulted system of algebraic equations for the steady state case.

4.1 Spatial discretization

The well known Galerkin FEM [22] is implemented to discretize the FIC-based stabilized formulation in space. Vector \(\mathbf U\) containing the conservative variables is approximated by a combination of continuous linear shape functions as

$$\begin{aligned} \mathbf{U} \simeq \bar{\mathbf{U}} = \sum _{J=1}^n \mathbf{N}_J \bar{\mathbf{U}}_J, \end{aligned}$$
(21)

where vector \(\bar{\mathbf{U}}\) contains the approximate values of the conservative variables. \(\mathbf N\) is the matrix of interpolating shape functions, subscript index J represents the values for the \(J^{th}\) node and \(n = 3\) for linear triangles.

Let us assume a problem domain \(\Omega \) with a boundary \(\Gamma \). The standard weighted residual method is applied to Eqs. (17), (18) and (19), the stabilization terms are integrated by parts and the boundary terms are neglected. This yields the variational form of the discretized equations as

$$\begin{aligned}&\int _{\Omega } \mathbf{W}\bar{\mathbf{r}} d\Omega +\sum _e^{n_{el}} \int _{{\Omega }_e} \frac{1}{2} \mathbf{S} \frac{\partial \mathbf{W}}{\partial x_i} \frac{\partial \bar{\mathbf{U}}}{\partial x_i} d\Omega \nonumber \\&\quad + \sum _e^{n_{el}} \int _{{\Omega }_e} \frac{\tau }{2} \mathbf{B}_i \frac{\partial \mathbf{W}}{\partial x_i} \bar{\mathbf{r}}_{st} d\Omega = 0, \end{aligned}$$
(22)

where \(n_{el}\) is the number of elements, \(i = 1,2\) (for 2D problems) and \(\mathbf{W}\) denotes the standard weighting function vector.

In Eq. (22), the residual vectors \(\bar{\mathbf {r}}\) and \(\bar{\mathbf {r}}_{st}\) as well as the vector of approximated primitive variables \(\bar{\tilde{\mathbf{U}}}\) have the following form

$$\begin{aligned} \bar{\mathbf{r}}=\left[ \begin{array}{c} \bar{r}_{d} \\ \bar{r}_{m_1} \\ \bar{r}_{m_2} \\ \bar{r}_e \end{array}\right] \quad \bar{\mathbf{r}}_{st}=\left[ \begin{array}{c}1\\ \bar{r}_{m_1} \\ \bar{r}_{m_2} \\ \bar{r}_e \end{array}\right] \quad \bar{\tilde{\mathbf{U}}} = \left[ \begin{array}{c} \bar{\rho } \\ \bar{v}_1 \\ \bar{v}_2 \\ \bar{T} \end{array}\right] , \end{aligned}$$
(23)

where \(\bar{r}_{d},\,\bar{r}_{m_i}\) and \(\bar{r}_e\) denote the approximate finite element residuals for the mass, momentum and energy equations, respectively.

In Eq. (23), \(\tau = \frac{\beta \ell }{|\bar{\mathbf{v}}|+\bar{v}_c}\) is the the stabilization parameter and the stabilization matrices \( \mathbf S \) and \(\mathbf{{B}}_i\) in Eq.(22) have the following form (for \(\beta _{m_i} =\beta _e =\beta _d =\beta \))

$$\begin{aligned} \mathbf{S}= & {} (1-\beta ) \ell \begin{bmatrix} \frac{| \bar{r}_d |}{|\varvec{\nabla } \tilde{\bar{\mathbf{U}}}_1|}&\quad 0&\quad 0&\quad 0 \\ 0&\quad \frac{|\bar{r}_{m_1}|}{|\varvec{\nabla } \tilde{\bar{\mathbf{U}}}_2|}&0&\quad 0 \\ 0&\quad 0&\quad \frac{|\bar{r}_{m_2}|}{|\varvec{\nabla } \tilde{\bar{\mathbf{U}}}_{3}|}&\quad 0 \\ 0&\quad 0&\quad 0&\quad \frac{| \bar{r}_{e}|}{|\varvec{\nabla } \tilde{\bar{\mathbf{U}}}_4|} \end{bmatrix} \nonumber \\ \mathbf{B}_i= & {} \begin{bmatrix} \varvec{\nabla }. (\bar{\mathbf{F}}_{m_i}-\bar{\mathbf{G}}_{m_i})&\quad 0&\quad 0&\quad 0 \\ 0&\quad \bar{v}_i&\quad 0&\quad 0 \\ 0&\quad 0&\quad \bar{v}_i&\quad 0 \\ 0&\quad 0&\quad 0&\quad \bar{v}_i \end{bmatrix}, \end{aligned}$$
(24)

where \(\bar{v}_i\) is the ith component of the nodal velocity vector and \(\varvec{\nabla } . (\bar{\mathbf{F}}_m-\bar{\mathbf{G}}_m)\) is the divergence of the approximate finite element flux terms corresponding to the momentum equation.

The Galerkin form of the discretized equations is obtained by making the weighting functions equal to the interpolation ones (\(\mathbf W = \mathbf N\)). The final step of the discretization is to apply integration by parts to the first term of Eq. (22) to yield the weak form as

$$\begin{aligned}&\int _{\Omega } \mathbf{N} \frac{\partial \bar{\mathbf{U}}}{\partial t} d\Omega - \int _{\Omega } \frac{{\partial \mathbf{N}}}{\partial x_i} (\bar{\mathbf{F}}_i-\bar{\mathbf{G}}_i) d\Omega + \int _{\Gamma } \mathbf{N} (\bar{\mathbf{F}}_n -\bar{\mathbf{G}}_n) d\Gamma \nonumber \\&\quad -\sum _e^{n_{el}} \int _{{\Omega }_e} \frac{1}{2}\mathbf{S} \frac{\partial \mathbf{N}}{\partial x_i} \frac{\partial \bar{\mathbf{U}}}{\partial x_i} d\Omega - \sum _e^{n_{el}} \int _{{\Omega }_e} \frac{\tau }{2} \mathbf{B}_i \frac{\partial \mathbf{N}}{\partial x_i} \bar{\mathbf{r}}_{st} d\Omega = 0,\nonumber \\ \end{aligned}$$
(25)

with \(i = 1,2\). The first integral in Eq. (25) corresponds to the time derivative part of the Navier–Stokes equation, the second integral is the contribution of the inviscid and viscous flux terms to the weak form and the third integral represents the boundary flux terms. The elemental contributions of the streamline and transverse stabilization terms are delivered by the fourth and fifth integrals, respectively.

Terms \(\bar{\mathbf{F}}_i\) and \(\bar{\mathbf{G}}_i\) in Eq. (25) represent the ith components of the approximated vectors corresponding to the inviscid flux vector \(\mathbf{F}\) and the viscous flux vector \(\mathbf{G}\), respectively [See Eq. (2)]. Also, \(\bar{\mathbf{F}}_n = \bar{\mathbf{F}}_i n_i\) and \(\bar{\mathbf{G}}_n = \bar{\mathbf{G}}_i n_i\) are the projections of vectors \(\bar{\mathbf{F}}\) and \(\bar{\mathbf{G}}\), respectively, along the normal vector to the boundary \(\mathbf{n} = [n_1,n_2]^T\) (for 2D problems). The different types of the boundary conditions are defined in Sect. 4.3.

The following remarks are made:

  • By considering the sign of the residuals in the definition of the characteristic length vectors \(\mathbf{h}_{d},\,\mathbf{h}_{m_i}\) and \(\mathbf{h}_{e}\) in Eqs. (16), (14) and (15), all the components of matrix \(\mathbf{S}\) are positive, yielding a positive value of the shock capturing diffusion.

  • For the linear interpolation implemented here, the derivative of the viscous flux term \(\bar{\mathbf{G}}_{m_i}\) in \(\varvec{\nabla } . (\bar{\mathbf{F}}_m-\bar{\mathbf{G}}_m)\) appearing in the definition of the stabilization matrix \(\mathbf{B}_i\) Eq. (24) is zero.

4.2 Solution method

For the Navier–Stokes computations, an implicit scheme is needed due to the small size of the elements in the normal direction to the boundary layer.

For the steady-state problems solved in this work we will neglect the temporal derivative term (i.e., the first term) in Eq. (25). Assembling the elemental contributions from Eq. (25), the global system of non-linear equations can be written for the steady state case as

$$\begin{aligned} \mathbf{R} (\bar{\mathbf{U}}) = \mathbf 0, \end{aligned}$$
(26)

with

$$\begin{aligned} {\mathbf{R}_I}(\bar{\mathbf{U}})= & {} - \int _{\Omega } \frac{{\partial \mathbf{N}_I}}{\partial x_i} (\bar{\mathbf{F}}_i-\bar{\mathbf{G}}_i) d\Omega + \int _{\Gamma } \mathbf{N}_I (\bar{\mathbf{F}}_n -\bar{\mathbf{G}}_n) d\Gamma \nonumber \\&- \sum _e^{n_{el}} \int _{{\Omega }_e} \frac{\tau }{2} \mathbf{B}_i \frac{\partial \mathbf{N}_I}{\partial x_i} \bar{\mathbf{r}}_{st} d\Omega \nonumber \\&-\sum _e^{n_{el}} \int _{{\Omega }_e} \frac{1}{2}\mathbf{S} \frac{\partial \mathbf{N}_I}{\partial x_i} \frac{\partial \bar{\tilde{\mathbf{U}}}}{\partial x_i} d\Omega , \end{aligned}$$
(27)

where \({\mathbf{R}_I}(\bar{\mathbf{U}}) \) denotes the non-linear steady-state residual vector corresponding to the Ith global node.

The final global system of non-linear equations is solved for \(\bar{\mathbf{U}}\) using a standard Newton method as

$$\begin{aligned}&\left[ \frac{\partial \mathbf R}{\partial \bar{\mathbf{U}}} \right] ^n \Delta \bar{\mathbf{U}}^n = -\mathbf{R}\left( \bar{\mathbf{U}}^n\right) \nonumber \\&\Delta \bar{\mathbf{U}}^n = \bar{\mathbf{U}}^{n+1} - \bar{\mathbf{U}}^n, \end{aligned}$$
(28)

with n being the iteration number.

In the above equation \(\left[ \frac{\partial \mathbf R}{\partial \bar{\mathbf{U}}} \right] \) is the Jacobian matrix calculated by differentiation of the residual vector \(\mathbf{R}(\bar{\mathbf{U}})\) with respect to the numerical solution \(\bar{\mathbf{U}}\). It involves the linearization of all the terms contributing to the residual vector \(\mathbf{R}(\bar{\mathbf{U}})\) [See Eq. (27)]. In the current work the linearization of the inviscid and viscous flux terms is handled through the implementation an inviscid flux Jacobian matrix \(\mathbf{A}_i\) and the diffusivity matrix \(\mathbf{K}_{ij}\), presented in [51], whereas a hand-coded linearization is implemented for the streamline and transverse stabilization terms. Following this idea, the general form of the Jacobian matrix can be expressed as

$$\begin{aligned} \left[ \frac{\partial \mathbf{R}_{I}}{\partial \bar{\mathbf{U}}_{J}} \right]= & {} -\int _{\Omega } \frac{{\partial \mathbf{N}_I}}{\partial x_i} \Big (\mathbf{A}_i \mathbf{N}_J - \mathbf{K}_{ij} \frac{{\partial \mathbf{N}_J}}{\partial x_j} \Big ) d\Omega \nonumber \\&+ \int _{\Gamma } \mathbf{N}_I \Big ( \mathbf{A}_i \mathbf{N}_J - \mathbf{K}_{ij} \frac{{\partial \mathbf{N}_J}}{\partial x_j}\Big ) n_i d\Gamma \nonumber \\&- \sum _e^{n_{el}} \int _{{\Omega }_e} \frac{1}{2} \frac{\partial \mathbf{N}_I}{\partial x_i} \left[ \frac{\partial \tau }{\partial \bar{\mathbf{U}}_{J}}\mathbf{B}_i \bar{\mathbf{r}}_{st} \right. \nonumber \\&\left. +\, \tau \frac{\partial \mathbf{B}_i}{\partial \bar{\mathbf{U}}_{J}} \bar{\mathbf{r}}_{st} + \tau \mathbf{B}_i \frac{\partial \bar{\mathbf{r}}_{st}}{\partial \bar{\mathbf{U}}_{J}} \right] d\Omega \nonumber \\&-\sum _e^{n_{el}} \int _{{\Omega }_e} \frac{1}{2} \frac{\partial \mathbf{N}_I}{\partial x_i} \left[ \frac{\partial \mathbf{S} }{\partial \bar{\mathbf{U}}_{J}} \frac{\partial \bar{\tilde{\mathbf{U}}}}{\partial x_i} + \mathbf{S} \frac{\partial (\frac{\partial \bar{\tilde{\mathbf{U}}}}{\partial x_i}) }{\partial \bar{\mathbf{U}}_{J}} \right] d\Omega .\nonumber \\ \end{aligned}$$
(29)

In order to preserve the divergence of Newton method due to the inappropriate initial guess and the creation of sharp gradients, it is common to augment the Jacobian matrix \(\left[ \frac{\partial \mathbf R}{\partial \bar{\mathbf{U}}} \right] \) with a damping term based on the mass matrix \(\mathbf M\) as

$$\begin{aligned}&\left[ \frac{\delta _{IJ}}{\Delta t_I}\mathbf{M}_{ij} + \frac{\partial \mathbf{R}_I}{\partial \bar{\mathbf{U}}_J} \right] ^n \Delta {\bar{\mathbf{U}}_J}^n = -\mathbf{R}_I(\bar{\mathbf{U}}^n) \nonumber \\&\text{ with } \,\,\mathbf{M}_{ij} = \int _{\Omega } \mathbf{N}_I \mathbf{N}_J d\Omega , \end{aligned}$$
(30)

with \(I,J = 1,N\) where N is the total number of nodes in the mesh. In the above equation, the nodal (pseudo) time step \(\Delta t_I\) is the minimum of the time steps corresponding to the elements connected to node I. For inviscid problems, the time step for an element e can be completed as

$$\begin{aligned} {\Delta t}_e = CFL \frac{h}{|\bar{\mathbf{v}}| + \bar{v}_c}, \end{aligned}$$
(31)

where CFL denotes the allowable Courant-Friedrichs-Lewy number and \(h = \ell \) is the characteristic element size. Note that CFL is a global number, while the remaining variables in the above equation are calculated at the element level. Including the viscous terms, the time step for an element can be obtained as

$$\begin{aligned} {\Delta t}_e = CFL \frac{h}{|\bar{\mathbf{v}}| + \bar{v}_c + \frac{4 \mu \gamma ^{3/2}M_{\infty }}{\bar{\rho }_{min} Pr Re_{\infty } h} }. \end{aligned}$$
(32)

In the above equation, \(\bar{\rho }_{min}\) is the minimum density within the element, \(M_{\infty }\) is the free stream Mach number, Pr is the non dimensional Prandtl number and \(Re_{\infty }\) is the free stream Reynold number. The other variables have the same meaning as defined above. Details can be found in [50]. The Prandtl number is assumed to be constant and equal to 0.72.

In this work the CFL is responsible for adding a scalable damping term during the start-up computational process and has the following form

$$\begin{aligned} CFL(n) = min(\alpha ^n CFL(0) , CFL(max)), \end{aligned}$$
(33)

where \(CFL(0) = 0.01,\,CFL(max) = 10^{12}\) and \(\alpha \) is selected between 1.001 and 1.01 depending on the problem. Using this pattern for the CFL value, and increasing the pseudo time step to a large value (\(CFL = 10^{12}\)) the damped unsteady terms vanish in Eq. (30) and the desired quadratic convergence rate of the Newton method leading to the final steady state solution is achieved.

The linear system of Eq. (30) consisting of a sparse block matrix is solved using the generalized minimum residual (GMRES) method described in [52]. In order to improve the convergence, the preconditioned GMRES algorithm based on a block-diagonal preconditioning has been implemented in this work.

4.3 Boundary conditions

4.3.1 Euler equations

Equation (25) assumes a computational domain \(\Omega \) surrounded by a boundary \(\Gamma \) with unit normal \(\mathbf n\). So far, the algorithm only describes the contributions of each element across the integral \(\Omega \) but does not yet states how to incorporate the boundary conditions.

In our work, two types of boundaries have been considered for Euler-type (inviscid) flows: the slip boundary \(\Gamma _W\) through which mass flux is not possible, and the far field (inflow/outflow) boundary \(\Gamma _{\infty }\) through which mass flux is possible. The boundary condition must be applied in a compatible form with the equations to be solved.

Slip boundary The normal component of the velocity must vanish on the boundary. This condition can be enforced in a weak form by setting the inviscid flux across the boundary in Eq. (25) to:

$$\begin{aligned} \mathbf{{v}} . \mathbf{{n}} = {0} \Rightarrow {\bar{\mathbf {F}}}_n=\left[ \begin{array}{c}0\\ p n_1\\ p n_2\\ 0\end{array}\right] , \end{aligned}$$
(34)

where \(n_1\) and \(n_2\) are the component of the unit normal vector to the boundary \(\mathbf{n}=[n_1,n_2]^T\).

Far field boundary Depending on the flow regime, the components of the solution which enter the domain are to be enforced and the ones leaving the domain have to be set free. By using Roe approximation for Riemann solvers, the boundary flux for a node I on the far field boundary is computed as

$$\begin{aligned} {\bar{\mathbf {F}}}_n^I = \frac{1}{2} \{{\bar{\mathbf {F}}}_n({\bar{\mathbf {U}}}^I) + {\bar{\mathbf {F}}}_n({\bar{\mathbf {U}}}^{\infty }) - |{\bar{\mathbf {A}}}_n({\bar{\mathbf {U}}}^{I}, {\bar{\mathbf {U}}}^{\infty })|({\bar{\mathbf {U}}}^{I}-{\bar{ \mathbf {U}}}^{\infty })\},\qquad \end{aligned}$$
(35)

where superscript \(\infty \) represents the freestream value and \({\bar{\mathbf {A}}}_n({\bar{\mathbf {U}}}^{I},{\bar{\mathbf {U}}}^{\infty })\) is the Roe matrix computed in the direction normal to the boundary. More details about the derivation of the Roe matrix can be found in [50, 53].

4.3.2 Navier–Stokes equations

In general, the treatment of the boundary condition for the Navier–Stokes equations is similar to the one for the Euler equations. However, the steady momentum and energy equations are elliptic and their modeling is more complex. Details are given in [50].

No-slip boundary For the Navier–Stokes equations, in addition to the conditions on the velocity, some conditions must be considered for the temperature. The physical no-slip boundary conditions for the velocity is

$$\begin{aligned} v_i = 0, \end{aligned}$$
(36)

where \(i = 1, 2\). This condition can be enforced by assigning appropriate Dirichlet boundary conditions for the momentum components of \({\bar{\mathbf{U}}}\). As for the temperature boundary conditions, if an adiabatic wall is modeled then the heat flux \(q_n\) across the wall is zero, i.e.,

$$\begin{aligned} q_n = -k\frac{\partial T}{\partial n} = 0, \end{aligned}$$
(37)

which can be set weakly on the viscous boundary flux \({\bar{\mathbf{G}}}_n\). For an isothermal wall, this condition yields the Dirichlet boundary conditions for the energy components of \({\bar{\mathbf{U}}}\) as

$$\begin{aligned} T = T_W \Rightarrow \rho e -\rho c_v T_W = 0, \end{aligned}$$
(38)

where \(T_W\) is a specified wall temperature. Note that since \(\rho \) is not given a priori, the condition (38) should be updated during the solution process.

Far field boundary For a node I located at the far field boundary, the flux \({\bar{\mathbf {G}}}_n^I\) for a node I belonging to the far field boundary can be obtained numerically by applying the far field values at the boundary, i.e., \({\bar{\mathbf {G}}}_n^I = {\bar{\mathbf {G}}}_n^{\infty }\).

5 Test examples

In this section, a set of numerical examples is presented in order to evaluate the performance of the FIC-based stabilization method. In the first example, corresponding to an inviscid subsonic flow, the capability of the proposed stabilized formulation in conjunction with the implicit scheme is assessed. The rest of examples study different viscous flow regimes. For each example the computations start using the upstream values as the initial solution and they are advanced until a fully convergence of the residual vector \(\mathbf{R} (\bar{\mathbf{U}})\) to machine zero (1\(E-\)14 for double precision) is obtained. The numerical results are compared with published results.

A value of \(\beta =0.5\) has been used in all the examples. The sensitivity of the numerical solution to \(\beta \) is studied in Sect. 5.2.

5.1 Example I: subsonic inviscid flow past a bump

A popular example for subsonic regime is the bump problem consisting in an inviscid flow with Mach 0.35 pasting a bump with the maximum thickness of 0.08 in a rectangle domain of height 2 and length 4. In order to demonstrate the effect of grid resolution on the behavior of the proposed scheme, the domain is discretized uniformly by setting three different values for the element size. The generated unstructured meshes, called coarse, intermediate and fine mesh, have 1902, 3712 and 7454 elements, respectively. The coarse mesh is shown in Fig. 1. The slip boundary condition is applied on the upper and lower sides of the domain, whereas the far field boundary condition is considered on the left and right sides.

Figures 2 and 3 display the density and pressure coefficient contours, respectively, corresponding to the different discretizations which indicate the smoothness of the solution in all the domain. It can be seen that although the FIC method is capable to predicting appropriate results by using a coarse discretization, the smoothness of the numerical solutions is enhanced by improving the quality of the mesh.

The iterative convergence histories for the different meshes using Newton method are plotted in Fig. 4. Computations are continued until a suitable convergence for the residual to machine zero precision is obtained. It can be observed that as initial transient flow passes, the damping term vanishes and quadratic convergence is achieved for all discretizations.

Fig. 1
figure 1

Subsonic inviscid flow past a bump example. The generated unstructured coarse mesh

Fig. 2
figure 2

Subsonic inviscid flow past a bump example. Density contours for a coarse mesh, b intermediate mesh and c fine mesh

Fig. 3
figure 3

Subsonic inviscid flow past a bump example. Pressure coefficient contours for a coarse mesh, b intermediate mesh and c fine mesh

Fig. 4
figure 4

Subsonic inviscid flow past a bump example. Convergence history of Newton method using different discretizations

5.2 Example II: subsonic viscous flow past a NACA0012 airfoil

The subsonic viscous flow around a NACA0012 airfoil is presented here for demonstrating the behavior of the developed stabilized formulation in the viscous regime. The flow conditions are \(Re = 5000,\,M_{\infty } = 0.5\) and \(\alpha = 0^{\circ }\) and a circular computational domain with the radius of 8 chords is considered. The assumed circular domain is discretized into 12623 nodes and 25300 3-noded triangles including a structured mesh of 15 layers near the airfoil boundary which is merged with an unstructured mesh in the remaining of the computational domain. For the first layer of elements at the boundary, the normal element size has the value of 0.0005 which is increased by a geometric progression for the following layers. The details of the mesh near the airfoil are shown in Fig. 5. The no slip adiabatic wall condition is imposed at the airfoil surface, whereas the far field condition is applied at the outer boundary.

Results for the Mach number contours are presented in Fig. 6 showing an overall excellent agreement with the reference values [54]. Figure 7a illustrates the recirculation bubble at the trailing edge. Each vector of the figure represents the modulus and direction of velocity at each node of the mesh. Pressure contours are shown in Fig. 7b. The fact that the lines are parallel to each other with almost no oscillations indicates the good quality of the results.

Fig. 5
figure 5

Subsonic viscous flow past NACA0012 airfoil. Detail of the mesh in the vicinity of the airfoil

Fig. 6
figure 6

Subsonic viscous flow past a NACA0012 airfoil. Mach number contours

Fig. 7
figure 7

Subsonic viscous flow past a NACA0012 airfoil. a Close-up of computed velocity vectors near the trailing edge and b Details of pressure contours

A more severe test of accuracy is the plot of the pressure coefficient \(c_p\) and the skin friction coefficient \(c_f\) along the airfoil, presented in Figs. 8 and 9, respectively, showing the agreement of the obtained results with the reference values [54]. It is to be noted that the peak value of \(c_f\) is slightly underestimated. Better results can be obtained by using a finer mesh near the leading edge.

Fig. 8
figure 8

Subsonic viscous flow past a NACA0012 airfoil. Comparison of the obtained pressure coefficient \(C_p\) distribution with the numerical results of reference [54]

Fig. 9
figure 9

Subsonic viscous flow past a NACA0012 airfoil. Comparison of the obtained skin-friction coefficient \(C_f\) distribution with the numerical results of reference [54]

The variation of the accuracy and the convergence with the change in the coefficient \(\beta \) is investigated in this example. Table 1 presents an estimate of the solution accuracy as measured by the computed values of the location of the separation point using three different values of 0.25, 0.50 and 0.75 for \(\beta \). It can be found that the values obtained with \(\beta = 0.25\) and \(\beta = 0.50\) have a good agreement with the results presented in the reference paper [54], ranging from \(80.9-83.4\%\) chord.

Table 1 Subsonic viscous flow past a NACA0012 airfoil. Comparison of separation location values obtained from different values of \(\beta \)

The variation of the convergence history of the density at the stagnation point with the change in \(\beta \) is presented in Fig. 10 showing that the choice of \(\beta = 0.5\) does not present oscillations in the density values at the stagnation point for the steady state solution. These results justify using \(\beta = 0.50\).

5.3 Example III: supersonic viscous flow over flat plate

The Carter’s flat plate example with the flow conditions of \(Re = 1000,\,M_{\infty } = 3.0\) and \( \alpha = 0^{\circ }\) is selected here to examine the capability of the current method in the presence of shock waves and boundary layers. The rectangular domain considered with the dimensions of 1.4 and 0.8 along the x and y directions, respectively, is presented in Fig. 11. The leading edge of the plate is located at \(x= 0.2\) and \(y=0.0\). The Reynolds number is calculated based on the free stream values and the length in the x direction. A structured mesh is created by dividing the domain in 64 and 112 parts in the x and the y directions, respectively.

Fig. 10
figure 10

Subsonic viscous flow past a NACA0012 airfoil. Convergence of the density at the stagnation point for different values of \(\beta \)

Fig. 11
figure 11

Supersonic flow over flat plate. Problem definition

As shown in Fig. 11, all the values of \(\rho ,\,v_x,\,v_y\) and T are fixed at the inflow and upper sides of the domain since these boundaries behave as a supersonic inlet. The no-slip boundary condition is applied on the surface of the plate, whereas the stagnation temperature of

$$\begin{aligned} T_{stag} = T_{\infty } \left( 1+\frac{\gamma -1}{2} M_{\infty }^2\right) , \end{aligned}$$
(39)

is imposed there, as well. Although a prescription of the density is needed at the subsonic part of the outflow boundary, the flow variables are left free there.

The obtained contours of density, pressure, temperature and Mach number are plotted in Fig. 12. The results demonstrate the good behavior of the presented formulation in capturing the shock wave and the boundary layer.

Fig. 12
figure 12

Supersonic flow over flat plate. a density, b pressure, c temperature and d Mach number contours

The obtained density value and the y component of the velocity along the line \(x=1.2\) are compared in Figs. 13a and 13b, respectively, with the results presented in [55]. Although the obtained peak point values of both the density and y component of the velocity are not coincident with the reference ones, an overall good agreement with the reference results can be observed. The density and velocity are normalized using the upstream density and the modulus of the upstream velocity vector, respectively.

Fig. 13
figure 13

Supersonic flow over flat plate. Comparison of the obtained a normalized density and b normalized vertical velocity values along the line \(x=1.2\) with the reference results [55]

5.4 Example IV: compression corner

This example is another benchmark of the FIC–FEM formulation for supersonic viscous regimes. The problem data is extracted from [55] where the flow for \(Re = 16800,\,M_{\infty } = 3.0\) and \( \alpha = 0^{\circ }\) enters the domain passing over a flat plate and then over a compression corner of \(10^{\circ }\) inducing the shock wave and the boundary layer initiated from the leading edge of the plate. The Reynolds number is calculated using the free stream values and the distance between the leading edge of the plate and the compression corner.

Figure 14 schematically shows the computational domain of \(0.0 \le x \le 1.9\) and \(0.0 \le y \le 0.716\). The leading edge of the flat plate is located at \(x=0.1\) and the compression corner starts from \(x=1.1\).

Fig. 14
figure 14

Compression corner. Problem definition

The density, velocity and temperature values are fixed at the inflow and upper boundaries where no condition is prescribed on the outflow boundary. On the plate surface, the no-slip boundary condition, as well as the specification of the temperature as the stagnation temperature, calculated from Eq. 39, are applied.

The domain is discretized using a structured mesh of 3-noded triangles containing 200 points in the streamline direction, and 50 points in the vertical direction where the minimum element size above the plate is taken as 0.0011 giving the maximum aspect ratio of almost 10 (Fig. 15).

Fig. 15
figure 15

Compression corner. Detail of the structured mesh

The obtained values for the density, pressure, temperature and Mach number contours are presented in Fig. 16. The figure shows that the FIC–FEM approach presented in this work is able to provide smooth results in all the domain, especially near the shock wave and near the boundary layer. The only inaccuracy observed in the results is the presence of non-realistic values at the zone close to the stagnation point which is a point of singularity. It can be seen that the weakness of the formulation in determining the temperature at the stagnation point results in an overestimation of the Mach number there. This problem can be resolved by using elements with less aspect ratio around that region.

Fig. 16
figure 16

Compression corner. a density, b pressure, c temperature and d Mach number contours

The obtained \(C_p\) and \(C_f\) distributions along the plate surface are compared to the ones presented by Carter [55] in Fig. 17 and 18, respectively. Generally, a good agreement is observed except for the peak values at the stagnation point, as mentioned before. The location of the separation point happens at \(x=0.89\) showing an appropriate compatibility with the results presented in the [5557] ranging from \(x=0.84\) to \(x=0.89\).

Fig. 17
figure 17

Compression corner. Comparison of the obtained pressure coefficient \(C_p\) distribution with the numerical results of reference [55]

Fig. 18
figure 18

Compression corner. Comparison of the obtained skin-friction coefficient \(C_f\) distribution with the numerical results of reference [55]

6 Concluding remarks

An implicit stabilized formulation based on the FIC method has been developed for solving the laminar compressible Navier–Stokes equations on unstructured grids using the Galerkin FEM. The arisen non-linear system of equations for the steady state problems is solved by implementing a damped Newton method in conjunction with a preconditioned GMRES method for solving the resulted linear system of equation at each iteration. The capability of the developed FIC–FEM stabilized formulation has been assessed by introducing several inviscid and viscous test examples. Having compared the numerical results with reference ones, it is found that stable and accurate solutions have been obtained. In particular, the boundary layer is captured as well as the appropriate pressure coefficient \(C_p\) distribution and the skin-friction coefficient \(C_f\) distribution along the boundary. In future work, the accuracy of the formulation for estimating the temperature inside the elements with high aspect ratio around the stagnation point needs to be enhanced. We also plan to develop the proposed method for 3D applications considering unsteady flows and turbulence effects.