1 Introduction

Consider the initial value problem

$$\begin{aligned} \frac{\partial f({{\varvec{x}}},t) }{\partial t} = \mathcal{N}\left( f({{\varvec{x}}},t),{{\varvec{x}}}\right) , \qquad f({{\varvec{x}}},0) = f_0({{\varvec{x}}}), \end{aligned}$$
(1)

where \(f: \Omega \times [0,T] \rightarrow \mathbb {R}\) is a d-dimensional (time-dependent) scalar field defined on the domain \(\Omega \subseteq \mathbb {R}^d\) (\(d\ge 2\)), and \(\mathcal N\) is a nonlinear operator which may depend on the variables \({{\varvec{x}}}=(x_1,\ldots ,x_d)\) and may incorporate boundary conditions. By discretizing (1) in \(\Omega \), e.g., by finite differences, finite elements, or pseudo-spectral methods, we obtain the system of ordinary differential equations

$$\begin{aligned} \frac{d{{\varvec{f}}}(t)}{dt} = {{\varvec{N}}}({{\varvec{f}}}(t)), \qquad {{\varvec{f}}}(0)={{\varvec{f}}}_0. \end{aligned}$$
(2)

Here, \({{\varvec{f}}}:[0,T]\rightarrow {\mathbb R}^{n_1\times n_2 \times \cdots \times n_d}\) is a multi-dimensional array of real numbers (the solution tensor), and \({\varvec{N}}\) is a tensor-valued nonlinear map (the discrete form of \(\mathcal {N}\) corresponding to the chosen spatial discretization). The number of degrees of freedom associated with the solution \({{\varvec{f}}}(t)\) to the Cauchy problem (2) is \(N_{\text {dof}}=n_1 \cdot n_2 \cdots n_d\) at each time \(t\ge 0\), which can be extremely large even for small d. For instance, the solution to the Boltzmann-BGK equation on a 6-dimensional flat torus [4] with 128 points in each variable \(x_i\) (\(i=1,\ldots ,6)\) yields \(N_{\text {dof}}=128^6=4398046511104\) degrees of freedom at each time t.

In order to reduce the number of degrees of freedom in the solution tensor \({{\varvec{f}}}(t)\), we seek a representation of the solution on a low-rank tensor format [7, 13, 22] for all \(t \ge 0\). To complement the low-rank structure of \({{\varvec{f}}}(t)\), we also represent the operator \({\varvec{N}}\) in a compatible low-rank format, allowing for an efficient computation of \({{\varvec{N}}}({{\varvec{f}}}(t))\) at each time t in (2). One method for the temporal integration of (2) on a smooth tensor manifold with constant rank [18, 34] is dynamic tensor approximation [11, 12, 21, 28]. This method keeps the solution \({{\varvec{f}}}(t)\) on the tensor manifold for all \(t \ge 0\) by integrating the projection of (2) onto the tangent space of the manifold foward in time. While such an approach has proven effective, it also has inherent computational drawbacks. Most notably, the system of evolution equations arising from the projection of (2) onto the tangent space of the tensor manifold contains inverse auto-correlation matrices which may become ill-conditioned as time integration proceeds. This problem was addressed in [26, 27] by using operator splitting time integration methods (see also [5]).

Fig. 1
figure 1

A graphical representation of a step-truncation method to integrate equation (2) on a Hierarchical Tucker tensor manifold \(\mathcal{H}_{{\varvec{r}}}\) with multilinear rank \({\varvec{r}}\). The \({{\varvec{u}}}_k\) denote time snapshots of the numerical approximation to (2) obtained using a conventional time-stepping scheme, the \({{\varvec{g}}}_k\) are time snapshots of the exact solution \({{\varvec{f}}}(k\varDelta t)\) projected onto \(\mathcal{H}_{{\varvec{r}}}\), and the \({{\varvec{f}}}_k\) are time snapshots of the step-truncation solution on \(\mathcal{H}_{{\varvec{r}}}\)

A different class of algorithms to integrate the Cauchy problem (2) on a low-rank tensor manifold was recently proposed in [19, 32, 35]. These algorithms are based on integrating the solution \({{\varvec{f}}}(t)\) off the tensor manifold for a short time using any conventional time-stepping scheme, and then mapping it back onto the manifold using a tensor truncation operation. We will refer to these methods as step-truncation methods. To describe these methods further, let us discretize the ODE (2) in time with a conventional one-step scheme on an evenly-spaced temporal grid

$$\begin{aligned} {{{\varvec{u}}}}_{k+1} = {{\varvec{u}}}_k+\varDelta t {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{u}}}_k,\varDelta t), \end{aligned}$$
(3)

where \({{\varvec{u}}}_{k}\) denotes an approximation of \({{\varvec{f}}}(k\varDelta t)\) for \(k=0,1,\ldots \), and \(\varvec{\varPhi }\) is an increment function. To obtain a step-truncation scheme, we simply apply a nonlinear projection (truncation operator), denoted by \(\mathfrak {T}_{{\varvec{r}}}(\cdot )\), onto a tensor manifold with multilinear rank \({\varvec{r}}\) [3, 4, 14, 15, 23] to the scheme (3). This yields

$$\begin{aligned} {{\varvec{f}}}_{k+1} = \mathfrak {T}_{{\varvec{r}}}\left( {{\varvec{f}}}_k+\varDelta t {\varvec{\varPhi }}\left( {{\varvec{N}}},{{\varvec{f}}}_k,\varDelta t\right) \right) , \end{aligned}$$
(4)

where \({{\varvec{f}}}_{k}\) here denotes an approximation of \(\mathfrak {T}_{{\varvec{r}}}({{\varvec{f}}}(k\varDelta t))\) for \(k=0,1,\ldots \). The need for tensor rank-reduction when iterating (3) can be easily understood by noting that tensor operations such as the application of an operator to a tensor and the addition between two tensors naturally increase tensor rank [23]. Hence, iterating (3) with no rank reduction can yield a fast increase in tensor rank, which, in turn, can tax computational resources significantly. Step-truncation algorithms of the form (4) were subject to a thorough error analysis in [19], where convergence results were obtained in the context of fixed-rank tensor integrators, i.e., integrators in which the tensor rank \({\varvec{r}}\) in (4) is kept constant at each time step (Fig. 1).

In this paper, we develop adaptive step-truncation algorithms in which the tensor rank \({\varvec{r}}\) is selected at each time step based on desired accuracy and stability constraints. These methods are very simple to implement as they rely only on arithmetic operations between tensors, which can be performed by efficient and scalable parallel algorithms [2, 9, 15].

The paper is organized as follows. In Sect. 2, we review low-rank integration techniques for time-dependent tensors, including dynamic approximation and step-truncation methods. In Sect. 3, we develop a new criterion for tensor rank adaptivity based on local error estimates. In Sect. 4, we prove convergence of a wide range rank-adaptive step-truncation algorithms, including one-step methods of order 1 and 2, and multi-step methods of arbitrary order. In Sect. 5 we establish a connection between rank-adaptive step-truncation methods and rank-adaptive dynamical tensor approximation. In Sect. 6 we present and discuss numerical applications of the proposed algorithms. In particular, we study a prototype problem with rapidly varying rank and a Fokker-Planck equation with spatially dependent drift on a flat torus of dimension two and four.

2 Low-Rank Integration of Time-Dependent Tensors

Denote by \(\mathcal{H}_{{\varvec{r}}}\subseteq \mathbb {R}^{n_1\times n_2\times \cdots \times n_d}\) the manifold of hierarchical Tucker tensors with multilinear rank \({{\varvec{r}}}= \{r_{\alpha }\}\) corresponding to a prescribed dimension tree \(\alpha \in \mathcal{T}_d\) [34].

Remark 1

Every tensor \({{\varvec{f}}}\in \mathbb {R}^{n_1\times n_2\times \cdots \times n_d}\) has an exact hierarchical Tucker (HT) decomposition [14]. Thus, if \({\varvec{f}}\) is not the zero tensor, then \({\varvec{f}}\) belongs to a manifold \(\mathcal{H}_{{\varvec{r}}}\) for some \({\varvec{r}}\).

We begin by introducing three maps which are fundamental to the analysis of low-rank tensor integration. First, we define the nonlinear map

$$\begin{aligned} \begin{aligned} {\mathfrak T}_{{\varvec{r}}}^{\text {best}} : \,&\mathbb {R}^{n_1\times n_2\times \cdots \times n_d} \rightarrow \overline{\mathcal{H}}_{{\varvec{r}}},\\&\qquad {{\varvec{f}}}\rightarrow {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}}) = \underset{{{\varvec{h}}}\in \overline{\mathcal{H}}_{{\varvec{r}}}}{\text {argmin}}\ \left\| {{\varvec{f}}} - {{\varvec{h}}}\right\| _2. \end{aligned} \end{aligned}$$
(5)

Here, \(\overline{\mathcal{H}}_{{\varvec{r}}}\) denotes the closure of the tensor manifold \(\mathcal{H}_{{\varvec{r}}}\) and contains all tensors of multilinear rank smaller than or equal to \({\varvec{r}}\) [34]. The map (5) provides the optimal rank-\({\varvec{r}}\) approximation of a tensor \({{\varvec{f}}} \in \mathbb {R}^{n_1\times n_2\times \cdots \times n_d}\). The second map, known as high-order singular value decomposition (HOSVD) [15], is defined as a composition of linear maps obtained from a sequence of singular value decompositions of appropriate matricizations of the tensor \({\varvec{f}}\) . Such map can be written explicitely as

$$\begin{aligned} \begin{aligned} {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}} : \,&\mathbb {R}^{n_1\times n_2\times \cdots \times n_d} \rightarrow \overline{\mathcal{H}}_{{\varvec{r}}} , \\&{\varvec{f}}\rightarrow {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}}) = \prod _{\alpha \in \mathcal{T}_d^p}{{\varvec{P}}}_{\alpha } \cdots \prod _{\alpha \in \mathcal{T}_d^1}{{\varvec{P}}}_{\alpha }{{\varvec{f}}}, \end{aligned} \end{aligned}$$
(6)

where \(\mathcal{T}_d^1\dots \mathcal{T}_d^p\) are the layers of the dimension tree \(\mathcal{T}_d\). The map (6) provides a quasi-optimal rank-\({\varvec{r}}\) approximation of the tensor \({{\varvec{f}}} \in \mathbb {R}^{n_1\times n_2\times \cdots \times n_d}\), and is related to the optimal rank-\({\varvec{r}}\) truncation by the inequalities [14]

$$\begin{aligned} \left\| {{\varvec{f}}}- {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})\right\| _2\le \left\| {{\varvec{f}}}- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}})\right\| _2 \le \sqrt{2d-3} \left\| {{\varvec{f}}}- {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})\right\| _2. \end{aligned}$$
(7)

When combined with linear multistep integration schemes, the sub-optimal approximation (6) has proven to yield stable step-truncation methods [32]. The third map we define is an orthogonal projection onto the tangent space \(T_{{\varvec{f}}}\mathcal{H}_{{\varvec{r}}}\) of \(\mathcal{H}_{{\varvec{r}}}\) at the point \({\varvec{f}}\). This projection is defined by the minimization problem

