12#ifndef DUMUX_KOMEGA_PROBLEM_HH
13#define DUMUX_KOMEGA_PROBLEM_HH
33template<
class TypeTag>
48 using Element =
typename GridGeometry::GridView::template Codim<0>::Entity;
49 using DimVector =
typename Element::Geometry::GlobalCoordinate;
64 storedDynamicEddyViscosity_.resize(this->
gridGeometry().elementMapper().size(), 0.0);
65 storedDissipation_.resize(this->
gridGeometry().elementMapper().size(), 0.0);
66 storedDissipationGradient_.resize(this->
gridGeometry().elementMapper().size(), DimVector(0.0));
67 storedTurbulentKineticEnergy_.resize(this->
gridGeometry().elementMapper().size(), 0.0);
68 storedTurbulentKineticEnergyGradient_.resize(this->
gridGeometry().elementMapper().size(), DimVector(0.0));
76 template<
class SolutionVector>
82 for (
const auto& element : elements(this->
gridGeometry().gridView()))
84 unsigned int elementIdx = this->
gridGeometry().elementMapper().index(element);
85 fvGeometry.bindElement(element);
87 for (
auto&& scv : scvs(fvGeometry))
89 const int dofIdx = scv.dofIndex();
90 const auto& cellCenterPriVars = curSol[GridGeometry::cellCenterIdx()][dofIdx];
94 storedDissipation_[elementIdx] = elemSol[0][Indices::dissipationEqIdx];
95 storedTurbulentKineticEnergy_[elementIdx] = elemSol[0][Indices::turbulentKineticEnergyEqIdx];
97 VolumeVariables volVars;
98 volVars.update(elemSol, asImp_(), element, scv);
99 storedDynamicEddyViscosity_[elementIdx] = volVars.calculateEddyViscosity(*
this);
104 for (
const auto& element : elements(this->
gridGeometry().gridView()))
106 const unsigned int elementIdx = this->
gridGeometry().elementMapper().index(element);
108 for (
unsigned int axisIdx = 0; axisIdx < DimVector::dimension; ++axisIdx)
114 storedTurbulentKineticEnergyGradient_[elementIdx][axisIdx]
118 storedDissipationGradient_[elementIdx][axisIdx]
136 {
return storedDynamicEddyViscosity_[elementIdx]; }
139 {
return storedTurbulentKineticEnergy_[elementIdx]; }
142 {
return storedDissipation_[elementIdx]; }
145 {
return storedTurbulentKineticEnergyGradient_[elementIdx]; }
148 {
return storedDissipationGradient_[elementIdx]; }
151 std::vector<Scalar> storedDynamicEddyViscosity_;
152 std::vector<Scalar> storedTurbulentKineticEnergy_;
153 std::vector<Scalar> storedDissipation_;
154 std::vector<DimVector> storedDissipationGradient_;
155 std::vector<DimVector> storedTurbulentKineticEnergyGradient_;
158 Implementation &asImp_()
159 {
return *
static_cast<Implementation *
>(
this); }
162 const Implementation &asImp_()
const
163 {
return *
static_cast<const Implementation *
>(
this); }
const std::string & paramGroup() const
The parameter group in which to retrieve runtime parameters.
Definition common/fvproblem.hh:524
const GridGeometry & gridGeometry() const
The finite volume grid geometry.
Definition common/fvproblem.hh:520
void updateDynamicWallProperties(const SolutionVector &curSol)
Update the dynamic (solution dependent) turbulence parameters.
Definition freeflow/rans/problem.hh:131
void updateStaticWallProperties()
Update the static (solution independent) relations to the walls and neighbors.
Definition freeflow/rans/problem.hh:115
GlobalPosition cellCenter(const int elementIdx) const
Definition freeflow/rans/problem.hh:256
unsigned int neighborIndex(const int elementIdx, const int axisIdx, const int sideIdx) const
Definition freeflow/rans/problem.hh:262
RANSProblemBase(std::shared_ptr< const GridGeometry > gridGeometry, const std::string ¶mGroup="")
The constructor.
Definition freeflow/rans/problem.hh:90
Scalar storedTurbulentKineticEnergy(const int elementIdx) const
Definition freeflow/rans/twoeq/komega/problem.hh:138
bool useStoredEddyViscosity() const
Definition freeflow/rans/twoeq/komega/problem.hh:129
Scalar storedDynamicEddyViscosity(const int elementIdx) const
Definition freeflow/rans/twoeq/komega/problem.hh:135
void updateStaticWallProperties()
Correct size of the static (solution independent) wall variables.
Definition freeflow/rans/twoeq/komega/problem.hh:59
DimVector storedTurbulentKineticEnergyGradient(const int elementIdx) const
Definition freeflow/rans/twoeq/komega/problem.hh:144
DimVector storedDissipationGradient(const int elementIdx) const
Definition freeflow/rans/twoeq/komega/problem.hh:147
void updateDynamicWallProperties(const SolutionVector &curSol)
Update the dynamic (solution dependent) relations to the walls.
Definition freeflow/rans/twoeq/komega/problem.hh:77
RANSProblemImpl(std::shared_ptr< const GridGeometry > gridGeometry, const std::string ¶mGroup="")
Definition freeflow/rans/twoeq/komega/problem.hh:52
Scalar storedDissipation(const int elementIdx) const
Definition freeflow/rans/twoeq/komega/problem.hh:141
const Scalar betaOmega() const
Returns the constant.
Definition freeflow/rans/twoeq/komega/problem.hh:126
Defines all properties used in Dumux.
the turbulence-model-specfic RANS problem
A single-phase, isothermal k-omega 2-Eq. model.
GridCache::LocalView localView(const GridCache &gridCache)
Free function to get the local view of a grid cache object.
Definition localview.hh:26
auto elementSolution(const Element &element, const SolutionVector &sol, const GridGeometry &gg) -> std::enable_if_t< GridGeometry::discMethod==DiscretizationMethods::cctpfa||GridGeometry::discMethod==DiscretizationMethods::ccmpfa, CCElementSolution< typename GridGeometry::LocalView, std::decay_t< decltype(std::declval< SolutionVector >()[0])> > >
Make an element solution for cell-centered schemes.
Definition cellcentered/elementsolution.hh:101
TurbulenceModel
The available free flow turbulence models in Dumux.
Definition turbulencemodel.hh:26
@ komega
Definition turbulencemodel.hh:27
T getParamFromGroup(Args &&... args)
A free function to get a parameter from the parameter tree singleton with a model group.
Definition parameters.hh:149
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:296
PrimaryVariables makePriVarsFromCellCenterPriVars(const CellCenterPrimaryVariables &cellCenterPriVars)
Helper function to create a PrimaryVariables object from CellCenterPrimaryVariables.
Definition staggered/elementsolution.hh:29
Free function to get the local view of a grid cache object.
The available discretization methods in Dumux.
The local element solution class for staggered methods.
Base class for all staggered fv problems.
The available free flow turbulence models in Dumux.