1 Introduction

One of the earliest space–time (ST) computation techniques targeting fluid mechanics problems with moving interfaces is the deforming-spatial-domain/stabilized ST (DSD/SST) method [14]. It is a general-purpose moving-mesh technique that serves as core numerical technology in modeling fluid–structure interaction (FSI), fluid–object interaction, fluid–particle interaction, free-surface and multi-fluid flows, and flows with mechanical components in fast, linear or rotational relative motion. It is an alternative to the arbitrary Lagrangian–Eulerian (ALE) finite element formulation [5], which is the most widely used moving-mesh technique, with increased emphasis on FSI in recent years (see, for example, [639]). Though less widely used than the ALE formulation, over the past 20 years the DSD/SST method has been applied to some of the most challenging moving-interface problems, including FSI (see, for example, [34, 35, 4059] and references therein). Prior to the inception of the DSD/SST formulation, the ST finite element formulations were introduced and tested by other researchers in the context of problems with fixed spatial domains (see [60]).

In the DSD/SST formulation, as it was originally envisioned, the ST computations are carried out for one ST “slab” at a time, where the “slab” is the slice of the ST domain between the time levels \(n\) and \(n+1\). The basis functions are continuous within a ST slab, but discontinuous from one ST slab to another. The formulation is based on the streamline-upwind/Petrov–Galerkin (SUPG) [61] and pressure-stabilizing/Petrov–Galerkin (PSPG) [1, 62] stabilizations. It also includes the “LSIC” (least-squares on incompressibility constraint) stabilization. New versions of the DSD/SST method have been introduced since its inception, including those in [46], which have been serving as the core numerical technology in the majority of the ST FSI computations carried out in recent years. The most recent DSD/SST method is the ST version [51, 63] of the residual-based variational multiscale (VMS) method [6467]. It was named “DSD/SST-VMST” (i.e. the version with the VMS turbulence model) in [63], which was also called “ST-VMS” in [51]. The original DSD/SST method was named “DSD/SST-SUPS” in [63] (i.e. the version with the SUPG/PSPG stabilization), which was also called “ST-SUPS” in [34].

The ST techniques give us the option of using higher-order basis functions in time, including the NURBS basis functions, which have been used very effectively as spatial basis functions (see [8, 12, 68, 69]). This has positive consequences beyond just increasing the order of accuracy in the computations [51, 63, 70]. It provides us better accuracy and efficiency in temporal representation of the motion and deformation of the moving interfaces and volume meshes, and better efficiency in remeshing. This has been demonstrated in a number of 3D computations, specifically, flapping-wing aerodynamics [48, 52, 53, 55], separation aerodynamics of spacecraft [57], and wind-turbine aerodynamics [58].

There are some advantages in using a discontinuous temporal representation in ST computations. For a given order of temporal representation, we can reach a higher order accuracy than one would reach with a continuous representation of the same order. When we need to change the spatial discretization (i.e. remesh) between two ST slabs, the temporal discontinuity between the slabs provides a natural framework for that change. There are advantages also in continuous temporal representation. We obtain a smooth solution, NURBS-based when needed, and that is desirable in some cases. We also can deal with the computed data in a more efficient way, because we can represent the data with fewer temporal control points, and that reduces the computer storage cost. These advantages motivated the development of the ST computation techniques with continuous temporal representation (ST-C).

We propose two versions of the continuous temporal representation. In the first version, the continuous representation is extracted by projection from a solution computed with a different temporal representation, typically a discontinuous one. We use a successive-projection technique with a small number of temporal NURBS basis functions at each projection. Because of that, the extraction can take place as the solution with discontinuous temporal representation is being computed, without storing a large amount of time-history data. We note that this version is not limited to solutions computed with ST techniques. For example, they can also be applied to solutions computed with an ALE approach. In the second version, the solution with continuous temporal representation is computed directly from the ST variational formulation associated with each time step. Again, we use a small number of temporal NURBS basis functions.

