6.1 Explicit Time-Stepping Schemes 显式时间推进格式[cfd-6-1]
显式格式从已知解\(\vec{W}^n\)出发ï¼利用相应的残差\(\vec{R}^n\)来得到时刻\((t+\Delta t)\)的新解。换言之ï¼新解\(\vec{W}^{n+1}\)只依赖于已经已知的值。这一事实使显式格式非常简单、易于实现。en
An explicit scheme starts from a known solution \(\vec{W}^n\) and employs the corresponding residual \(\vec{R}^n\) in order to obtain a new solution at time \((t+\Delta t)\). In other words, the new solution \(\vec{W}^{n+1}\) depends solely on values already known. This fact makes the explicit schemes very simple and easy to implement.
该式称为前向Euler(forward Euler)近似。对于定常问题或单元中心离散化ï¼质量矩阵\(\bar{M}\)可以集中(lumpedï¼即用单位矩阵代替)。en
which is termed the forward Euler approximation. The mass matrix \(\bar{M}\) can be lumped (i.e., substituted by the identity matrix) for steady problems or for the cell-centred discretisation.
目前最流行、应用最广的显式方法是多步(multistage,Runge-Kutta)时间推进格式及其变体——混合(hybrid)多步格式。因此ï¼下面我们将介绍这两种方法。en
The by far most popular and widespread explicit method is the multistage (Runge-Kutta) time-stepping scheme and its variant the hybrid multistage scheme. Therefore, we shall describe both methods below.
6.1.1 Multistage Schemes (Runge-Kutta) 多步格式(Runge-Kutta)[cfd-6-1-1]
显式多步格式的概念最早由Jameson等人[1]提出。多步格式通过若干步——所谓阶段(stages)——来推进解ï¼每一步都可以看作按方程(6.4)进行的一次更新。将其应用于质量矩阵已集中的离散化控制方程(6.1),\(m\)步(m-stage)格式为en
The concept of explicit multistage schemes was first presented by Jameson et al. [1]. The multistage scheme advances the solution in a number of steps - so-called stages - which can be viewed as a sequence of updates according to Eq. (6.4). Applied to the discretised governing equations (6.1), where the mass matrix was lumped, an \(m\)-stage scheme reads
在上面的表达式(6.5)中,\(\alpha_k\)表示阶段系数。此外ï¼记号\(\vec{R}_I^{(k)}\)表示残差用第\(k\)步的解\(\vec{W}_I^{(k)}\)来求值。en
In the above expressions (6.5), \(\alpha_k\) represents the stage coefficients. Furthermore, the denotation \(\vec{R}_I^{(k)}\) means that the residual is evaluated with the solution \(\vec{W}_I^{(k)}\) from the \(k\)-th stage.
与经典Runge-Kutta格式不同ï¼这里为了减少内存需求ï¼只存储第零步的解和最新的残差。针对具体的空间离散化ï¼可以调整阶段系数ï¼以增大最大时间步长并改善稳定性[2]-[4]。为保持一致性ï¼只要求\(\alpha_m = 1\)。对Runge-Kutta格式作这一修改的后果是:只有当\(\alpha_{m-1} = 1/2\)时才能实现二阶时间精度;否则ï¼多步格式在时间上只有一阶精度。en
Unlike in the classical Runge-Kutta schemes, only the zeroth solution and the newest residual are stored here in order to reduce the memory requirements. The stage coefficients can be tuned to increase the maximum time step and to improve the stability for a particular spatial discretisation [2]-[4]. For consistency, it is only required that \(\alpha_m = 1\). A consequence of the modification to the Runge-Kutta scheme is that second-order time accuracy can be realised only if \(\alpha_{m-1} = 1/2\). Otherwise, the multistage scheme is first-order accurate in time.
上述多步方法(6.5)特别适合于结构网格和非结构网格上的上风空间离散化。中心离散化格式与下面要介绍的混合多步方法配合使用则效率更高。表6.1给出一阶和二阶上风格式在3步至5步格式下的优化阶段系数[2]。实践经验表明ï¼当流场中含有强激波时ï¼无论空间离散化的阶数如何ï¼都应优先选用一阶格式的系数。这可以解释为:任何高阶格式都会在激波处降为一阶ï¼以防止解的振荡;而强激波处的残差对收敛到定态的影响最为显著。en
The above multistage approach (6.5) is particularly suitable for upwind spatial discretisation on structured as well as unstructured grids. Central discretisation schemes perform more efficiently with the hybrid multistage methodology, which will be described next. Sets of optimised stage coefficients for first- and second-order upwind schemes are presented in Table 6.1 for three- to five-stage schemes [2]. Practical experience shows that the coefficients for the first-order scheme should be preferred in cases, where the flow field contains strong shocks, regardless of the order of the spatial discretisation. This can be explained by the fact that every higher-order scheme switches to first order at shocks to prevent oscillations of the solution. However, the residuals at strong shocks influence the convergence to steady state most significantly.
(见原书第185页 表6.1ï¼多步格式:一阶与二阶上风空间离散化的优化阶段系数(α)与CFL数(σ))
first-order scheme second-order scheme
stages 3 4 5 3 4 5
sigma 1.5 2.0 2.5 0.69 0.92 1.15
alpha_1 0.1481 0.0833 0.0533 0.1918 0.1084 0.0695
alpha_2 0.4000 0.2069 0.1263 0.4929 0.2602 0.1602
alpha_3 1.0000 0.4265 0.2375 1.0000 0.5052 0.2898
alpha_4 1.0000 0.4414 1.0000 0.5060
alpha_5 1.0000 1.0000
表6.1:多步格式:一阶与二阶上风空间离散化的优化阶段系数(α)与CFL数(σ)。
(见原书第185页 表6.2ï¼混合多步格式:中心格式与上风空间离散化的优化阶段系数(α)、混合系数(β)及CFL数(σ))
central scheme 1st-order upwind 2nd-order upwind
sigma = 3.6 sigma = 2.0 sigma = 1.0
stage alpha beta alpha beta alpha beta
1 0.2500 1.00 0.2742 1.00 0.2742 1.00
2 0.1667 0.00 0.2067 0.00 0.2067 0.00
3 0.3750 0.56 0.5020 0.56 0.5020 0.56
4 0.5000 0.00 0.5142 0.00 0.5142 0.00
5 1.0000 0.44 1.0000 0.44 1.0000 0.44
表6.2:混合多步格式:中心格式与上风空间离散化的优化阶段系数(α)、混合系数(β)及CFL数(σ)。注意:一阶与二阶上风格式的系数完全相同ï¼但CFL数不同。
一切显式格式的主要缺点是:时间步长(\(\Delta t\))受到控制方程的特征以及网格几何的严格限制。我们将在6.1.4小节讨论最大允许时间步长的计算。时间步长和所谓CFL数(CFL number)确定的理论问题将在10.3节稳定性分析中考察。en
The main disadvantage of every explicit scheme is that the time step (\(\Delta t\)) is severely restricted by the characteristics of the governing equations as well as by the grid geometry. We shall discuss the computation of the maximum allowable time step in Subsection 6.1.4. Theoretical aspects of the determination of the time step and the so-called CFL number will be considered in Section 10.3 on stability analysis.
6.1.2 Hybrid Multistage Schemes 混合多步格式[cfd-6-1-2]
把显式多步格式(6.5)应用于方程组(6.1)时ï¼如果黏性通量和耗散不在每个阶段都重新求值ï¼计算量可以大幅减少。此外ï¼还可以把不同阶段的耗散项混合(blend)起来ï¼以提高格式的稳定性。这类方法由Martinelli[5]和Mavriplis等人[6]提出ï¼称为混合多步格式(hybrid multistage schemes)。只要阶段系数经过仔细优化ï¼混合格式与基本多步格式一样稳健。en
The computational work of an explicit multistage scheme (6.5), applied to the system (6.1), can be substantially reduced if the viscous fluxes and the dissipation are not re-evaluated at each stage. Additionally, the dissipation terms from different stages can be blended to increase the stability of the scheme. Methods of this type were devised by Martinelli [5] and by Mavriplis et al. [6]. They are known as hybrid multistage schemes. Provided the stage coefficients are carefully optimised, the hybrid schemes are as robust as the basic multistage schemes.
为便于说明ï¼考虑一种常用的5步混合格式ï¼其耗散项只在奇数步求值——一般记为(5,3)格式。首先ï¼把空间离散化分成两部分ï¼即en
Let us for illustration consider a popular 5-stage hybrid scheme, where the dissipative terms are evaluated at odd stages - generally denoted as the (5,3)-scheme. First, we split the spatial discretisation into two parts, i.e.,
第一部分\(\vec{R}_c\)包含对流通量的中心离散化——可以是变量平均ï¼也可以是通量平均——还包括源项。第二部分\(\vec{R}_d\)由黏性通量和数值耗散组成。例如ï¼对于带人工耗散的中心格式(4.3.1或5.3.1小节)ï¼可取en
The first part, \(\vec{R}_c\), contains the central discretisation of the convective fluxes, which can be either the average of variables or the average of fluxes. It also includes the source term. The second part, \(\vec{R}_d\), is composed of the viscous fluxes and the numerical dissipation. For example, in the case of the central scheme with artificial dissipation (Subsections 4.3.1 or 5.3.1) we would set
其中\(\vec{W}_{av}\)表示面\(k\)左右两侧流动变量的算术平均。en
where \(\vec{W}_{av}\) represents the arithmetic average of flow variables from the left and the right side of face \(k\).
其中en
where
上述关系(6.7)、(6.8)中的阶段系数\(\alpha_m\)和混合系数\(\beta_m\)在表6.2中针对中心格式和上风格式给出。这两组系数都是专门针对多重网格方法(9.4节)优化的。上述混合多步格式的性质将在10.3节中讨论。en
The stage coefficients \(\alpha_m\) and the blending coefficients \(\beta_m\) in the above relations (6.7), (6.8) are given in Table 6.2 for central and upwind schemes. Both sets of coefficients are particularly optimised for the multigrid method (Section 9.4). We shall discuss the properties of the above hybrid multistage scheme later in Section 10.3.
应当指出ï¼另一种常见的做法是只在头两步求值耗散项\(\vec{R}_d\)ï¼而不做任何混合。著名的(5,2)格式常与中心空间离散化配合使用ï¼它采用表6.2中的阶段系数。然而ï¼与上述(5,3)格式相比,(5,2)格式不太适合黏性流动和多重网格。en
It should be mentioned that it is also popular to evaluate the dissipation term \(\vec{R}_d\) in the first two stages only, without any blending. A well-known (5,2)-scheme, which is often employed with the central spatial discretisation, uses the stage coefficients of Table 6.2. However, the (5,2)-scheme is less suitable for viscous flows and multigrid than the above (5,3)-scheme.
6.1.3 Treatment of the Source Term 源项的处理[cfd-6-1-3]
在某些情形下ï¼方程(4.2)或(5.2)中的源项\(\vec{Q}\)会变得占主导地位。采用化学或湍流模型时经常会遇到这种情况。问题在于ï¼大的源项会使流动变量在空间和时间上迅速变化。强源项引起的变化发生在比流动方程的时间尺度小得多的时间尺度上。这会显著增大控制方程的刚性(stiffness)。刚性定义为雅可比矩阵\(\partial\vec{R}/\partial\vec{W}\)的最大特征值与最小特征值之比。刚性也可以看作最大时间尺度与最小时间尺度之比。en
There are certain cases in which the source term \(\vec{Q}\) in Eq. (4.2) or (5.2) becomes dominant. Such situation is often encountered when chemistry or turbulence models are employed. The problem is that a large source term changes the flow variables rapidly in space and in time. The changes due to a strong source term happen at much smaller time scales than those of the flow equations. This increases the stiffness of the governing equations significantly. The stiffness is defined as the ratio of the largest to the smallest eigenvalue of the Jacobian matrix \(\partial\vec{R}/\partial\vec{W}\). The stiffness can also be viewed as the ratio of the largest to the smallest time scale.
把上述显式多步格式(或任何其他纯显式格式)应用于刚性方程组时ï¼为使时间积分稳定ï¼必须大幅减小时间步长ï¼于是向定态的收敛会变得非常慢。更严重的是ï¼显式格式甚至可能找不到正确的解[7]。Curtiss等人[8]提出的补救办法是以隐式方式处理源项。为演示这一方法ï¼把方程(6.4)的基本显式格式改写如下(参见方程(4.2)或(5.2))en
When we apply one of the above explicit multistage schemes (or any other purely explicit scheme) to a stiff system of equations, we will have to reduce the time step considerably in order to stabilise the time integration. Hence, the convergence to the steady state will become very slow. More seriously, an explicit scheme can even fail to find the correct solution [7]. A remedy suggested by Curtiss et al. [8] is to treat the source term in an implicit way. In order to demonstrate the approach, we rewrite the basic explicit scheme in Eq. (6.4) as follows (cf. Eq. (4.2) or (5.2))
其中源项现在在新时间层\((n+1)\)处求值。为简单起见ï¼方程(6.9)中略去了质量矩阵。由于时刻\((n+1)\)的源项值未知ï¼必须对它作近似。为此ï¼把源项在当前时间层\(n\)处线性化ï¼得到en
where the source term is now evaluated at the new time level \((n+1)\). For simplicity, the mass matrix was omitted from Eq. (6.9). Since the value of the source term at the time \((n+1)\) is unknown, we have to approximate it. For this purpose, we linearise the source term about the current time level \(n\), resulting in
其中\(\bar{I}\)表示单位矩阵。式(6.11)称为点隐式(point implicit)ï¼因为左端方括号内的项——即隐式算子——只依赖控制体\(\Omega_I\)自身的值。与方程(6.9)比较可知ï¼标量时间步长\(\Delta t\)现在变成了一个矩阵。这样ï¼每个流动方程都被一个单独的参数(对应于相应的特征值)所缩放。如此一来ï¼时间尺度之间的差异得到补偿ï¼源项造成的时间步长限制得以缓解。en
where \(\bar{I}\) represents the identity matrix. The formulation (6.11) is called point implicit because the term in square brackets on the left-hand side - the implicit operator - depends only on values in the control volume \(\Omega_I\) itself. A comparison with Eq. (6.9) reveals that the scalar time step \(\Delta t\) changed now to a matrix. Thus, each flow equation becomes scaled by an individual parameter, corresponding to the associated eigenvalue. In this way, the disparity between the time scales is offset and the time step restriction due to the source term is alleviated.
更精细的做法是用半隐式Runge-Kutta格式来处理刚性源项ï¼该格式最早由Rosenbrock[14]提出。这种格式在数值上比方程(6.12)的方法更稳定ï¼但要求在每个阶段对一个大型线性方程组求逆。半隐式Runge-Kutta格式的细节及应用可参见文献[15]-[18]。en
A more elaborate approach is to treat the stiff source term by means of an semi-implicit Runge-Kutta scheme, originally suggested by Rosenbrock [14]. The scheme is numerically more stable than the approach in Eq. (6.12), however it requires the inversion of a large system of linear equations at each stage. Details of the semi-implicit Runge-Kutta scheme and applications can be found in Refs. [15]-[18].
6.1.4 Determination of the Maximum Time Step 最大时间步长的确定[cfd-6-1-4]
每一种显式时间推进格式都只在时间步长\(\Delta t\)不超过某个值时才保持稳定。为使格式稳定ï¼时间推进格式必须满足所谓的Courant-Friedrichs-Lewy(CFL)条件[19]。该条件指出:数值方法的依赖域必须包含偏微分方程的依赖域。对基本显式格式(6.4)而言,CFL条件意味着时间步长应等于或小于信息越过空间离散化格式模板(stencil)所需的时间。因此ï¼对一维线性对流方程ï¼时间步长条件为en
Every explicit time-stepping scheme remains stable only up to a certain value of the time step \(\Delta t\). To be stable, a time-stepping scheme has to fulfil the so-called Courant-Friedrichs-Lewy (CFL) condition [19]. It states that the domain of dependence of the numerical method has to include the domain of dependence of the partial differential equation. The CFL condition means for the basic explicit scheme (6.4) that the time step should be equal to or smaller than the time required to transport information across the stencil of the spatial discretisation scheme. Hence, in 1D the condition for the time step would read for the linear convection equation
其中\(\Delta x/|\Lambda_c|\)表示以速度\(\Lambda_c\)把信息传播过一个单元尺寸\(\Delta x\)所需的时间。速度\(\Lambda_c\)对应于对流通量雅可比的最大特征值。正常数\(\sigma\)表示CFL数(CFL number)。CFL数的大小取决于时间推进格式的类型和参数ï¼也取决于空间离散化格式的形式。我们将在10.3节中针对两个模型问题研究\(\sigma\)的依赖关系。表6.1和表6.2列出了各种多步格式和离散化的CFL数。en
where \(\Delta x/|\Lambda_c|\) represents the time necessary to propagate information over the cell size \(\Delta x\) with the velocity \(\Lambda_c\). The velocity \(\Lambda_c\) corresponds to the maximum eigenvalue of the convective flux Jacobian. The positive coefficient \(\sigma\) denotes the CFL number. The magnitude of the CFL number depends on the type and the parameters of the time-stepping scheme, as well as on the form of the spatial discretisation scheme. We shall investigate the dependency of \(\sigma\) in Section 10.3 for two model problems. Tables 6.1 and 6.2 list the CFL numbers for various multistage schemes and discretisations.
对于线性模型方程ï¼可以借助Von Neumann稳定性分析(10.3节)确定最大时间步长。然而ï¼在多维情形和非线性控制方程下ï¼最大时间步长只能近似计算。下面我们将给出在结构网格和非结构网格上、对无黏和黏性流动估计时间步长的关系式。en
The maximum time step can be determined for linear model equations with the aid of Von Neumann stability analysis (Section 10.3). However, the maximum time step can be calculated only approximately in multiple dimensions and for non-linear governing equations. In the following, we will present relations for the estimation of the time step on structured and unstructured grids, and for inviscid as well as for viscous flows.
Time Step on Structured Grids 结构网格上的时间步长
Euler Equations 欧拉方程
在结构网格上ï¼对控制体\(\Omega_I\)ï¼时间步长\(\Delta t\)可以由近似关系[20]-[22]确定en
On a structured grid, the time step \(\Delta t\) can be determined for a control volume \(\Omega_I\) from the approximate relation [20]-[22]
CFL数\(\sigma\)对多步格式在表6.1中给出ï¼对混合格式在表6.2中给出。对流通量雅可比(A.9)的谱半径对三个网格方向分别为en
The CFL number \(\sigma\) is given for multistage schemes in Table 6.1 and for hybrid schemes in Table 6.2. The spectral radii of the convective flux Jacobians (A.9) read for the three grid directions
方程(6.15)中的法向量和面面积ï¼由相应方向上控制体两个相对侧面处的对应值平均得到。例如ï¼若对偶控制体(4.2.3小节)的取向如图4.1b所示ï¼则在\(I\)方向上应取en
The normal vectors and face areas in Eq. (6.15) are obtained by averaging the corresponding values from the two opposite sides of the control volume in the respective direction. For example, if a dual control volume (Subsection 4.2.3) would be oriented as sketched in Fig. 4.1b, we would use in the \(I\)-direction
\(J\)方向和\(K\)方向也有类似的表达式。用方程(6.14)得到的是局部(local)时间步ï¼它只对一个控制体有效。如果我们要求定常解ï¼可以用局部时间步来加速收敛(参见9.1节)。但如果时间精度重要ï¼就必须对所有控制体采用同一个全局(global)时间步ï¼即en
Similar expressions hold for the \(J\)- and \(K\)-direction. With Eq. (6.14), we obtain a local time step, which is valid for one control volume only. If we are interested in a steady state solution, we may use the local time step to accelerate the convergence (cf. Section 9.1). However, if time accuracy is important, we have to employ one global time step for all volumes, i.e.,
即对所有控制体取最小值。en
where the minimum over all control volumes is taken.
Navier-Stokes Equations Navier-Stokes方程
对黏性流动ï¼计算\(\Delta t\)时还必须计入黏性通量雅可比(A.10)的谱半径。在边界层内ï¼它们可能严重限制最大时间步长。时间步长可由下式计算[5]、[21]、[22]en
For viscous flows, the spectral radii of the viscous flux Jacobians (A.10) have to be included in the computation of \(\Delta t\). They can severely limit the maximum time step in boundary layers. The time step can be evaluated from [5], [21], [22]
乘在黏性谱半径上的常数ï¼对中心空间离散化通常取\(C = 4\)ï¼一阶上风离散化取\(C = 2\)ï¼二阶上风离散化取\(C = 1\)。若假定采用涡黏性湍流模型ï¼则黏性谱半径由下式给出[21]、[22]en
The constant which multiplies the viscous spectral radii is usually set as \(C = 4\) for central spatial discretisations, \(C = 2\) for first-order upwind and \(C = 1\) for second-order upwind discretisations. If we assume that an eddy-viscosity turbulence model is employed, the viscous spectral radii are given by [21], [22]
其他方向与此类似。方程(6.19)中,\(\mu_L\)和\(\mu_T\)分别表示层流和湍流的动力黏度系数;\(Pr_L\)和\(Pr_T\)为层流和湍流Prandtl数。表6.1和表6.2中的CFL数也适用于黏性流动。对黏性流动特别有效的是方程(6.7)的(5,3)混合格式。en
and similarly for the other directions. In Equation (6.19), \(\mu_L\) denotes the laminar and \(\mu_T\) the turbulent dynamic viscosity coefficient, respectively. Furthermore, \(Pr_L\) and \(Pr_T\) are the laminar and the turbulent Prandtl numbers. The CFL numbers in Tables 6.1 and 6.2 apply also for viscous flows. Particularly efficient for viscous flows is the (5,3) hybrid scheme from Eq. (6.7).
Time Step on Unstructured Grids 非结构网格上的时间步长
已经提出了若干种在非结构网格上估计最大时间步长的方法。下面介绍两种不同的方法。en
Several approaches were suggested for the estimation of the maximum time step on unstructured grids. We shall present two different approaches below.
Method 1 方法1
一种经过验证、与结构网格上的实现非常接近的方法为[6]en
One proven method, which closely follows the implementation on structured grids, reads [6]
其中\(\hat{\Lambda}_c\)和\(\hat{\Lambda}_v\)表示控制体所有面上对流谱半径和黏性谱半径之和。与结构网格上一样ï¼通常取\(1 \le C \le 4\)。对单元中心格式ï¼谱半径定义为[6]en
where \(\hat{\Lambda}_c\) and \(\hat{\Lambda}_v\) represent a sum of the convective and viscous spectral radii over all faces of the control volume. As on structured grids, \(1 \le C \le 4\) is usually used. In the case of the cell-centred scheme, the spectral radii are defined as [6]
控制体各面上的流动变量之值由算术平均得到。en
The values of the flow variables at the faces of the control volume are obtained by arithmetic averaging.
Method 2 方法2
方程(6.21)预测的谱半径偏大ï¼在混合单元网格上尤其如此。这导致时间步长小于稳定所需的值。文献[23]中的实现提供了对时间步长更准确的估计ï¼即en
The spectral radii predicted by Eq. (6.21) are too large, particularly on mixed element grids. This leads to a smaller time step than required for the stability. The implementation in Ref. [23] offers a more accurate estimation of the time step, namely
其中对流谱半径为en
with the convective spectral radii
黏性谱半径为(假定采用涡黏性湍流模型)en
and with the viscous spectral radii (eddy-viscosity turbulence model assumed)
变量\(\Delta\hat{S}^x\)、\(\Delta\hat{S}^y\)和\(\Delta\hat{S}^z\)分别表示控制体在\(y\)-\(z\)、\(x\)-\(z\)和\(x\)-\(y\)平面上的投影。它们由下列公式给出en
The variables \(\Delta\hat{S}^x\), \(\Delta\hat{S}^y\) and \(\Delta\hat{S}^z\), respectively, represent projections of the control volume on the \(y\)-\(z\)-, \(x\)-\(z\)- and the \(x\)-\(y\)-plane. They are given by the formulae
其中\(S_x\)、\(S_y\)和\(S_z\)表示面向量\(\vec{S} = \vec{n}\cdot\Delta S\)的\(x\)、\(y\)和\(z\)分量。CFL数一般与结构网格上的相同ï¼因此表6.1和表6.2中收集的数值仍然适用。此外ï¼向定态的收敛同样可以用局部时间推进来加速ï¼做法与结构网格上一样。模拟非定常流动所需的全局时间步ï¼与前面一样由方程(6.17)得到。en
where \(S_x\), \(S_y\) and \(S_z\) denote the \(x\)-, \(y\)- and the \(z\)-component of the face vector \(\vec{S} = \vec{n}\cdot\Delta S\). The CFL numbers stay in general the same as on structured grids. Thus, the values collected in Tables 6.1 and 6.2 still apply. Furthermore, the convergence to steady state can also be accelerated by local time stepping, in the same way as on the structured grids. A global time step, necessary for simulating unsteady flows, can be obtained from Eq. (6.17) as before.