Tracer is not conserved
Problem description: In a multi-phase setting, the amount of a tracer in one fluid phase is possibly not conserved from one time step to the next.
Explanation: When solving the flow problem, the phase distribution usually changes. For example, the saturation in one cell increases. Since flow and tracer problems are decoupled, one should assume in this flow step that the added fluid doesn't contain tracer. For conserving the amount of tracer in each cell, the tracer concentration should be adapted to this change. While the concentration should be reduced in case of an increasing saturation, it stays the same and therefore the amount of tracer in the cell is increased. This is not corrected by the tracer solution step, as that step just redistributes the tracer according to the volume flux and the given (possibly wrong) concentration.
How to reproduce it:
Check out the branch fix/tracer-concentration
and consider test/porousmediumflow/tracer/conservation. Comment the line
equilibrateTracer(xOld, oldSaturation_, saturation_);
of main.cc
.
Possible fix: Equilibrate the tracer after each flow solve and before each tracer solve. To be discussed in !2767.