The first version is described in Sect. 2, and the second version in Sect. 3. Test computations are presented in Sect. 4, and the concluding remarks are given in Sect. 5.

2 Extracting continuous temporal representation from computed data

This is essentially a post-processing method, and can also be seen as a data compression method.

2.1 Least-squares projection for full temporal domain

When we have the complete sequence of computed data, we can project that to a smooth representation, with basis functions that provide us that smooth representation, such as NURBS basis functions. As an example, Fig. 1 shows the goal continuous data \(\phi _\mathrm C \) and its basis functions, where \(\vartheta \) denotes the parametric temporal coordinate. The projection for each spatial node can be done independently from the other nodes. Consider the time-dependent, typically discontinuous computed data \(\phi _\mathrm D \) for a node. We define the basis functions as \(T_\mathrm C ^\alpha \), where \(\alpha = 0, 1,\ldots \), and the coefficients to be determined in the projection as \(\phi ^\alpha \). We use a standard least-squares projection: given \(\phi _\mathrm D \), find the solution \(\phi _\mathrm C \in \mathcal S _\mathrm C \), such that for all test functions \(w_\mathrm C \in \mathcal V _\mathrm C \):

$$\begin{aligned} \int _{0}^T w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0, \end{aligned}$$
(1)

where \(T\) represents time period of the computation, and \(\mathcal S _\mathrm C \) and \(\mathcal V _\mathrm C \) are the solution and test function spaces constructed from the basis functions. This approach requires that we store all the computed data before the projection, and that would be a significant computer storage cost when the number of time steps is large.

Fig. 1
figure 1

Continuous solution (top) and its basis functions (bottom), where \(\vartheta \) is the parametric coordinate

2.2 Successive-projection technique

In ST-C with the successive-projection technique (ST-C-SPT), we extract the continuous solution shown in Fig. 1 without storing all the computed data.

2.2.1 Special case with quadratic B-splines

To explain the successive nature of the SPT, let us suppose that we have the continuous solution extracted up to \(t_{n} = 4.0\), as shown in Fig. 2. We assume that this continuous solution, which we will call \(\overline{\phi }_\mathrm C \), has already replaced \(\phi _\mathrm D \) up to \(t_{n} = 4.0\). With that, we describe how we extract the continuous solution up to \(t_{n+1} = 5.0\), as shown in Fig. 3. With the newly computed data \(\phi _\mathrm D \) between \(t_{n} = 4.0\) and \(t_{n+1} = 5.0\), we solve the following projection equation: given \(\phi _\mathrm D \) on \(t \in (4.0, 5.0)\), \(\overline{\phi }_\mathrm C \) on \(t \in [2.0, 4.0]\), and \(\phi _\mathrm C ^\alpha \), \(\alpha = 2, 3\), find \(\phi _\mathrm C \in \mathcal S _\mathrm C \), such that \(\forall w_\mathrm C \in \mathcal V _\mathrm C \):

$$\begin{aligned} \int _{2.0}^{4.0} w_\mathrm C \left( \phi _\mathrm C - \overline{\phi }_\mathrm C \right) \mathrm{d}t + \int _{4.0}^{5.0} w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0. \end{aligned}$$
(2)

We note that Eq. (2) is essentially used for defining the coefficients \(\phi _\mathrm C ^\alpha \), \(\alpha = 4, 5, 6\), which correspond to the basis functions \(T_\mathrm C ^\alpha \).

Fig. 2
figure 2

Continuous solution up to \(t_{n} = 4.0\) (top) and its basis functions (bottom)

Fig. 3
figure 3

Continuous solution up to \(t_{n+1} = 5.0\) (top) and its basis functions (bottom). The bold part of the top curve indicates the part of the solution that does not change. The empty squares denote the temporal control values to be determined. The dashed lines denote the modified and new basis functions, which correspond to those control values