$$\begin{aligned} \begin{aligned} \mathcal{P}_{{\varvec{f}}} : \,&\mathbb {R}^{n_1\times n_2\times \cdots \times n_d} \rightarrow T_{{\varvec{f}}}\mathcal{H}_{{\varvec{r}}}, \\&{{\varvec{v}}}\rightarrow \mathcal{P}_{{\varvec{f}}} {{\varvec{v}}} = \underset{{{\varvec{h}}}\in T_{{\varvec{f}}}\mathcal{H}_{{\varvec{r}}}}{\text {argmin}}\ \left\| {{\varvec{v}}} - {{\varvec{h}}}\right\| _2, \end{aligned} \end{aligned}$$
(8)

which is a linear function of \({{\varvec{v}}}\) (\({\varvec{v}}\) is the solution to a linearly constrained least squares problem).

With these three maps defined, hereafter we describe two methods for integrating (2) on the manifold \(\mathcal{H}_{{\varvec{r}}}\). Before doing so, let us discretize the temporal domain of interest [0, T] into \(N+1\) evenly-spacedFootnote 1 time instants,

$$\begin{aligned} t_i = i \varDelta t, \qquad \varDelta t = \frac{T}{N}, \qquad i=0,1,\ldots ,N, \end{aligned}$$
(9)

and let

$$\begin{aligned} {{\varvec{u}}}_{k+1} = {{\varvec{u}}}_k+\varDelta t {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{u}}}_k,\varDelta t) \end{aligned}$$
(10)

be a convergent one-step schemeFootnote 2

approximating the solution to the initial value problem (2). In (10), \({{\varvec{u}}}_k\) denotes the numerical solution to (2) at time instant \(t_k\).

2.1 Best Tangent Space Projection (B-TSP) Method

The first method we present maps the initial condition \({{\varvec{f}}}_0\) onto the manifold \(\mathcal{H}_{{\varvec{r}}}\) using either (5) or (6) and then utilizes the orthogonal projection (8) to project \({{\varvec{N}}}({{\varvec{f}}}(t))\) onto the tangent space \(T_{{\varvec{f}}}\mathcal{H}_{{\varvec{r}}}\) at each time. We write this method as (see [28])

$$\begin{aligned} \frac{{ d}{{\varvec{w}}}}{{d} t} =\mathcal{P}_{{{\varvec{w}}}}{{\varvec{N}}}({{\varvec{w}}}), \qquad {{\varvec{w}}}(0) = {\mathfrak T}_{{\varvec{r}}}({{\varvec{f}}}_0), \end{aligned}$$
(11)

where \({\mathfrak T}_{{\varvec{r}}}\) is either the mapping in (5) or (6). Discretizing (11) with a one-step method (10) yields the fully discrete scheme

$$\begin{aligned} {{\varvec{w}}}_{k+1} = {{\varvec{w}}}_k + \varDelta t{\varvec{\varPhi }} \left( \mathcal{P}_{{{\varvec{w}}}}{{\varvec{N}}}, {{\varvec{w}}}_k,\varDelta t\right) , \qquad {{\varvec{w}}}(0) = {\mathfrak T}_{{\varvec{r}}}({{\varvec{f}}}_0). \end{aligned}$$
(12)

While the scheme (12) has proven effective, explicitly computing the orthogonal projection \(\mathcal{P}_{{{\varvec{w}}}}{{\varvec{N}}}({{\varvec{w}}})\) comes with computational drawbacks. Most notably, inverse auto-correlation matrices of tensor modes appear in the projection [28] (see also [20, 21, 26]). If the tensor solution is comprised of small singular values, then the auto-correlation matrices are ill-conditioned. It has been shown in [26] that this phenomenon is due to the curvature of the tensor manifold \(\mathcal{H}_{{\varvec{r}}}\) being inversely proportional to the smallest singular value present in the tensor solution. Thus, special care is required when choosing an integration scheme for (11). Operator splitting methods [26, 27] and unconventional integration schemes [5] have been introduced to integrate (11) when the tensor solution is comprised of small singular values. It has also been shown in [19] that by using an extrinsic representation, the artificial stiffness due to the tensor manifold curvarture can be avoided. Since this method comes from a minimization principle over the tensor manifold tangent space, we refer to it as the best tangent space projection (B-TSP) method.

2.2 Step-Truncation Methods (B-ST, SVD-ST)

The second method we present allows the solution to leave the tensor manifold \({\mathcal{H}}_{{\varvec{r}}}\), and then maps it back onto the manifold at each time step. Applying either (5) or (6) to the right hand side of (10) results in a step-truncation method

$$\begin{aligned} {{\varvec{f}}}_{k+1} =&{\mathfrak T}_{{{\varvec{r}}}}^{\text {best}}\left( {{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_k,\varDelta t)\right) , \end{aligned}$$
(13)
$$\begin{aligned} {{\varvec{f}}}_{k+1} =&{\mathfrak T}_{{{\varvec{r}}}}^{\text {SVD}}\left( {{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_k,\varDelta t)\right) , \end{aligned}$$
(14)

which is a low-rank tensor approximation to (2). We will refer to (13) as the fixed-rank best step-truncation (B-ST) method and to (14) as the fixed-rank SVD step-truncation (SVD-ST) method. This definition emphasizes that the multivatiate tensor rank \({{\varvec{r}}}\) does not change with time. The schemes (13) and (14) were studied extensively in [19]. One of the main findings is that a low-rank approximability condition is required in order to obtain error estimates for the low-rank tensor approximation to (2). The low-rank approximability condition can be written as

$$\begin{aligned} \left| \left| ({{\varvec{I}}} - \mathcal{P}_{ \bar{{\varvec{f}}}}) N({ \bar{{\varvec{f}}}}) \right| \right| _2 \le E ,\qquad E>0, \end{aligned}$$
(15)

for all \({ \bar{{\varvec{f}}}}\in \mathcal{H}_{{\varvec{r}}}\) in a suitable neighbourhood of the exact solution. Under this assumption, it can be shown that a one-step integration scheme with arbitrary order increment function \(\varvec{\varPhi }\) applied to (13) or (14) results in an approximation to (2) with error dominated by E. As an alternative to the fixed-rank schemes (13)–(14) combined with the low-rank approximability assumption (15), we propose the following rank-adaptive step-truncation schemes

$$\begin{aligned} {{\varvec{f}}}_{k+1} =&{\mathfrak T}_{{{\varvec{r}}}_{k}}^{\text {best}}\left( {{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_k,\varDelta t)\right) , \end{aligned}$$
(16)
$$\begin{aligned} {{\varvec{f}}}_{k+1} =&{\mathfrak T}_{{{\varvec{r}}}_{k}}^{\text {SVD}}\left( {{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_k,\varDelta t)\right) . \end{aligned}$$
(17)

The selection of a new rank \({{\varvec{r}}}_k\) at each time step allows us to obtain convergence results for step-truncation schemes without assuming (15). We will refer to the schemes (16) and (17) as rank-adaptive B-ST and rank-adaptive SVD-ST, respectively.

3 Consistency of Step-Truncation Methods

In this section, we prove a number of consistency results for step-truncation methods. In particular, we show that the fixed-rank step-truncation method (13) is consistent with the B-TSP method (12), and the rank-adaptive step-truncation methods (16)–(17) are consistent with the fully discrete system (10) (provided the truncation ranks are chosen to satisfy a suitable criterion). Our analysis begins with stating a few known results for the truncation operator \({\mathfrak T}_{{\varvec{r}}}^{\text {best}}\). Consider the formal power series expansion of \({\mathfrak T}_{{\varvec{r}}}^{\text {best}}\) around \({\varvec{f}}\in \mathcal{H}_{{\varvec{r}}}\)

$$\begin{aligned} {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}} +\varepsilon {{\varvec{v}}}) = {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})+ \varepsilon \frac{\partial \mathfrak T_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})}{\partial {\varvec{f}}}{{\varvec{v}}} +\cdots , \end{aligned}$$
(18)

where \(\partial \mathfrak T_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})/ \partial {\varvec{f}}\) denotes the Jacobian of \({\mathfrak T}_{{\varvec{r}}}^{\text {best}}\) at \({{\varvec{f}}}\), \({{\varvec{v}}}\in \mathbb {R}^{n_1\times n_2\times \cdots \times n_d}\), and \(\varepsilon \in \mathbb {R}\) is small. Since \({{\varvec{f}}}\in \mathcal{H}_{{\varvec{r}}}\), we have that \({\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}}) = {{\varvec{f}}}\), which allows us to write (18) as

$$\begin{aligned} {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}} +\varepsilon {{\varvec{v}}}) = {{\varvec{f}}} + \varepsilon \frac{\partial \mathfrak T_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})}{\partial {\varvec{f}}}{{\varvec{v}}} +\cdots . \end{aligned}$$
(19)

In the following Lemma we show that the Jacobian \(\partial \mathfrak T_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})/\partial {\varvec{f}}\) coincides with the orthogonal projection (8) onto the tangent space \(T_{{\varvec{f}}}\mathcal{H}_{{\varvec{r}}}\).

Lemma 1

(Smoothness of the best truncation operator) The map \({\mathfrak T}_{{\varvec{r}}}^{\text {best}}(\cdot )\) is continuously differentiable on \(\mathcal{H}_{{\varvec{r}}}\). Moreover,

$$\begin{aligned} \frac{\partial {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}})}{\partial {{\varvec{f}}}}= \mathcal{P}_{{{\varvec{f}}}}, \qquad \forall {{\varvec{f}}} \in \mathcal{H}_{{\varvec{r}}}, \end{aligned}$$

where \(\mathcal{P}_{{{\varvec{f}}}}\) is the orthogonal projection (8) onto the tangent space of \(\mathcal{H}_{{\varvec{r}}}\) at \({{\varvec{f}}}\).

This result has been proven in [24] and [1] for finite-dimensional manifolds. A slightly different proof which holds for finite-dimensional manifolds without boundary is given in [29]. In Appendix 1 we provide an alternative proof which is based primarily on linear algebra rather than differential geometry. With Remark 1 in mind, we can apply Lemma 1 to every tensor except the zero tensor. We now use Lemma 1 to prove consistency between the fixed-rank B-ST method (13) and the B-TSP method (12).

Proposition 1

(Consistency of B-ST and B-TSP) Let \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}, \varDelta t)\) denote an order-p increment function defining a one-step temporal integration scheme as in (10) and let \({{\varvec{f}}}_{k}\in \mathcal{H}_{{\varvec{r}}}\). We have that

$$\begin{aligned} {\mathfrak T}_{{\varvec{r}}}^{\text {best}}({{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t)) = {{\varvec{f}}}_k + \varDelta t \mathcal{P}_{{{\varvec{f}}}_k} {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t) +\cdots , \end{aligned}$$
(20)

i.e., B-ST is at least order 1 consistent with B-TSP in \(\varDelta t\).

This proposition follows immediately from using the perturbation series (19) together with Lemma 1. Next, we provide a condition for rank selection in the rank-adaptive methods (16)–(17) which guarantees a consistent approximation to equation (2).

Proposition 2

(Rank selection for B-ST consistency) Let \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t)\) be an order-p increment function. The step-truncation method

