From dd60a617f6d0824e5f5b945782fdc4dc9efe2c75 Mon Sep 17 00:00:00 2001
From: Kilian <kilian.weishaupt@iws.uni-stuttgart.de>
Date: Wed, 27 Mar 2019 16:24:46 +0100
Subject: [PATCH] [navierstokes][localresidual] Only retrieve neumannFluxes
 once

* before, fluxes were called for each eqIdx
---
 .../navierstokes/staggered/localresidual.hh        | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/dumux/freeflow/navierstokes/staggered/localresidual.hh b/dumux/freeflow/navierstokes/staggered/localresidual.hh
index c0a57e2d85..c343b441aa 100644
--- a/dumux/freeflow/navierstokes/staggered/localresidual.hh
+++ b/dumux/freeflow/navierstokes/staggered/localresidual.hh
@@ -204,8 +204,6 @@ public:
             if (bcTypes.isSymmetry())
                 return result;
 
-            const auto extrusionFactor = elemVolVars[scvf.insideScvIdx()].extrusionFactor();
-
             // treat Dirichlet and outflow BCs
             result = computeFluxForCellCenter(problem, element, fvGeometry, elemVolVars, elemFaceVars, scvf, elemFluxVarsCache);
 
@@ -213,13 +211,13 @@ public:
             static constexpr auto numEqCellCenter = CellCenterResidual::dimension;
             if (bcTypes.hasNeumann())
             {
-                for(int eqIdx = 0; eqIdx < numEqCellCenter; ++eqIdx)
+                const auto extrusionFactor = elemVolVars[scvf.insideScvIdx()].extrusionFactor();
+                const auto neumannFluxes = problem.neumann(element, fvGeometry, elemVolVars, elemFaceVars, scvf);
+
+                for (int eqIdx = 0; eqIdx < numEqCellCenter; ++eqIdx)
                 {
-                    if(bcTypes.isNeumann(eqIdx + cellCenterOffset))
-                    {
-                        result[eqIdx] = problem.neumann(element, fvGeometry, elemVolVars, elemFaceVars, scvf)[eqIdx + cellCenterOffset]
-                                                              * extrusionFactor * scvf.area();
-                    }
+                    if (bcTypes.isNeumann(eqIdx + cellCenterOffset))
+                        result[eqIdx] = neumannFluxes[eqIdx + cellCenterOffset] * extrusionFactor * scvf.area();
                 }
             }
 
-- 
GitLab