We now explain the initial part of the extraction. Figure 4 shows basis functions for the first two steps. In the first step, we calculate the three coefficients to be determined by using the equation

$$\begin{aligned} \int _{0.0}^{1.0} w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0. \end{aligned}$$
(3)

In the second step, with the solution \(\overline{\phi }_\mathrm C \) from the first step, and the newly computed data \(\phi _\mathrm D \), which is defined on the parametric space \(\frac{1}{8}\) to \(\frac{2}{8}\), we calculate the three new coefficients to be determined by using the equation

$$\begin{aligned} \int _{0.0}^{1.0} w_\mathrm C \left( \phi _\mathrm C - \overline{\phi }_\mathrm C \right) \mathrm{d}t + \int _{1.0}^{2.0} w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0. \end{aligned}$$
(4)

For the steps after that, Eq. (2) is used.

Fig. 4
figure 4

Basis functions for the initial part (first two steps) of the extraction

2.2.2 General case

Let us suppose that we are using \(p\)th-order functions, as shown in Fig. 5. We have the solution \(\overline{{\phi }}_\mathrm C \) up to \(t_n\) and the newly computed data \(\phi _\mathrm D \) between \(t_n\) and \(t_{n+1}\). We solve the following projection equation written over \(p+1\) intervals for the \(p + 1\) coefficients \(\phi _\mathrm C ^\alpha \) to be determined: given \(\overline{\phi }_\mathrm C \) and \(\phi _\mathrm D \), and with \(p\) coefficients \(\phi _\mathrm C ^\alpha \) specified, find \(\phi _\mathrm C \in \mathcal S _\mathrm C \), such that \(\forall w_\mathrm C \in \mathcal V _\mathrm C \):

$$\begin{aligned} \int _{t_{n-p}}^{t_n} w_\mathrm C \left( \phi _\mathrm C - \overline{\phi }_\mathrm C \right) \mathrm{d}t + \int _{t_n}^{t_{n+1}} w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0. \end{aligned}$$
(5)
Fig. 5
figure 5

Continuous solution and basis functions up to \(t_n\) (top two) and for extraction up to \(t_{n+1}\) (bottom two). The bold part of the curve in third plot indicates the part of the solution that does not change. The empty squares denote the control values to be determined. The dashed lines denote the modified and new basis functions, which correspond to those control values

We again explain the initial part of the extraction. Figure 6 shows basis functions for the first \(p\) steps. In the first step there are \(p + 1\) coefficients to be determined. In the second step, we keep the first coefficient and calculate the remaining \(p + 1\) coefficients. In the third step we keep also the second coefficient and calculate the remaining \(p + 1\) coefficients. We keep going this way until we reach step \(p + 1\), and that is when we switch to Eq. (5). We generalize the extraction procedure as follows:

$$\begin{aligned} \int _{t_{m}}^{t_n} w_\mathrm C \left( \phi _\mathrm C - \overline{\phi }_\mathrm C \right) \mathrm{d}t + \int _{t_n}^{t_{n+1}} w_\mathrm C \left( \phi _\mathrm C - \phi _\mathrm D \right) \mathrm{d}t = 0, \end{aligned}$$
(6)

where \(m = \max (n-p, 0)\). In summary, the number of unknowns is always \(p + 1\), the number of specified coefficients is \(\min (n, p)\), and the number of intervals of the projection equation is \(\min (n+1, p+1)\).

Fig. 6
figure 6

Basis functions for the initial part (first \(p\) steps) of the computation

Remark 1

Another way of looking at this, we determine the coefficients corresponding to all basis functions that are nonzero in the last interval. This also means that the basis functions with specified coefficients do not change between the previous and current steps.

2.3 Efficient implementation of the SPT

In general, \(\phi _\mathrm D \) could be a solution computed over many time steps in the interval \(t_n\) to \(t_{n+1}\); for example, there could be 1,000 steps. We do not need to store such a large amount of computed data to solve Eq. (5).The integration