$$\begin{aligned} {{\varvec{a}}}_k ={{\varvec{f}}}_k + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t),\qquad {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k), \end{aligned}$$

approximates (2) with order-p local truncation error if and only if there exists an \(M>0\) (independent of k) such that the rank \({{\varvec{r}}}_{k}\) at time index k satisfies the inequality

$$\begin{aligned} \left| \left| {{\varvec{a}}}_k - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k) \right| \right| _2 \le M\varDelta t^{p+1}. \end{aligned}$$
(21)

Proof

Denote by \({{\varvec{f}}}(t_{k+1})\) the exact solution to \({{d}{{\varvec{f}}}}/{{ d} t} ={{\varvec{N}}}({{\varvec{f}}})\) with initial condition \({{\varvec{f}}}_k\) at time \(t_k\). For the forward implication, suppose there exists a constant \(C_1\) such that \(\left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{f}}}_{k+1} \right| \right| _2\le C_1 \varDelta t^{p+1}\). Then,

$$\begin{aligned} \left| \left| {{\varvec{a}}}_k - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k) \right| \right| _2&\le \left| \left| {{\varvec{a}}}_k - {{\varvec{f}}}(t_{k+1}) \right| \right| _2 + \left| \left| {{\varvec{f}}}(t_{k+1}) - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k) \right| \right| _2\\&\le C_2 \varDelta t^{p+1} + \left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{f}}}_{k+1} \right| \right| _2 \\&\le C_2 \varDelta t^{p+1} + C_1 \varDelta t^{p+1}, \end{aligned}$$

where \(C_2\) is a constant. To prove the converse, we estimate the local truncation error as

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{f}}}_{k+1} \right| \right| _2&\le \left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{a}}}_{k} \right| \right| _2 + \left| \left| {{\varvec{a}}}_k - {{\varvec{f}}}_{k+1} \right| \right| _2 \\&\le C_2 \varDelta t^{p+1} + \left| \left| {{\varvec{a}}}_k - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k) \right| \right| _2\\&\le C_2\varDelta t^{p+1} + M\varDelta t^{p+1}, \end{aligned}$$

where \(C_2\) is a constant. \(\square \)

Recalling Remark 1, for any given tensor \({{\varvec{a}}}_k \in \mathbb {R}^{n_1 \times \cdots \times n_d}\) there exists a rank \({{\varvec{r}}}_k\) which makes the left hand side of the inequality (21) equal to zero. Thus, there always exists a rank \({{\varvec{r}}}_k\) which satisfies (21). Using consistency of the rank-adaptive B-ST scheme (16) proven in Proposition 2, we can easily obtain consistency results for step-truncation methods based on quasi-optimal truncation operators such as \({\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}\). To do so, we first show that the local truncation error of SVD-ST scheme (14) is dominated by the local truncation error of the B-ST scheme (13).

Lemma 2

(Error bound on the SVD step-truncation scheme) Let \({{\varvec{f}}}(t_{k+1})\) denote the exact solution to \({{\text{ d }}{{\varvec{f}}}}/{{\text{ d }} t} ={{\varvec{N}}}({{\varvec{f}}})\) with initial condition \({{\varvec{f}}}_k\) at time \(t_k\), and let \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}, \varDelta t)\) be an order-p increment function. The local truncation error of the SVD-ST integrator (14) satisfies

$$\begin{aligned}&\left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t) \right) \right\| _2 \nonumber \\&\le K\left( 1+\sqrt{2d - 3}\right) \varDelta t^{p+1} + \sqrt{2d - 3} \left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {best}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t) \right) \right\| _2. \end{aligned}$$

Proof

First, we apply triangle inequality

$$\begin{aligned}&\left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)) \right\| _2 \nonumber \\ \qquad&\quad \le \left\| {{\varvec{f}}}(t_{k+1})- \left( {{\varvec{f}}}(t_k) \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)\right) \right\| _2+\nonumber \\&\qquad +\left\| {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)\right) \right\| _2. \end{aligned}$$
(22)

Since the increment function \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(\tau ), \varDelta t)\) is of order p, we can replace the first term at the right hand side of (22) by \(K\varDelta t^{p+1}\), i.e.,

$$\begin{aligned}&\left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)) \right\| _2 \\ \nonumber&\quad \le K\varDelta t^{p+1} + \left\| {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)\right) \right\| _2, \end{aligned}$$

where K is a constant. Next, we use the inequality (7) to obtain

$$\begin{aligned}&\left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)) \right\| _2 \le K\varDelta t^{p+1} + \left( \sqrt{2d-3}\right) \nonumber \\&\left\| {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)- {\mathfrak T}_{{\varvec{r}}}^{\text {best}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)\right) \right\| _2. \end{aligned}$$

Another application of triangle inequality yields

$$\begin{aligned} \nonumber&\left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {SVD}}({{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)) \right\| _2 \\ \nonumber&\quad \le K\varDelta t^{p+1} + \left( \sqrt{2d-3}\right) \bigg ( \left\| {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)- {{\varvec{f}}}(t_{k+1})\right\| _2+\nonumber \\&\qquad \left\| {{\varvec{f}}}(t_{k+1})- {\mathfrak T}_{{\varvec{r}}}^{\text {best}}\left( {{\varvec{f}}}(t_k)+ \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}(t_k), \varDelta t)\right) \right\| _2 \bigg ). \nonumber \end{aligned}$$

Finally, collecting like terms yields the desired result. \(\square \)

By combining Proposition 2 and Lemma 2, it is straightforward to prove the following consistency result for the rank-adaptive SVD-ST integrator (16).

Corollary 1

(Rank selection for SVD-ST consistency) Let \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t)\) be an order-p increment function. The step-truncation method

$$\begin{aligned}{{\varvec{a}}}_k ={{\varvec{f}}}_k + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t),\qquad {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {SVD}}({{\varvec{a}}}_k) \end{aligned}$$

approximates (2) with order-p local truncation error if and only if there exists an \(M>0\) such that the rank \({{\varvec{r}}}_{k}\) at time index k satisfies the inequality

$$\begin{aligned} \left| \left| {{\varvec{a}}}_k - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}({{\varvec{a}}}_k) \right| \right| _2 \le M\varDelta t^{p+1}. \end{aligned}$$
(23)

Note that by inequality (7), the statement in (23) is equivalent to

$$\begin{aligned} \left| \left| {{\varvec{a}}}_k - {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {SVD}}({{\varvec{a}}}_k) \right| \right| _2\le M' \varDelta t^{p+1}, \end{aligned}$$
(24)

for another constant \(M' > 0\), which depends on d. Consistency results analogous to Corollary 1 for step-truncation integrators based on any quasi-optimal truncation can be obtained in a similar way.

3.1 Error Constants

In this section we provide a lower bound for the constant M appearing in Corollary 1. To simplify the presentation we develop the bounds for the matrix case (\(d=2\)) and note that similar results for \(d>2\) can be obtained by using the hierarchical approximability theorem discussed in [14].

With reference to Corollary 1, let \(\{\sigma _i\}\) be the set of singular values of \({{\varvec{a}}}_k\) and let \({{\varvec{a}}}_k - {\mathfrak T}_{r_k}({{\varvec{a}}}_k)={{\varvec{E}}}_k \in {\mathbb {R}}^{n_1\times n_2}\) be the error matrix due to tensor truncation. Then the local consistency condition (23) can be written as

$$\begin{aligned} \begin{aligned} \left\| {{\varvec{a}}}_k - {\mathfrak T}_{r_k}({{\varvec{a}}}_k) \right\| _2^2&= \left\| {{\varvec{E}}}_k \right\| _2^2 \\&= \sum _{i={r_k}+1}^{\text {min}(n_1,n_2)} \sigma _i^2 \le M^2\varDelta t^{2p+2}. \end{aligned} \end{aligned}$$
(25)

Equation (25) can be used to obtain the following lower bound for the coefficient M

$$\begin{aligned} M\ge \frac{1}{\varDelta t^{p+1}}\sqrt{{\displaystyle \sum _{i={r_k}+1}^{\text {min}(n_1,n_2)} \sigma _i^2 }}. \end{aligned}$$
(26)

The lower bound can be explicitly computed if we have available the decay rate of the singular values \(\{ \sigma _i \}\). For instance, if the singular values decay exponentially fast (as in the case of singular values considered in [31]), i.e., \(\sigma ^2_i \le Cq^i\) for some \(C>0\) and \(q\in (0,1)\), Then by the geometric series formula we have that

$$\begin{aligned} \left\| {{\varvec{a}}}_k\right\| _2^2\le C\sum _{i=1}^\infty q^i =C\frac{q}{(1-q)}, \end{aligned}$$

which yields \(Cq \ge (1-q)\Vert {{\varvec{a}}}_k\Vert _2^2\). In this case we may bound the local error as

$$\begin{aligned} \left\| {{\varvec{E}}}_k\right\| _2^2 \le C\sum _{i=r_k+1}^\infty q^i = C\sum _{i=1}^\infty q^i - C\sum _{i=1}^{r_k} q^i = C\frac{q - (q - q^{r_k+1})}{1-q} = C\frac{q^{r_k+1}}{1-q}. \end{aligned}$$

Inserting this bound into (26) and recalling that \(Cq \ge (1-q)\left\| {{\varvec{a}}}_k\right\| _2^2\) and \(\left\| {{\varvec{a}}}_k\right\| _2 \ge \left\| {{\varvec{E}}}_k\right\| _2\) we obtain

$$\begin{aligned} M\ge \frac{1}{\varDelta t^{p+1}}\sqrt{ \frac{Cq^{r_k+1}}{(1-q)} } \ge \frac{1}{\varDelta t^{p+1}} \sqrt{\frac{(1-q)\left\| {{\varvec{a}}}_k\right\| _2^2q^{r_k}}{(1-q)}} =\frac{\left\| {{\varvec{a}}}_k\right\| _2\sqrt{q^{r_k}}}{\varDelta t^{p+1}}. \end{aligned}$$
(27)

Equation (27) establishes a relationship between the local error coefficient M, the solution rank \(r_k\) at time step k, the time step \(\varDelta t\), and the 2-norm of the solution \({{\varvec{a}}}_k\) at time step k.

A similar relation can be derived for singular values \(\{\sigma _i\}\) decaying algebraically, i.e., \(\sigma _i^2 \le Ci^{-1-2s}\), where \(s\in \mathbb {N}\). It was shown in [16] that this decay rate occurs when discretizing an s-times differentiable bivariate function. Moreover, it was also shown that

$$\begin{aligned} \left\| {{\varvec{E}}}\Vert _2 \le K\Vert {{\varvec{a}}}_k\right\| _2(r_k +1)^{-s}, \end{aligned}$$

where K is a constant related to the measure of the domain of the aforementioned s-times differentiable bivariate function. Therefore, if we choose the rank \(r_k\) to satisfy the inequality

$$\begin{aligned} \frac{M}{K}\ge \frac{\left\| {{\varvec{a}}}_k\right\| _2}{(r_k +1)^{s}} \end{aligned}$$

then we have that condition (23) is also satisfied. An expression for K may be found in Theorem 3.3 of [16].

4 Convergence of Rank-Adaptive Step-Truncation Schemes

We have shown that the proposed methods are consistent, now we prove convergence. To do so, let us assume that the increment function \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}, \varDelta t)\) satisfies the following stability condition: There exist constants \(C,D,E \ge 0\) and a positive integer \(m \le p\) so that as \(\varDelta t\rightarrow 0\), the inequality

