45 static Scalar
apply(
const FluxVariables& fluxVars,
46 const UpwindTermFunction& upwindTerm,
47 Scalar flux,
int phaseIdx)
52 const auto& elemVolVars = fluxVars.elemVolVars();
53 const auto& scvf = fluxVars.scvFace();
54 const auto& insideScv = fluxVars.fvGeometry().scv(scvf.insideScvIdx());
55 const auto& insideVolVars = elemVolVars[insideScv];
58 if (scvf.interiorBoundary())
60 const auto& cm = fluxVars.problem().couplingManager();
61 const auto& outsideVolVars = cm.getLowDimVolVars(fluxVars.element(), scvf);
62 if (std::signbit(flux))
63 return flux*(upwindWeight*upwindTerm(outsideVolVars)
64 + (1.0 - upwindWeight)*upwindTerm(insideVolVars));
66 return flux*(upwindWeight*upwindTerm(insideVolVars)
67 + (1.0 - upwindWeight)*upwindTerm(outsideVolVars));
71 const auto& outsideScv = fluxVars.fvGeometry().scv(scvf.outsideScvIdx());
72 const auto& outsideVolVars = elemVolVars[outsideScv];
73 if (std::signbit(flux))
74 return flux*(upwindWeight*upwindTerm(outsideVolVars)
75 + (1.0 - upwindWeight)*upwindTerm(insideVolVars));
77 return flux*(upwindWeight*upwindTerm(insideVolVars)
78 + (1.0 - upwindWeight)*upwindTerm(outsideVolVars));