The Eqs.
29–
31 are discretized using the finite element method employing a mesh of quadratic tetrahedra. The interface mesh consists of quadratic triangles which are conforming with the volume mesh. Quadratic interpolation for the velocity and linear interpolation for the pressure (Taylor-Hood) is used. We solve the resulting equations coupled so that our timestep is not limited by the characteristic mesh size time limit. In a decoupled approach, the timestep is limited by the capillary time which is Δ
t = Δ
xμ/Γ where Δ
x is the element size,
μ is the viscosity of the matrix and Γ the surface tension (Courant et al.
1967). A second-order time integration scheme (BDF) is used for the time derivative of the position of the bubble interface. Equations
29‐
31 form a non-linear system of equations which needs to be linearized so that it can be solved with a Newton-like iterative scheme. It is important to note here that since the position
x as an unknown exists only on the bubble interface the method is not fully Newton-Raphson because the domain Ω is not perturbed. To linearize velocity and position,
u and
x can be written as follows
$$\begin{array}{@{}rcl@{}} \boldsymbol{u}= \boldsymbol{u}_{n} + \delta \boldsymbol{u}, \end{array} $$
(32)
$$\begin{array}{@{}rcl@{}} \boldsymbol{x}= \boldsymbol{x}_{n} + \delta \boldsymbol{x}, \end{array} $$
(33)
where subscript
n indicates the current iteration and
δu,
δx are the differences of velocity and position after one iteration respectively. For implementation the surface tension term after manipulation is rewritten taking into account the change in position and area as
$$\begin{array}{@{}rcl@{}} \langle\boldsymbol{\upsilon},{\Gamma}\kappa\boldsymbol{n}\rangle_{S} =& \langle \frac{\partial {\boldsymbol{\upsilon}}}{\partial{\xi^{\alpha}}},{\Gamma}\boldsymbol{g}^{\alpha}\boldsymbol{\nabla}_{s}\cdot\delta\boldsymbol{x}\rangle_{S} \\ &\quad-\langle\boldsymbol{\nabla_{s}}\boldsymbol{\upsilon},{\Gamma}\boldsymbol{\nabla}_{s}\delta\boldsymbol{x}\rangle_{S} \\ &\qquad+\langle \frac{\partial {\boldsymbol{\upsilon}}}{\partial{\xi^{\alpha}}},{\Gamma}\boldsymbol{g}^{\alpha}\rangle_{S}. \end{array} $$
(34)
The discrete inner product 〈⋅ ,⋅〉
S
is analogous to imposing a constraint using a collocation method and is given by
$$ \langle \boldsymbol{\upsilon},\boldsymbol{u} \rangle_{S}= \sum\limits_{k-1}^{n_{\text{coll}}} \boldsymbol{\upsilon}_{k} \cdot \boldsymbol{u}_{k}, $$
(35)
where
n
coll is the number of collocation points. The collocation points coincide with the nodes on the bubble interface. Furthermore, since the pressure term is linear, we choose to solve for
p. Substituting in Eqs.
29‐
31 and dropping the subscript
n leads to
$$\begin{array}{@{}rcl@{}} ((\boldsymbol{\nabla} \boldsymbol{\upsilon})^{T}, \eta (\boldsymbol{\nabla}\delta\boldsymbol{u} + (\boldsymbol{\nabla}\delta\boldsymbol{u})^{T}) - (\boldsymbol{\nabla}\cdot\boldsymbol{\upsilon}, p) \\ + \langle \frac{\partial {\boldsymbol{\upsilon}}}{\partial{\xi^{\alpha}}},{\Gamma}\boldsymbol{g}^{\alpha}\boldsymbol{\nabla}_{s}\cdot\delta\boldsymbol{x}\rangle_{S} -\langle\boldsymbol{\nabla_{s}}\boldsymbol{\upsilon},{\Gamma}\boldsymbol{\nabla}_{s}\delta\boldsymbol{x}\rangle_{S} = \\ - ((\boldsymbol{\nabla} \boldsymbol{\upsilon})^{T}, \eta (\boldsymbol{\nabla}\boldsymbol{u} + (\boldsymbol{\nabla}\boldsymbol{u})^{T}) - \langle \frac{\partial {\boldsymbol{\upsilon}}}{\partial{\xi^{\alpha}}},{\Gamma}\boldsymbol{g}^{\alpha}\rangle_{S}, \end{array} $$
(36)
$$\begin{array}{@{}rcl@{}} (\boldsymbol{q}, \boldsymbol{\nabla} \cdot \delta\boldsymbol{u} ) = - (\boldsymbol{q}, \boldsymbol{\nabla} \cdot \boldsymbol{u}_{n} ), \end{array} $$
(37)
$$\begin{array}{@{}rcl@{}} \langle\boldsymbol{w}, \frac{\delta\boldsymbol{x}}{\Delta t}\rangle_{S} + \langle\boldsymbol{w}, \frac{3\boldsymbol{x}-4\boldsymbol{x}^{(i)}+\boldsymbol{x}^{(i-1)}}{2{\Delta} t}\rangle_{S}\\ + \langle\boldsymbol{w},(\boldsymbol{u}-\boldsymbol{u}_{\text{c}})\cdot \boldsymbol{g}^{\alpha} \frac{\partial {\boldsymbol{x}}}{\partial{\xi^{\alpha}}}\rangle_{S}\\ + \langle\boldsymbol{w}, (\boldsymbol{u}-\boldsymbol{u}_{\text{c}})\cdot \boldsymbol{g}^{\alpha} \frac{\partial {\delta\boldsymbol{x}}}{\partial{\xi^{\alpha}}}\rangle_{S}\\ - \langle\boldsymbol{w}, (\boldsymbol{u}-\boldsymbol{u}_{\text{c}})\cdot \boldsymbol{g}^{\alpha} \cdot \frac{\partial\delta\boldsymbol{x}}{\partial\xi^{\beta}}\boldsymbol{g}^{\beta} \frac{\partial {\boldsymbol{x}}}{\partial{\xi^{\alpha}}}\rangle_{S}\\ + \langle\boldsymbol{w}, \delta\boldsymbol{u} \cdot \boldsymbol{g}^{\alpha} \frac{\partial {\boldsymbol{x}}}{\partial{\xi^{\alpha}}}\rangle_{S}\\ - \langle\boldsymbol{w}, \delta\boldsymbol{u} \rangle_{S} - \langle\boldsymbol{w}, \boldsymbol{u}\rangle_{S}=0. \end{array} $$
(38)
To take the change of area into account, Eq.
31 is multiplied by
∇
s
⋅
δx and added to Eq.
38, while keeping only linear terms. The converged solution is obtained when the maximum difference of
r
x, k
=
x
k
−
x
k−1,
r
u, k
=
u
k
−
u
k−1 and
r
p, k
=
p
k
−
p
k−1 of two consecutive iterations is less than
\(r_{\max }< \epsilon \|{b}\|_{2}\) where
𝜖 = 10
−8 and ∥
b∥
2 the 2-norm of the right hand side of the linear system of equations. By numerical experimentation, we found that multiplying the matrix terms containing the unknown
δx in Eq.
34 by −1 greatly increases convergence. Since the resulting system of equations can be large, the necessary physical memory for using direct solvers can grow fast. For that reason in most of the simulations presented in this paper, we use iterative solvers, such as GMRES, from the SPARSKIT library (Saad
2001) in combination with an ILUT preconditioner. Since the connectivity of the nodes does not change, the structure of the system matrix remains the same and thus it is possible to re-use the ILUT preconditioner for many timesteps or even for the whole simulation. To increase the convergence rate by reducing the fill-in of the preconditioner, the mesh nodes are renumber using MeTiS (Karypis and Kumar
1998). Nevertheless, selecting the proper parameters for the iterative solver can be challenging. In those cases, we used a direct solver from the HSL library (HSL
2013).