$$\begin{aligned} \left\| {\varvec{\varPhi }}({{\varvec{N}}}, \hat{{\varvec{f}}}, \varDelta t) - {\varvec{\varPhi }}({{\varvec{N}}}, {\tilde{{\varvec{f}}}}, \varDelta t) \right\| _2 \le (C+D\varDelta t) \left\| \hat{{\varvec{f}}} - {\tilde{{\varvec{f}}}} \right\| _2 +E\varDelta t^{m} \end{aligned}$$
(28)

holds for all \(\hat{{\varvec{f}}},\tilde{{\varvec{f}}} \in \mathbb {R}^{n_1 \times \cdots \times n_d}\). This assumption is crucial in our development of global error analysis for rank-adaptive step-truncation methods.

Theorem 1

(Global error for rank-adaptive schemes) Let \({{\varvec{f}}}(t)\) be the exact solution to (2), assume \({\varvec{N}}\) is Lipschitz continuous with constant L, and let \({\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}, \varDelta t)\) be an order-p increment function satisfying the stability criterion (28). If

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, \varDelta t)) \end{aligned}$$

is an order-p consistent step-truncation method, where \({\mathfrak {T}}_{{{\varvec{r}}}_k} = {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {best}}\) or \({\mathfrak {T}}_{{{\varvec{r}}}_k} = {\mathfrak {T}}_{{{\varvec{r}}}_k}^{\text {SVD}}\) (see Proposition 2 or Corollary 1), then the global error satisfies

$$\begin{aligned} \left\| {{\varvec{f}}}(T) - {{\varvec{f}}}_N \right\| _2 \le Q \varDelta t^{z}, \end{aligned}$$

where \(z = \min (p,m)\). The constant Q depends on the local error and stability coefficients of the increment function \({\varvec{\varPhi }}\), and the truncation constant M in (21) (or \(M'\) in (24)).

Proof

We induct on the number of time steps (i.e., N in (9)), assuming that \(\varDelta t\) is small enough for the local error estimations to hold true. The base case is given by one step error (\(N=1\)) which is local truncation error. Thus, from our consistency assumption we immediately obtain

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_1) - {\mathfrak {T}}_{{{\varvec{r}}}_0}({{\varvec{f}}}_0 + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_0, \varDelta t)) \right| \right| _2 \le C_0 \varDelta t^{p+1}, \end{aligned}$$

which proves the base case. Now, assume that the error after \(N-1\) steps satisfies

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 \le Z_{N-1} \varDelta t^{z}, \end{aligned}$$

where \(z = \min (p,m)\). Letting \({{\varvec{a}}}_k = {{\varvec{f}}}_k + \varDelta t{\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_{k}, \varDelta t)\) denote one step prior to truncation, we expand the final step error in terms of penultimate step

$$\begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} \right| \right| _2&= \left| \left| {{\varvec{f}}}(t_{N}) - {\mathfrak {T}}_{{{\varvec{r}}}_{N-1}}({{\varvec{f}}}_{N-1} + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_{N-1}, \varDelta t)) \right| \right| _2\\ \nonumber&\le \left| \left| {{\varvec{f}}}(t_{N}) - {{\varvec{a}}}_{N-1} \right| \right| _2+ \left| \left| {{\varvec{a}}}_{N-1} - {\mathfrak {T}}_{{{\varvec{r}}}_{N-1}}({{\varvec{f}}}_{N-1} + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_{N-1}, \varDelta t)) \right| \right| _2\\ \nonumber&= \left| \left| {{\varvec{f}}}(t_{N}) - {{\varvec{a}}}_{N-1} \right| \right| _2+ \left| \left| {{\varvec{a}}}_{N-1} - {\mathfrak {T}}_{{{\varvec{r}}}_{N-1}}({{\varvec{a}}}_{N-1}) \right| \right| _2\\ \nonumber&\le \left| \left| {{\varvec{f}}}(t_{N}) - {{\varvec{a}}}_{N-1} \right| \right| _2+ M \varDelta t^{p+1}\\ \nonumber&\le \left| \left| {{\varvec{f}}}(t_{N}) - \left( {{\varvec{f}}}(t_{N-1}) + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}(t_{N-1}),\varDelta t) \right) \right| \right| _2\\ \nonumber&\ \ + \left| \left| {{\varvec{f}}}(t_{N-1}) + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}(t_{N-1}),\varDelta t) -{{\varvec{a}}}_{N-1} \right| \right| _2+ M \varDelta t^{p+1}\\ \nonumber&\le \left| \left| {{\varvec{f}}}(t_{N-1}) + \varDelta t {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}(t_{N-1}),\varDelta t ) -{{\varvec{a}}}_{N-1} \right| \right| _2+ K_{N-1}\varDelta t^{p+1}+ M \varDelta t^{p+1}, \end{aligned}$$
(29)

where \(K_{N-1}\) is a local error constant for the untruncated scheme (10). Expanding \({{\varvec{a}}}_{N-1}\) and using the triangle inequality we find

$$\begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} \right| \right| _2&\le \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 \nonumber \\&\qquad +\varDelta t \left| \left| {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}(t_{N-1}),\varDelta t) -{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_{N-1},\varDelta t) \right| \right| _2\nonumber \\&\qquad \qquad + K_{N-1}\varDelta t^{p+1}+ M \varDelta t^{p+1}. \end{aligned}$$
(30)

Using our assumption that the increment function is stable, (28) yields

$$\begin{aligned} | | {{\varvec{f}}}(T)&- {{\varvec{f}}}_{N} | |_2 \le \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 + (C+D\varDelta t )\varDelta t \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 \nonumber \\ \nonumber&\qquad \qquad \qquad +E\varDelta t^{m+1} + K_{N-1}\varDelta t^{p+1}+ M \varDelta t^{p+1}\\ \nonumber&= (1+C\varDelta t + D \varDelta t^2) \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 +E\varDelta t^{m+1} + K_{N-1}\varDelta t^{p+1} + M \varDelta t^{p+1}\\\nonumber&\le (1+C\varDelta t +D\varDelta t^2) Z_{N-1} \varDelta t^{z} +E\varDelta t^{m+1} + K_{N-1}\varDelta t^{p+1} + M \varDelta t^{p+1}. \end{aligned}$$

Finally, recalling that \(z=\min (p,m)\), we obtain

$$\begin{aligned} | | {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} | |_2&\le (1+C\varDelta t +D\varDelta t^2) Z_{N-1} \varDelta t^{z} +E\varDelta t^{z+1} + K_{N-1}\varDelta t^{z+1} + M \varDelta t^{z+1} \nonumber \\ \nonumber&= \left[ (1+C\varDelta t +D\varDelta t^2) Z_{N-1} + E \varDelta t + K_{N-1} \varDelta t + M \varDelta t \right] \varDelta t^z, \end{aligned}$$

concluding the proof. \(\square \)

Since the constants MCD, and E are fixed in time, the local error coefficients \(K_{j}\), which depend only on the untruncated scheme (10), determine if the error blows up as the temporal grid is refined. Hereafter we provide several examples of globally convergent rank-adaptive step-truncation methods. In each example, \(\mathfrak {T}_{{{\varvec{r}}}}\) denotes any optimal or quasi-optimal truncation operator, e.g., the best rank-\({\varvec{r}}\) truncation operator (5) or the SVD truncation operator (6).

4.1 Rank-Adaptive Euler Scheme

Our first example is a first-order method for solving (2) based on Euler forward. From Theorem 1, we know that the scheme

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{{\varvec{N}}}( {{\varvec{f}}}_k)) \end{aligned}$$
(31)

is order one in \(\varDelta t\), provided the vector field \({\varvec{N}}\) is Lipschitz and the truncation rank \({{\varvec{r}}}_{k}\) satisfies

$$\begin{aligned} \Vert {{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}({{\varvec{f}}}_k) - \mathfrak {T}_{{{\varvec{r}}}_k} ({{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}({{\varvec{f}}}_k ))\Vert _2 \le M \varDelta t^2, \end{aligned}$$

for all \(k = 1,2,\ldots \). Applying the nonlinear vector field \({\varvec{N}}\) to the solution tensor \({\varvec{f}}\) can result in a tensor with large rank. Therefore, it may be desirable to apply a tensor truncation operator to \({{\varvec{N}}}({{\varvec{f}}})\) at each time step. To implement this, we build the additional truncation operator into the increment function

$$\begin{aligned} {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, {{\varvec{s}}}_k, \varDelta t) = {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k)), \end{aligned}$$
(32)

to obtain the new scheme

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))). \end{aligned}$$
(33)

We now determine conditions for \({{\varvec{s}}}_k\) and \({{\varvec{r}}}_k\) which make the scheme (33) first-order. To address consistency, suppose \({{\varvec{f}}}(t_{k+1})\) is the analytic solution to (2) with initial condition \({{\varvec{f}}}_k\) at time \(t_k\). Then, bound the local truncation error as

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{f}}}_{k+1} \right| \right| _2&\le \left| \left| {{\varvec{f}}}(t_{k+1}) -({{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}({{\varvec{f}}}_k)) \right| \right| _2 \\&\quad + \left| \left| {{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}({{\varvec{f}}}_k)- {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))) \right| \right| _2\\&\le K\varDelta t^{2} + \left| \left| {{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}({{\varvec{f}}}_k)- ({{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))) \right| \right| _2\\&\quad + \left| \left| {{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k)) - {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))) \right| \right| _2\\&=K\varDelta t^{2} +\varDelta t \left| \left| {{\varvec{N}}}({{\varvec{f}}}_k)- {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k)) \right| \right| _2 \\&\quad + \left| \left| {{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k)) - {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))) \right| \right| _2. \end{aligned}$$

From this bound, we see that by selecting \({{\varvec{s}}}_k\) and \({{\varvec{r}}}_k\) so that

$$\begin{aligned} \begin{aligned}&\left| \left| {{\varvec{N}}}({{\varvec{f}}}_k)- {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k)) \right| \right| _2 \le M_1 \varDelta t , \\&\left| \left| {{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))- {\mathfrak {T}}_{{{\varvec{r}}}_k}({{\varvec{f}}}_k + \varDelta t{\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( {{\varvec{f}}}_k))) \right| \right| _2 \le M_2 \varDelta t^{2}, \nonumber \end{aligned} \end{aligned}$$

for all \(k = 1,2,\ldots \), yields an order one local truncation error for (33). To address stability, we show that the increment function (32) satisfies (28) with \(m = 1\), assuming \({\varvec{N}}\) is Lipschitz. Indeed,