$$\begin{aligned} \int _{t_n}^{t_{n+1}} w_\mathrm C \phi _\mathrm D \mathrm{d}t \end{aligned}$$
(7)

would be performed at one of those 1,000 time steps at a time.

3 Direct computation of the solution with continuous temporal representation

In ST-C with the direct-computation technique (ST-C-DCT), instead of extracting \(\phi _\mathrm C \) from \(\phi _\mathrm D \), we compute it directly from the variational formulation. To explain this concept, let us consider an abstract differential equation, \(\L (\phi ) = f\). Then, the counterpart of Eq. (1), before any integration by parts, would be

$$\begin{aligned} \int _{t_{0}}^{t_{n+1}} \int _{\varOmega _t} w \L (\phi ) \mathrm{d}\varOmega \mathrm{d}t = \int _{t_{0}}^{t_{n+1}} \int _{\varOmega _t} w f \mathrm{d}\varOmega \mathrm{d}t. \end{aligned}$$
(8)

Instead of using Eq. (8), we use the counterpart of Eq. (6):

$$\begin{aligned} \int _{t_{m}}^{t_{n+1}} \int _{\varOmega _t} w \L (\phi ) \mathrm{d}\varOmega \mathrm{d}t = \int _{t_{m}}^{t_{n+1}} \int _{\varOmega _t} w f \mathrm{d}\varOmega \mathrm{d}t. \end{aligned}$$
(9)

As before, the number of equations and unknown coefficients is \(p+1\), the number of specified coefficients is \(\min (n, p)\), and the number of intervals is \(\min (n+1, p+1)\). The initial guess for the unknown coefficients of the modified basis functions can be set in such a way that the resulting \(\phi _\mathrm C \) is unchanged until \(t_n\) (Bézier extraction technique [71] can be used for determining the new coefficients). The initial guess for the unknown coefficient of the new basis function would be set by taking into account the problem-dependent factors, such as using the same function value or its derivative.

Remark 2

We note that Eq. (9) does not involve the jump term seen in a typical ST formulation, and that is because here the functions are continuous in time. However, if the computation involves a temporal patch boundary because of remeshing (see [48, 52]), the jump term would come back.

As an example, let us consider a first-order ordinary differential equation, \(\L (\phi ) = \frac{\mathrm{d}\phi }{\mathrm{d}t}\). The counterpart of Eq. (9), after the integration by parts, is

$$\begin{aligned} w_{n+1} \phi _{n+1} - \int _{t_{m}}^{t_{n+1}} \frac{\mathrm{d}w}{\mathrm{d}t} \phi \mathrm{d}t = \int _{t_{m}}^{t_{n+1}} w f \mathrm{d}t. \end{aligned}$$
(10)

When the jump term comes back, which would happen at \(t = t_0\), we start with

$$\begin{aligned} w_{0}^+\left( \phi _0^+ - \phi _0^-\right) + \int _{t_{0}}^{t_{1}} w \frac{\mathrm{d}\phi }{\mathrm{d}t} \mathrm{d}t = \int _{t_{0}}^{t_{1}} w f \mathrm{d}t, \end{aligned}$$
(11)

and after the integration by parts we obtain

$$\begin{aligned} w_{1} \phi _{1} - w_{0}^{+} \phi _{0}^{-} - \int _{t_{0}}^{t_{1}} \frac{\mathrm{d}w}{\mathrm{d}t} \phi \mathrm{d}t = \int _{t_{0}}^{t_{1}} w f \mathrm{d}t. \end{aligned}$$
(12)

Here \(\phi _0^-\) is the value prior to remeshing.

An alternative to Eq. (9) would be

