76                                               const Element &element,
 
   77                                               const FVElementGeometry& fvGeometry,
 
   78                                               const ElementVolumeVariables& elemVolVars,
 
   79                                               const ElementFaceVariables& elemFaceVars,
 
   80                                               const SubControlVolumeFace &scvf,
 
   81                                               const FluxVariablesCache& fluxVarsCache)
 
   83        CellCenterPrimaryVariables flux = ParentType::computeMassFlux(problem, element, fvGeometry,
 
   84                                                                      elemVolVars, elemFaceVars, scvf, fluxVarsCache);
 
   87        auto upwindTermK = [](
const auto& volVars)
 
   89            return volVars.turbulentKineticEnergy() * volVars.density();
 
   91        auto upwindTermEpsilon = [](
const auto& volVars)
 
   93            return volVars.dissipation() * volVars.density();
 
   96        flux[turbulentKineticEnergyEqIdx]
 
   97            = ParentType::advectiveFluxForCellCenter(problem, fvGeometry, elemVolVars, elemFaceVars, scvf, upwindTermK);
 
   98        flux[dissipationEqIdx ]
 
   99            = ParentType::advectiveFluxForCellCenter(problem, fvGeometry, elemVolVars, elemFaceVars, scvf, upwindTermEpsilon);
 
  102        const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx());
 
  103        const auto& outsideScv = fvGeometry.scv(scvf.outsideScvIdx());
 
  104        const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
 
  105        const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
 
  108        Scalar insideCoeff_k = (insideVolVars.dynamicEddyViscosity() / insideVolVars.sigmaK()) + insideVolVars.viscosity();
 
  109        Scalar outsideCoeff_k = (outsideVolVars.dynamicEddyViscosity() / outsideVolVars.sigmaK()) + outsideVolVars.viscosity();
 
  110        Scalar insideCoeff_e = (insideVolVars.dynamicEddyViscosity() / insideVolVars.sigmaEpsilon()) + insideVolVars.viscosity();
 
  111        Scalar outsideCoeff_e = (outsideVolVars.dynamicEddyViscosity() / outsideVolVars.sigmaEpsilon()) + outsideVolVars.viscosity();
 
  114        insideCoeff_k *= insideVolVars.extrusionFactor();
 
  115        outsideCoeff_k *= outsideVolVars.extrusionFactor();
 
  116        insideCoeff_e *= insideVolVars.extrusionFactor();
 
  117        outsideCoeff_e *= outsideVolVars.extrusionFactor();
 
  119        Scalar coeff_k = 0.0;
 
  120        Scalar coeff_e = 0.0;
 
  124            coeff_k = insideCoeff_k;
 
  125            coeff_e = insideCoeff_e;
 
  126            distance = (insideScv.dofPosition() - scvf.ipGlobal()).two_norm();
 
  134            distance = (outsideScv.dofPosition() - insideScv.dofPosition()).two_norm();
 
  137        const auto bcTypes = problem.boundaryTypes(element, scvf);
 
  139        if (!(scvf.boundary() && (bcTypes.isOutflow(Indices::turbulentKineticEnergyEqIdx)
 
  140            || bcTypes.isSymmetry()
 
  141            || bcTypes.hasWall())))
 
  143            if (!(insideVolVars.isMatchingPoint() && outsideVolVars.isMatchingPoint())
 
  144                || !(insideVolVars.isMatchingPoint() && outsideVolVars.inNearWallRegion())
 
  145                || !(insideVolVars.inNearWallRegion() && outsideVolVars.isMatchingPoint()))
 
  147                flux[turbulentKineticEnergyEqIdx]
 
  149                    * (insideVolVars.turbulentKineticEnergy() - outsideVolVars.turbulentKineticEnergy())
 
  150                    * Extrusion::area(fvGeometry, scvf);
 
  154        if (!(scvf.boundary() && (bcTypes.isOutflow(Indices::dissipationEqIdx)
 
  155            || bcTypes.isSymmetry())))
 
  157            flux[dissipationEqIdx]
 
  159                   * (insideVolVars.dissipation() - outsideVolVars.dissipation())
 
  160                   * Extrusion::area(fvGeometry, scvf);
 
 
  169                                             const Element& element,
 
  170                                             const SubControlVolumeFace& scvf,
 
  171                                             const FVElementGeometry& fvGeometry,
 
  172                                             const ElementVolumeVariables& elemVolVars,
 
  173                                             const ElementFaceVariables& elemFaceVars,
 
  174                                             const GridFluxVariablesCache& gridFluxVarsCache)
 
  176        const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
 
  178        return ParentType::computeFrontalMomentumFlux(problem, element, scvf, fvGeometry, elemVolVars, elemFaceVars, gridFluxVarsCache)
 
  179               + ParentType::computeLateralMomentumFlux(problem, element, scvf, fvGeometry, elemVolVars, elemFaceVars, gridFluxVarsCache)
 
  180               + 2.0 / ModelTraits::dim() * insideVolVars.density() * insideVolVars.turbulentKineticEnergy()
 
  181                 * Extrusion::area(fvGeometry, scvf) * scvf.directionSign() * insideVolVars.extrusionFactor();