$$\begin{aligned} \left| \left| {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( \hat{{\varvec{f}}})) - {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( \tilde{{\varvec{f}}})) \right| \right| _2&\le \left| \left| {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( \hat{{\varvec{f}}})) -{{\varvec{N}}}( \hat{{\varvec{f}}}) \right| \right| _2 + \left| \left| {{\varvec{N}}}( \hat{{\varvec{f}}}) - {{\varvec{N}}}( \tilde{{\varvec{f}}}) \right| \right| _2 \\&\quad + \left| \left| {{\varvec{N}}}( \tilde{{\varvec{f}}}) - {\mathfrak {T}}_{{{\varvec{s}}}_k}({{\varvec{N}}}( \tilde{{\varvec{f}}})) \right| \right| _2\le L \left| \left| \hat{{\varvec{f}}}-\tilde{{\varvec{f}}} \right| \right| _2+ 2M_1\varDelta t, \end{aligned}$$

where L is the Lipschitz constant of \({\varvec{N}}\). Now applying Theorem 1 proves that the rank-adaptive Euler method (33) has \(O(\varDelta t)\) global error.

4.2 Rank-Adaptive Explicit Midpoint Scheme

Consider the following rank-adaptive step-truncation method based on the explicit midpoint rule (see [17, II.1])

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{\alpha }}}_k} \left( {{\varvec{f}}}_{k} + \varDelta t \left( {{\varvec{N}}}\left( {{\varvec{f}}}_{k} + \frac{\varDelta t}{2} {{\varvec{N}}}({{\varvec{f}}}_{k}) \right) \right) \right) . \end{aligned}$$
(34)

We have proven in Theorem 1 that (34) is order 2 in \(\varDelta t\), provided the vector field \({\varvec{N}}\) is Lipschitz and the truncation rank \({{\varvec{\alpha }}}_{k}\) satisfies

$$\begin{aligned} \Vert {{\varvec{a}}}_k - \mathfrak {T}_{{{\varvec{\alpha }}}_k} ({{\varvec{a}}}_k)\Vert _2 \le M \varDelta t^3, \end{aligned}$$

for all \(k = 1,2,\ldots \). Here,

$$\begin{aligned} {{\varvec{a}}}_k = {{\varvec{f}}}_{k} + \varDelta t \left( {{\varvec{N}}}\left( {{\varvec{f}}}_{k} + \frac{\varDelta t}{2} {{\varvec{N}}}({{\varvec{f}}}_{k}) \right) \right) \end{aligned}$$

denotes the solution tensor at time \(t_{k+1}\) prior to truncation. For the same reasons we discussed in Sect. 4.1, it may be desirable to insert truncation operators inside the increment function. For our rank-adaptive explicit midpoint method we consider the increment function

$$\begin{aligned} {\varvec{\varPhi }}({{\varvec{N}}}, {{\varvec{f}}}_k, {{\varvec{\beta }}}_k, {{\varvec{\gamma }}}_k,\varDelta t) = {\mathfrak {T}}_{{{\varvec{\beta }}}_k}\left( {{\varvec{N}}}\left( {{\varvec{f}}}_{k} + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}({{\varvec{f}}}_{k})) \right) \right) , \end{aligned}$$
(35)

which results in the step-truncation scheme

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {\mathfrak {T}}_{{{\varvec{\alpha }}}_k} \left( {{\varvec{f}}}_{k} + \varDelta t {\mathfrak {T}}_{{{\varvec{\beta }}}_k}\left( {{\varvec{N}}}\left( {{\varvec{f}}}_{k} + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}({{\varvec{f}}}_{k})) \right) \right) \right) . \end{aligned}$$
(36)

Following a similar approach as in Sect. 4.1, we aim to find conditions on \({{\varvec{\alpha }}}_k\), \({{\varvec{\beta }}}_k\) and \({{\varvec{\gamma }}}_k\) so that the local truncation error of the scheme (36) is order 2. For ease of notation, let us denote the truncation errors by \(\varepsilon _{{{\varvec{\kappa }}}} = \left\| {{\varvec{g}}} - {\mathfrak {T}}_{{{\varvec{\kappa }}}} ({{\varvec{g}}})\right\| _2\), where \({{\varvec{\kappa }}}={{\varvec{\alpha }}}_k\), \({{\varvec{\beta }}}_k\), or \({{\varvec{\gamma }}}_k\). The local truncation error of the scheme (36) can be estimated as

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_{k+1}) - {{\varvec{f}}}_{k+1} \right| \right| _2&\le \varepsilon _{{{\varvec{\alpha }}}_k} +\left| \left| {{\varvec{f}}}(t_{k+1}) - \left( {{\varvec{f}}}_k + \varDelta t {\mathfrak {T}}_{{{\varvec{\beta }}}_k}\left( {{\varvec{N}}}\left( {{\varvec{f}}}_k + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}({{\varvec{f}}}_k)) \right) \right) \right) \right| \right| _2\\ \nonumber&\le \varepsilon _{{{\varvec{\alpha }}}_k} +\varDelta t\varepsilon _{{{\varvec{\beta }}}_k} +\left| \left| {{\varvec{f}}}(t_{k+1}) - \left( {{\varvec{f}}}_k + \varDelta t {{\varvec{N}}}\left( {{\varvec{f}}}_k + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}({{\varvec{f}}}_k)) \right) \right) \right| \right| _2\\&\le K\varDelta t^{3} +\varepsilon _{{{\varvec{\alpha }}}_k} +\varDelta t\varepsilon _{{{\varvec{\beta }}}_k} + \frac{L\varDelta t^2}{2}\varepsilon _{{{\varvec{\gamma }}}_k}, \nonumber \end{aligned}$$

where L is the Lipschitz constant of \({\varvec{N}}\). From this bound, we see that if the truncation ranks \({{\varvec{\alpha }}}_k, {{\varvec{\beta }}}_k\) and \({{\varvec{\gamma }}}_k\) are chosen such that

$$\begin{aligned} \varepsilon _{{{\varvec{\alpha }}}_k} \le A\varDelta t^3, \qquad \varepsilon _{{{\varvec{\beta }}}_k} \le B\varDelta t^2, \qquad \varepsilon _{{{\varvec{\gamma }}}_k}\le G\varDelta t, \end{aligned}$$
(37)

for some constants A, B, and G, then the local truncation error of the scheme (36) is order 2 in \(\varDelta t\). Also, if (37) is satisfied then the stability requirement (28) is also satisfied. Indeed,

$$\begin{aligned}&\left| \left| {\mathfrak {T}}_{{{\varvec{\beta }}}_k}\left( {{\varvec{N}}}\left( \hat{{\varvec{f}}} + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}(\hat{{\varvec{f}}})) \right) \right) -{\mathfrak {T}}_{{{\varvec{\beta }}}_k}\left( {{\varvec{N}}}\left( \tilde{{\varvec{f}}} + \frac{\varDelta t}{2} {\mathfrak {T}}_{{{\varvec{\gamma }}}_k}( {{\varvec{N}}}(\tilde{{\varvec{f}}})) \right) \right) \right| \right| _2 \\&\quad \quad \qquad \le \left( L+\frac{L}{2}\varDelta t \right) \left| \left| \hat{{\varvec{f}}} - \tilde{{\varvec{f}}} \right| \right| _2 +2\varepsilon _{{{\varvec{\beta }}}_k}+ {L\varDelta t}\varepsilon _{{{\varvec{\gamma }}}_k} \end{aligned}$$

holds for all tensors \(\hat{{\varvec{f}}}, \tilde{{\varvec{f}}} \in \mathbb {R}^{n_1 \times \cdots \times n_d}\). To arrive at the above relationship, we applied triangle inequality several times to pull out the \(\varepsilon _{{\varvec{\kappa }}}\) terms and then used Lipschitz continuity of \({\varvec{N}}\) multiple times. Thus, if the truncation ranks \({{\varvec{\alpha }}}_k, {{\varvec{\beta }}}_k\) and \({{\varvec{\gamma }}}_k\) are chosen to satisfy (37) and the vector field \({\varvec{N}}\) is Lipschitz, then Theorem 1 proves the method (36) has \(O(\varDelta t^2)\) global error.

4.3 Rank-Adaptive Adams-Bashforth Scheme

With some minor effort we can extend the rank-adaptive global error estimates to the well-known multi-step methods of Adams and Bashforth (see [17, III.1]). These methods are of the form

$$\begin{aligned} {{\varvec{f}}}_{k+1} = {{\varvec{f}}}_k + \varDelta t\sum _{j=0}^{s-1}b_j {{\varvec{N}}}({{\varvec{f}}}_{k-j}), \end{aligned}$$
(38)

where s is the number of steps. A rank-adaptive step-truncation version of this method is

$$\begin{aligned} {{\varvec{f}}}_{k+1} ={\mathfrak T}_{{{\varvec{\alpha }}}_k}\left( {{\varvec{f}}}_k + \varDelta t {\mathfrak T}_{{{\varvec{\beta }}}_k}\left( \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}_{k}({j})}\left( {{\varvec{N}}}({{\varvec{f}}}_{k-j}) \right) \right) \right) . \end{aligned}$$
(39)

In order to obtain a global error estimate for (39), we follow the same steps as before. First we prove consistency, then we prove stability, and finally combine these results to obtain a global convergence result. For consistency, let \({{\varvec{f}}}_0={{\varvec{f}}}(t_0)\), \({{\varvec{f}}}_1={{\varvec{f}}}(t_1)\), \(\dots \), \({{\varvec{f}}}_{s-1}={{\varvec{f}}}(t_{s-1})\) be the exact solution to (2) given at the first s time steps. For ease of notation, we do not let the truncation rank depend on time step k as we are only analyzing one iteration of the multi-step scheme (39). Also, define the truncation errors \(\varepsilon _{{\varvec{\kappa }}} = \left\| {{\varvec{g}}} - {\mathfrak {T}}_{{\varvec{\kappa }}}({{\varvec{g}}})\right\| _2\), where \({{\varvec{\kappa }}}={{\varvec{\alpha }}}\), \({{\varvec{\beta }}}\), \({{{\varvec{\gamma }}}(j)}\), \(j=0,\dots ,s-1\). The local error admits the bound

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_s) - {{\varvec{f}}}_s \right| \right| _2&\le \varepsilon _{{\varvec{\alpha }}}+ \left| \left| {{\varvec{f}}}(t_s) - \left( {{\varvec{f}}}_{s-1} + \varDelta t {\mathfrak T}_{{{\varvec{\beta }}}}\left( \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}({j})}\left( {{\varvec{N}}}({{\varvec{f}}}_{s-1-j}) \right) \right) \right) \right| \right| _2\\ \nonumber&\le \varepsilon _{{\varvec{\alpha }}}+ \varDelta t\varepsilon _{{\varvec{\beta }}} +\left| \left| {{\varvec{f}}}(t_s) - \left( {{\varvec{f}}}_{s-1} + \varDelta t \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}({j})}\left( {{\varvec{N}}}({{\varvec{f}}}_{s-1-j}) \right) \right) \right| \right| _2\\ \nonumber&\le \varepsilon _{{\varvec{\alpha }}}+ \varDelta t\varepsilon _{{\varvec{\beta }}} +\varDelta t\sum _{j=0}^{s-1}|b_j| \varepsilon _{{{\varvec{\gamma }}}(j)} +\left| \left| {{\varvec{f}}}(t_s) - \left( {{\varvec{f}}}_{s-1} + \varDelta t \sum _{j=0}^{s-1}b_j {{\varvec{N}}}({{\varvec{f}}}_{s-1-j}) \right) \right| \right| _2 . \end{aligned}$$

