1 Introduction

Even though the laminar–turbulent transition process is of great importance for the design of an efficient flight vehicle, it is yet not completely understood nor does a universal transition model exist for computational fluid dynamics (CFD) tools. Especially in the context of hypersonics, the transition process is directly linked to drastically increased viscous drag and heat loads. The knowledge of the transition onset and its extent for a given flight vehicle is, therefore, of great value since it would allow an improved design, for example a lower thrust installation and a reduced thermal protection system (TPS) resulting into a lower weight. This observation is further supported by the Defense Science Board which evaluated the U.S. National Aerospace Plane Program (NASP) in 1988 [1]: “Estimates [of transition] range from 20 to 80% along the body …The estimate made for the point of transition can affect the design vehicle gross take-off weight by a factor of two or more”. Furthermore, the same National Aerospace Plane review board concluded in 1992 [2]: “The two most critical [technology areas] are scramjet engine performance and boundary layer transition… Further design development and increased confidence in these two technical areas must be of paramount importance to the NASP program”. But still by today’s standards, the subject of getting precise prediction of the onset of laminar–turbulent transition from CFD is not missing any actuality, as the National Aeronautics and Space Administration (NASA) attested more recently by stating, that the “ability to adequately predict viscous turbulent flows with possible boundary layer transition and flow separation present [will remain a pacing item by 2030]” [3].

The handling and prediction of transition in CFD by means of laminar and/or Reynolds-averaged Navier–Stokes (RANS) simulations is still a research subject. A rather simple method is to enable the turbulence model at a given position. Lacking an actual physical mechanism, this, however, results in incorrect transition point and length. Using the concept of intermittency, i.e. blending the laminar and turbulent solutions, a more physical and more accurate prediction of the transitional length and zone can be computed. An algebraic intermittency model was proposed by Dhawan and Narasimha [4], whereas a transport equation for intermittency \(\gamma\) was developed by Steelant and Dick [5,6,7,8] aiming to reproduce the \(\gamma\)-distribution function in the transition region. Their original work doubled both, computational and storage requirements, using two sets of conditionally averaged Navier–Stokes equations, each representing the laminar and turbulent state of the transitional flow, respectively. This drawback was overcome by Suzen and Huang [9]. Their \(\gamma\)-transport equation model, which was based on the ones of Cho and Chung [10] and Steelant and Dick [5,6,7,8], was reliant on only one set of RANS equations. Menter et al. [11] and Langtry et al. [12] developed a correlation-based transition model that allowed for an easy implementation in unstructured CFD solvers as it uses only local flow quantities (in this context local refers to per mesh point). Their model builds up on the SST \(k\)\(\omega\) turbulence model and introduces an additional transport equation for each of the two quantities, the intermittency \(\gamma\) and the transition onset momentum thickness Reynolds number \(R{e}_{\theta ,t}\). Van den Eynde and Steelant explored this avenue further by exploring the use of local empirical correlations on the basis of their \(\gamma\)-\(\alpha\) model [13, 14].

Whilst solving for an additional transport equation comes with the benefit of higher fidelity, this procedure is still rather costly. In this work, an engineering approach is elaborated for exploitation in the very early design phase of a high-speed flight vehicle, and therefore needs to rely on rather quick and simple, low-fidelity correlations. Once the geometry is preliminary defined, more advanced transition onset methods such as instability codes and eN-methods can be applied to ascertain the onset location with a higher accuracy. This aligns with the observation made by Reshotko [15] that correlations need to be replaced by physics-based eN- and transient-growth methods, respectively, to improve reliability. This follow-up step is not addressed here but is a required step once the preliminary outer mold line is available. The variety of correlations for laminar–turbulent boundary-layer transition for high-speed flow regime in literature is rather rich, some of which have been used for decades already. Whilst the evaluation of such correlations is rather easy for academic geometries like a flat plate, their evaluation for complex geometries of flight vehicles turns into a challenge. The difficulty lies particularly into the development of an automatic detection methodology to be applied onto a large CFD data set which needs to be both accurate and robust, independently of any combination of flow patterns present. The outcome shall then provide surface maps of post-processed and integrated parameters linked to the local boundary layer (BL) retrieved from 3D CFD data (in this context local refers to the position with respect to the wall location). Using these local boundary-layer quantities, the laminar–turbulent boundary-layer transition point is then predicted a-posteriori based on a set of different empirical correlations. This allows to derive a number of different results from only one, fully laminar simulation: surface maps for each transition criterion implemented, either showing whether and where transition onset could occur or providing the minimum local critical roughness height that would trigger transition for any point on the surface of the geometry. Other wall bounded parameters such as chemistry composition could be exploited for regression rates, catalycity, etc. The present work, therefore, does not claim to present new techniques for high-fidelity transition prediction but aims for a more convenient usage of existing methods on complex geometries, especially motivated by the idea of supporting the phase of preliminary design of a flight vehicle.

2 Transition correlations

The actual mechanisms of transition are complex and still not fully understood. The onset of transition as well as its progression are influenced by a whole set of different parameters such as free-stream conditions, pressure gradient, wall temperature, wall blowing/suction as well as surface roughness just to name a few.

Interested in a precise estimation of the transition point, a large experimental effort has been made so far to find transition correlations for supersonic and hypersonic applications. It should be noted, that applying correlations derived from solely wind tunnel data to flight vehicles most likely leads to overly conservative estimates for the transition point due to the acoustic noise of the tunnel. Also, as mentioned multiple times in literature, none of the correlations is able to collapse all of the available experimental data equally well; thus, none of them can be regarded as universally applicable.

Basically, one can distinguish between correlations predicting the point of natural transition onset, the critical roughness height, and critical cavity dimensions. In the following, a brief selection of different transition correlations from literature is presented.

2.1 Natural transition onset

Actually investigating the optimisation of viscous waverider designs, Bowcutt et al. [16] correlated Eq. (1) from cone [17] and swept wing experiments [18], that gives the critical local Reynolds number \(R{e}_{x,tr}\) in dependency of the boundary-layer edge Mach number \(M{a}_{e}\):

$$\mathrm{log}\left(R{e}_{x,tr}\right)=6.421\mathrm{exp}(1.209\text{e} - 4\cdot M{a}_{e}^{2.641})$$
(1)

In the National Aerospace Plane (NASP) programme of the’80 s, a transition criterion was found in the form of:

$$R{e}_{\uptheta ,\mathrm{tr}}/M{a}_{e}=C$$
(2)

where is \(R{e}_{\uptheta ,\mathrm{tr}}\) the critical Reynolds number build with the local momentum thickness \(\theta\) and with originally \(C=305\) [19]. Other authors have fitted \(C\) to their data: Berry and Horvath [20] found \(C\) to be between 300 and 400 for the X-43A. Lau [21] uses a constant of \(C=318\) for sharp geometries, Bertin et al. [22] found \(C\) to be in the range of \(110\) to \(162\) for the shuttle orbiter whilst Berry and Horvath [20] found \(C=150\) and Thompson et al. [23] provided \(C=250\) for the windward centreline of X-33.

Simeonides [24] investigated transition on a flat plate under the influence of the leading-edge bluntness. Their correlation distinguishes between three levels of bluntness characterised by the bluntness Reynolds number \(R{e}_{b}\) which uses the leading-edge thickness \(b\) as the characteristic length:

