I am trying to solve an equation for chemical advection of a fluid in a porous media with this equation:

$\begin{align} \frac{\partial (\phi(x,t) C(x,t))}{\partial t} = - \nabla . (\vec{q(\phi, t, x)} C(x,t)) \end{align} $

with $\phi$ beeing the porosity, C the concentration of an element, and $\vec{q}$ the fluid flux.

I have another system of equations to compute $\phi$ and $\vec{q}$ at the next time step, so I only have 1 unknown for this equation: C.

What I first did was to simplify the system that way:

$\begin{align} \frac{\partial C}{\partial t} = - \frac{\vec{q}}{\phi} \nabla ( C) \end{align} $

Which is a quasi-linear advection equation and easy to solve. The thing is that I would like to solve this using the conservative form without simplifying my system because mass conservation is important.

I would like to use a WENO scheme for the spatial discretization and a SSP Runge-kutta method for the time because I have sharp gradients in composition. I've already did it with the classical Burgers' equation, but I don't know what to do with $\phi$ in the time derivative.

Here are my 2 ideas:

either developing the time derivative that way:

$\begin{align} \frac{\partial (\phi(x,t) C(x,t))}{\partial t} = \phi(x,t) \frac{\partial C(x,t)}{\partial t} + C(x,t) \frac{\partial \phi(x,t)}{\partial t} \end{align} $

where I can approximate the second term because I know the value of $\phi$ at the next timestep. My gut feeling tells me this is a bad idea.

My second idea is to make a change of variable:

$\begin{align} \phi C = \tilde{C} \end{align} $

knowing that the flux is equal to this, with $\vec{v}$ the velocity of the fluid: $ \vec{q} = \vec{v} \times \phi $

My equation then would becomes:

$\begin{align} \frac{\partial (\tilde{C}(x,t))}{\partial t} = - \nabla . (\vec{v} \tilde{C}) \end{align} $

That I should know how to solve. Then I could retrieve $C$ by dividing $\tilde{C}$ by $\phi$ at the next timestep.

Would that works? Or do you have other suggestions?

  • 2
    $\begingroup$ The second approach is the right way to go. $\endgroup$ Jan 28, 2022 at 16:18
  • $\begingroup$ Thanks @DavidKetcheson that's the confirmation I was looking for :) $\endgroup$
    – Iddingsite
    Jan 28, 2022 at 16:35


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.