The last term is the local error for an order-s Adams-Bashforth method (38). Therefore, the local error of the step-truncation method (39) is also of order s if the truncation ranks \({{\varvec{\alpha }}}\), \({{\varvec{\beta }}}\), and \({{{\varvec{\gamma }}}(j)}\) are chosen such that

$$\begin{aligned} \varepsilon _{{\varvec{\alpha }}} \le A\varDelta t^{s+1}, \qquad \varepsilon _{{\varvec{\beta }}} \le B\varDelta t^{s}, \qquad \varepsilon _{{{\varvec{\gamma }}}(j)} \le G_j\varDelta t^{s}. \end{aligned}$$
(40)

To address stability, we first need to generalize the stability condition (28) to the increment function

$$\begin{aligned} {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_1,{{\varvec{f}}}_2, \ldots , {{\varvec{f}}}_s, \varDelta t) = {\mathfrak T}_{{{\varvec{\beta }}}_k}\left( \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}_{k}({j})}\left( {{\varvec{N}}}({{\varvec{f}}}_{k-j}) \right) \right) \end{aligned}$$
(41)

for the multi-step method (38). A natural choice is

$$\begin{aligned} \left| \left| {\varvec{\varPhi }}({{\varvec{N}}},\hat{{\varvec{f}}}_1, \hat{{\varvec{f}}}_2,\dots ,\hat{{\varvec{f}}}_{s}, \varDelta t) - {\varvec{\varPhi }}({{\varvec{N}}}, {\tilde{{\varvec{f}}}}_1, {\tilde{{\varvec{f}}}}_2,\dots ,{\tilde{{\varvec{f}}}}_s, \varDelta t) \right| \right| _2 \le \sum _{j=1}^s C_j \left| \left| \hat{{\varvec{f}}}_j - {\tilde{{\varvec{f}}}}_j \right| \right| _2 +E\varDelta t^{m}. \end{aligned}$$
(42)

Clearly, for \(s=1\) the criterion (42) specializes to the stability criterion given in (28). We have the bound

$$\begin{aligned}&\left| \left| {\varvec{\varPhi }}({{\varvec{N}}},\hat{{\varvec{f}}}_1, \hat{{\varvec{f}}}_2,\dots ,\hat{{\varvec{f}}}_{s}, \varDelta t) - {\varvec{\varPhi }}({{\varvec{N}}}, {\tilde{{\varvec{f}}}}_1, {\tilde{{\varvec{f}}}}_2,\dots ,{\tilde{{\varvec{f}}}}_s, \varDelta t) \right| \right| _2 \\&\le \left| \left| {\mathfrak T}_{{{\varvec{\beta }}}}\left( \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}({j})}\left( {{\varvec{N}}}(\hat{{\varvec{f}}}_{s-j}) \right) \right) - {\mathfrak T}_{{{\varvec{\beta }}}}\left( \sum _{j=0}^{s-1}b_j {\mathfrak T}_{{{\varvec{\gamma }}}({j})}\left( {{\varvec{N}}}(\tilde{{\varvec{f}}}_{s-j}) \right) \right) \right| \right| _2 \\ \nonumber&\le 2\varepsilon _{{\varvec{\beta }}} +2\sum _{j=0}^{s-1}|b_j| \varepsilon _{{{\varvec{\gamma }}}(j)} + \sum _{j=0}^{s-1}|b_j| \left| \left| {{\varvec{N}}}(\hat{{\varvec{f}}}_{s-j}) - {{\varvec{N}}}(\tilde{{\varvec{f}}}_{s-j}) \right| \right| _2 \\&\le 2\varepsilon _{{\varvec{\beta }}} +2\sum _{j=0}^{s-1}|b_j| \varepsilon _{{{\varvec{\gamma }}}(j)} + \sum _{j=0}^{s-1}L|b_j| \left| \left| \hat{{\varvec{f}}}_{s-j} -\tilde{{\varvec{f}}}_{s-j} \right| \right| _2, \nonumber \end{aligned}$$

where we used triangle inequality to set aside the \({\varepsilon }_{{\varvec{\kappa }}}\) terms and subsequently applied Lipschitz continuity multiple times. From the above inequality, it is seen that if (40) is satisfied, then the stability condition (42) is also satisfied with \(m = s\). With the consistency and stability results for the multistep step-truncation method (39) just obtained, it is straightforward to obtain the following global error estimate for (39).

Corollary 2

(Global error of rank-adaptive Adams-Bashforth scheme) Assume \({{\varvec{f}}}_0={{\varvec{f}}}(t_0)\), \({{\varvec{f}}}_1={{\varvec{f}}}(t_1)\), \(\dots \), \({{\varvec{f}}}_{s-1}={{\varvec{f}}}(t_{s-1})\) are given initial steps for a convergent order-s method of the form (38), and assume \({\varvec{N}}\) is Lipschitz with constant L. If the rank-adaptive step-trunctation method (39) is order-s consistent with (2), and the corresponding increment function \({\varvec{\varPhi }}\) defined in (41) satisfies the stability condition (42), then the global error satisfies

$$\begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_N \right| \right| _2 \le Q\varDelta t^s, \end{aligned}$$

where Q depends only on the local error constants of the Adams-Bashforth scheme (38).

Proof

The proof is based on an inductive argument on the number of steps taken (N in equation (9)), similar to the proof of Theorem 1. First, notice that by assuming the method (39) is order-s consistent, we immediately obtain (38) for the base case \(N = s\). Now, suppose that

$$\begin{aligned} \left| \left| {{\varvec{f}}}(t_{N-k}) - {{\varvec{f}}}_{N-k} \right| \right| _2 \le Q_{N-k}\varDelta t^s \end{aligned}$$
(43)

for all k, \(1\le k \le N-s\). It can be immediately verified that (29)–(30) were derived without reference to a one-step method, so we can follow a very similar string of inequalities to obtain

$$\begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} \right| \right| _2&\le \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 \nonumber \\&\quad +\varDelta t\left| \left| {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}(t_{N-1}), {{\varvec{f}}}(t_{N-2}),\dots , {{\varvec{f}}}(t_{N-s}),\varDelta t) \right. \right. \\&\quad \left. \left. -{\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}}_{N-1}, {{\varvec{f}}}_{N-2},\dots , {{\varvec{f}}}_{N-s},\varDelta t) \right| \right| _2 \nonumber \\&\quad + K_{N-1}\varDelta t^{s+1}+ A \varDelta t^{s+1}. \nonumber \end{aligned}$$

Applying the stability condition (42) yields

$$\begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} \right| \right| _2 \le \left| \left| {{\varvec{f}}}(t_{N-1}) - {{\varvec{f}}}_{N-1} \right| \right| _2 + \varDelta t \sum _{j=1}^{s} C_j \left| \left| {{\varvec{f}}}(t_{N-j}) - {{\varvec{f}}}_{N-j} \right| \right| _2 +(K_{N-1} + A +E)\varDelta t^{s+1}. \end{aligned}$$

The above inequality together with the inductive hypothesis (43) implies

$$\begin{aligned} \begin{aligned} \left| \left| {{\varvec{f}}}(T) - {{\varvec{f}}}_{N} \right| \right| _2&\le Q_{N-1}\varDelta t^s + \varDelta t^{s+1} \sum _{j=1}^{s} C_j Q_{N-j} +(K_{N-1} + A +E)\varDelta t^{s+1}, \end{aligned} \end{aligned}$$
(44)

concluding the proof. \(\square \)

Similar to Theorem 1, only the constants \(K_j\) appearing in (44) depend on the time step (note that \(Q_i\) also depends on \(K_j\)). Moreover, the constants \(K_j\) depend only on the multi-step method (38), and not on truncation.

5 Consistency Between Rank-Adaptive B-TSP and Step-Truncation Schemes

In Sect. 3, Proposition 1, we have shown that the fixed-rank step-truncation method (13) is consistent with the fixed-rank B-TSP method (12). In this section we connect our rank-adaptive step-truncation schemes (16)–(17) with the rank-adaptive B-TSP method we recently proposed in [10]. In particular, we prove that the rank requirements for consistency in the rank-adaptive B-TSP method are equivalent to the rank requirements for a consistent step-truncation method as the temporal step size is sent to zero. The rank-adaptive criterion for B-TSP checks if the normal component \(\left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{f}}}}) {{\varvec{N}}}({{\varvec{f}}}) \right\| _2\) of \({{\varvec{N}}}({{\varvec{f}}})\) relative to the tangent space \(T_{{{\varvec{f}}}} \mathcal{H}_{ {\varvec{r}}}\) is smaller than a threshold \(\varepsilon _{\text {inc}}\), i.e., if

$$\begin{aligned} \left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{f}}}}) {{\varvec{N}}}({{\varvec{f}}})\right\| _2\le \varepsilon _{\text {inc}}. \end{aligned}$$
(45)

If (45) is violated, then a rank increase is triggered and integration continues. It was proven in [10] that rank-adaptive B-TSP methods are consistent if the threshold in (45) is chosen as \(\varepsilon _{\text {inc}} = K\varDelta t\) for any constant \(K>0\). We now show that this consistency condition for rank-adaptive B-TSP is equivalent to our rank selection requirements (21) and (24) in the limit \(\varDelta t\rightarrow 0\).

Proposition 3

(Geometric interpretation of rank addition) Let \({{\varvec{g}}}\in \mathcal{H}_{{\varvec{r}}}\) and \({{\varvec{v}}}\in {\mathbb R}^{n_1\times n_2\times \dots \times n_d}\). The following are equivalent as \(\varDelta t\rightarrow 0\):

$$\begin{aligned} \exists K\ge 0 \text { so that } \left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{g}}}}) {{\varvec{v}}} \right\| _2&\le K\varDelta t, \end{aligned}$$
(46)
$$\begin{aligned} \exists M\ge 0 \text { so that } \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - {\mathfrak {T}}_{{{\varvec{r}}}}^{\text {best}}({{\varvec{g}}} + \varDelta t {{\varvec{v}}})\right\| _2&\le M\varDelta t^{2}, \end{aligned}$$
(47)
$$\begin{aligned} \exists N\ge 0 \text { so that } \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - {\mathfrak {T}}_{{{\varvec{r}}}}^{\text {SVD}}({{\varvec{g}}} + \varDelta t {{\varvec{v}}})\right\| _2&\le N\varDelta t^{2}. \end{aligned}$$
(48)

Proof

The equivalence between (47) and (48) is an immediate consequence of (7). We now prove that (46) is equivalent to (47). For the forward implication, assume \(\left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{g}}}}) {{\varvec{v}}} \right\| _2\le K\varDelta t\). We have