$${Re}_{x,tr}=\left\{\begin{array}{c}\begin{array}{ccc}0.9 {Re}_{u}/{Ma}_{\infty }& {Re}_{b}<70 {Ma}_{\infty }^{1.7}& \text{weak bluntness}\end{array}\\ \begin{array}{ccc}70000 {Ma}_{\infty }^{0.08}{Re}_{b}^{0.46}& {Re}_{b}<1000 {Ma}_{\infty }^{2}& \text{modest bluntness}\end{array}\\ \begin{array}{ccc}6\text{e}6 {Ma}_{\infty }^{1.38}{Re}_{b}^{-0.19}& {Re}_{b}>1000 {Ma}_{\infty }^{2}& \text{strong bluntness}\end{array}\end{array}\right.$$
(3)

with the unit Reynolds number \(R{e}_{u}\) and \({Ma}_{\infty }\) taken from free-stream conditions.

2.2 Critical roughness height

The roughness of a surface (e.g. affected by manufacturing tolerances) has a large impact on the laminar–turbulent transition point. In the literature, a distinction is made between distributed roughness and discrete isolated roughness elements. Often, one can find slightly different fits or definitions of a correlation depending on the context. The incipient value is defined as the one where the boundary layer remains laminar and just the smallest increase of the roughness Reynolds number would result in an earlier transition further downstream. The critical value is defined as the one where the flow downstream of the roughness element starts to be significantly transitional. Finally, the effective value is defined as the one where an increase in the roughness Reynolds number does not result in the transition moving upstream anymore because it is already anchored at or near the roughness [25]. Unless otherwise stated, the following criteria are referring to the critical value of roughness-induced transition.

2.3 Discrete roughness

An early transition criterion based on the discrete roughness height \(k\) is given by Braslow and Horton [26] as

$$\sqrt{{Re}_{kk}}=\sqrt{\frac{{\rho }_{k}{U}_{k}k}{{\mu }_{k}}}=15\dots 30$$
(4)

where the quantities building the roughness Reynolds number \({Re}_{kk}\) have to be evaluated at the height of the roughness.

Investigating results of wind tunnel experiments on the influence of isolated roughness on the Space Shuttle orbiter, Berry et al. [25] found the correlation

$$\frac{{Re}_{\theta }}{{Ma}_{e}}=C{\left(\frac{k}{\delta }\right)}^{-1}$$
(5)

with the edge Mach number \(M{a}_{e}\), the boundary-layer thickness \(\delta\) and \(C=21\) for incipient and \(C=30\) for effective transition. Thompson et al. [23] note \(C=45\) for incipient and \(C=60\) for effective transition for \(C\) of Eq. (5) for the windward centreline of X-33.

King et al. [27] used historical flight and new wind tunnel data to present a second generation of transition correlations for NASA’s BLT tool. One of their final proposals for discrete roughness induced transition reads

$${Re}_{kk}^{0.6}{\left({Re}_{\theta }\frac{{\mu }_{e}}{{\mu }_{k}}\right)}^{0.4}=C$$
(6)

using the ratio of the viscosity \(\mu\) between the values taken at the boundary-layer edge and at the roughness height and with a constant \(C\) of \(220.7\) for incipient and \(396.8\) for effective transition.

2.4 Distributed roughness

A PANT-like (Passive nosetip technology) transition criterion for distributed roughness is given by Reshotko and Tumin [28] and includes the edge-to-wall ratio of the temperature \(T\):

$${Re}_{\theta }\frac{k}{\theta }{\left(\frac{{T}_{e}}{{2T}_{w}}\right)}^{1.27}=180$$
(7)

2.5 Critical cavity dimensions

A cavity can be characterised by multiple geometrical parameters, e.g. the diameter, length or depth of the cavity. Based on the last one, the cavity depth \(d\), Horvath et al. [29] correlated STS-114 flight data with:

$$\frac{{Re}_{\theta }}{{Ma}_{e}}\frac{d}{\delta }=100$$
(8)

3 Functionality of the tool

The utility of the tool is the evaluation of correlations like the above mentioned from a given laminar CFD solution of any generic three-dimensional body. This requires knowledge about the local boundary layer in regards of (integral) boundary layer-quantities as well as edge values and is reached in a three-step process: first wall-normal profiles are evaluated to detect the boundary layer locally, then the required boundary-layer quantities are calculated and finally the transition correlations are evaluated.

An Euler simulation of the same geometry can be provided additionally to the laminar solutions as one can assume that the related wall velocity is a good estimation of the locally expected velocity at the boundary-layer edge. The concept of using the Euler simulation for the detection of the boundary-layer edge is discussed in more detail in Sect. 3.3. In addition, a configuration file allows the user to specify the only few input parameters which are required for the tool evaluation.

3.1 Boundary-layer characterisation

Besides the boundary-layer thickness \(\delta\), other variables are also used to describe the local boundary layer or to model its state. These are on the one hand, integral quantities like the displacement thickness \({\delta }_{1}\), the momentum thickness \({\delta }_{2}\), in literature also often called \(\theta\), or the energy thickness \({\delta }_{3}\).

$${\delta }_{1}=\underset{0}{\overset{\delta }{\int }}\left(1-\frac{\rho U}{{\rho }_{e}{U}_{e}}\right)d{y}^{\mathrm{^{\prime}}}$$
(9)
$${\delta }_{2}=\uptheta =\underset{0}{\overset{\delta }{\int }}\frac{\rho U}{{\rho }_{e}{U}_{e}}\left(1-\frac{U}{{U}_{e}}\right)d{y}^{\mathrm{^{\prime}}}$$
(10)
$${\delta }_{3}=\underset{0}{\overset{\delta }{\int }}\frac{\rho U}{{\rho }_{e}{U}_{e}}\left(1-{\left(\frac{U}{{U}_{e}}\right)}^{2}\right)d{y}^{\mathrm{^{\prime}}}$$
(11)

To calculate these values, knowledge about the edge of the boundary layer in regards of \(\delta\) but also the edge values of the velocity and the density is required plus the whole density and velocity profile up to this point must be available.

From these values, one can then calculate the two shape factors \({H}_{12}\) and \({H}_{32}\):

$${\mathrm{H}}_{12}={\delta }_{1}/{\delta }_{2}$$
(12)
$${\mathrm{H}}_{32}={\updelta }_{3}/{\delta }_{2}$$
(13)

On the other hand, specific Reynolds numbers based on locally representative lengths are also used. These can be, e.g. the local distance to the attachment line or the momentum thickness:

$${\mathrm{Re}}_{\mathrm{x}}={\rho }_{e}{U}_{e}x/{\mu }_{e}$$
(14)
$${\mathrm{Re}}_{\uptheta }={\rho }_{e}{U}_{e}\theta /{\mu }_{e}={\rho }_{e}{U}_{e}{\delta }_{2}/{\mu }_{e}$$
(15)

The case of an incompressible, laminar boundary layer over a flat plate without pressure gradient is described exactly by the Blasius equation. Evaluating this equation for the boundary-layer specific quantities leads to analytical solutions for the quantities in Eqs. (915):

$$\delta =5.0 x/\sqrt{R{e}_{x}}$$
(16)
$${\updelta }_{1}=1.7208 x/\sqrt{R{e}_{x}}$$
(17)
$${\delta }_{2}=\theta =0.664 x/\sqrt{R{e}_{x}}$$
(18)
$${\delta }_{3}=1.0444 x/\sqrt{R{e}_{x}}$$
(19)
$${H}_{12}=2.591$$
(20)
$${H}_{32}=1.573$$
(21)

For a supersonic laminar boundary layer over a flat plate with air as the fluid, one can derive the following semi-empirical equations from the Blasius law [30]:

$$\delta = 5\frac{x}{\sqrt{R{e}_{x}}}\sqrt{{C}^{*}}$$
(22)

with the Chapman–Rubesin parameter \({C}^{*}\), here evaluated at reference conditions:

$${C}^{*}=\frac{{\mu }^{*}{\rho }^{*}}{{\mu }_{e}{\rho }_{e}}$$
(23)
$${\delta }_{1}=1.7208\frac{x}{\sqrt{R{e}_{x}}}\left(-0.122+1.122\frac{{T}_{w}}{{T}_{\infty }}+0.333\cdot \frac{\gamma -1}{2}\cdot {M}_{e}^{2}\right)\sqrt{{C}^{*}}$$
(24)
$${\delta }_{2}=\theta =0.664\frac{x}{\sqrt{R{e}_{x}}}\sqrt{{C}^{*}}$$
(25)

Equation (23) uses the reference values \({\mu }^{*}\) and \({\rho }^{*}\) which are calculated as

$$\frac{{\mu }^{*}}{{\mu }_{e}}=\sqrt{\frac{{T}^{*}}{{T}_{e}}} \frac{1+{C}_{s}/{T}_{e}}{{1+C}_{s}/{T}^{*}}$$
(26)

with \({C}_{s}\) being the Sutherland constant in this case, and

$$\frac{{\rho }^{*}}{{\rho }_{e}}=\frac{{T}_{e}}{{T}^{*}}$$
(27)
$$\frac{{T}^{*}}{{T}_{e}}=1+0.5\cdot \left(\frac{{T}_{w}}{{T}_{e}}-1\right)+0.187\cdot \frac{\gamma -1}{2}\cdot {M}_{e}^{2}$$
(28)

3.2 Analysis of the velocity field

Via the configuration file, the tool can identify the data of the spatial coordinates, the velocity components as well as the temperature, pressure, density data. By specifying the wall zones there too, it can be distinguished between points in the fluid domain and wall points. For the latter, the tool first calculates the wall normal for each of them. Since the tool handles only nodal data, the wall-normal at the vertex (where mathematically one cannot define a normal) is calculated by the average of the normals of the surrounding surface cells. The velocity boundary layer is then detected in a two-step approach utilising profiles normal to the surface: first, the edge of the boundary-layer region is estimated roughly, then this region is resolved to provide a more precise result.

Therefore, a bounding box is created around the domain defined by the min. and max. values of each coordinate. For each wall point, the point of intersection of a wall-normal line with the bounding box is calculated. Subsequently, the distance to the wall point is equidistantly discretised with a specified number of points. Following this, the pressure and the velocity components are interpolated for these profile points using a nearest neighbour interpolation.

At this point, a first profile evaluation in terms of an estimated boundary-layer thickness is already possible. The method assesses the boundary-layer thickness based on the generated profiles and is described in detail in Sect. 3.4.

Two different versions of the velocity profile evaluation exist: one uses the profiles of the velocity magnitude of all three velocity components and the other one just the wall-parallel components. The two variants can result in slightly different results, e.g. in the vicinity of the stagnation point of a blunt, supersonic body: whilst the velocity in the actual boundary layer is rather small, the wall-normal velocity component is large, thus dominating the velocity magnitude. Therefore, detection of the boundary layer using just the magnitude of the wall-parallel components is also performed. The velocity is transformed into a local \({x}^{^{\prime}}{y}^{^{\prime}}{z}^{^{\prime}}\) system (see Fig. 1) where \({x}^{^{\prime}}\) and \({z}^{^{\prime}}\) are wall-parallel and \({y}^{^{\prime}}\) is wall-normal. Whilst the \({y}^{^{\prime}}\)-axis is already known, the \({x}^{^{\prime}}\)- and \({z}^{^{\prime}}\)-axes have to be calculated and are arbitrarily oriented.

Fig. 1
figure 1

3D boundary-layer profile with different, used coordinate systems

This first, but very rough estimation of the boundary layer is used to re-discretise the profile in this exact region, providing a better resolution and to determine a more precise value for \(\delta\) in a second evaluation using again velocity and pressure profiles.

Regarding the interpolation method of the profiles, a nearest neighbour interpolation is used in the current version. Whilst a linear interpolation would improve the quality of the results, the implementation via Delaunay triangulation did not always work flawlessly. Therefore, the nearest interpolation was chosen due to simplicity and computational speed. This approach results, however, in a rather poor quality of the interpolated profile, which is sufficient for an estimation but not an accurate detection of the precise boundary-layer edge. Thus, the piecewise constant, nearest neighbour interpolated profiles are reconstructed to piecewise linear profiles (see Fig. 2) for all required quantities before the evaluation, reducing the error to the original data.

Fig. 2
figure 2

Generic nearest neighbour interpolated wall-normal profile

3.3 Auxiliary Euler simulation

Detecting the boundary layer for any arbitrary body can become very complicated and a local estimate of the expected boundary-layer edge conditions would be helpful. One can think of taking an Euler simulation of the same geometry and using the Euler wall velocity for estimating the expected edge velocity in the Navier–Stokes solution. Such an option is implemented in the tool and can be used by simply providing the file of the Euler simulation as an additional third argument in the programme call. The provided Euler simulation has to be in the same units and scale as the viscous simulation with the same point of origin and the same orientation of the coordinate axis. Like for the viscous simulation, the user has to provide certain information in the configuration file, so that the Euler simulations coordinate and velocity component variables can be identified. The latter are interpolated for the wall points from the Euler mesh to the viscous simulation's mesh using a nearest neighbour interpolation.

3.4 Evaluation of the boundary layer

The algorithmic detection of the boundary layer is the main component of the tool. Since the edge of the boundary layer is not always trivial to define for complex flows, a modular approach has been implemented that is open to further modifications and extensions. This modularity is achieved by applying different detection criteria per profile which are then interrelated in a voting process where the importance of each criteria can be adjusted, finally leading to a local value for \(\delta\). The detection criteria are evaluated using the velocity magnitude and pressure of the discretised profiles. Whilst the velocity profile is used to determine the boundary-layer thickness, the pressure profile is evaluated to avoid mistaking a shock for the boundary-layer edge.

For each detection criterion, a pseudo Boolean array with the size of the profile resolution is defined. It is initialised with zeros meaning that the detection criterion is not fulfilled at the corresponding profile point. If the criterion is found to be fulfilled at a certain point of the profile during the evaluation process, the value is changed to one at the respective position in the array. The following criteria are used:

Criterion 1: The point with the maximum of the velocity magnitude \({U}_{max}\) within the profile is chosen. This criterion is used only if all other criteria fail in detecting a boundary-layer edge.

Criterion 2: Based on the definition of \({\delta }_{99}\), the criterion is fulfilled for all points where the velocity magnitude exceeds \(0.99 {U}_{max}\) of the valid profile.

Criterion 3: An \(\epsilon\)-criterion for the first derivative of the profile which is fulfilled for \(|\partial u/\partial {y}^{^{\prime}}|<\epsilon\). It can be seen as a criterion for an approximated vorticity \({\text{rot}}{\left(u,v,w\right)}^{T}\approx \partial U/\partial {y}^{^{\prime}}\). The \(\epsilon\)-limit is calculated based on the derivative profile values itself which yields the advantage of being adjusted to the local profile. The \(\epsilon\)-limit value is computed as the mean of two auxiliary values \(\epsilon =0.5({\epsilon }_{I}\)+\({\epsilon }_{II})\). The first value is calculated as \({\epsilon }_{I}={|\partial u/\partial {y}^{^{\prime}}|}_{min} +0.03({|\partial u/\partial {y}^{^{\prime}}|}_{max}-{|\partial u/\partial {y}^{^{\prime}}|}_{min})\). This provides a limit, where the derivate has decreased already significantly in magnitude. Taking into account the value range of the available derivative profile instead of assuming \(|\partial u/\partial {y}^{^{\prime}}|\approx 0\) for the outer part of the profiles makes it robust against gradient dominated flow at the boundary-layer edge. However, for cases with a very homogenous external flow, where \({|\partial u/\partial {y}^{^{\prime}}|}_{min}\approx 0\) is actually satisfied, the decrease to 3% of \({|\partial u/\partial {y}^{^{\prime}}|}_{max}\) is too generous for a good BL edge detection. To counter this, the parameter \({\epsilon }_{II}\) is introduced and calculated as three times the mean absolute value of all derivative values \(|\partial u/\partial {y}^{^{\prime}}|\) along the normal profile which are less than \({\epsilon }_{I}\) (representing a characteristic gradient), and therefore takes the value distribution of the derivative in the outer part of the profile into account, i.e. corrects the \(\epsilon\) value to a more restrictive threshold. If the criterion is fulfilled by multiple points in a row, only the array value at the wall-nearest of these points will be set to one whilst the others stay zero. That way, only the positions in the profile where \(|\partial u/\partial {y}^{^{\prime}}|\) drops below \(\epsilon\) are saved.

Criterion 4: In addition to the previous criterion, this one is based on the first derivative, too. For each of the points where the \(\epsilon\)-criterion was fulfilled, the total variation of the first derivative of the following four profile points is calculated. Only the one with the lowest total variation fulfils the current criterion. The motivation for this criterion is that a boundary-layer profile can have local maxima/minima due to disturbances. At these points, the previous \(\epsilon\)-criterion would be fulfilled as the discrete first derivative at extrema is around zero. For a local extremum, the derivative changes a lot in the following four points resulting in a high total variation whilst for the actual boundary-layer edge, the derivative is expected not to change much anymore. Thus, this criterion shall distinguish the boundary-layer edge from local extrema.

Criterion Euler: If an Euler solution was provided in the function call, an additional criterion will be evaluated. It is fulfilled by all points where the velocity magnitude of the viscous simulation is larger than 99% of the magnitude of the Euler simulation’s interpolated wall velocity.

Besides the criteria for the \(\delta\)-detection, another criterion for shock detection is implemented as another pseudo Boolean array called RNS (requirement no shock). The one-dimensional version of the Jameson–Schmidt–Turkel (JST) scheme [31] is implemented to detect possible shocks. The pressure-based scheme calculates a shock indicator

$${\mathcal{I}}_{JST,i}=\frac{{p}_{i-1}-2{p}_{i}+{p}_{i+1}}{{p}_{i-1}+2{p}_{i}+{p}_{i+1}}$$
(29)

which is computed for each profile point. The RNS array is initialised with zeros, meaning that every point is assumed to not satisfy the criterion, initially. Starting at the wall, the local indicator value is compared with a critical one. This critical value is implemented as 5e−3 which was found to give quite good results during calibration but cannot be considered as universal. If the magnitude of the indicator value is smaller than the critical one, the RNS array is locally set to one, i.e. no shock is detected. Else, the value remains zero and the scanning of the boundary-layer profile stops at this point along the wall normal, meaning also, that all the profile points above the shock keep their initialised RNS value. The boundary-layer edge detection is then limited to only consider profile points where the RNS criterion is satisfied. Due to this design choice, the boundary-layer edge can only be detected below a shock even though physically it may be above. Also, to be consistent, criterion 2 is then evaluated again, to refer to post-shock value for \({U}_{max}\).

To counter this, an additional variable FS (flow state) is used to adapt each of the detection criteria to the flow state at the boundary-layer edge. It provides an estimate whether the external flow, and hence the flow at the potential BL edge of each particular criterion is rather homogeneous (like for a flat plate) or gradient dominated (like in a shock/entropy layer). To estimate this flow state, a certain segment of the velocity profile, called EFS (external flow sample), is used, to represent the external flow. If no shock is present in the profile, this data sample is chosen to be the outer 15% of the points of the available profile. Else, 20% of the points below the shock position are used for the EFS. With respect to the before mentioned restriction of the boundary-layer edge only being detected below a shock, this guarantees that the EFS contains the outermost points of the profile to be considered for the BL edge. The FS value is then set to a value between 0 (gradient dominated) and 1 (homogeneous) based on a case differentiation, see Eq. (31). The variable DEFS (deviation external flow sample) is introduced for readability.

$${\text{DEFS}}=\frac{\mathrm{max}({\text{EFS}})-\mathrm{min}({\text{EFS}})}{\mathrm{max}({\text{EFS}})}$$
(30)
$$\begin{array}{cc}{\text{FS}}& =\end{array}\left\{\begin{array}{cc}1& {\text{if }} U=0\text{ at any point in }{\text{EFS}}\\ 1& \text{if mean }\partial U/\partial {y}^{^{\prime}} <0 {\text{ for }} {\text{EFS}}\\ 1& {\text{DEFS}}<0.01\\ 0& {\text{DEFS}}>0.04\\ 1-\frac{{\text{DEFS}}-0.01}{0.04-0.01}& 0.01<{\text{DEFS}}<0.04\end{array}\right.$$
(31)

The first line in Eq. (31) aims at flows, where the profile would reach another wall at its end (e.g. internal flows or concave surface geometries). The second line is triggered for overshoots in the velocity profile. For such flows, a typical \({\delta }_{99}\)-criterion is working well. Case three will be triggered for flows where the velocity gradient outside of the boundary layer is small. In contrast, case four will be triggered, if there is still a strong velocity gradient outside of the boundary layer. Case five gives a linear blending for the region between cases three and four.

So far, each of the criteria 2 to 4 provides an array \({Bo}_{CRi}\) flagging potential points as the boundary-layer edge in the profile. To assess which of these predicted candidates should be determined as the actual boundary-layer edge, the three \({Bo}_{CRi}\)-arrays are combined in a voting procedure. The variable RTG (RaTinG) is a weighted value stemming from the predictions of each single criterion. The following rating formula was derived:

$${\text{RTG}}=1.0\cdot {\text{FS}} \, \cdot {Bo}_{CR2}+1.0(1-{\text{FS}})({Bo}_{CR3} +0.5 {Bo}_{CR3,LID}) +0.1 (1-{\text{FS}})({Bo}_{CR4} +0.5 {Bo}_{CR4,LID})$$
(32)

The variable FS is used to adapt the criteria dynamically to the local conditions by multiplying it with the three Boolean criterion arrays: for rather homogeneous outer flows, only the classical \({\delta }_{99}\)-criterion (criterion 2) is used whilst for gradient dominated flows, the criteria 3 and 4 based on the first derivative are applied.

Further, the criteria \({Bo}_{CR3,LID}\) and \({Bo}_{CR4,LID}\) appear in Eq. (32). These “LID” (local influence diffusion) criteria create a cross-influence between the criterion state of neighbouring cells for their according parent criterion: their state is set to one at the neighbouring points of the profile point where the original criterion is fulfilled, i.e. the LID criteria are set to one at \(i\pm 1\) if the original criterion is fulfilled at profile point \(i\). This shall prevent that the boundary-layer edge is not detected in a section of the profile, where multiple criteria are actually fulfilled though not exactly at the same profile point. If two criteria detect a possible boundary-layer edge, one at position \(i\) and the other at \(i+1\), this point should be more likely detected as the boundary-layer edge compared to a point \(j\) where solely the first criterion is fulfilled. Due to these LID criteria, the fulfilled criterion at \(i\) increases the rating value RTG at \(i+1\) and vice versa. Thus, the boundary layer is more likely detected in this region where two criteria are fulfilled.

The voting then chooses the profile point with the highest RTG value to be the point of the boundary-layer edge. The corresponding point index is now used as a back-up solution before the RTG array is multiplied with the RNS array elementwise. The voting is then done again, using just the profile points below a possible shock (the ones above the shock are multiplied with zeros and consequently will not have the highest RTG value). The according profile point is then the predicted boundary-layer edge. If no result for the boundary-layer edge is obtained after this step, the RNS array would be considered to be too strict and the backed-up point would be chosen instead. If multiple points with the same highest value are found in the voting, the nearest one to the wall will be taken.

In case of a provided Euler solution, only the Criterion Euler instead of Eq. (32) is used.

This rather abstract procedure is demonstrated for a simplified example on a velocity profile consisting of only 13 points here, see Fig. 3. One can note a shock at a height of around 0.02 m. Figure 4 illustrates the corresponding voting process using the above presented criteria and rating formula. As mentioned, the evaluation of the criteria is done per profile point and stored in arrays for each criterion, whose first entries refer to the wall point. To the right, one can find the voting weights the single criteria are multiplied with. The dependency on FS, which evaluates to \(0.88\) for this case, is depicted there, too. After the multiplication with the weights, the values are summed up pointwise (columnwise). The RNS is multiplied subsequently, removing the last three profile points from being eligible as the BL edge, since a shock is present there. Finally, the boundary-layer edge is determined at the tenth point of the profile, since the maximum RTG value was calculated there.

Fig. 3
figure 3

Generic wall-normal velocity profile

Fig. 4
figure 4

Exemplary schematic for the voting principle

Results from application to more representative profiles are discussed in Sects. 4.1 and 4.2, respectively.

3.5 Transition evaluation

With the knowledge of the local boundary-layer edge, all quantities required by the transition correlations can now be computed. The edge values of a quantity are the values of the quantity’s wall-normal profile at the point index of the detected boundary-layer edge. The integral boundary-layer quantities \({\delta }_{1}\), \({\delta }_{2}\) and \({\delta }_{3}\) are calculated using the trapezoidal rule for the points of the wall-normal profiles up to the detected \(\delta\). If a correlation uses a free-stream value of a quantity (e.g. \(M{a}_{\infty }\) in Eq. (3), this value is actually taken at the local boundary-layer edge for the implementation. The Mach number and dynamic viscosity can either be provided as a variable in the imported data or be computed by models: \(Ma\) will be calculated assuming a perfect gas using \(c=\sqrt{\gamma R T}\) if \(\gamma\) and \(R\) are specified in the configuration file whilst \(\mu\) will be calculated with Sutherland’s law [32] if the model parameters\({\mu }_{s}\),\({T}_{s}\) and \({C}_{s}\) are provided in the.ini file. The only quantity which cannot be calculated yet is the local Reynolds number \(R{e}_{x}\) which some correlations rely on. Whilst \(R{e}_{x}\) can easily be calculated for a flat plate, it becomes non-trivial for complex geometries. There, one has to take the local streamline length as the characteristic length of the Reynolds number. The algorithm for finding that length is explained in Sect. 3.6.

The criteria are then locally evaluated based on their context: for the natural transition a variable is returned with the values 0, where the resulting value is below the critical one, or 1, thus providing a laminar-transitional surface map. The criteria for critical roughness return a variable with the local critical values, which would trigger transition there, defined at the wall. For the implementation, the equations have been rearranged for \(k\). Criteria, which use quantities like \(R{e}_{kk}\), have to be evaluated at the local roughness height so that \(k\) appears implicitly in the correlation: one first has to know the critical height \(k\), which is searched for, to determine where to take quantities like \({u}_{k}\), \({\mu }_{k}\). Thus, the right-hand side of the equation, where all the \(k\)-dependent variables moved to, has to be calculated for every point in the wall-normal profile assuming the local height to be the critical one. Starting at the wall, this assumed critical value can then be compared to the actual wall-normal height of the current profile point. If the assumed critical value at the current height of the profile is larger, a roughness element of the current height in the profile would not trigger transition and the comparison is done for the next outer point in the profile. Else (the local critical value in the profile is lower than the current height), a roughness element of the size of the local wall distance would already trigger transition. Therefore, the distance of the previous profile point to the wall point is chosen to guarantee conservativeness. Although one is able to evaluate such criteria for critical roughness dimensions with this method, the accuracy is limited to the resolution of the discretised wall-normal profile.

As already noted, none of the criteria is universally applicable. It is up to the user to decide which of the criteria are sensible to use for the respective case and which of the resulting transition maps can be trusted.

3.6 Streamline length computation

To compute the local streamline length \(S\), which is the length of the streamline from the leading edge to the current position, one first needs to identify the attachment line. Again, a criterion is used to detect the attachment line of an arbitrary body just from the provided data. The rationale is that \(\delta\) is small at leading edges, and therefore \(\theta\) is small as well. Hence, the tool calculates the interquartile range of the overall momentum thickness distribution. Then, the upper outer fence of the distribution is calculated to reduce the scatter of falsely detected boundary layers without reducing the overall relevant value range. The points, which fulfil the empirical condition \(\theta <{\theta }_{min}+0.01(\text{upper outer fence}-{\theta }_{min})\) with \({\theta }_{min}\) being the smallest, non-zero value of the momentum thickness in the whole domain, are classified as attachment lines.

The process of computing the local streamline length is explained using an example case: Fig. 5 shows an unstructured surface mesh with the according point index of the cell nodes.

Fig. 5
figure 5

Schematic example of the streamline-length algorithm’s operating principle

The algorithm tries to reconstruct the streamline path by following the flow in upstream direction until the attachment line is reached. To achieve so, it starts with picking the first point with index 0, appending this index to a list called wayOfStreamline and building a line segment in upstream direction (dashed blue) at the edge of the detected boundary layer using the wall-parallel components of the velocity vector there. The length of this line segment is set to five times a characteristic cell length. This characteristic length, in turn, is defined as the sum of the means of all surrounding cells for, on the one hand, the largest and, on the other hand, the smallest distance between two point of the cell. The factor of 5 was arbitrarily chosen but worked very well: limiting the distance of the line segment, avoids going too far in the upstream direction if the surface cells have a rather high aspect ratio. However, assuming the neighbouring surface cells to be approximately of the same size dimensions, the factor is still large enough to make sure that the line segment transcends at least one other surface cell in upstream direction. This line is then discretised with a small number (which is 10 in the implementation, but 5 in this example) of points (blue points). For these points, the point index of the actual mesh wall points is interpolated using a nearest neighbour interpolation. If one of these nearest wall points has the status of an attachment line, this point will be appended to the list wayOfStreamline and the function stops further reverse tracing for the streamline. Otherwise, the distances between the discretisation points to their corresponding nearest wall point are calculated (solid blue lines) and the wall point, whose wall point distance is smallest, is then chosen as the best fitting one (here: index 19) and appended to the list wayOfStreamline. The algorithm then repeats the procedure for the new wall point (green) like it has done for wall point 0 before. Taking now a new edge velocity vector, the streamline curvature is comprised implicitly. For the example, the wall point with index 22 is found to be the best fitting in this second iteration and again appended to the list. In the third iteration (orange), one of the nearest wall points (index 12) is marked as an attachment line, defining the starting point of the streamline.

The list wayOfStreamline is then flipped (looking now [12,22,19,0]) and the variable streamlineLength is calculated for each of the points, whose index is in the list. For wall point (WP) 12, the streamline length stays the initialised 0, for WP 22 the streamline length is the streamlineLength value of WP 12 plus the distance \(\overline{{W}_{22}{W}_{12}}\) (with \(W\) for the wall point coordinates). Accordingly, for WP 19, the streamline length is the streamlineLength of WP 22 + \(\overline{{W }_{19}{W}_{22}}\) and for WP 0, it is the streamlineLength of WP 19 + \(\overline{{W }_{0}{W}_{19}}\). Before resetting wayOfStreamline and executing the procedure for the next wall point (index 1), the indices in wayOfStreamline are appended to another list which is used for efficiency reasons in further reverse tracing: if a best fitting wall point (like the points 19, 22 in this example) is already appended to this list, the procedure will stop and the streamline length summation is done starting from this point, since a streamlineLength value was already calculated for this point. Also, for already processed points, the reverse tracing is not started again, meaning that after calculating the streamline length for wall point 18, the function will skip wall point 19 since the streamline length is already calculated there.

Because the reverse tracing is an iterative process, there is also a maximum number of 1000 steps defined. If this limit should be reached, the tool will use the streamline length from the wall point it started to the one it is in this moment. Also, it is possible that the velocity vectors point to a previous passed point which would cause a loop. Therefore, the tool will stop the upstream trailing as soon as it comes back to one of the wall points which were already passed in the upstream trailing. One may argue that the distance calculated here is not the actual streamline length but the projected streamline length to the wall, which may differ slightly for curved surfaces. This is intended, as the correlations are all derived from experiments where \(R{e}_{x}\) is based on wall information. To detect transition, one often uses the increase of the wall heat flux, liquid crystal coating or other techniques at the wall, thus making the \(R{e}_{x}\) dependent on the streamline distance at the wall. Still, the algorithm can just provide approximated values for the local streamline length because it just uses the best fitting wall point as the next upstream point which, in most cases, is placed offside to the upstream extended velocity vector. Therefore, an error is introduced due to the simplification made by the algorithm.

The described process returns the length of the edge streamlines but one can also use the wall streamlines. Then the reverse tracing of the streamline is based on the velocity vector in the second point of the discretised, wall-normal profile (which is the first point in the fluid as the first profile point is always identical with the wall point). The distance of this point is based on a set of different parameters (e.g. profile resolution, first estimation of the boundary layer, domain size); thus, it is not a constant length for all profiles and the height, at which the velocity vector is taken, might jump from wall point to wall point. Since there is no universal answer for the position where the streamline has to be evaluated, the user can set an according variable to take either the edge point or the wall-nearest point. The effect of the two different options on the results is presented in Sect. 4.2.

3.7 Further features

After the actual evaluation of the boundary layer and transition, the velocity profiles are transformed once more in another local coordinate system xʺyʺzʺ illustrated in Fig. 1, too. The difference to the xʹyʹzʹ system is that the parallel but arbitrary aligned - and -axes are now rotated around the -axis in such a way that the -axis is aligned with the boundary-layer edge velocity vector projected to a wall-parallel plane afterwards. Thus, now points in edge streamline direction and wʺʹ is the crossflow component within the boundary layer. This allows the tool to detect separation by looking for negative -components in the velocity profile. For corresponding profiles, the height where is larger than zero is stored as the separation thickness. Also, the crossflow ratio \(\mathrm{max}(\left|w\right|)/\left|u\right|\) can now be calculated per profile. Both variables are exported to the output data.

Finally, the reliability of the results is estimated by a function which detects unreasonable results or warns about possible problems. An according output variable erroneous Results is set to different values depending on the problem. This may be that the boundary layer is detected in the lowest 5% of the wall-normal profile, so that the resolution of the actual boundary-layer profile is considered as insufficient. Also, if the boundary layer is detected in the very outer part of the profile, the estimate of the boundary layer in the first step might have been too low. Further, the boundary-layer detection went wrong if the local displacement thickness is negative.

4 Validation

4.1 Laminar flat plate boundary layer

A comparison of the tool’s results for a simulation of a laminar, quasi-2D flow over a flat plate of the length \(L=1m\) at \(M{a}_{\infty }=0.3\) and \(R{e}_{u}=6.6{\text{e}}6 1/m\) and the analytical solutions given in Sect. 3.1 is depicted in Fig. 6. The boundary-layer thickness is well detected in the beginning but is overestimated downstream. However, the integral values do not suffer from this overshoot. The displacement thickness is predicted very well whilst the momentum thickness and energy thickness fit also well whilst a bit overestimated for the second half of the plate. This is further supported by Table 1 which lists the deviation of these quantities at discrete points along the plate. Also, the shape factors are around the values, one would expect from the Blasius solution.

Fig. 6
figure 6

Comparison of tool-detected BL quantities with analytical ones for a laminar flat plate

Table 1 Deviation of the tool detected boundary-layer quantities to the analytical ones for the laminar flat plate

Whilst this comparison already proved that the general principle of the tool’s boundary-layer detection works, one has to note that the tool’s detection cannot be any better than the simulation results provided. This means that the numerical solution does not necessarily have to agree with the analytical one since numerical schemes, as well as the influence of the mesh, impact the flow solution. A comparison between the tool’s local, wall-normal velocity profile (orange) and the original profile extracted directly from Tecplot® (blue) is done in Fig. 7 at two positions of the plate to examine this. One can note the excellent visual accordance between both profiles, that is also showing that the reconstruction of the original nearest neighbour data is worth the effort. The points where the boundary-layer edge is detected is indicated by a green mark and seem to be reasonable for the presented profiles. Contrary to the impression from Fig. 6, one cannot recognise a clear overestimation of the boundary-layer thickness.

Fig. 7
figure 7

Comparison of the tool’s velocity profile with the original one for a laminar flat plate

In Table 2, the deviation of the integral boundary-layer quantities, calculated by the trapezoidal rule and using the discrete profiles, to the respective integral value of the exact profile is given for particular points. In both cases, the integration is done up to the detected boundary-layer thickness making this a comparison of the integration and profile discretisation quality but not of the boundary-layer edge detection itself. For all three quantities, the average deviation is below 0.25% for the evaluated profiles.

Table 2 Deviation of the tool detected boundary-layer quantities to the ones from manually integrated Tecplot® profiles for the laminar flat plate

4.2 Validation on EFTV

HEXAFLY-INT (high-speed experimental fly vehicle—international) is a project coordinated by ESA to promote research on civil high-speed air transport. It aims for a free flight experiment of a hypersonic glider, the European flight test vehicle (EFTV), which is intended as a feasibility demonstrator for several technologies required for long-time hypersonic flight, thus increasing the technology readiness level (TRL) of them. It will be launched with a sounding rocket on a suborbital trajectory having a hypersonic gliding phase of a few minutes in a height of 27–30 km above ground then descending. Over 100 sensors will record inflight data, aiming for validation or improved understanding of transition, aerodynamic heating, structural stresses, shock/boundary-layer interaction and flow separation at the flaps [33].

The HEXAFLY-INT aerodynamic design has been studied a lot with over 200 full 3D Navier–Stokes CFD simulations and intensive wind tunnel testing at the TsAGI T-116 wind tunnel facility [34, 35] but also in a multidisciplinary context [36], resulting in a large aerodynamic database. The tool’s evaluation was applied to two different, fully laminar simulation cases, listed in Table 3. The results for the second case 243–01 are used to discuss the general outcomes whilst case 238–03 is used in Sect. 5.3 for a comparison with a transition estimation from literature. Both cases match to trajectory points at around 300 s after launch: case 238–03 (at 300.5 s) is a simulation of the flight state 17 s after the separation from the experimental support module (ESM), which controls the EFTV’s attitude in the first phase of the descent phase, whilst case 243–01 is a simulation of the vehicle 9 s later.

Table 3 EFTV simulation cases

4.3 Boundary-layer profiles

Like for the flat plate case, wall-normal velocity profiles of the tool are compared with the profiles extracted from Tecplot® at particular positions. One can find a very good overall match between both profiles. Selected profiles are discussed in the following paragraphs.

Figure 8a shows a velocity profile on the bottom side’s centreline very near to the leading edge of EFTV’s nose. One can recognise the shock at a height of around 0.2 m normal to the wall. The shock detection worked correctly, and therefore the edge is determined in the post-shock region.

Fig. 8
figure 8

Velocity profiles at particular wall points of the EFTV

Figure 8b is taken exactly at the junction between the nose and the fuselage on the bottom of EFTV with an offset of \(1m\) from the centreline. There, the boundary layer is not detected correctly, indeed the first point in the profile is already determined as the edge. Due to the geometry, an expansion fan is forming at this position which is effectively strong enough to trigger the shock detection, thus limiting the boundary layer to a value below the “shock” (expansion fan in this case).

A correct detection of the boundary layer is shown in Fig. 8c, where one can find a more typical boundary-layer profile at the upper centreline at around 40% of the vehicle’s length.

A drawback of using the nearest neighbour interpolation can be found in Fig. 8d, where the tool’s profile shows a strange step compared to the extracted one. The profile is taken quite close to the vertical stabiliser which is also illustrated in a slice of Fig. 9. To follow the geometry, the prism mesh, which normally grows in wall-normal direction too and, therefore, keeps the error done by the nearest neighbour interpolation small, is now growing diagonally. In this case though, the nearest neighbour interpolation of the velocity profile first takes the values from the mesh nodes right to the wall normal. At a certain height (around 0.02 m), the values to the left side are closer and the interpolation switches to use them instead. Because the velocity on the left side is higher at the same distance to the wall, this causes the step in the profile. With a linear interpolation, this phenomenon is not to be expected.

Fig. 9
figure 9

Slice at \(x=2.5m\) of EFTV around the vertical stabiliser

4.4 Streamline length

Figure 10 shows the results of the tool identified attachment line (red): the attachment line at the front and side part of the nose as well as at the leading edge of the wing and of the vertical stabiliser is detected correctly. However, some zones are detected as attachment areas falsely. On the one hand, this is the junction from the nose to the fuselage on the bottom side. There, the geometry leads to a rather strong expansion fan which is also triggering the shock detection. Because the boundary layer is defined to be below the shock in the design of the tool, this restricts the boundary-layer detection to a too small value and consequently a too small momentum thickness which then fulfils the criterion of the attachment line detection. On the other hand, one can note some erroneous spots on the upper wing and flap. For the spots close to the flap’s trailing edge, this is due to a local separation zone which causes a wrong boundary-layer detection.

Fig. 10
figure 10

Attachment line determined by the tool’s algorithm

Regarding the streamline length, the results of both methods—the length of the edge streamlines and the one of the wall streamlines—are plotted in Fig. 11. Additionally, streamlines are shown at the boundary-layer edge and near to the wall, respectively.

Fig. 11
figure 11

Streamline length depending on the used velocity vector in the profile

Looking at the computation for the edge streamline in Fig. 11a, the streamline length at the top is homogeneously increasing in the downstream direction. At the leading edge of the fin, the length restarts at zero and grows again. The results at the upper wing are adequate as well, although a bit spotted. One can recognise the influence of the wrongly detected leading-edge zones, mentioned earlier. On the bottom, however, the quality is strongly influenced by the wrongly detected attachment line at the junction between nose and fuselage. The reset of the streamline length, when passing this line, is clearly recognisable. The results at the lower wing are not impacted by this and are satisfying again. The value reached at the centre of the upper fuselage’s trailing edge is 3.275 m and the value on the lower fuselage is 3.296 m which is in good accordance with the 3.284 m of the planar distance between nose and back.

Figure 11b shows the evaluation based on the wall streamlines. For the upper fuselage, one can note, that the wall streamlines from the side move towards the centreline. Because they attached not directly at the front part of the nose but further downstream at the side, the streamline length is lower than the one at the centreline position leading to a diagonal pattern. A big difference to edge-streamline length can be noted in the area around the vertical stabiliser. Due to the shock forming at the leading edge of the fin, the post-shock pressure is increased and the pressure gradient displaces the very wall-near boundary layer in normal direction to the edge streamline. Since the velocity in this very wall-near zone is already subsonic, the angle of the influenced zone is even higher than the local Mach cone angle, perfectly shown in the side view and confirmed by the streamlines. At the backpart of the upper wing, however, the streamlines have a wave-like shape. In this region, the streamline length calculation returns wrong values. Looking at the bottom, one can again detect the reset of the streamline length at the nose–fuselage junction as for the edge case. Differently to the evaluation with edge streamlines, the wall streamlines are moving towards the centreline downstream, making air, which attached at the wing, overflow the fuselage in the backpart.

Overall, the streamline length computation leads to qualitatively good results. The encountered problems mostly result from errors made by the attachment line detection. The agreement of the quantitative values at the centreline is acceptable keeping the approximative computation in mind. Also, the result is strongly influenced by where the velocity vector for the streamline analysis was taken.

5 Application

5.1 Boundary-layer detection

In Fig. 12, the detected boundary-layer thickness using the described voting algorithm is plotted. The presented plot uses the boundary-layer thickness which is detected using just the wall-parallel velocity components. A difference to the detection using all three velocity components is just existent very occasionally and just at single wall points. Since the case presented here has a small angle of attack, one can already note the much smaller boundary-layer thickness on the windward side of the EFTV. There, one can see the influence of the crossflow within the boundary layer, noticed by the wall streamlines in Fig. 11b, transporting boundary-layer material from the wing towards the centreline of the fuselage. On the leeward fuselage, the boundary-layer thickens for the same reason. Also, at the leeward side of the wing, the boundary-layer thickening due to a local vortex structure is clearly visible.

Fig. 12
figure 12

Boundary-layer thickness mapped to the surface for EFTV

For the same case, the boundary-layer thickness is depicted in Fig. 13 but this time it is detected using an Euler simulation of the same mesh and boundary conditions. Thus, the boundary-layer detection uses only the Criterion Euler. In direct comparison with Fig. 12, one can note the very good match of the overall contour pattern, looking at the top and side view. The values differ slightly but especially in the nose region, the Euler-based boundary-layer detection returns much smaller values for \(\delta\). One can also note that the results are less scattered using the Euler simulation.

Fig. 13
figure 13

Boundary-layer thickness detected using the Euler wall velocity for EFTV

However, for the bottom side, there is a big discrepancy to the voting detected result. Whilst the boundary-layer thicknesses at the wing are nearly identical, the second half of the lower fuselage shows an abrupt increase of the boundary-layer thickness in the Euler-based results. The reason for this is ambiguous. The effect might come from the missing displacement effect of the boundary layer in the Euler simulation leading to a quite different flow field. This would indicate that the detection with the Euler solution might not always lead to good results if used solely and could just effectively be used in combination with other criteria as part of the voting algorithm.

5.2 Integral boundary-layer quantities

An example for the output of local, integral boundary-layer quantities is shown in Fig. 14 exemplarily for the momentum thickness which is an often-used variable in transition correlations. The overall pattern looks similar to the one of the boundary-layer thickness but appears to be smoother. Whilst the detected boundary-layer thickness may vary quite a bit, the change in the integral value is not that significant because the gradient in the outer part of the profile is already small compared to the wall-near one. Hence, the scatter of the boundary-layer thickness does not propagate to the integral values.

Fig. 14
figure 14

Momentum thickness mapped to the surface for EFTV

5.3 Transition analysis

Two exemplary surface plots shall demonstrate the final transition results: Fig. 15 shows the surface map of the simulation case 243–01 using the NASP transition criterion: blue colour indicates laminar flow whilst red colour means transitional flow. Some transitional spots are detected already at the nose but one can argue that this is due to difficulties with the boundary-layer detection in this area. However, transition of the flow is predicted to establish at the centreline of the upper fuselage at around 50% of the vehicle length. On the bottom side, transitional flow is predicted in the area of the already noted crossflow influence between wing and fuselage. In Fig. 16, the critical roughness height k according to the criterion by Thompson et al. given in Eq. (5) is depicted. Since the boundary layer is much smaller on the windward side due to the effect of the small angle of attack and the overall vehicle design, \(k\) is notably thinner there. The critical roughness height is detected as very large at the leading edges which is somewhat expected. Indeed, tripping a thin boundary layer, that is just starting to grow, is pretty difficult in practise. This also results from the applied criterion which is proportional to \(1/R{e}_{\theta }\propto 1/\theta\) at the location where the momentum thickness is very small.

Fig. 15
figure 15

Transition map of the NASP criterion with \(C=400\) applied to 243–01

Fig. 16
figure 16

Critical roughness height map for 243–01 based on Thompson et al.’s criterion

Finally, this section compares the transition assessment based on correlations and wind tunnel experiments published by Steelant et al. [37] with the results of the same correlations using the tool applied to an according simulation. Therefore, one of the investigated flight trajectory cases, EFTV − 069, from the publication was compared with the simulation case 238 − 03 matching in Mach number, Reynolds number and \(AoA\) (see Table 3).

For the transition point, the criterion of Bowcutt et al. [16] given in Eq. (1) which is referred to as the criterion of Di Cristina there, the NASP-criterion given in Eq. (2) with \(C=400\), and the correlation of Simeonides given in Eq. (3) were used. Also, a correction for the sweep angle \(\Lambda\) of the wing was used for the criterion of Bowcutt there:

$$\frac{R{e}_{x,tr,\Lambda }}{R{e}_{x,tr,\Lambda =0} }=0.787\mathrm{cos}{\left(\Lambda \right)}^{4.346}+0.7221\mathrm{exp}(-0.0991\Lambda )+0.9464$$
(33)

Regarding roughness-induced transition, two criteria were used for evaluation. For 2D steps, the criterion Eq. (5) was applied using a constant \(C=344.45\) for backward facing steps. A criterion for Görtler vortices induced by these 2D steps is also given as:

$$k/\delta =2$$
(34)

5.4 Transition onset

The outcome of the correlation-based estimation of the transition onset can be found in Tables 4 and 5 for the fuselage and the wing. The transition point is given there in regards of the x-coordinate, which has its point of origin at the junction between nose and fuselage. For the correlation of Simeonides, a leading-edge radius of \(2\,\rm{mm}\) at the nose and \(1\,\rm{mm}\) for the wing is used.

Table 4 Estimate of transition onset at the centreline of the fuselage for EFTV − 069 [37]
Table 5 Estimate of transition onset at the wing (y = 0.47 m) for EFTV − 069 [37]

Compared to the previous simulation case 243 − 01, this one is much harder for the tool. Due to the higher angle of attack, the shock on the windward side is much stronger and the whole flow field behind it is affected by gradients. Indeed, for \(x>0.88\,\rm{m}\) the boundary layer is detected as too thick, thus making downstream results on the fuselage not trustworthy. The same occurs at the outer part of the wing for \(x>0.3\,\rm{m}\). On the other hand, on the windward side, a lot of vortex structures are forming at both the wing and the fuselage, which influence the boundary-layer detection, too. The influence of these secondary flows on transition was also noted by Steelant et al. in wind tunnel experiments conducted with a 35%-scale model at \(Ma=6.99\) and \(Re=8.82{\text{e}}6\) with an \(AoA\) of also \(12^\circ\). The predicted positions for transition onset of the tool can be found in Tables 6 and 7. The results confirm the absence of transition at the leeward side. The NASP criterion results shows a small transitional streak after the nose from \(0.3m\) to \(1.3m\), which might be due to a vortex structure there. On the windward side, the criterion of Simeonides predicts a later and the NASP criterion an earlier transition compared to the values in [37]. The criterion of Bowcutt et al. predicts transitional flow at around the position where the boundary-layer edge is detected wrongly. For the wing, the same criterion with the swept angle correction applied predicts no transition whilst the criterion by Simeonides predicts transitional flow at the end of the wing.

Table 6 Tool results for transition onset at the centreline of the fuselage for EFTV − 069
Table 7 Tool results for transition onset at the wing (\(y=0.47m\)) for EFTV − 069

5.5 Critical roughness

Using the earlier mentioned criteria, “[…] the maximum step heights allowed to avoid triggering earlier transition […]” [37] found in the publication is given by Tables 8 and 9 for different positions in x-direction. The data given there are just for the criterion for 2D steps and Eq. (34).

Table 8 Estimate of critical roughness height \(k\) at the centreline of the fuselage for EFTV − 069 [37]
Table 9 Estimate of critical roughness height \(k\) at the wing (y = 0.47 m) for EFTV − 069 [37]

In Tables 10 and 11, the tool’s results at the corresponding positions are given. For the windward side, one can clearly see the influence of the overestimated boundary layer for \(x>0.88\,\rm{m}\) at the fuselage mentioned earlier. The results of the Görtler criterion are about an order of magnitude larger than the one by Steelant et al. For \(x=0\,\rm{m}\), the result is irrationally wrong, too, due to the triggered shock indicator by the rather strong expansion fan. Only for \(x=0.5\,\rm{m}\), no error is made and the results are in acceptable accordance with the values given by Steelant et al. The wing results also suffer from a too thick detected boundary layer. Regarding the leeward fuselage’s centreline, the agreement is good for \(x=0.5\,\rm{m}\) and \(x=1.0\,\rm{m}\). For \(x>1.5\,\rm{m}\), the results differ by factor two which is probably due to the secondary flow structures there. For the leeward wing side, the results also show no good agreement. This is again probably due to the vortex structure forming there, which influences the boundary-layer detection leading to different values compared to Steelant et al.

Table 10 Tool results for \(k\) at the centreline of the fuselage for EFTV − 069
Table 11 Tool results for \(k\) at the wing (\(y=0.47\,\rm{m}\)) for EFTV − 069

5.6 Discussion on the result quality

First, it has to be noted that the overall concept of the tool still works well when applied to a complex, 3D geometry and flow field. This proves the strong potential of the developed methods and algorithms. The quality of the results strongly depends on the quantity of interest. Through the discretisation in the boundary-layer detection process, the tool is limited to a certain step size between the profile points by its design.

Whilst for flat plates, a \({\delta }_{99}\)-criterion of the highest velocity in the profile works fine, the detection and even the definition of the boundary-layer edge become difficult for the more complicated boundary layers. For the integral boundary-layer values, some accuracy is lost because the tool integrates from the wall to the potentially error-prone boundary-layer thickness (propagated error) using the trapezoidal rule on a discretised profile (discretisation error). Calculating further quantities like \(R{e}_{\theta }\), one has to multiply with the edge values which are again dependent on the potentially error-prone boundary-layer thickness. In the transition correlations, multiple of these quantities is then added, multiplied, and divided with each other, increasing the error. This, however, should mostly not become critical since most of the empirical correlations were fitted with a ± 20% uncertainty.

Although some of the errors are actually rather small, like the one done by the integration or the edge conditions, there are larger ones. Evaluating roughness criteria, where the flow quantities have to be taken at the roughness height like \(R{e}_{kk}\), is one of them. As explained in Sect. 3.5 the accuracy of the predicted roughness height is limited to the step size of the profile discretisation. For \(R{e}_{x}\), the value is less reliable because it depends on the streamline length. Figure 11 showed that areas exist where this value is calculated incorrectly.

Lastly, the application to EFTV − 069 showed that the boundary-layer detection is still not perfect. Although a universal voting formula of the boundary-layer detection criteria would be preferable, the user might want or need to adapt the formula according to the simulation case.

5.7 Future features

One can identify potential for improvement using linear interpolation for the generation of profiles. Besides their better quality, this would also enable new possibilities for boundary-layer detection; i.e. one could use criteria based on the profiles’ second derivative, too. One can further improve the sequence of the boundary-layer detection for a more general application. In the current version, the detection is performed in two steps: first estimating and then resolving the boundary layer. This is well working for hypersonic applications where the far-field does not need to be large since the influence of the local flow state is not global but limited to the Mach cone. For other applications, the far-field can be quite far away from the geometry. This would lead to a drastic loss in precision because the fixed number of profile points is now distributed over an increased profile height. To avoid this, one could introduce an iterative procedure, which ensures a sufficient resolution of the boundary layer by resolving it until, at least, e.g. 50% of the profile points are below the detected edge.

Regarding the transition analysis, one can think of different extensions. One can compute further parameters like the pressure gradient in streamline direction allowing to implement even more correlations from literature. Also, correlations for transition mechanisms which were not treated in this work, e.g. attachment line transition at swept wings, could be implemented. Furthermore, one could add the prediction of unsteady transition dependent on a frequency which would be a parameter the user has to specify in the configuration file. Another aspect would be to estimate not only the transition point but also the extent of the transitional area. Lastly, the tool’s transition maps could be used for simulations with intermittency-based transition models (e.g. \(\gamma\)-\(R{e}_{\theta ,t}\) or \(\gamma\)-\(\alpha\)).

In addition, a local evaluation of other onset mechanisms, e.g. the onset of catalysis of the wall or the onset outgassing of an ablative surface material, would be conceivable.

6 Conclusion

A tool was developed that can analyse laminar–turbulent transition on complex 3D geometries by applying empirical correlations on a laminar solution. Because this requires knowledge of local boundary-layer quantities, an analysis of the velocity field is performed first. The boundary-layer edge is determined by evaluating discretised wall-normal profiles using different “edge determination” criteria in a voting-based algorithm. Integral boundary-layer quantities like the momentum thickness are then locally computed. Furthermore, the tool is capable of detecting attachment lines and calculating an approximated streamline length from the attachment line to the local surface position. With the knowledge of the local, characteristic boundary-layer variables as well as the boundary-layer edge values and the local streamline length, the criteria for transition can be evaluated. The implemented correlations were subdivided into criteria for transition onset, criteria for the critical roughness height and criteria for critical cavity dimensions.

The tool’s evaluation is saved to an output, which contains the original provided data, the local boundary-layer quantities and the results from the transition assessment. The latter are saved as a new variable per criterion which can either have a Boolean transition state (laminar/transitional) or the critical sizes of a roughness element and cavity, respectively, and which is just defined at the surfaces of the geometry. The tool further provides useful features like the detection of boundary-layer separation or the crossflow ratio.

The functionality of the tool was validated in flat plate test cases for a laminar boundary layer and showed satisfying agreement. The tool then was applied to simulations of the EFTV and compared to published transition estimation data for the same conditions. The agreement on the leeward side was good considering the vortex structures locally influencing the results. For the windward side, the match was not as good due to reliability of the boundarylayer edge detection.

Although certain aspects of the tool need to be extended or improved, the current version already provides a sound basis of an engineering tool for a-posteriori transition and boundary-layer analysis, that is open to even non-expert users.