65 ParentType::updateStaticWallProperties();
68 storedDynamicEddyViscosity_.resize(this->gridGeometry().elementMapper().size(), 0.0);
69 storedViscosityTilde_.resize(this->gridGeometry().elementMapper().size(), 0.0);
70 storedViscosityTildeGradient_.resize(this->gridGeometry().elementMapper().size(), DimVector(0.0));
81 ParentType::updateDynamicWallProperties(curSol);
83 auto fvGeometry =
localView(this->gridGeometry());
84 for (
const auto& element : elements(this->gridGeometry().gridView()))
86 unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
87 fvGeometry.bindElement(element);
89 for (
auto&& scv : scvs(fvGeometry))
91 const int dofIdx = scv.dofIndex();
92 const auto& cellCenterPriVars = curSol[GridGeometry::cellCenterIdx()][dofIdx];
93 PrimaryVariables priVars = makePriVarsFromCellCenterPriVars<PrimaryVariables>(cellCenterPriVars);
94 auto elemSol = elementSolution<typename GridGeometry::LocalView>(std::move(priVars));
96 storedViscosityTilde_[elementIdx] = elemSol[0][Indices::viscosityTildeIdx];
98 VolumeVariables volVars;
99 volVars.update(elemSol, asImp_(), element, scv);
100 storedDynamicEddyViscosity_[elementIdx] = volVars.calculateEddyViscosity();
105 for (
const auto& element : elements(this->gridGeometry().gridView()))
107 const unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
108 fvGeometry.bindElement(element);
110 for (
unsigned int axisIdx = 0; axisIdx < Grid::dimension; ++axisIdx)
112 const unsigned int neighborIndex0 = ParentType::neighborIndex(elementIdx, axisIdx, 0);
113 const unsigned int neighborIndex1 = ParentType::neighborIndex(elementIdx, axisIdx, 1);
116 storedViscosityTildeGradient_[elementIdx][axisIdx]
117 = (storedViscosityTilde(neighborIndex1) - storedViscosityTilde(neighborIndex0))
118 / (ParentType::cellCenter(neighborIndex1)[axisIdx] - ParentType::cellCenter(neighborIndex0)[axisIdx]);
122 for (
auto&& scvf : scvfs(fvGeometry))
124 const unsigned int normDim = scvf.directionIndex();
125 if (scvf.boundary() && asImp_().boundaryTypes(element, scvf).isDirichlet(Indices::viscosityTildeIdx))
128 Scalar dirichletViscosityTilde = asImp_().dirichlet(element, scvf)[Indices::viscosityTildeIdx];
130 unsigned int neighborIndex = ParentType::neighborIndex(elementIdx, normDim, 0);
131 if (scvf.center()[normDim] < ParentType::cellCenter(elementIdx)[normDim])
132 neighborIndex = ParentType::neighborIndex(elementIdx, normDim, 1);
134 storedViscosityTildeGradient_[elementIdx][normDim]
135 = (storedViscosityTilde(neighborIndex) - dirichletViscosityTilde)
136 / (ParentType::cellCenter(neighborIndex)[normDim] - scvf.center()[normDim]);