$$\begin{aligned} \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - {\mathfrak {T}}_{{{\varvec{r}}}}^{\text {best}}({{\varvec{g}}} + \varDelta t {{\varvec{v}}})\right\| _2&\le \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - ({{\varvec{g}}} +\varDelta t {\mathcal{P}_{{\varvec{g}}}} {{\varvec{v}}}) \right\| _2 + \varDelta t^2 C\\&= \varDelta t\left\| {{\varvec{v}}} - {\mathcal{P}_{{\varvec{g}}}} {{\varvec{v}}}\right\| _2 + \varDelta t^2 C\\&\le \varDelta t^2 K + \varDelta t^2 C, \end{aligned}$$

where \(C\ge 0\) denotes a constant obtained by a Taylor expansion of \({\mathfrak {T}}_{{{\varvec{r}}}}^{\text {best}}\) (see (18)). Setting \(M \ge K+C\), proves the forward implication. Conversely, if we assume \( \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - {\mathfrak {T}}_{{{\varvec{r}}}}^{\text {best}}({{\varvec{g}}} + \varDelta t {{\varvec{v}}})\right\| _2 \le M\varDelta t^{2}\), then

$$\begin{aligned} \left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{g}}}}) {{\varvec{v}}} \right\| _2&= \varDelta t^{-1}\left\| {{\varvec{g}}} + \varDelta t{{\varvec{v}}} - ({{\varvec{g}}}+ \varDelta t{\mathcal{P}_{{\varvec{g}}}}{{\varvec{v}}})\right\| _2 \\&\le \varDelta t^{-1}\left( \left\| ({{\varvec{g}}} + \varDelta t{{\varvec{v}}}) - {\mathfrak {T}}_{{{\varvec{r}}}}^{\text {best}}({{\varvec{g}}} + \varDelta t {{\varvec{v}}})\right\| _2 + C\varDelta t^2\right) \\&\le \varDelta t M + \varDelta t C. \end{aligned}$$

Setting \(K \ge M+C\), we prove (47) implies (46).

\(\square \)

The rank increase criterion (46) for B-TSP offers geometric intuition which is not apparent from the step-truncation rank criterions (47)–(48). That is, the solution rank should increase if the dynamics do not admit a sufficient approximation on the tensor manifold tangent space. Moreover, the accuracy required for approximating the dynamics depends directly on the time step size \(\varDelta t\) and the desired order of accuracy. We emphasize that by applying condition (46) to (12) it is possible to develop a rank-adaptive version of the step-truncation scheme recently proposed in [19]. Specifically, the solution rank \({\varvec{r}}\) at each time step can be chosen to satisfy a bound on the component of (12) normal to the tensor manifold \(\mathcal{H}_{{\varvec{r}}}\).

6 Numerical Applications

In this section we present and discuss numerical applications of the proposed rank-adaptive step-truncation methods. We have seen that these methods are defined by parameters summarized in Table 1.

Table 1 Free and dependent parameters of the rank-adaptive step-truncation integrators presented in Sect. 4

To choose such parameters in each numerical example we proceed as follows: We first choose the time step \(\varDelta t\) so that the scheme without tensor truncation is stable. Theorem 1 then guarantees convergence of the rank-adaptive step-truncation scheme for any selection of the other parameters, e.g., \(M_1\) and \(M_2\) in the rank-adaptive Euler scheme listed in Table 1. For guidance on how to select the remaining parameters one may apply the results of Sect. 3.1, which are based on the knowledge of the singular values of the solution. An alternative heuristic criterion is to select the free parameters roughly inverse to the time step so that the local error parameters, e.g., \(\varepsilon _{{\varvec{r}}}\) and \(\varepsilon _{{\varvec{s}}}\) in Table 1, do not exceed a specified threshold \(\varepsilon ^*\), i.e., \(\varepsilon _{{\varvec{r}}}\le \varepsilon ^*\) and \(\varepsilon _{{\varvec{s}}}\le \varepsilon ^*\).

6.1 Rank Shock Problem

In this section we test ability of the proposed rank-adaptive schemes to track accuracy and rank for a problem where the rank of the vector field suddenly jumps to a higher value. To this end, consider the following matrix-valued ordinary differential equation

$$\begin{aligned} \frac{\text {d}{{\varvec{f}}}}{\text {d}t} = {{\varvec{A}}}{{\varvec{f}}} + {{\varvec{f}}}{{\varvec{A}}}^{\top } + {{\varvec{v}}}(t), \quad t\in [0,20], \quad {{\varvec{f}}}(0) \in {\mathbb R}^{N\times N}, \end{aligned}$$
(49)

where \({{\varvec{A}}}\) is a symmetric negative definite matrix and \({{\varvec{v}}}(t)\) a forcing term that switches between a low rank and high rank matrix

$$\begin{aligned} {{\varvec{v}}}(t) = {\left\{ \begin{array}{ll} {{\varvec{v}}}_{\text {high}}, &{}t\in (5,15)\\ {{\varvec{v}}}_{\text {low}}, &{}t\not \in (5,15) \end{array}\right. }. \end{aligned}$$
(50)

In Eq. (49) \({{\varvec{A}}}{{\varvec{f}}} + {{\varvec{f}}}{{\varvec{A}}}^{\top }\) is a stabilizing term which is tangent to the fixed rank manifold at all time while \({{\varvec{v}}}(t)\) steers the solution off of the fixed rank manifold. For our numerical experiment we let \({\varvec{A}}\) take the form

$$\begin{aligned} {{\varvec{A}}} = \begin{bmatrix} -b &{} a &{} 0&{} 0&{} \dots &{}0\\ a &{} -b &{} a &{} 0&{} \dots &{} 0\\ \vdots &{} &{} &{}\ddots &{} &{} \vdots \\ 0&{} \dots &{} 0&{}a &{} -b &{} a &{} \\ 0 &{}\dots &{} 0 &{}0&{} a &{}-b \end{bmatrix}\qquad a,b\in \mathbb {R}, \end{aligned}$$
(51)

which is a finite difference stencil with shifted eigenvalues. We set \(a=1\) and \(b=3\) to ensure the matrix \({\varvec{A}}\) is diagonally dominant with negative eigenvalues. This guarantees that the initial value problem (49) will be stable regardless of how large the \(N \times N\) matrix size is, for our demonstration we set \(N=100\). For the forcing term \({{\varvec{v}}}(t)\) we set

$$\begin{aligned} {{\varvec{v}}}_{\text {low}}= \sum _{j=1}^{r_{\text {low}}} {{\varvec{\phi }}}_{j}{{\varvec{\psi }}}_j^\top , \qquad {{\varvec{v}}}_{\text {high}}= \sum _{j=1}^{r_{\text {high}}} \sigma ^{j}{{\varvec{\psi }}}_{j}{{\varvec{\phi }}}_j^\top , \end{aligned}$$
(52)
Fig. 2
figure 2

Rank shock problem. Numerical performance of rank-adaptive Euler method applied to the ODE (49)–(50). It is seen that the method accurately tracks the overall shape of the reference solution rank, which was computed to a singular value threshold of \(10^{-12}\). Moreover, the numerical error behaves as expected, decreasing as steady-state is approached

with ranks \(r_{\text {low}} = 6\) and \(r_{\text {high}}=25\). Here, \({{\varvec{\psi }}}_j[i] = \sin (2\pi ij/N)\), \({{\varvec{\phi }}}_j[i] = \cos (2\pi ij/N)\) and \(\sigma ^j=(3/4)^j\). Since the vector field is discontinuous in time, we apply the order 1 rank-adaptive Euler method with parameters summarized in Table 2.

Table 2 Integration parameters for the rank shock problem (49)

For quantification of the numerical error, we use the root mean square error of matrices (Frobenious norm)

$$\begin{aligned} \Vert {{\varvec{g}}} - {{\varvec{f}}} \Vert _{\text {RMS}} = \sqrt{ \sum _{i=1}^{N} \sum _{j=1}^{N} \frac{({{\varvec{g}}}[i,j]-{{\varvec{f}}}[i,j])^2}{N^2} }. \end{aligned}$$
(53)

To obtain a reference solution \({f}_{\text {ref}}\) we simply integrate (49) using RK4. As seen in Fig. 2, the numerical solution successfully tracks the overall shape of the reference solution’s rank over time. The numerical error also behaves as expected, decreasing as a steady-state is approached.

Fig. 3
figure 3

Numerical solution to the Fokker-Planck equation (55) in dimension \(d=2\) with initial condition (57) obtained using three distinct methods: rank-adaptive explicit Euler (33), two-step rank-adaptive Adams-Bashforth (39), and a reliable reference solution obtained by solving the ODE (2) corresponding to (55). The numerical results are obtained on a \(50\times 50\) spatial grid. The parameters for the step-truncation integrators we used in this example are detailed in Table 3

Table 3 Table of parameters for the rank-adaptive step-truncation integrators of the Fokker-Planck Eq. (55) in dimension \(d=2\) with initial condition (57)

6.2 Fokker-Planck Equation

In this section we apply the proposed rank-adaptive step-truncation algorithms to a Fokker-Planck equation with space-dependent drift and constant diffusion, and demonstrate their accuracy in predicting relaxation to statistical equilibrium. As is well-known, the Fokker-Planck equation describes the evolution of the probability density function (PDF) of the state vector solving the Itô stochastic differential equation (SDE)

$$\begin{aligned} d {\varvec{X}}_t = {\varvec{\mu }}({\varvec{X}}_t)dt + \sigma d{\varvec{W}}_t. \end{aligned}$$
(54)

Here, \({\varvec{X}}_t\) is the d-dimensional state vector, \({\varvec{\mu }}({\varvec{X}}_t)\) is the d-dimensional drift, \(\sigma \) is a constant drift coefficient and \({\varvec{W}}_t\) is an d-dimensional standard Wiener process. The Fokker-Planck equation that corresponds to (54) has the form

$$\begin{aligned} \frac{{\partial } f({{\varvec{x}}},t) }{\partial t}= -\sum _{i=1}^{d} \frac{\partial }{\partial x_i}\left( \mu _i({{\varvec{x}}}) f({{\varvec{x}}},t) \right) + \frac{\sigma ^2}{2} \sum _{i=1}^{d}\frac{\partial ^2 f({{\varvec{x}}},t)}{\partial x_i^2}, \qquad f({\varvec{x}}, 0) = f_0({\varvec{x}}), \end{aligned}$$
(55)

where \(f_0({\varvec{x}})\) is the PDF of the initial state \({\varvec{X}}_0\). In our numerical demonstrations, we set \(\sigma = 2\),

$$\begin{aligned} \mu _i({{\varvec{x}}}) = (\gamma (x_{i+1}) - \gamma (x_{i-2}))\xi (x_{i-1}) - \phi (x_{i}), \qquad i =1,\ldots , d, \end{aligned}$$
(56)

where the functions \(\gamma (x)\), \(\xi (x)\), and \(\phi (x)\) are \(2 \pi \)-periodic. Also, in (56) \(x_{i+d}=x_i\). We solve (55) on the flat torus \(\Omega =[0,2\pi ]^d\) with dimension \(d=2\) and \(d=4\).

Fig. 4
figure 4

Fokker-Planck equation (55) in dimension \(d=2\) with initial condition (57). \(L^2(\Omega )\) error of rank-adaptive Euler forward, rank-adaptive AB2, and rank-adaptive Lie-Trotter [10] (with normal vector threshold \(10^{-4}\)) solutions with respect to the reference solution. The numerical results are obtained on a \(50\times 50\) spatial grid

Fig. 5
figure 5

Fokker-Planck equation (55) in dimension \(d=2\) with initial condition (57). Rank versus time for rank-adaptive step-truncation Euler forward, AB2, rank-adaptive Lie-Trotter with normal vector threshold \(10^{-4}\) [10], and reference numerical solutions. The numerical results are obtained on a \(50\times 50\) spatial grid. The reference solution rank was computed with a singular value tolerance of \(\varepsilon _\mathrm{tol}^{-12}\)

Fig. 6
figure 6

Fokker-Planck equation (55) in dimension \(d=2\) with initial condition (57). \(L^2(\Omega )\) error at \(T=1\) for the rank-adaptive step-truncation methods summarized in Table 3. The numerical results are obtained on a \(40\times 40\) spatial grid

Fig. 7
figure 7

Marginal probability density function (59) obtained by integrating numerically the Fokker-Planck equation (55) in dimension \(d=4\) with initial condition (58) using two methods: rank-adaptive Euler forward and rank-adaptive AB2. The reference solution computed with a variable time step size RK4 method with absolute tolerance of \(10^{-14}\) computed on a grid with \(20^4=160000\) evenly-spaced points

6.3 Two-Dimensional Fokker-Planck Equation

Set \(d=2\) in (55) and consider the initial condition

$$\begin{aligned} f_0(x_1,x_2)= \frac{1}{m_0} \left[ e^{\sin (x_1-x_2)^2} + \sin (x_1+x_2)^2 \right] , \end{aligned}$$
(57)

where \(m_0\) is a normalization factor. Discretize (57) on a two-dimensional grid of evenly-spaced points and then truncate the initial tensor (matrix) within machine accuracy into HT format. Also, set \(\gamma (x) = \sin (x)\), \(\xi (x) = \cos (x)\), and \(\phi (x)=\exp (\sin (x)) + 1\) for the drift functions in (55). In Fig. 3, we plot the numerical solution of the Fokker-Planck equation (55) in dimension \(d=2\) corresponding to the initial condition (57). We computed our solutions with four different methods:

  1. 1

    Rank-adaptive explicit Euler (33);

  2. 2

    Two-step rank-adaptive Adams-Bashforth (AB) method (39);

  3. 3

    Rank-adaptive tensor method with Lie-Trotter operator splitting integrator [10];

  4. 4

    RK4 method applied to the ODE (2) corresponding to a full tensor product discretization of (55). We denote this reference solution as \(f_{\text {ref}}\).

The parameters we used for the rank-adaptive step-truncation methods 1. and 2. are summarized in Table 3. The steady state was determined for this computation by halting execution when \(\left\| \partial f_{\text {ref}}/\partial t\right\| _{L^2(\Omega )}\) was below the numerical threshold \(10^{-13}\). This occurs at approximately \(t \approx 24\) for the initial condition (57). The numerical results in Fig. 3 shows that the step-truncation methods listed above match all visual behavior of the reference solution. Observing Figs. 4 and 5, we note that while the rank-adaptive AB2 methods nearly doubles the digits of accuracy (in the \(L^2(\Omega )\) norm), only a modest increase in rank is required to achieve this gain in accuracy. This is because the rank in each adaptive step-truncation scheme is determined by the increment function \(\varvec{\varPhi }\) (which defines the scheme), the nonlinear operator \({\varvec{N}}\), and the truncation error threshold (which depends on \(\varDelta t\)). More precisely, the closer \({\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}},\varDelta t)\) is to the tangent space of the manifold \(\mathcal{H}_{{\varvec{r}}}\) at \({{\varvec{f}}}_k\), the less the rank will increase in next time step. In our demonstration, this occurs as the solution \({{\varvec{f}}}_k\) approaches steady state, since, as the rate at which the probability density evolves in time slows down, the quantity \(\left\| {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}},\varDelta t)\right\| _2\) tends to zero. Consequently, \(\left\| ({{\varvec{I}}} - {\mathcal{P}_{{\varvec{g}}}}) {\varvec{\varPhi }}({{\varvec{N}}},{{\varvec{f}}},\varDelta t)\right\| _2\) will also tend towards zero since \({{\varvec{I}}} - {\mathcal{P}_{{\varvec{g}}}}\) is a bounded linear operator. For fixed \(\varDelta t\), this means that the rank increase conditions (46)–(48) will have a smaller likelihood of being triggered. As we shrink \(\varDelta t\), the truncation error requirements for consistency (46)–(48) become more demanding, and thus a higher solution rank is expected. In Figs. 4 and 5 we also see that the rank-adaptive tensor method with Lie-Trotter integrator proposed in [10] performs better on this problem than rank-adaptive step-truncation methods, especially when the solution approaches the steady state. However, it should be noted that the rank-adaptive method with operator splitting and normal vector control is considerably more involved to implement than the step-truncation methods, which are essentially slight modifications of a standard single-step or multi-step method. In Fig. 6 we demonstrate numerically the global error bound we proved in Theorem 1. The error scaling constant Q turns out to be \(Q=2\) for rank-adaptive AB2, \(Q=5\) for rank-adaptive midpoint, and \(Q=0.6\) for rank-adaptive Euler forward.

