From 489d55a756f18e86e78fb75198ef69b9822706e6 Mon Sep 17 00:00:00 2001
From: Timo Koch <timokoch@uio.no>
Date: Wed, 24 Apr 2024 20:11:32 +0200
Subject: [PATCH] [md][facet][box] Handle tracer fluidsystems in Fick's law
 specialization

---
 dumux/multidomain/facet/box/fickslaw.hh | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/dumux/multidomain/facet/box/fickslaw.hh b/dumux/multidomain/facet/box/fickslaw.hh
index 6c9754edd7..3891e1469e 100644
--- a/dumux/multidomain/facet/box/fickslaw.hh
+++ b/dumux/multidomain/facet/box/fickslaw.hh
@@ -108,8 +108,9 @@ public:
 
             for (int compIdx = 0; compIdx < numComponents; compIdx++)
             {
-                if (compIdx == FluidSystem::getMainComponent(phaseIdx))
-                    continue;
+                if constexpr (!FluidSystem::isTracerFluidSystem())
+                    if (compIdx == FluidSystem::getMainComponent(phaseIdx))
+                        continue;
 
                 // interpolate mole fraction to scvf integration point
                 Scalar x = 0.0;
@@ -126,8 +127,9 @@ public:
                                                    facetVolVars.effectiveDiffusionCoefficient(phaseIdx, phaseIdx, compIdx),
                                                    gradX);
 
-                if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx) && !FluidSystem::isTracerFluidSystem())
-                    componentFlux[FluidSystem::getMainComponent(phaseIdx)] -= componentFlux[compIdx];
+                if constexpr (!FluidSystem::isTracerFluidSystem())
+                    if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx))
+                        componentFlux[FluidSystem::getMainComponent(phaseIdx)] -= componentFlux[compIdx];
             }
 
             return componentFlux;
@@ -138,8 +140,9 @@ public:
         {
             for (int compIdx = 0; compIdx < numComponents; compIdx++)
             {
-                if (compIdx == FluidSystem::getMainComponent(phaseIdx))
-                    continue;
+                if constexpr (!FluidSystem::isTracerFluidSystem())
+                    if (compIdx == FluidSystem::getMainComponent(phaseIdx))
+                        continue;
 
                 // create vector with nodal mole/mass fractions
                 std::vector<Scalar> xFractions(element.subEntities(dim));
@@ -164,8 +167,9 @@ public:
                                                    insideVolVars.effectiveDiffusionCoefficient(phaseIdx, phaseIdx, compIdx),
                                                    gradX);
 
-                if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx) && !FluidSystem::isTracerFluidSystem())
-                    componentFlux[FluidSystem::getMainComponent(phaseIdx)] -= componentFlux[compIdx];
+                if constexpr (!FluidSystem::isTracerFluidSystem())
+                    if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx))
+                        componentFlux[FluidSystem::getMainComponent(phaseIdx)] -= componentFlux[compIdx];
             }
 
             return componentFlux;
-- 
GitLab