Numerical Treatment¶
Let \(c_{i, j}\) be the concentration field, where the indices \(i\) and \(j\) denote the spatial locations in the radial and azimuthal directions, respectively. The index ranges are \(i = 0, 1, \dots, \nr, \nr + 1\) and \(j = 0, 1, \dots, \nt, \nt + 1\), where \(i = 0, \nr + 1\) and \(j = 0, \nt + 1\) store the boundary values and reflect periodicity, respectively. The following diagram illustrates the positioning of the concentration field \(c_{i, j}\) (reddish dots).

Below we briefly discuss the process to integrate the concentration field in time numerically. We assume that \(c_{i, j}^n\), a concentration field at step \(n\), is given.
Step 1: Computing the Stream Function¶
To start, from \(c\) on the particle surface (at \(\vr = 1\), or equivalently \(i = 0\)), we transform it to the spectral domain:
where \(k = 0, 1, \dots, \nt - 1\). Note that, because of \(c_{i, j} \in \mathbb{R}\), \(C_k^s\) satisfies the complex-conjugate property:
for \(k = 1, 2, \dots, \nt / 2 - 1\). Additionally, \(C_0^s\) and \(C_{\nt / 2}^s\) are real numbers.
Since the concentration \(c\) is located at cell centers in the azimuthal direction, we need to apply a half-grid shift azimuthally, which is achieved by modifying the argument:
Using \({C_k^s}^\prime\), the azimuthal velocity on the particle is obtained by:
or in the frequency domain:
Finally we evaluate the stream function in the frequency domain at radial cell faces \(\Psi_{i + \frac{1}{2}, k}\). The inverse transform of \(\Psi_{i + \frac{1}{2}, k}\) yields \(\psi_{i + \frac{1}{2}, j + \frac{1}{2}}\), defined at cell corners.
Step 2: Computing Staggered Velocity¶
To ensure conservative transport of the concentration field, the velocity components are positioned in a staggered manner. Since the stream function \(\psi\) is defined at cell corners, the staggered velocity components are computed as:
Note
Regardless of how the stream function \(\psi\) is specified, the discrete incompressibility constraint evaluated at cell centers:
is always satisfied.
Step 3: Transporting the Concentration¶
Since the concentration field is located at cell centers and is surrounded by staggered velocity components, we update \(c\) using the standard approach:
The radial boundary conditions read
and
See also
Refer to SimpleTCSolver for detailed derivation.
The above scheme is first-order accurate in time, which is not sufficient practically. Also, it is advantageous to treat the diffusive terms implicitly in time to eliminate the severe time-step constraint. To circumvent these obstacles, here we adopt the third-order Runge-Kutta scheme to improve the temporal accuracy. Each sub step denoted by the superscript \(n\) is given by:
where \(\left( adv. \right)\) represents the sum of the two advective terms:
The parameter \(\eta\) is a constant that controls the implicitness of the scheme. Typically, we use \(\eta = 1 / 2\) to achieve a second-order accurate semi-implicit (Crank-Nicolson) scheme or \(\eta = 1\) for a first-order accurate fully implicit scheme.
The Runge-Kutta coefficients are (Williamson, J. Comput. Phys. (35), 1980):
To simplify the discrete Helmholtz operator on the left-hand side, we focus on the azimuthal component of the discrete Laplace operator with respect to a cell-centered quantity \(q\):
Since neither the azimuthal scale factor \(\sfact{2}\) nor the Jacobian determinant \(J\) varies in the azimuthal direction, we can extract the pre-factors from the discrete divergence operator, yielding
Now, we evaluate this quantity at a cell center \(\left( i, j \right)\). Given that the azimuthal grid is equidistant, we expand \(q\) using a discrete Fourier series:
Since neighboring cell centers yield
it follows that
As a result, the main equation becomes
where \(\left( \Delta C \right)_{i, k}\) and \(\left( RHS \right)_{i, l}\) denote the Fourier coefficients of \(\left( \Delta c \right)\) and the right-hand side, respectively.
By applying the forward transform to both sides:
we obtain
Since no terms involve \(k \pm 1\), this results in a purely tri-diagonal linear system in the radial direction for each azimuthal wave number \(k\).
Regarding the radial boundary conditions, because of
and
we have
or in the azimuthal spectral space:
giving a zero Neumann boundary condition on the particle surface. On the outer circle where a Dirichlet condition is imposed, we simply have