# Variable viscosity Stokes equation

One very efficient way to solve Stokes equation with periodic boundary conditions

$$-\eta \nabla^{2} \bf{v} + \nabla p = f \\ \nabla \cdot \bf{v} = 0$$

is using the transverse projection operator (in Fourier space)

$$\tilde{\bf{v}} = \frac{1}{\eta \bf{k}^2} \left (\bf{I} - \frac{k k}{\left | k \right |^2} \right ) \cdot \tilde{\bf{f}}$$

I believe a similar principle is behind the fractional step (i.e. splitting or projection operator) techniques for solving the Navier-Stokes equation (e.g. doi: 10.1016/0021-9991(89)90151-4).

Can we use a similar trick to help us out when the viscosity is not a constant function of space? In other words, what if our Stokes equation looks like this,

$$- \nabla \cdot \left (\eta(\bf{r}) \nabla \bf{v} \right ) + \nabla p = \bf{f} \\ \nabla \cdot \bf{v} = 0$$

Is there an efficient (non-iterative) method to solve such a system of equations?

• Do you solve this problem, my friend. I need to solve the same problem, if you already solved it, please let me know. Thank you so much. Oct 8, 2018 at 20:49
• @LULI I wasn't able to find a non-iterative way, but we found a very efficient way to iterate. We ended up using a fixed point method, and then accelerating the convergence using Anderson acceleration and a first-order continuation method. We could usually converge in 20 steps or less. For our purposes, this was sufficient and we were able to resolve viscosity contrasts of at least 4 orders of magnitude in our simulations. There are more details in a paper we recently published here: dx.doi.org/10.1039/C6SM02839J and maybe some more in the SI here: dx.doi.org/10.1021/acsmacrolett.8b00012.
– Doug
Oct 10, 2018 at 5:19

My suspicion is that there isn't a good non-iterative way to do it since the linear operator isn't diagonal in Fourier space. However, it is possible to solve equations like these without total disaster by iterating, since you can choose fairly large iterative steps if you use semi-implicit methods. To do this, you have to break up the variable viscosity term into two pieces. Here's a paper that does this for a Cahn-Hilliard problem with a variable mobility - the theory is the same: http://journals.aps.org/pre/abstract/10.1103/PhysRevE.60.3564

• P.S. - I was at Santa Barbara a while. Are you working in Math or Chemistry?
– AJK
Jan 14, 2015 at 22:51
• Thanks for your answer. I'm actually working on a problem similar to the Cahn-Hilliard equation, and I think you are right that breaking up the viscosity and iterating will work. I'm currently testing it. If it works, I'll write up a more precise answer. (As for my location: I'm at the MRL.)
– Doug
Jan 16, 2015 at 1:05

I would think that multigrid-preconditioned iterative methods would be most competitive. See, for instance, Parallel scalable adjoint-based adaptive solution of variable-viscosity Stokes flow problems, Burstedde, et al., CMAME, 2009 and Efficient variable-coefficient finite-volume Stokes solvers, Cai, et al., Communications in Computational Physics, 2014 for a few examples, along with some references. Both approaches are highly scalable, but FEM approaches seem to have more literature associated with effectively preconditioned solvers than FVM approaches.

Chapter five of the book Boundary integral and singularity methods for linearized viscous flows (C. Pozrikidis) might be useful. He writes boundary integral equations for stokes flow in terms of the greens functions for homogeneous medium, for the case where one fluid region lies within another. This allows to handle a piece-wise constant viscosity. I don't know if this is useful for the method you are using.

I should mention, the projection in the projection method/fractional-step method in solving the Navier-Stokes equation is completely unrelated to this.

• Could you clarify your comment about how the projection in fractional step methods are unrelated? I was under the impression that such methods use the idea of solving a Poisson equation for the pressure to obtain a divergence-free velocity field. In form it is different, but isn't the principle the same?
– Doug
Jan 12, 2015 at 18:54