Table 4 Table of parameters for the rank-adaptive step-truncation integrators of the Fokker-Planck equation (55) in dimension \(d=4\) with initial condition (58)
Fig. 8
figure 8

\(L^2(\Omega )\) error of numerical solutions to the Fokker-Planck equation (55) in dimension \(d=4\) with initial condition (58). The parameters we used for all rank-adaptive step-truncation methods are summarized in Table 4. The rank-adaptive Lie-Trotter method uses a threshold of \(10^{-2}\) for the PDE component normal to the tensor manifold (see [10])

Fig. 9
figure 9

Rank versus time for the numerical solutions of Fokker-Planck equation (55) in dimension \(d=4\) with initial condition (58) (left column: \(0\le t\le 6.25\), right column: \(0\le t\le 0.1\)). We truncate the reference solution to \(\varepsilon _\mathrm{tol}\) in HT format. The rank-adaptive Lie-Trotter method uses a threshold of \(10^{-2}\) for the PDE component normal to the tensor manifold (see [10])

Fig. 10
figure 10

Fokker-Planck equation (55) in dimension \(d=4\) with initial condition (58). \(L^2(\Omega )\) errors at \(T=0.1\) versus \(\varDelta t\) for different rank-adaptive step-truncation methods. All tests used the HTucker tensor format

6.4 Four-Dimensional Fokker-Planck Equation

Next, we present numerical results for the Fokker-Planck equation (55) in dimension \(d=4\). In this case, the best truncation operator (5) is not explicitly known. Instead, we use the step-truncation method (17), with truncation operator \({\mathfrak T}_r^{\text {SVD}}\) defined in (6) (see [14, 23] for more details). We set the initial condition as

$$\begin{aligned} f_0(x_1,x_2,x_3,x_4) = \frac{1}{m_0}\sum _{j=1}^L \left( \ \prod _{i=1}^4 \frac{\sin ((2j-1)x_i)+1}{2^{2(j-1)}} + \prod _{i=1}^4 \frac{\exp (\cos (2jx_i))}{2^{2j-1}} \right) , \end{aligned}$$
(58)

where \(m_0\) is a normalization constant. Clearly, (58) can be represented exactly in a hierarchical Tucker tensor format provided we use an overall maximal tree rank of \(r_{0}=2L\). For our numerical simulations we choose \(L=10\). We change the drift functions slightly from the two-dimensional example we discussed in the previous section. Specifically, here we set \(\gamma (x) = \sin (x)\), \(\xi (x)=\exp (\sin (x)) + 1\), and \(\phi (x) = \cos (x)\) and repeat all numerical tests presented in Sect. 6.3, i.e., we run three rank-adaptive step-truncation simulations with different increment functions: one based on Euler forward (33) and one based AB2 (39). The parameters we used for these methods are summarized in Table 4.

For spatial discretization, we use the Fourier pseudo-spectral method with \(20^4 = 160000\) points. We emphasize that a matrix representing the discretized Fokker- Planck operator at the right hand side of (55) would be very sparse and require approximately 205 gigabytes in double precision floating point format. The solution vector requires 1.28 megabytes of memory (160000 floating point numbers in double precision). The HTucker format reduces these memory costs considerably. The large threshold solution of Fig. 9 is only 25 kilobytes when stored to disk using the HTucker Matlab software package [23]. The spatial differential operator for the Fokker-Planck equation can also be represented in HTucker format, and costs only 21 kilobytes. The storage savings are massive, so long as the rank is kept low. In Fig. 7, we plot a few time snapshots of the marginal PDF

$$\begin{aligned} f_{12}(x_1,x_2,t)=\int _{0}^{2\pi }\int _{0}^{2\pi } f(x_1,x_2,x_3,x_4,t)dx_3dx_4 \end{aligned}$$
(59)

we obtained by integrating (55) in time with rank-adaptive Euler forward and rank-adaptive AB2. In Fig. 8 we plot the error of step truncation solutions to the Fokker-Plank equation relative to the reference solution. In Fig. 9 we plot the solution rank versus time for all rank-adaptive step-truncation integrators summarized in Table 4. The results largely reflect those of the two dimensional domain. However, a notable difference is the abrupt change in rank. This is because the density function in this case relaxes to steady state fairly quickly. Numerically, the steady state is determined by halting execution when \(\left\| \partial f_{\text {ref}}/\partial t\right\| _2\) is below the numerical threshold \(10^{-8}\). This happens at approximately \(t \approx 6.25\) for the initial condition (58). As the rate of change in the density function becomes very small, we see that the rank no longer changes. This happens near time \(t=0.1\) (see Fig. 9).

The proposed rank-adaptive step-truncation methods can provide solutions with varying accuracy depending the threshold, i.e., the parameters summarized in Table 4. To show this, in Fig. 9 we compare the rank dynamics in the adaptive AB2 simulations obtained with small or large thresholds. Note that the solution computed with a large error threshold is rather low rank (see Fig. 9). We also see that the rank can be kept near the rank of the initial condition, if desired (again see Fig. 9). Finally, in Fig. 10 we plot the error \(L^2(\Omega )\) error at \(T=0.1\) versus \(\varDelta t\) for two different rank-adaptive step-truncation methods, i.e., Euler and AB2. It is that the order of AB2 is slightly larger than 2. This can be explained by noting that the error due to rank truncation is essentially a sum of singular values. Such singular values can be smaller than the truncation thresholds \({\varepsilon }_{{\varvec{\kappa }}}\) (\({\varvec{\kappa }}={\varvec{r}}, {\varvec{s}}, {\varvec{\alpha }}\), ...), suggesting the theoretical bounds may not be tight.