54 static Scalar
flux(
const Problem& problem,
55 const Element& element,
56 const FVElementGeometry& fvGeometry,
57 const ElementVolumeVariables& elemVolVars,
58 const SubControlVolumeFace& scvf,
59 const ElementFluxVariablesCache& elemFluxVarsCache)
62 const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx());
63 const auto& outsideScv = fvGeometry.scv(scvf.outsideScvIdx());
64 const auto& insideVolVars = elemVolVars[insideScv];
65 const auto& outsideVolVars = elemVolVars[outsideScv];
68 auto insideLambda = insideVolVars.effectiveThermalConductivity();
69 auto outsideLambda = outsideVolVars.effectiveThermalConductivity();
72 insideLambda *= insideVolVars.extrusionFactor();
73 outsideLambda *= outsideVolVars.extrusionFactor();
76 const auto lambda =
faceTensorAverage(insideLambda, outsideLambda, scvf.unitOuterNormal());
79 const auto& fluxVarsCache = elemFluxVarsCache[scvf];
82 Dune::FieldVector<Scalar, GridView::dimensionworld> gradTemp(0.0);
83 for (
auto&& scv : scvs(fvGeometry))
84 gradTemp.axpy(elemVolVars[scv].temperature(), fluxVarsCache.gradN(scv.indexInElement()));
87 return -1.0*
vtmv(scvf.unitOuterNormal(), lambda, gradTemp)*Extrusion::area(fvGeometry, scvf);