86 const Element &element,
87 const FVElementGeometry& fvGeometry,
88 const ElementVolumeVariables& elemVolVars,
89 const ElementFaceVariables& elemFaceVars,
90 const SubControlVolumeFace &scvf,
91 const FluxVariablesCache& fluxVarsCache)
93 CellCenterPrimaryVariables flux = ParentType::computeMassFlux(problem, element, fvGeometry,
94 elemVolVars, elemFaceVars, scvf, fluxVarsCache);
97 auto upwindTermK = [](
const auto& volVars)
99 return volVars.viscosityTilde() * volVars.density();
102 flux[viscosityTildeEqIdx]
103 = ParentType::advectiveFluxForCellCenter(problem, elemVolVars, elemFaceVars, scvf, upwindTermK);
106 const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx());
107 const auto& outsideScv = fvGeometry.scv(scvf.outsideScvIdx());
108 const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
109 const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
112 Scalar insideCoeff = (insideVolVars.viscosity() + insideVolVars.viscosityTilde() * insideVolVars.density())
113 / insideVolVars.sigma();
114 Scalar outsideCoeff = (outsideVolVars.viscosity() + outsideVolVars.viscosityTilde() * outsideVolVars.density())
115 / outsideVolVars.sigma();
118 insideCoeff *= insideVolVars.extrusionFactor();
119 outsideCoeff *= outsideVolVars.extrusionFactor();
127 distance = (insideScv.dofPosition() - scvf.ipGlobal()).two_norm();
133 (outsideScv.dofPosition() - scvf.ipGlobal()).two_norm(),
134 (insideScv.dofPosition() - scvf.ipGlobal()).two_norm());
135 distance = (outsideScv.dofPosition() - insideScv.dofPosition()).two_norm();
138 const auto bcTypes = problem.boundaryTypes(element, scvf);
139 if (!(scvf.boundary() && (bcTypes.isOutflow(Indices::viscosityTildeEqIdx)
140 || bcTypes.isSymmetry())))
142 flux[viscosityTildeEqIdx]
144 * (insideVolVars.viscosityTilde() - outsideVolVars.viscosityTilde())
145 * Extrusion::area(scvf);