$$\begin{aligned}&\int _{t_{m}}^{t_{n}} \int _{\varOmega _t} w \L (\phi ) \mathrm{d}\varOmega \mathrm{d}t - \int _{t_{m}}^{t_{n}} \int _{\varOmega _t} w \L (\overline{\phi }) \mathrm{d}\varOmega \mathrm{d}t \nonumber \\&\quad + \int _{t_{n}}^{t_{n+1}} \int _{\varOmega _t} w \L (\phi ) \mathrm{d}\varOmega \mathrm{d}t = \int _{t_{n}}^{t_{n+1}} \int _{\varOmega _t} w f \mathrm{d}\varOmega \mathrm{d}t, \end{aligned}$$
(13)

where \(\overline{\phi }\), similar to \(\overline{\phi }_\mathrm C \), is the solution up to \(t_{n}\). While this alternative form is a closer extension of Eq. (6), we prefer Eq. (9) because we see it as a more direct source.

4 Test calculations

We carry out test calculations to show how ST-C-SPT works. In place of \(\phi _\mathrm D \), we use the following function:

$$\begin{aligned} \phi (t) = \exp \left( -\frac{(t-4)^2}{4} \right) , \end{aligned}$$
(14)

where \(0 \le t \le 8\). We test SP with linear, quadratic, cubic, and quartic B-splines. Figures 7,8,9, and 10 show the test results for \(\varDelta t=2.0\), together with the exact solution and solution obtained with least-squares projection (LSP).

Fig. 7
figure 7

SP with linear functions, compared with the exact solution and solution obtained with LSP. The symbols denote the control values

Fig. 8
figure 8

SP with quadratic B-splines, compared with the exact solution and solution obtained with LSP. The symbols denote the control values

Fig. 9
figure 9

SP with cubic B-splines, compared with the exact solution and solution obtained with LSP. The symbols denote the control values

Fig. 10
figure 10

SP with quartic B-splines, compared with the exact solution and solution obtained with LSP. The symbols denote the control values

Figure 11 shows the “\(L_2\) Error,” defined as

$$\begin{aligned} L_2~{\mathrm{error }} = \left( \frac{1}{8}\int _0^8 \left( \frac{\phi ^h(t) - \phi (t)}{\phi (t)}\right) ^2 \mathrm{d}t \right) ^{\frac{1}{2}}. \end{aligned}$$
(15)
Fig. 11
figure 11

\(L_2\) error

Essentially both the SP and LSP have the same order of accuracy; \(n\)th-order functions result in \((n+1)\)th-order accuracy. Figure 12 shows the “\(L_2\) Symmetry Error,” defined as

$$\begin{aligned} L_2~{\mathrm{symmetry~error }} = \left( \frac{1}{8}\int _0^8 \left( \phi ^h(t) - \phi ^h(8-t)\right) ^2 \mathrm{d}t \right) ^{\frac{1}{2}}.\nonumber \\ \end{aligned}$$
(16)

We note that for LSP this error is zero. The figure shows that the asymmetry is decreasing quickly with increasing order of the basis functions.

Fig. 12
figure 12

\(L_2\) symmetry error

5 Concluding remarks

We have introduced ST computation techniques with continuous representation in time (ST-C), using temporal NURBS basis functions. With ST-C, we can have a temporally smooth solution, which is sometimes desirable. We also deal with the computed data in a more efficient way, because we can represent the data with fewer temporal control points, resulting in reduced computer storage cost. We have introduced two versions of ST-C. In the first version, the continuous representation is extracted by projection from a solution already computed, typically a discontinuous one, but not necessarily limited to solutions computed with ST techniques. Because we use a SPT with a small number of temporal NURBS basis functions at each projection, the extraction can take place as the solution with discontinuous temporal representation is being computed, without storing a large amount of time-history data. We call the first version ST-C-SPT. In the second version, the solution with continuous temporal representation is obtained by a direct computation technique (DCT), from the ST variational formulation associated with each time step. Again, this can be done with a small number of temporal NURBS basis functions, resulting in efficient computation and storage. We call the second version ST-C-DCT. The test calculations with ST-C-SPT show that the technique works quite effectively.