152 unsigned spaceIdx,
unsigned timeIdx)
155 if (!context.simulator().vanguard().eclState().getSimulationConfig().rock_config().dispersion()) {
158 const auto& extQuants = context.extensiveQuantities(spaceIdx, timeIdx);
159 const auto& inIq = context.intensiveQuantities(extQuants.interiorIndex(), timeIdx);
160 const auto& exIq = context.intensiveQuantities(extQuants.exteriorIndex(), timeIdx);
161 const auto& dispersivity = extQuants.dispersivity();
162 const auto& normVelocityAvg = extQuants.normVelocityAvg();
188 const IntensiveQuantities& inIq,
189 const IntensiveQuantities& exIq,
190 const Evaluation& dispersivity,
191 const Scalar& normVelocityAvg)
193 const auto& inFs = inIq.fluidState();
194 const auto& exFs = exIq.fluidState();
195 Evaluation diffR = 0.0;
196 if constexpr(enableBioeffects) {
198 const Evaluation bAvg = (inFs.invB(waterPhaseIdx) + Toolbox::value(exFs.invB(waterPhaseIdx))) / 2;
199 diffR = inIq.microbialConcentration() - Toolbox::value(exIq.microbialConcentration());
200 flux[contiMicrobialEqIdx] +=
202 normVelocityAvg[waterPhaseIdx] *
205 if constexpr(enableMICP) {
206 diffR = inIq.oxygenConcentration() - Toolbox::value(exIq.oxygenConcentration());
207 flux[contiOxygenEqIdx] +=
209 normVelocityAvg[waterPhaseIdx] *
212 diffR = inIq.ureaConcentration() - Toolbox::value(exIq.ureaConcentration());
213 flux[contiUreaEqIdx] +=
215 normVelocityAvg[waterPhaseIdx] *
222 unsigned pvtRegionIndex = inFs.pvtRegionIndex();
223 for (
unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
224 if (!FluidSystem::phaseIsActive(phaseIdx)) {
229 if (!FluidSystem::enableDissolvedGasInWater() && FluidSystem::waterPhaseIdx == phaseIdx) {
236 if (FluidSystem::gasPhaseIdx == phaseIdx) {
241 Evaluation bAvg = inFs.invB(phaseIdx);
242 bAvg += Toolbox::value(exFs.invB(phaseIdx));
245 Evaluation convFactor = 1.0;
246 if (FluidSystem::enableDissolvedGas() &&
247 FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) &&
248 phaseIdx == FluidSystem::oilPhaseIdx)
250 const Evaluation rsAvg = (inFs.Rs() + Toolbox::value(exFs.Rs())) / 2;
251 convFactor = 1.0 / (toMassFractionGasOil(pvtRegionIndex) + rsAvg);
252 diffR = inFs.Rs() - Toolbox::value(exFs.Rs());
254 if (FluidSystem::enableVaporizedOil() &&
255 FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx) &&
256 phaseIdx == FluidSystem::gasPhaseIdx)
258 const Evaluation rvAvg = (inFs.Rv() + Toolbox::value(exFs.Rv())) / 2;
259 convFactor = toMassFractionGasOil(pvtRegionIndex) /
260 (1.0 + rvAvg * toMassFractionGasOil(pvtRegionIndex));
261 diffR = inFs.Rv() - Toolbox::value(exFs.Rv());
263 if (FluidSystem::enableDissolvedGasInWater() && phaseIdx == FluidSystem::waterPhaseIdx) {
264 const Evaluation rsAvg = (inFs.Rsw() + Toolbox::value(exFs.Rsw())) / 2;
265 convFactor = 1.0 / (toMassFractionGasWater(pvtRegionIndex) + rsAvg);
266 diffR = inFs.Rsw() - Toolbox::value(exFs.Rsw());
268 if (FluidSystem::enableVaporizedWater() && phaseIdx == FluidSystem::gasPhaseIdx) {
269 const Evaluation rvAvg = (inFs.Rvw() + Toolbox::value(exFs.Rvw())) / 2;
270 convFactor = toMassFractionGasWater(pvtRegionIndex) /
271 (1.0 + rvAvg * toMassFractionGasWater(pvtRegionIndex));
272 diffR = inFs.Rvw() - Toolbox::value(exFs.Rvw());
276 const unsigned solventCompIdx = FluidSystem::solventComponentIndex(phaseIdx);
277 const unsigned activeSolventCompIdx = FluidSystem::canonicalToActiveCompIdx(solventCompIdx);
278 flux[conti0EqIdx + activeSolventCompIdx] +=
280 normVelocityAvg[phaseIdx] *
286 const unsigned soluteCompIdx = FluidSystem::soluteComponentIndex(phaseIdx);
287 const unsigned activeSoluteCompIdx = FluidSystem::canonicalToActiveCompIdx(soluteCompIdx);
288 flux[conti0EqIdx + activeSoluteCompIdx] +=
290 normVelocityAvg[phaseIdx] *