1 Introduction
As a result of the injection of acids into a acid dissolution system, a worm-like hole is generated and developed in the subsurface formations, which is called a wormhole. Recently, researchers have paid increasing attention to wormhole formation during reactive dissolution of carbonates, which plays a significant role in enhancing oil production rates when muds and fines deposit at the perforated well pore pipe (see, for example, Fredd & Fogler (Reference Fredd and Fogler1998), Golfier et al. (Reference Golfier, Zarcone, Bazin, Lenormand, Lasseux and Quintard2002), Panga, Ziauddin & Balakotaiah (Reference Panga, Ziauddin and Balakotaiah2005), Liu, Zhang, Mou & Zhou (Reference Liu, Zhang, Mou and Zhou2013), Wu, Salama & Sun (Reference Wu, Salama and Sun2015), Kou, Sun & Wu (Reference Kou, Sun and Wu2016), Li & Rui (Reference Li and Rui2017a )). By increasing the permeability of the damaged zone near the well bore, the primary issue of this process is to increase the production rate. Wormholes are channels with high porosity which establish an effective connectivity between the reservoir and the well. These channels are created by the injected acid, which dissolves the material near the well bore. To simulate wormhole generation and propagation, a combination of the finite-element method and the finite difference method was developed in Zhao et al. (Reference Zhao, Hobbs, Hornby, Ord, Peng and Liu2008). Kou et al. (Reference Kou, Sun and Wu2016) researched mixed finite-element-based fully conservative methods to simulate wormhole propagation. To simulate the wormhole formation procedure, the new Darcy–Brinkman–Forchheimer (DBF) framework was presented in Wu et al. (Reference Wu, Salama and Sun2015). Recently, Li & Rui (Reference Li and Rui2017a , Reference Li and Rui2018a ) have proposed and analysed a block-centred finite difference method to solve both incompressible and compressible wormhole propagation.
Although a large number of numerical methods have been applied to research wormhole generation and propagation in porous media, most of them are based on the Darcy framework. Although this may be adequate when there is no dramatic change in porosity, for scenarios where there is a significant change in porosity (and consequently the permeability) it can be considerably unreliable. Actually, the fluid velocity becomes high in the high-porosity area in cases where the porosity is large (but less than one) and its spatial distribution also becomes very heterogeneous. Also there are scenarios where the porosity equals unity, which means an area of clear fluid within the porous media. Thus, an alternative practical framework that accounts for both the porous media and clear fluid area should be proposed. This is the Darcy–Brinkman–Forchheimer (DBF) framework (see, for example, Vafai & Kim (Reference Vafai and Kim1995), Rees (Reference Rees1999), Alazmi & Vafai (Reference Alazmi and Vafai2000), Wu et al. (Reference Wu, Salama and Sun2015)). In this work, we propose the DBF framework to describe matrix acidization for the purpose of obtaining more reliable results. In comparisons with experimental data under conditions of variable porosity in Kladias & Prasad (Reference Kladias and Prasad1991), the DBF framework predicts the convective flow reasonably well. Besides, the DBF framework accounts for boundary-layer development, macroscopic and microscopic shear stress, and the initial force. A porous medium and clear fluid interface have been extensively studied using the DBF framework and continuity of velocities and stress at the interface in Vafai & Kim (Reference Vafai and Kim1995).
Among the many numerical methods that are available for solving the Stokes and Navier–Stokes equations, one of the best and simplest is the marker and cell method (MAC). The MAC scheme has the ability to enforce the incompressibility constraint of the velocity field in a pointwise fashion. Moreover, it has been shown to locally conserve the mass, momentum and kinetic energy (Perot Reference Perot2000, Reference Perot2011). The MAC method is a class of finite volume methods on rectangular cells, with pressure approximated at the cell centre, the
$x$
-component of velocity approximated at the midpoint of the vertical edges of the cell, and the
$y$
-component of velocity approximated at the midpoint of the horizontal edges of the cell.
The MAC method can also be interpreted as a mixed finite-element method coupled with a quadrature formula. This interpretation can be found in Girault & Raviart (Reference Girault and Raviart1979, Reference Girault and Raviart2012), where the mixed method is analysed. Error estimates for the MAC method were also demonstrated in Girault & Lopez (Reference Girault and Lopez1996). In 1998, Han & Wu (Reference Han and Wu1998) proposed that the MAC scheme can be obtained from a new mixed finite-element method. Kanschat (Reference Kanschat2008) presented that discontinuous Galerkin discretizations in their lowest-order version were very similar to the MAC finite difference scheme and proposed a way to interpolate solutions obtained by the MAC scheme to obtain a pointwise divergence-free function for the Stokes equations. Inspired by the work of Kanschat (Reference Kanschat2008), in Minev (Reference Minev2008) it was demonstrated that some well-known finite difference schemes can be interpreted within the framework of local discontinuous Galerkin (LDG) methods using low-order piecewise solenoidal discrete spaces. Recently, second-order superconvergence for both velocity and pressure of the MAC scheme for Stokes and Navier–Stokes equations on non-uniform grids was derived rigorously (Rui & Li Reference Rui and Li2017; Li & Rui Reference Li and Rui2018b ).
Block-centred finite differences, sometimes called cell-centred finite differences, can be thought as the lowest-order Raviart–Thomas mixed element method (Raviart & Thomas Reference Raviart and Thomas1977), with a suitable quadrature formulation. The mixed finite elements for elliptic problems with tensor coefficients as cell-centred finite differences was proposed in Arbogast, Wheeler & Yotov (Reference Arbogast, Wheeler and Yotov1997). Rui & Pan (Reference Rui and Pan2012) demonstrated a block-centred finite difference method for the Darcy–Forchheimer model. Block-centred finite difference methods have been developed (Rui & Pan Reference Rui and Pan2013; Li & Rui Reference Li and Rui2016; Liu, Cui & Xin Reference Liu, Cui and Xin2018) and it has been applied to the nonlinear time-fractional parabolic equation by Li & Rui (Reference Li and Rui2017b ). Applications of block-centred finite difference methods enable us to approximate pressure, velocity, porosity, concentration and its flux in different discrete norms with second-order accuracy on non-uniform grids, which is superconvergence. Also block-centred finite difference methods can guarantee local mass conservation. Moreover, applications of block-centred finite difference methods enable us to transfer the saddle point problem to symmetric positive definite problems.
Both the MAC and block-centred finite difference methods are based on finite difference methods on non-uniform staggered grids. Thus, in this paper, the finite difference method on non-uniform staggered grids is derived for wormhole propagation with the Darcy–Brinkman–Forchheimer framework in porous media. Actually, in our proposed scheme, there are at least three issues in the theoretical analysis for wormhole propagation with the Darcy–Brinkman–Forchheimer framework: estimating and bounding the porosity, which can change with time; complications resulting from the introduction of an auxiliary flux variable to guarantee full mass conservation; and the fully coupling relation of multivariables. To resolve these issues, we introduce some useful lemmas and consider the coupled analysis method. To guarantee full mass conservation, we introduce an auxiliary flux variable. Based on the cutoff operator of velocity and the coupled analysis approach, and inspired by the analysis technique in Rui, Zhao & Pan (Reference Rui, Zhao and Pan2015), Rui & Li (Reference Rui and Li2017) for the Darcy–Forchheimer and Stokes equations, we obtain second-order superconvergence of the pressure, velocity, porosity, concentration and its flux in different discrete norms on non-uniform grids. We also obtain second-order superconvergence for some terms of the
$H^{1}$
norm of the velocity on non-uniform grids. Finally, some numerical experiments are presented to verify the theoretical analysis and effectiveness of the given scheme.
The paper is organized as follows. In § 2 we give the problem and some preliminaries. In § 3 we present the fully conservative finite difference algorithm on non-uniform staggered grids. In § 4 we demonstrate error analysis for the discrete scheme. In § 5 we carry out some numerical experiments using the finite difference scheme on non-uniform staggered grids to verify the theoretical analysis and effectiveness of the proposed scheme.
Throughout the paper we use
$C$
, with or without a subscript, to denote a positive constant, which can have different values depending on the circumstances in which it is used.
2 The problem and some preliminaries
The equation system that simulates wormhole propagation in porous media includes the momentum balance equation (2.1), the mass conservation equation (2.2), the solute transport equation (2.3) and a number of semiempirical equations that bridge the scale differences, as described earlier (2.4) and (2.5) (see, for example, Panga et al. (Reference Panga, Ziauddin and Balakotaiah2005), Wu et al. (Reference Wu, Salama and Sun2015), Kou et al. (Reference Kou, Sun and Wu2016), Li & Rui (Reference Li and Rui2017a )). They can be listed as follows:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn1.gif?pub-status=live)
with
$F(\unicode[STIX]{x1D719})=1.75/\sqrt{150\unicode[STIX]{x1D719}^{3}}$
being the Forchheimer coefficient,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn2.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn3.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn4.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn5.gif?pub-status=live)
In the above equations,
$\unicode[STIX]{x1D6FA}=(L_{lx},L_{rx})\times (L_{ly},L_{ry})$
.
$J=(0,T]$
and
$T$
denotes the final time.
$\boldsymbol{u}$
is the velocity vector,
$\unicode[STIX]{x1D70C}$
is the fluid density,
$\unicode[STIX]{x1D719}$
is the porosity and
$\unicode[STIX]{x1D707}$
is the fluid viscosity.
$K$
is the permeability,
$\boldsymbol{g}$
is the gravity vector and
$\unicode[STIX]{x1D700}$
is a pseudo-compressibility parameter that results in a slight change of the density of the fluid phase in the dissolution process. As stated in Wu et al. (Reference Wu, Salama and Sun2015), in some cases of
$\unicode[STIX]{x1D700}=0$
, the linear system may be singular and cannot be solved by the linear solver, and as a result, it is suggested that
$\unicode[STIX]{x1D700}$
be a very small positive number to ensure an invertible coefficient matrix.
$f=f_{I}+f_{P}$
, where
$f_{P}$
and
$f_{I}$
are the production and injection rates, respectively.
$p$
is the pressure and
$c_{f}$
is the cup-mixing concentration of the acid in the fluid phase. For simplicity we assume that the diffusion coefficient
$\unicode[STIX]{x1D63F}=d_{mol}\unicode[STIX]{x1D644}=\text{diag}(D_{ll}),~l=1,2$
is a diagonal matrix in the following.
$c_{I}$
is the injected concentration. The variable
$c_{s}$
is the concentration of the acid at the fluid–solid interface.
$\unicode[STIX]{x1D6FC}$
is the dissolving power of the acid and
$\unicode[STIX]{x1D70C}_{s}$
is the density of the solid phase.
$k_{c}$
is the local mass-transfer coefficient.
$k_{s}$
is the surface reaction rate constant.
The above system is solved simultaneously to obtain the pressure, velocity and concentration of the acid. The term
$-\unicode[STIX]{x1D735}p-(\unicode[STIX]{x1D707}/K)\boldsymbol{u}+\unicode[STIX]{x1D70C}\boldsymbol{g}$
is called the Darcy term. The term
$(\unicode[STIX]{x1D707}/\unicode[STIX]{x1D719})\unicode[STIX]{x0394}\boldsymbol{u}$
is the Brinkman term, which is used to account for transitional flow between boundaries. The inertial term
$(\unicode[STIX]{x1D70C}F/\sqrt{K})|\boldsymbol{u}|\boldsymbol{u}$
, which is called the Forchheimer term, is included because the inertial effects could become significant when the velocity is high in (2.1). In (2.3), we assume a first-order surface reaction (see, for example, Panga et al. (Reference Panga, Ziauddin and Balakotaiah2005), Kou et al. (Reference Kou, Sun and Wu2016)). The three terms on left-hand side represent the accumulation, convection and dispersion of the acid, respectively. The first term on the right-hand side denotes the transfer of acid species from the fluid phase to the fluid–solid interface (see, for example, Panga et al. (Reference Panga, Ziauddin and Balakotaiah2005), Kou et al. (Reference Kou, Sun and Wu2016)). It should be noted that temperature effects in Zhao, Hobbs & Ord (Reference Zhao, Hobbs and Ord2014) have been ignored in (2.1)–(2.5), so that only an isothermal acid dissolution system is studied in this model.
In the pore-scale model, the following two equations are given:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn6.gif?pub-status=live)
where
$a_{v}$
is the interfacial area and the subscript
$0$
stands for the initial value. Equation (2.6) is the Carman–Kozeny correction, which establishes the relationship between the permeability and the porosity. Equation (2.6) shows that the interfacial area can be calculated from porosity and permeability.
The boundary and initial conditions are as follows.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn7.gif?pub-status=live)
where
$\boldsymbol{n}$
is the unit outward normal vector of the domain
$\unicode[STIX]{x1D6FA}$
. For the physical quantities, we assume that
$0<\unicode[STIX]{x1D719}_{0\ast }\leqslant \unicode[STIX]{x1D719}_{0}\leqslant \unicode[STIX]{x1D719}_{0}^{\ast }<1$
,
$0<K_{0\ast }\leqslant K_{0}\leqslant K_{0}^{\ast }$
and
$0\leqslant a_{0\ast }\leqslant a_{0}\leqslant a_{0}^{\ast }$
, where
$g_{\ast }$
and
$g^{\ast }$
denote the upper and lower bounds of
$g$
, respectively. In addition, we assume that
$0\leqslant c_{f0},~c_{I}\leqslant 1$
.
We consider the MAC scheme for the model problem. We use the partitions and notations as follows.
The two-dimensional domain
$\unicode[STIX]{x1D6FA}$
is partitioned as
$\unicode[STIX]{x1D6FF}_{x}\times \unicode[STIX]{x1D6FF}_{y}$
, where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn8.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn9.gif?pub-status=live)
For simplicity we also use the following notations.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn10.gif?pub-status=live)
For possible integers
$i,j$
,
$0\leqslant i\leqslant N_{x},~0\leqslant j\leqslant N_{y}$
, define
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn11.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn12.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn13.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn14.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn15.gif?pub-status=live)
It is clear that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn16.gif?pub-status=live)
For a given partition, let
$C_{0}$
be a positive number such that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn17.gif?pub-status=live)
For a function
$f(x,y)$
, let
$f_{l,m}$
denote
$f(x_{l},y_{m})$
, where
$l$
may take values
$i,~i+1/2$
for integer
$i$
, and
$m$
may take values
$j,~j+1/2$
for integer
$j$
. For discrete functions with values at appropriate nodal points, define
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn18.gif?pub-status=live)
For functions
$f$
and
$g$
, define some discrete
$l^{2}$
inner products and norms as follows.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn19.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn20.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn21.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn22.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn23.gif?pub-status=live)
Further define discrete
$l^{2}$
inner products and norms as follows.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn24.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn25.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn26.gif?pub-status=live)
For vector-valued functions
$\boldsymbol{u}=(u^{x},u^{y})$
, it is clear that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn27.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn28.gif?pub-status=live)
and
$\Vert d_{y}u^{y}\Vert _{l^{2},M},\Vert D_{x}u^{y}\Vert _{l^{2},T_{x}}$
can be represented similarly. Finally, define the discrete
$H^{1}$
-norm and discrete
$l^{2}$
-norm of a vectored-valued function
$\boldsymbol{u}$
,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn29.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn30.gif?pub-status=live)
Next we give some definitions and lemmas which will be used in error estimates. For
$0\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
we define the discrete function
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn31.gif?pub-status=live)
Lemma 1 (see, for example, Rui & Li (Reference Rui and Li2017)).
If
$c_{f}$
is sufficiently smooth then it holds that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn32.gif?pub-status=live)
with the following approximate properties
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn33.gif?pub-status=live)
The next lemma can be proved as in Weiser & Wheeler (Reference Weiser and Wheeler1988).
Lemma 2. Let
$\{V_{i,j+1/2}^{x}\},\{V_{i+1/2,j}^{y}\}$
and
$\{q_{i+1/2,j+1/2}^{x}\},\{q_{i+1/2,j+1/2}^{y}\}$
be discrete functions with
$V_{0,j+1/2}^{x}=V_{N_{x},j+1/2}^{x}=V_{i+1/2,0}^{y}=V_{i+1/2,N_{y}}^{y}=0$
, with appropriate integers
$i$
and
$j$
. Then there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn34.gif?pub-status=live)
Define the discrete interpolations of
$u^{x}$
and
$u^{y}$
in
$\unicode[STIX]{x1D6FA}$
and on the boundary
$\unicode[STIX]{x2202}\unicode[STIX]{x1D6FA}$
as follows.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn35.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn36.gif?pub-status=live)
Extending the value of
$\tilde{u} ^{x}$
and
$\tilde{u} ^{y}$
in the the following way,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn37.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn38.gif?pub-status=live)
Lemma 3. Let
$\boldsymbol{u}=(u^{x},u^{y})$
be the solution of (2.1) and (2.2), where
$\tilde{u} ^{x}$
,
$\tilde{u} ^{y}$
are defined by (2.35) and (2.36), then for
$0\leqslant i\leqslant N_{x}-1,0\leqslant j\leqslant N_{y}-1$
there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn39.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn40.gif?pub-status=live)
Proof. From the definition (2.35) we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn41.gif?pub-status=live)
Similarly
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn42.gif?pub-status=live)
Then adding (2.41) and (2.42) we obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn43.gif?pub-status=live)
Setting the last term on the right-hand side of (2.43) as
$r_{i+1/2,j+1/2}^{\boldsymbol{u}}$
completes the proof.
Now we estimate
$(d_{x}\tilde{u} _{i+1/2,j+1/2}^{x}-d_{x}\tilde{u} _{i-1/2,j+1/2}^{x})/h_{i}$
. For
$(x_{i+1/2},y_{j+1/2})\in \unicode[STIX]{x1D6FA}$
set
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn44.gif?pub-status=live)
Lemma 4 (see, for example, Rui & Li (Reference Rui and Li2017)).
Let
$\boldsymbol{u}=(u^{x},u^{y})$
be the solution of (2.1) and (2.2),
$\tilde{u} ^{x}$
is defined by (2.35). When
$u^{x}$
is sufficiently smooth for
$1\leqslant i\leqslant N_{x}-1,0\leqslant j\leqslant N_{y}-1$
there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn45.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn46.gif?pub-status=live)
Next we estimate
$(D_{y}\tilde{u} _{i,j+1}^{x}-D_{y}\tilde{u} _{i,j}^{x})/k_{j+1/2}$
. Set
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn47.gif?pub-status=live)
According to (2.10) we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn48.gif?pub-status=live)
Lemma 5 (see, for example, Rui & Li (Reference Rui and Li2017)).
Under the condition of Lemma 4, for
$1\leqslant i\leqslant N_{x}-1,0\leqslant j\leqslant N_{y}-1$
there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn49.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn50.gif?pub-status=live)
Similarly to the definitions of (2.44) and (2.47) we set
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn51.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn52.gif?pub-status=live)
Then there hold
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn53.gif?pub-status=live)
Then similarly to Lemmas 4 and 5 we can obtain the next two lemmas.
Lemma 6. Let
$\boldsymbol{u}=(u^{x},u^{y})$
be the solution of (2.1) and (2.2),
$\tilde{u} ^{y}$
is defined by (2.36). When
$u^{y}$
is sufficiently smooth, for
$0\leqslant i\leqslant N_{x}-1,1\leqslant j\leqslant N_{y}-1$
, there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn54.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn55.gif?pub-status=live)
Lemma 7. Under the condition of Lemma 6, for
$0\leqslant i\leqslant N_{x}-1,~1\leqslant j\leqslant N_{y}-1$
, there holds
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn56.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn57.gif?pub-status=live)
Finally, we make the following assumptions which will be used in the rest of the paper.
(H1)
$p\in W_{\infty }^{2}(J;W_{\infty }^{2}(\unicode[STIX]{x1D6FA}))$ ,
$\boldsymbol{u}\in W_{\infty }^{2}(J;W_{\infty }^{4}(\unicode[STIX]{x1D6FA}))^{2}$ .
(H2)
$c_{f}\in W_{\infty }^{2}(J;W_{\infty }^{4}(\unicode[STIX]{x1D6FA}))$ ,
$\unicode[STIX]{x1D719}\in W_{\infty }^{2}(J;L^{\infty }(\unicode[STIX]{x1D6FA}))$ .
(H3) The coefficients
$K,\unicode[STIX]{x1D70C},F$ are smooth functions that satisfy
$\unicode[STIX]{x1D70C}F(\unicode[STIX]{x1D719})/\sqrt{K(\unicode[STIX]{x1D719})}\in C^{1}(\unicode[STIX]{x1D6FA})$ and there exist positive constants
$C_{1}$ and
$C_{2}$ such that
(2.58a,b )$$\begin{eqnarray}C_{1}\leqslant \frac{\unicode[STIX]{x1D707}}{K}\leqslant C_{2},\quad 0\leqslant \frac{\unicode[STIX]{x1D70C}F}{\sqrt{K}}\leqslant C_{2}.\end{eqnarray}$$
(H4) There exist two positive constants
$D_{\ast }$ and
$D^{\ast }$ such that
(2.59)$$\begin{eqnarray}D_{\ast }\leqslant D_{ll}(\boldsymbol{x})\leqslant D^{\ast },\quad \text{for }\boldsymbol{x}\in \unicode[STIX]{x1D6FA},l=1,2.\end{eqnarray}$$
(H5)
$\unicode[STIX]{x1D700},\unicode[STIX]{x1D6FC},\unicode[STIX]{x1D70C}_{s},\unicode[STIX]{x1D707},k_{c}$ and
$k_{s}$ are all given positive constants.
3 A fully conservative finite difference algorithm on non-uniform staggered grids
In this section, in order to solve the nonlinear system (2.1)–(2.6) efficiently, the fully conservative finite difference algorithm on non-uniform staggered grids is considered.
Define
$\boldsymbol{w}=(w^{x},w^{y})=\boldsymbol{u}c_{f}-\unicode[STIX]{x1D719}\unicode[STIX]{x1D63F}\unicode[STIX]{x1D735}c_{f}$
. Then using (2.5)–(2.6), (2.3) and (2.4) can be transformed into
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn60.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn61.gif?pub-status=live)
where
$r_{\unicode[STIX]{x1D719}}=\unicode[STIX]{x1D6FC}a_{0}k_{c}k_{s}/\unicode[STIX]{x1D70C}_{s}(k_{c}+k_{s}),$
and noting the assumption of
$a_{0}$
, we obtain
$0\leqslant r_{\unicode[STIX]{x1D719}\ast }\leqslant r_{\unicode[STIX]{x1D719}}\leqslant r_{\unicode[STIX]{x1D719}}^{\ast }.$
For the definition of the scheme, we make some preparations. For a discrete function
$q_{i+1/2,j+1/2}$
, define a piecewise-constant function on
$\unicode[STIX]{x1D6FA}$
such that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn62.gif?pub-status=live)
Furthermore, for a pair of discrete functions
$\{V_{i,j+1/2}^{x}\}$
and
$\{V_{i+1/2,j}^{y}\}$
, define the interpolant operator
$\unicode[STIX]{x1D644}_{1}$
as follows:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn63.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn64.gif?pub-status=live)
Let
$N(U,V)$
denote the norm function for a vector
$(U,V)$
,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn65.gif?pub-status=live)
Then define the square root average operators
$S_{x}$
and
$S_{y}$
as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn66.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn67.gif?pub-status=live)
Direct calculation shows that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn68.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn69.gif?pub-status=live)
Define the cutoff operator
$\unicode[STIX]{x1D712}$
for velocity as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn70.gif?pub-status=live)
where
$M$
is a given large positive constant.
Denote by
$\{Z^{n},\boldsymbol{W}^{n},P^{n},\boldsymbol{U}^{n}\}_{n=1}^{N}$
, the finite difference approximations to
$\{\!c_{f}^{n},\boldsymbol{w}^{n},p^{n}$
,
$\boldsymbol{u}^{n}\!\}_{n=1}^{N}$
, respectively. Their values are defined as follows.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn71.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn72.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn73.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn74.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn75.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn76.gif?pub-status=live)
where
${\mathcal{P}}_{h}$
is a bilinear interpolant operator which is defined as follows: for points
$(x,y)$
, assuming
$x\in [x_{i-1/2},x_{i+1/2}],y\in [y_{j-1/2},y_{j+1/2}]$
, then
${\mathcal{P}}_{h}\unicode[STIX]{x1D713}(x,y)$
can be evaluated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn77.gif?pub-status=live)
For the calculation of the discrete porosity
$\unicode[STIX]{x1D713}$
, we use the following scheme.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn78.gif?pub-status=live)
where
$\overline{Z}^{n-1}=\max \{0,\min \{Z^{n-1},1\}\}.$
Set the boundary and initial approximations as follows:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn79.gif?pub-status=live)
The difference method will consist of three parts: firstly, if the approximate concentration
$Z_{i+1/2,j+1/2}^{n-1}$
and porosity
$\unicode[STIX]{x1D713}_{i+1/2,j+1/2}^{n-1},~n=1,\ldots ,N$
are known, equation (3.19) will be used to obtain a new porosity
$\unicode[STIX]{x1D713}_{i+1/2,j+1/2}^{n}$
. Since (3.15)–(3.17) form a nonlinear finite difference scheme. By using Picard iteration, an approximation
$P_{i+1/2,j+1/2}^{n}$
to the pressure and
$U_{i,j+1/2}^{x,n}$
,
$U_{i+1/2,j}^{y,n}$
to the velocity will be calculated using
$\unicode[STIX]{x1D713}_{i+1/2,j+1/2}^{n}$
. Finally, a new concentration
$Z_{i+1/2,j+1/2}^{n}$
will be calculated using
$U_{i,j+1/2}^{x,n}$
,
$U_{i+1/2,j}^{y,n}$
and
$\unicode[STIX]{x1D713}_{i+1/2,j+1/2}^{n}$
, and we get the approximations
$W_{i,j+1/2}^{x,n}$
and
$W_{i+1/2,j}^{y,n}$
. It is easy to see that at each time level, the difference scheme has an explicit solution or is a linear system with a strictly diagonally dominant coefficient matrix – thus the approximate solutions exist uniquely.
Remark.
In (3.13) and (3.14), we can replace
$\unicode[STIX]{x1D712}(U_{i,j+1/2}^{x,n})$
,
$\unicode[STIX]{x1D712}(U_{i+1/2,j}^{y,n})$
with
$U_{i,j+1/2}^{x,n}$
,
$U_{i+1/2,j}^{y,n}$
. The boundedness of
$\Vert \boldsymbol{U}\Vert _{\infty }^{n}$
can be proved similar to the hypothesis of equation (23) in Li & Rui (Reference Li and Rui2017a
).
4 Error analysis for the discrete scheme
In this section, we give the error estimates of (3.12)–(3.19). Set
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn80.gif?pub-status=live)
Next we will prove a priori bounds for the discrete solution
$\unicode[STIX]{x1D713}$
which will be used in what follows.
Lemma 8. Assuming that
$0<\unicode[STIX]{x1D719}_{0\ast }\leqslant \unicode[STIX]{x1D719}_{0}\leqslant \unicode[STIX]{x1D719}_{0}^{\ast }<1$
, then the discrete porosity
$\unicode[STIX]{x1D713}_{i+1/2,j+1/2}^{n}$
is bounded, i.e.,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn81.gif?pub-status=live)
It also holds that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn82.gif?pub-status=live)
Proof. The proof is given by induction. It is trivial that
$\unicode[STIX]{x1D719}_{0\ast }\leqslant \unicode[STIX]{x1D713}_{i,j}^{0}<1$
. Suppose that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn83.gif?pub-status=live)
next we prove that
$\unicode[STIX]{x1D713}_{i,j}^{n}$
also does.
For simplicity, set
$\unicode[STIX]{x1D6FD}^{n-1}=r_{\unicode[STIX]{x1D719}}\overline{Z}^{n-1}/(1-\unicode[STIX]{x1D719}_{0})\unicode[STIX]{x0394}t,$
where
$\overline{Z}^{n-1}=\max \{0,\min \{Z^{n-1},1\}\}.$
Then (3.19) can be transformed into the following.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn84.gif?pub-status=live)
By (4.5), we can easily obtain that
$\unicode[STIX]{x1D719}_{i,j}^{n}<1$
. Equation (3.19) can also be calculated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn85.gif?pub-status=live)
and thus we have that
$\unicode[STIX]{x1D719}_{i,j}^{n}>\unicode[STIX]{x1D719}_{i,j}^{n-1}$
. This completes the proof.
Lemma 9. The approximate errors of discrete porosity satisfy
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn86.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn87.gif?pub-status=live)
where the positive constant
$C$
is independent of
$h,~k$
and
$\unicode[STIX]{x0394}t$
.
Proof. Subtracting (3.2) from (3.19), we can obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn88.gif?pub-status=live)
where
$R_{1}^{n}=\unicode[STIX]{x2202}\unicode[STIX]{x1D719}^{n}/\unicode[STIX]{x2202}t-d_{t}\unicode[STIX]{x1D719}^{n}.$
Multiplying (4.9) by
$E_{\unicode[STIX]{x1D719},i+1/2,j+1/2}^{n}h_{i+1/2}k_{j+1/2}$
and making a summation on
$i,j$
for
$0\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
, we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn89.gif?pub-status=live)
The term on the left-hand side of (4.10) can be transformed into
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn90.gif?pub-status=live)
Taking notice of Lemma 8, the first term on the right-hand side of (4.10) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn91.gif?pub-status=live)
where we used the fact that
$|\overline{Z}^{n-1}-c_{f}^{n-1}|\leqslant |Z^{n-1}-c_{f}^{n-1}|$
.
The second term on the right-hand side of (4.10) can be bounded by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn92.gif?pub-status=live)
Combining (4.10) with (4.11)–(4.13), multiplying by
$2\unicode[STIX]{x0394}t$
, and summing for
$n$
from 1 to
$m$
,
$m\leqslant N$
, we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn93.gif?pub-status=live)
Recalling the initial condition on
$\unicode[STIX]{x1D713}^{0}$
gives (4.7).
On the other hand, multiplying (4.9) by
$d_{t}E_{\unicode[STIX]{x1D719},i+1/2,j+1/2}^{n}h_{i+1/2}k_{j+1/2}$
and making a summation on
$i,j$
for
$0\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
, we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn94.gif?pub-status=live)
Similarly we can obtain that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn95.gif?pub-status=live)
This completes the proof.
Lemma 10. The approximate errors of discrete pressure and velocity satisfy
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn96.gif?pub-status=live)
where the positive constant
$C$
is independent of
$h,~k$
and
$\unicode[STIX]{x0394}t$
.
Proof. Define
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn97.gif?pub-status=live)
Define the residuals as follows
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn98.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn99.gif?pub-status=live)
From Lemmas 4 and 5, we obtain that for
$i=1,\ldots ,N_{x}-1,~j=0,\ldots ,N_{y}-1$
,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn100.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn101.gif?pub-status=live)
Similarly to the derivation of Lemma 4.2 in Rui et al. (Reference Rui, Zhao and Pan2015), we can obtain that when
$\unicode[STIX]{x1D70C}F/\sqrt{K}\in C^{1}(\unicode[STIX]{x1D6FA})$
,
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn102.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn103.gif?pub-status=live)
Thus we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn104.gif?pub-status=live)
Recalling Lemma 3, (2.2) can be transformed into
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn105.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn106.gif?pub-status=live)
Subtracting (4.21) from (3.16), we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn107.gif?pub-status=live)
Multiplying (4.28) by
$E_{\tilde{\boldsymbol{u}},i,j+1/2}^{x,n}h_{i}k_{j+1/2}$
and making a summation on
$i,~j$
for
$1\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
, we can obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn108.gif?pub-status=live)
The fifth term on the left-hand side of (4.29) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn109.gif?pub-status=live)
where taking notice of equation (3.19) and the boundedness of
$\boldsymbol{W}^{n-1}$
, we can obtain that
$\Vert d_{x}({\mathcal{P}}_{h}\unicode[STIX]{x1D713}^{n})^{-1}\Vert _{\infty }\leqslant ~C$
.
The last term on the left-hand side of (4.29) can be estimated similar to (4.30). Then noting Lemma 8, we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn110.gif?pub-status=live)
Similarly in the
$y$
direction, we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn111.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn112.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn113.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn114.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn115.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn116.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn117.gif?pub-status=live)
Using the similar estimation in Pan & Rui (Reference Pan and Rui2012), we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn118.gif?pub-status=live)
Recalling the estimates of (4.25), we can easily obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn119.gif?pub-status=live)
where
$\boldsymbol{R}^{n}=(R^{x,n},R^{y,n})$
.
Subtracting (4.26) from (3.15), we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn120.gif?pub-status=live)
Multiplying (4.41) by
$[E_{p}+\unicode[STIX]{x1D6FF}_{p}^{\tilde{\boldsymbol{u}}}]_{i+1/2,j+1/2}^{n}h_{i+1/2}k_{j+1/2}$
and making a summation on
$i,~j$
for
$0\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
, we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn121.gif?pub-status=live)
Combining (4.42) with (4.31) and (4.32) and using the Cauchy–Schwartz inequality, we can obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn122.gif?pub-status=live)
The first term on the left-hand side of (4.43) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn123.gif?pub-status=live)
The second and third terms on the left-hand side of (4.43) can be transformed into the following.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn124.gif?pub-status=live)
The fourth and fifth terms on the left-hand side of (4.43) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn125.gif?pub-status=live)
Similar to the estimate of Lemma 4.5 in Rui et al. (Reference Rui, Zhao and Pan2015), we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn126.gif?pub-status=live)
Using the uniform Lipschitz continuity of
$F(\cdot )/\sqrt{K(\cdot )}$
and Cauchy–Schwartz inequality, the last term on the right-hand side of (4.46) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn127.gif?pub-status=live)
Combining (4.43) with (4.44)–(4.48), multiplying (4.43) by
$\unicode[STIX]{x0394}t$
, summing for
$n$
from 1 to
$m$
,
$m\leqslant N$
and applying Gronwall’s lemma give
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn128.gif?pub-status=live)
This completes the proof.
Lemma 11. The approximate errors of discrete concentration and flux variable satisfy
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn129.gif?pub-status=live)
where the positive constant
$C$
is independent of
$h,~k$
and
$\unicode[STIX]{x0394}t$
.
Proof. From (3.1), we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn130.gif?pub-status=live)
where
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn131.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn132.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn133.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn134.gif?pub-status=live)
Then, subtracting (4.51) from (3.12), we can obtain that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn135.gif?pub-status=live)
Multiplying (4.56) by
$[E_{c_{f}}+\unicode[STIX]{x1D6FF}_{c_{f}}]_{i+1/2,j+1/2}^{n}h_{i+1/2}k_{j+1/2}$
and making summation on
$i,~j$
for
$0\leqslant i\leqslant N_{x}-1,~0\leqslant j\leqslant N_{y}-1$
, we have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn136.gif?pub-status=live)
The first term on the left-hand side of (4.57) can be transformed into
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn137.gif?pub-status=live)
Recalling Lemma 8, the second term on the left-hand side of (4.57) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn138.gif?pub-status=live)
Taking notice of Lemmas 1, 2 and (3.13), the third term on the left-hand side of (4.57) can be transformed into
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn139.gif?pub-status=live)
The first term on the right-hand side of (4.60) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn140.gif?pub-status=live)
The last term on the right-hand side of (4.61) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn141.gif?pub-status=live)
The second term on the right-hand side of (4.60) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn142.gif?pub-status=live)
The last term in the right-hand side of (4.60) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn143.gif?pub-status=live)
where the last inequality holds due to the fact that
$|\unicode[STIX]{x1D712}(U^{x,n})-u^{x,n}|\leqslant |U^{x,n}-u^{x,n}|$
pointwise. The last term on the left-hand side of (4.57) can be estimated similarly to (4.60)–(4.64).
Noticing that
$0\leqslant a_{v}(\unicode[STIX]{x1D713}^{n})\leqslant a_{0}$
and
$|a_{v}(\unicode[STIX]{x1D713}^{n})-a_{v}(\unicode[STIX]{x1D719}^{n})|\leqslant a_{0}/(1-\unicode[STIX]{x1D719}_{0})|E_{\unicode[STIX]{x1D719}}^{n}|$
, the first term on the right-hand side of (4.57) can be estimated as
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn144.gif?pub-status=live)
The last term on the right-hand side of (4.57) can be estimated by
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn145.gif?pub-status=live)
Combining (4.57) with the above estimates, we have
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn146.gif?pub-status=live)
Multiplying (4.67) by
$2\unicode[STIX]{x0394}t$
, summing for
$n$
from 1 to
$m$
,
$m\leqslant N$
and applying Gronwall’s lemma give that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn147.gif?pub-status=live)
This completes the proof.
Based on the above lemmas, we can obtain
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn148.gif?pub-status=live)
Since
$(U^{x}-\tilde{u} ^{x})_{i,j+1/2}=0$
for
$i=0,N_{x}$
and
$(U^{y}-\tilde{u} ^{y})_{i+1/2,j}=0$
for
$j=0,N_{y}$
, we know that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn149.gif?pub-status=live)
Recalling the definition of
$\tilde{\boldsymbol{u}}$
, we have the main error estimates below.
Theorem 12. Suppose (H1)–(H5) hold, then there exists a positive constant
$C$
independent of
$h,~k$
and
$\unicode[STIX]{x0394}t$
such that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn150.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn151.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn152.gif?pub-status=live)
If all
$k_{j+1/2}=k$
, i.e. uniform meshes are used in the
$y$
direction, we further have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn153.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn154.gif?pub-status=live)
If all
$h_{i+1/2}=h$
, i.e. uniform meshes are used in the
$x$
direction, we further have that
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn155.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn156.gif?pub-status=live)
Remark.
We can derive rigorous stability analysis for the finite difference scheme for wormhole propagation with the Darcy–Brinkman–Forchheimer framework by combining the procedure in the above proof of error estimates and that in Li & Rui (Reference Li and Rui2018a ). However, the process is very tedious, so we leave the details to the interested readers.
5 Numerical examples
In this section, some numerical experiments using the fully conservative finite difference method on non-uniform staggered grids have been carried out.
We test examples 1 and 2 to verify the convergence rates. The time step is refined as
$\unicode[STIX]{x0394}t=1/N_{x}^{2}=1/N_{y}^{2}$
to show the convergence and
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn157.gif?pub-status=live)
where
$\unicode[STIX]{x1D644}$
is an identity matrix. In Example 1, set
$\unicode[STIX]{x1D6FA}=(0,1)\times (0,1)$
. In Example 2, set
$\unicode[STIX]{x1D6FA}=(-1,1)\times (-1,1)$
. The initial spatial partition is a
$5\times 5$
grid. Then the grid is refined by dividing each edge into two equal parts and non-uniform meshes are used which are generated from the corresponding uniform mesh by adding a random displacement in both
$x$
and
$y$
directions (see figure 1). The numerical results of Example 1 are listed in tables 1–8, where tables 1–3 present the results with uniform grids and tables 4–8 demonstrate the results with non-uniform grids. The numerical results of Example 2 are listed in tables 9–16, where tables 9–11 present the results with uniform grids and tables 12–16 demonstrate the results with non-uniform grids. Here on uniform grids we do not present the results for
$u^{y}$
since its results are similar to
$u^{x}$
. In tables 4–8, 12–16, the ratios between the maximum and minimum mesh sizes in each dimension (that is,
$h/h_{min}$
and
$k/k_{min}$
) are listed to illustrate the non-uniformity of the grid, where
$h_{min}=\min _{1\leqslant i\leqslant N_{x}}\{h_{i-1/2}\},~k_{min}=\min _{1\leqslant j\leqslant N_{y}}\{k_{j-1/2}\}$
. For simplicity, in the following tables, we set
$E_{\boldsymbol{u}}=\boldsymbol{U}-\boldsymbol{u}$
and define
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn158.gif?pub-status=live)
where
$\unicode[STIX]{x1D709}=M,T,T_{x},T_{y}$
.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig1g.gif?pub-status=live)
Figure 1. The non-uniform mesh generated from the
$20\times 20$
uniform mesh for Example 2.
Table 1. Error and convergence rates of Example 1 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab1.gif?pub-status=live)
Table 2. Error and convergence rates of Example 1 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab2.gif?pub-status=live)
Table 3. Error and convergence rates of Example 1 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab3.gif?pub-status=live)
Table 4. Error and convergence rates of Example 1 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab4.gif?pub-status=live)
Table 5. Error and convergence rates of Example 1 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab5.gif?pub-status=live)
Table 6. Error and convergence rates of Example 1 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab6.gif?pub-status=live)
Table 7. Error and convergence rates of Example 1 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab7.gif?pub-status=live)
Table 8. Error and convergence rates of Example 1 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab8.gif?pub-status=live)
Table 9. Error and convergence rates of Example 2 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab9.gif?pub-status=live)
Table 10. Error and convergence rates of Example 2 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab10.gif?pub-status=live)
Table 11. Error and convergence rates of Example 2 on uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab11.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig2g.gif?pub-status=live)
Figure 2. Numerical porosity of Example 3.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig3g.gif?pub-status=live)
Figure 3. Numerical porosity of Example 4.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig4g.gif?pub-status=live)
Figure 4. Numerical concentration of Example 4.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig5g.gif?pub-status=live)
Figure 5. Numerical pressure of Example 4.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_fig6g.gif?pub-status=live)
Figure 6. Numerical velocity of Example 4.
Example 1. Here the initial condition and the right-hand side of the equation are computed according to the analytic solution given below.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn159.gif?pub-status=live)
Example 2. Here the initial condition and the right-hand side of the equation are computed according to the analytic solution given below.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn160.gif?pub-status=live)
In this example
$\Vert D_{y}E_{\boldsymbol{u}}^{x}\Vert _{l^{\infty }(l^{2},T_{y})}$
also has second-order convergence on uniform grids in the spatial direction because
$\unicode[STIX]{x2202}^{2}u^{x}/\unicode[STIX]{x2202}y^{2}=0$
for
$y=-1$
and
$y=1$
.
In the following examples 3 and 4, we give the dissolution simulations, which are similar to Kou et al. (Reference Kou, Sun and Wu2016), Wu et al. (Reference Wu, Salama and Sun2015).
$\unicode[STIX]{x1D6FA}=(0,0.2)\times (0,0.2)$
,
$J=[0,1\times 10^{6}]$
,
$\unicode[STIX]{x0394}t=1\times 10^{4}$
s. The initial concentration of acid flow is zero. The initial pressure is
$10^{5}$
Pa. The parameter
$\unicode[STIX]{x1D700}$
is set to 0.01. In addition, some properties of acid flow in porous media, the injection and production flow rates are listed as follows:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn161.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn162.gif?pub-status=live)
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn163.gif?pub-status=live)
Example 3. In this example,
$\unicode[STIX]{x1D63F}=10^{-7}~\unicode[STIX]{x1D644}$
. The distributions of initial porosity and permeability are listed as follows:
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_eqn164.gif?pub-status=live)
Example 4. In this example,
$\unicode[STIX]{x1D63F}=10^{-7}~\unicode[STIX]{x1D644}$
. The initial porosity in the porous medium also obeys the uniform distribution and the range is from 0.05 to 0.35. The initial permeability of the porous media complies with the uniform distribution and the range is from
$10^{-8}$
to
$10^{-7}$
.
The distributions of porosity for examples 3 and 4 are calculated at the end of 25th time step, 50th time step, 75th time step and 100th time step, respectively. We show the distributions of porosity in figures 2 and 3. These results are computed on the grid of
$80\times 80$
cells. In addition, we demonstrate the configurations of concentration, pressure and flow streamlines for example 4 at the end of 25th time step, 50th time step, 75th time step and 100th time step, respectively, in figures 4–6.
From tables 1–16, we can see that the finite difference approximations on non-uniform staggered grids for the pressure, velocity, porosity, concentration and its flux have
$(\unicode[STIX]{x0394}t+h^{2}+k^{2})$
accuracy in discrete norms. These results are consistent with the error estimates in Theorem 12. From figures 2 and 3, it can be observed that the average porosities in all frameworks are increasing, which demonstrates that the matrix is dissolved by acid. Furthermore, we can see that at the beginning of the development, all frameworks display the formation of some small fingers. As time elapses, some major fingers appear. We can observe that the chemical concentration front advances in certain directions more than the other directions in figure 4. Also, as shown in figures 5 and 6, it is obvious that the heterogeneity of porosity and permeability in wormhole formation also has distinct effect on the velocity field, which in turn increases non-uniformity of the chemical reaction front. Those examples clearly show that the fully conservative finite difference scheme on non-uniform staggered grids can simulate wormhole propagation effectively.
Table 12. Error and convergence rates of Example 2 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab12.gif?pub-status=live)
Table 13. Error and convergence rates of Example 2 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab13.gif?pub-status=live)
Table 14. Error and convergence rates of Example 2 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab14.gif?pub-status=live)
Table 15. Error and convergence rates of Example 2 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab15.gif?pub-status=live)
Table 16. Error and convergence rates of Example 2 on non-uniform grids.
![](https://static.cambridge.org/binary/version/id/urn:cambridge.org:id:binary:20190821135811418-0820:S0022112019003999:S0022112019003999_tab16.gif?pub-status=live)
6 Conclusion
In this paper, we have developed a finite difference scheme on non-uniform staggered grids for wormhole propagation with the Darcy–Brinkman–Forchheimer framework in porous media, which can be effectively applied to enhance oil and gas production rates. The DBF framework can simulate the convective flow comparatively well under conditions of variable porosity and deal with multiple complicating factors in wormhole propagation, including boundary-layer development, macroscopic and microscopic shear stress, and the inertial force. The coupled analysis approach to handle the fully coupling relation of multivariables is employed. To guarantee full mass conservation, we introduce an auxiliary flux variable. Based on the cutoff operator of velocity and the coupled analysis approach, also inspired by the analysis technique for Darcy–Forchheimer and Stokes equations, we obtain second-order superconvergence of the pressure, velocity, porosity, concentration and its flux in different discrete norms on non-uniform grids. We also obtain second-order superconvergence for some terms of the
$H^{1}$
norm of the velocity on non-uniform grids. Finally, some numerical experiments are presented to verify the theoretical analysis and effectiveness of the given scheme.
Acknowledgements
The authors would like to thank the editor and referees for their valuable comments and suggestions which helped us to improve the results of this paper. The first author is supported by the Postdoctoral Science Foundation of China grant no. BX20190187. The second author is supported by the National Natural Science Foundation of China grant no. 11671233.