Commit 6a01e63e authored by Ned Coltman's avatar Ned Coltman Committed by Melanie Lipp

[rans] Introduce a struct for the wallElementinformation, change...

[rans] Introduce a struct for the wallElementinformation, change HasChannelGeometry to IsFlatWallBounded, fix maximum/minimum velocity names (remove profile, add comments), flowNormalAxis to flowDirectionAxis,  sandgrainroughness default.
parent 6df55401
......@@ -334,7 +334,7 @@ private:
defaultParams["MPFA.Q"] = "0.0";
// parameters in the RANS group
defaultParams["RANS.HasChannelGeometry"] = "false";
defaultParams["RANS.IsFlatWallBounded"] = "false";
// merge the global default tree but do not overwrite if the parameter already exists
mergeTree_(params, defaultParams, false);
......
......@@ -40,11 +40,11 @@ struct RANSIOFields
{
NavierStokesIOFields::initOutputModule(out);
static const bool hasChannelGeometry = getParamFromGroup<bool>(out.paramGroup(), "RANS.HasChannelGeometry");
static const bool isFlatWallBounded = getParamFromGroup<bool>(out.paramGroup(), "RANS.IsFlatWallBounded");
static constexpr auto dim = decltype(std::declval<typename OutputModule::VolumeVariables>().ccVelocityVector())::dimension;
out.addVolumeVariable([](const auto& v){ return v.ccVelocityVector()[0] / v.profileVelocityMaximum()[0]; }, "v_x/v_x,max");
out.addVolumeVariable([](const auto& v){ return v.ccVelocityVector()[0] / v.velocityMaximum()[0]; }, "v_x/v_x,max");
out.addVolumeVariable([](const auto& v){ return v.velocityGradients()[0]; }, "dv_x/dx_");
if (dim > 1)
out.addVolumeVariable([](const auto& v){ return v.velocityGradients()[1]; }, "dv_y/dx_");
......@@ -54,7 +54,7 @@ struct RANSIOFields
out.addVolumeVariable([](const auto& v){ return v.viscosity() / v.density(); }, "nu");
out.addVolumeVariable([](const auto& v){ return v.kinematicEddyViscosity(); }, "nu_t");
out.addVolumeVariable([](const auto& v){ return v.wallDistance(); }, "l_w");
if (hasChannelGeometry)
if (isFlatWallBounded)
{
out.addVolumeVariable([](const auto& v){ return v.yPlus(); }, "y^+");
out.addVolumeVariable([](const auto& v){ return v.uPlus(); }, "u^+");
......
......@@ -80,6 +80,17 @@ class RANSProblemBase : public NavierStokesProblem<TypeTag>
using DimVector = GlobalPosition;
using DimMatrix = Dune::FieldMatrix<Scalar, dim, dim>;
struct WallElementInformation
{
// store the element indicies for all elements with an intersection on the wall
unsigned int wallElementIdx;
// for each wall element, store the faces normal axis
unsigned int wallFaceNormalAxis;
// for each wall element, store the location of the face center and each corner.
GlobalPosition wallFaceCenter;
std::array<GlobalPosition, numCorners> wallFaceCorners;
};
public:
/*!
* \brief The constructor
......@@ -111,18 +122,11 @@ public:
velocityGradients_.resize(this->gridGeometry().elementMapper().size(), DimMatrix(0.0));
stressTensorScalarProduct_.resize(this->gridGeometry().elementMapper().size(), 0.0);
vorticityTensorScalarProduct_.resize(this->gridGeometry().elementMapper().size(), 0.0);
flowNormalAxis_.resize(this->gridGeometry().elementMapper().size(), fixedFlowNormalAxis_);
flowDirectionAxis_.resize(this->gridGeometry().elementMapper().size(), fixedFlowDirectionAxis_);
wallNormalAxis_.resize(this->gridGeometry().elementMapper().size(), fixedWallNormalAxis_);
kinematicViscosity_.resize(this->gridGeometry().elementMapper().size(), 0.0);
// store the element indicies for all elements with an intersection on the wall
std::vector<unsigned int> wallElementIndicies;
// for each wall element, store the location of the face center and each corner.
std::vector<std::array<GlobalPosition, numCorners+1>> wallPositions;
// for each wall element, store the faces normal axis
std::vector<unsigned int> wallFaceNormalAxis;
std::vector<WallElementInformation> wallElements;
const auto gridView = this->gridGeometry().gridView();
auto fvGeometry = localView(this->gridGeometry());
......@@ -138,51 +142,53 @@ public:
if (asImp_().isOnWall(scvf))
{
// element has an scvf on the wall, store element index
wallElementIndicies.push_back(this->gridGeometry().elementMapper().index(element));
WallElementInformation wallElementInformation;
// store the location of the wall adjacent face's center and all corners
std::array<GlobalPosition, numCorners+1> wallElementPosition;
wallElementPosition[0] = scvf.center();
for (int i = 1; i <= numCorners; i++)
wallElementPosition[i] = scvf.corner(i-1);
wallPositions.push_back(wallElementPosition);
// Store the wall adjacent face's normal direction
wallFaceNormalAxis.push_back(scvf.directionIndex());
wallElementInformation.wallFaceCenter = scvf.center();
for (int i = 0; i < numCorners; i++)
wallElementInformation.wallFaceCorners[i] = scvf.corner(i);
// Store the wall element index and face's normal direction (used only with isFlatWallBounded on)
wallElementInformation.wallElementIdx = this->gridGeometry().elementMapper().index(element);
wallElementInformation.wallFaceNormalAxis = scvf.directionIndex();
wallElements.push_back(wallElementInformation);
}
}
}
// output the number of wall adjacent faces. Check that this is non-zero.
std::cout << "NumWallIntersections=" << wallPositions.size() << std::endl;
if (wallPositions.size() == 0)
std::cout << "NumWallIntersections=" << wallElements.size() << std::endl;
if (wallElements.size() == 0)
DUNE_THROW(Dune::InvalidStateException,
"No wall intersections have been found. Make sure that the isOnWall(globalPos) is working properly.");
// search for shortest distance to the wall for each element
for (const auto& element : elements(gridView))
{
unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
// Store the cell center position for each element
unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
cellCenter_[elementIdx] = element.geometry().center();
for (unsigned int i = 0; i < wallPositions.size(); ++i)
for (unsigned int i = 0; i < wallElements.size(); ++i)
{
// Find the minimum distance from the cell center to the wall face (center and corners)
std::array<Scalar,numCorners+1> cellToWallDistances;
for (unsigned int j = 0; j < wallPositions[i].size(); j++)
cellToWallDistances[j] = (cellCenter(elementIdx) - wallPositions[i][j]).two_norm();
for (unsigned int j = 0; j < numCorners; j++)
cellToWallDistances[j] = (cellCenter(elementIdx) - wallElements[i].wallFaceCorners[j]).two_norm();
cellToWallDistances[numCorners] = (cellCenter(elementIdx) - wallElements[i].wallFaceCenter).two_norm();
Scalar distanceToWall = *std::min_element(cellToWallDistances.begin(), cellToWallDistances.end());
if (distanceToWall < wallDistance_[elementIdx])
{
wallDistance_[elementIdx] = distanceToWall;
if (hasChannelGeometry())
wallElementIdx_[elementIdx] = wallElementIndicies[i];
if ( !(hasParam("RANS.WallNormalAxis")) )
wallNormalAxis_[elementIdx] = wallFaceNormalAxis[i];
// If isFlatWallBounded, the corresonding wall element is stored for each element
if (isFlatWallBounded())
{
wallElementIdx_[elementIdx] = wallElements[i].wallElementIdx;
if ( !(hasParam("RANS.WallNormalAxis")) )
wallNormalAxis_[elementIdx] = wallElements[i].wallFaceNormalAxis;
}
}
}
}
......@@ -234,10 +240,6 @@ public:
DUNE_THROW(Dune::InvalidStateException,
"You have to call updateStaticWallProperties() once before you call updateDynamicWallProperties().");
// re-initialize min and max values
velocityMaximum_.assign(this->gridGeometry().elementMapper().size(), DimVector(1e-16));
velocityMinimum_.assign(this->gridGeometry().elementMapper().size(), DimVector(std::numeric_limits<Scalar>::max()));
calculateCCVelocities_(curSol);
calculateCCVelocityGradients_();
calculateMaxMinVelocities_();
......@@ -303,10 +305,10 @@ public:
"The problem does not provide an isOnWall() method.");
}
bool hasChannelGeometry() const
bool isFlatWallBounded() const
{
static const bool hasChannelGeometry = getParamFromGroup<bool>(this->paramGroup(), "RANS.HasChannelGeometry");
return hasChannelGeometry;
static const bool isFlatWallBounded = getParamFromGroup<bool>(this->paramGroup(), "RANS.IsFlatWallBounded");
return isFlatWallBounded;
}
/*!
......@@ -344,13 +346,29 @@ public:
}
int wallNormalAxis(const int elementIdx) const
{ return wallNormalAxis_[elementIdx]; }
{
if (!isFlatWallBounded())
DUNE_THROW(Dune::NotImplemented, "\n Due to grid/geometric concerns, models requiring a wallNormalAxis can only be used for flat wall bounded flows. "
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.IsFlatWallBounded to true. \n");
return wallNormalAxis_[elementIdx];
}
int flowNormalAxis(const int elementIdx) const
{ return flowNormalAxis_[elementIdx]; }
int flowDirectionAxis(const int elementIdx) const
{
if (!isFlatWallBounded())
DUNE_THROW(Dune::NotImplemented, "\n Due to grid/geometric concerns, models requiring a flowDirectionAxis can only be used for flat wall bounded flows. "
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.IsFlatWallBounded to true. \n");
return flowDirectionAxis_[elementIdx];
}
unsigned int wallElementIndex(const int elementIdx) const
{ return wallElementIdx_[elementIdx]; }
{
if (!isFlatWallBounded())
DUNE_THROW(Dune::NotImplemented, "\n Due to grid/geometric concerns, models requiring a wallElementIndex can only be used for flat wall bounded flows. "
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.IsFlatWallBounded to true. \n");
return wallElementIdx_[elementIdx];
}
Scalar wallDistance(const int elementIdx) const
{ return wallDistance_[elementIdx]; }
......@@ -367,10 +385,10 @@ public:
Scalar ccVelocity(const int elementIdx, const int dimIdx) const
{ return velocity_[elementIdx][dimIdx]; }
DimVector profileVelocityMaximum(const int elementIdx) const
DimVector velocityMaximum(const int elementIdx) const
{ return velocityMaximum_[elementIdx]; }
DimVector profileVelocityMinimum(const int elementIdx) const
DimVector velocityMinimum(const int elementIdx) const
{ return velocityMinimum_[elementIdx]; }
DimMatrix velocityGradientTensor(const int elementIdx) const
......@@ -510,17 +528,21 @@ private:
void calculateMaxMinVelocities_()
{
using std::abs;
if (hasChannelGeometry())
if (isFlatWallBounded())
{
// If the parameter isFlatWallBounded is set to true,
// the maximum/minimum velocities are calculated along a profile perpendicular to the corresponding wall face.
// re-initialize min and max values
velocityMaximum_.assign(this->gridGeometry().elementMapper().size(), DimVector(1e-16));
velocityMinimum_.assign(this->gridGeometry().elementMapper().size(), DimVector(std::numeric_limits<Scalar>::max()));
// For each profile perpendicular to the channel wall, find the max and minimum velocities
for (const auto& element : elements(this->gridGeometry().gridView()))
{
const unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
Scalar maxVelocity = 0.0;
const unsigned int wallElementIdx = wallElementIdx_[elementIdx];
const unsigned int wallElementIdx = wallElementIndex(elementIdx);
for (unsigned int dimIdx = 0; dimIdx < dim; ++dimIdx)
{
......@@ -530,16 +552,20 @@ private:
if (abs(ccVelocity(elementIdx, dimIdx)) < abs(velocityMinimum_[wallElementIdx][dimIdx]))
velocityMinimum_[wallElementIdx][dimIdx] = ccVelocity(elementIdx, dimIdx);
if ((hasParam("RANS.FlowNormalAxis") != 1) && (maxVelocity) < abs(ccVelocity(elementIdx, dimIdx)))
// Set the flow direction axis as the direction of the max velocity
if ((hasParam("RANS.FlowDirectionAxis") != 1) && (maxVelocity) < abs(ccVelocity(elementIdx, dimIdx)))
{
maxVelocity = abs(ccVelocity(elementIdx, dimIdx));
flowNormalAxis_[elementIdx] = dimIdx;
flowDirectionAxis_[elementIdx] = dimIdx;
}
}
}
}
else
{
// If the parameter isFlatWallBounded is set to false, or not set,
// the maximum/minimum velocities are calculated as a global max/min throughout the domain.
DimVector maxVelocity(0.0);
DimVector minVelocity(std::numeric_limits<Scalar>::max());
// Find the max and minimum velocities in the full domain
......@@ -634,11 +660,11 @@ private:
}
}
const int fixedFlowNormalAxis_ = getParam<int>("RANS.FlowNormalAxis", 0);
const int fixedFlowDirectionAxis_ = getParam<int>("RANS.FlowDirectionAxis", 0);
const int fixedWallNormalAxis_ = getParam<int>("RANS.WallNormalAxis", 1);
std::vector<unsigned int> wallNormalAxis_;
std::vector<unsigned int> flowNormalAxis_;
std::vector<unsigned int> flowDirectionAxis_;
std::vector<Scalar> wallDistance_;
std::vector<unsigned int> wallElementIdx_;
std::vector<GlobalPosition> cellCenter_;
......
......@@ -92,11 +92,11 @@ public:
*/
void updateStaticWallProperties()
{
if (ParentType::hasChannelGeometry() != 1)
if (!ParentType::isFlatWallBounded())
{
DUNE_THROW(Dune::NotImplemented, "\n Due to grid/geometric concerns, k-epsilon models should only be used for "
<< " wall bounded flows with flat channel geometries. "
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.HasChannelGeometry to true. \n");
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.IsFlatWallBounded to true. \n");
}
ParentType::updateStaticWallProperties();
......@@ -253,8 +253,8 @@ public:
}
unsigned int wallNormalAxis = asImp_().wallNormalAxis(elementIdx);
unsigned int flowNormalAxis = asImp_().flowNormalAxis(elementIdx);
Scalar velocityGradient = asImp_().velocityGradient(elementIdx, flowNormalAxis, wallNormalAxis);
unsigned int flowDirectionAxis = asImp_().flowDirectionAxis(elementIdx);
Scalar velocityGradient = asImp_().velocityGradient(elementIdx, flowDirectionAxis, wallNormalAxis);
return mixingLength * mixingLength * abs(velocityGradient) * storedDensity(elementIdx);
}
......@@ -265,9 +265,9 @@ public:
using std::sqrt;
unsigned int wallElementIdx = asImp_().wallElementIndex(elementIdx);
unsigned int wallNormalAxis = asImp_().wallNormalAxis(elementIdx);
unsigned int flowNormalAxis = asImp_().flowNormalAxis(elementIdx);
unsigned int flowDirectionAxis = asImp_().flowDirectionAxis(elementIdx);
return sqrt(asImp_().kinematicViscosity(wallElementIdx)
* abs(asImp_().velocityGradient(wallElementIdx, flowNormalAxis, wallNormalAxis)));
* abs(asImp_().velocityGradient(wallElementIdx, flowDirectionAxis, wallNormalAxis)));
}
//! \brief Returns the nominal wall shear stress velocity (accounts for poor approximation of viscous sublayer)
......
......@@ -89,9 +89,9 @@ public:
storedTurbulentKineticEnergy_ = problem.storedTurbulentKineticEnergy(RANSParentType::elementIdx());
stressTensorScalarProduct_ = problem.stressTensorScalarProduct(RANSParentType::elementIdx());
const Scalar uStarNominal = problem.uStarNominal(RANSParentType::elementIdx());
const auto flowNormalAxis = problem.flowNormalAxis(RANSParentType::elementIdx());
const auto flowDirectionAxis = problem.flowDirectionAxis(RANSParentType::elementIdx());
yPlusNominal_ = RANSParentType::wallDistance() * uStarNominal / problem.kinematicViscosity(RANSParentType::elementIdx());
uPlusNominal_ = RANSParentType::ccVelocityVector()[flowNormalAxis] / uStarNominal;
uPlusNominal_ = RANSParentType::ccVelocityVector()[flowDirectionAxis] / uStarNominal;
cMu_ = problem.cMu();
if (problem.useStoredEddyViscosity())
RANSParentType::setDynamicEddyViscosity_(problem.storedDynamicEddyViscosity(RANSParentType::elementIdx()));
......
......@@ -96,18 +96,21 @@ public:
wallDistance_ = problem.wallDistance(elementIdx_);
ccVelocityVector_ = problem.ccVelocityVector(elementIdx_);
velocityGradientTensor_ = problem.velocityGradientTensor(elementIdx_);
const auto flowNormalAxis = problem.flowNormalAxis(elementIdx_);
const auto wallNormalAxis = problem.wallNormalAxis(elementIdx_);
karmanConstant_ = problem.karmanConstant();
profileVelocityMaximum_ = problem.profileVelocityMaximum(problem.wallElementIndex(elementIdx_));
profileVelocityMinimum_ = problem.profileVelocityMinimum(problem.wallElementIndex(elementIdx_));
if (problem.hasChannelGeometry())
velocityMaximum_ = problem.velocityMaximum(elementIdx_);
velocityMinimum_ = problem.velocityMinimum(elementIdx_);
if (problem.isFlatWallBounded())
{
const auto flowDirectionAxis = problem.flowDirectionAxis(elementIdx_);
const auto wallNormalAxis = problem.wallNormalAxis(elementIdx_);
velocityMaximum_ = problem.velocityMaximum(problem.wallElementIndex(elementIdx_));
velocityMinimum_ = problem.velocityMinimum(problem.wallElementIndex(elementIdx_));
uStar_ = sqrt(problem.kinematicViscosity(problem.wallElementIndex(elementIdx_))
* abs(problem.velocityGradient(problem.wallElementIndex(elementIdx_), flowNormalAxis, wallNormalAxis)));
* abs(problem.velocityGradient(problem.wallElementIndex(elementIdx_), flowDirectionAxis, wallNormalAxis)));
uStar_ = max(uStar_, 1e-10); // zero values lead to numerical problems in some turbulence models
yPlus_ = wallDistance_ * uStar_ / problem.kinematicViscosity(elementIdx_);
uPlus_ = problem.ccVelocity(elementIdx_, flowNormalAxis) / uStar_;
uPlus_ = problem.ccVelocity(elementIdx_, flowDirectionAxis) / uStar_;
}
}
......@@ -126,14 +129,14 @@ public:
/*!
* \brief Return the maximum velocity vector \f$\mathrm{[m/s]}\f$ of the wall segment.
*/
DimVector profileVelocityMaximum() const
{ return profileVelocityMaximum_; }
DimVector velocityMaximum() const
{ return velocityMaximum_; }
/*!
* \brief Return the minimum velocity vector \f$\mathrm{[m/s]}\f$ of the wall segment.
*/
DimVector profileVelocityMinimum() const
{ return profileVelocityMinimum_; }
DimVector velocityMinimum() const
{ return velocityMinimum_; }
/*!
* \brief Return the velocity gradients \f$\mathrm{[1/s]}\f$ at the control volume center.
......@@ -264,8 +267,8 @@ protected:
{ return dynamicEddyViscosity_ = value; }
DimVector ccVelocityVector_;
DimVector profileVelocityMaximum_;
DimVector profileVelocityMinimum_;
DimVector velocityMaximum_;
DimVector velocityMinimum_;
DimMatrix velocityGradientTensor_;
std::size_t elementIdx_;
Scalar wallDistance_;
......
......@@ -85,10 +85,10 @@ public:
*/
void updateStaticWallProperties()
{
if (ParentType::hasChannelGeometry() != 1)
if (!ParentType::isFlatWallBounded())
{
DUNE_THROW(Dune::NotImplemented, "\n Due to grid/geometric concerns, zero-eq models should only be used for flat channel geometries. "
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.HasChannelGeometry to true. \n");
<< "\n If your geometry is a flat channel, please set the runtime parameter RANS.IsFlatWallBounded to true. \n");
}
ParentType::updateStaticWallProperties();
......@@ -149,13 +149,13 @@ public:
{
unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
Scalar effectiveWallDistance = asImp_().wallDistance(elementIdx) + additionalRoughnessLength(elementIdx);
unsigned int flowNormalAxis = this->flowNormalAxis(elementIdx);
unsigned int flowDirectionAxis = this->flowDirectionAxis(elementIdx);
unsigned int wallNormalAxis = this->wallNormalAxis(elementIdx);
Scalar omegaAbs = abs(this->velocityGradient(elementIdx, flowNormalAxis, wallNormalAxis)
- this->velocityGradient(elementIdx, wallNormalAxis, flowNormalAxis));
Scalar omegaAbs = abs(this->velocityGradient(elementIdx, flowDirectionAxis, wallNormalAxis)
- this->velocityGradient(elementIdx, wallNormalAxis, flowDirectionAxis));
Scalar uStar = sqrt(this->kinematicViscosity(asImp_().wallElementIndex(elementIdx))
* abs(this->velocityGradient(asImp_().wallElementIndex(elementIdx), flowNormalAxis, wallNormalAxis)));
* abs(this->velocityGradient(asImp_().wallElementIndex(elementIdx), flowDirectionAxis, wallNormalAxis)));
Scalar yPlus = effectiveWallDistance * uStar / this->kinematicViscosity(elementIdx);
Scalar mixingLength = this->karmanConstant() * effectiveWallDistance * (1.0 - exp(-yPlus / aPlus));
kinematicEddyViscosityInner[elementIdx] = mixingLength * mixingLength * omegaAbs;
......@@ -178,10 +178,10 @@ public:
Scalar minVelocityNorm = 0.0;
for (unsigned dimIdx = 0; dimIdx < dim; ++dimIdx)
{
maxVelocityNorm += asImp_().profileVelocityMaximum(asImp_().wallElementIndex(elementIdx))[dimIdx]
* asImp_().profileVelocityMaximum(asImp_().wallElementIndex(elementIdx))[dimIdx];
minVelocityNorm += asImp_().profileVelocityMinimum(asImp_().wallElementIndex(elementIdx))[dimIdx]
* asImp_().profileVelocityMinimum(asImp_().wallElementIndex(elementIdx))[dimIdx];
maxVelocityNorm += asImp_().velocityMaximum(asImp_().wallElementIndex(elementIdx))[dimIdx]
* asImp_().velocityMaximum(asImp_().wallElementIndex(elementIdx))[dimIdx];
minVelocityNorm += asImp_().velocityMinimum(asImp_().wallElementIndex(elementIdx))[dimIdx]
* asImp_().velocityMinimum(asImp_().wallElementIndex(elementIdx))[dimIdx];
}
Scalar deltaU = sqrt(maxVelocityNorm) - sqrt(minVelocityNorm);
......@@ -243,7 +243,7 @@ private:
bool printedRangeWarning = false;
for (const auto& element : elements(this->gridGeometry().gridView()))
{
static const Scalar sandGrainRoughness = getParamFromGroup<Scalar>(this->paramGroup(), "Problem.SandGrainRoughness", 0.0);
static const Scalar sandGrainRoughness = getParamFromGroup<Scalar>(this->paramGroup(), "Problem.SandGrainRoughness");
unsigned int elementIdx = this->gridGeometry().elementMapper().index(element);
auto fvGeometry = localView(this->gridGeometry());
......
......@@ -108,9 +108,9 @@ public:
using std::exp;
using std::sqrt;
Scalar kinematicEddyViscosity = 0.0;
unsigned int flowNormalAxis = problem.flowNormalAxis(RANSParentType::elementIdx());
unsigned int flowDirectionAxis = problem.flowDirectionAxis(RANSParentType::elementIdx());
unsigned int wallNormalAxis = problem.wallNormalAxis(RANSParentType::elementIdx());
Scalar velGrad = abs(RANSParentType::velocityGradients()[flowNormalAxis][wallNormalAxis]);
Scalar velGrad = abs(RANSParentType::velocityGradients()[flowDirectionAxis][wallNormalAxis]);
if (modelName.compare("none") == 0)
{
......
......@@ -15,7 +15,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_kepsilon_twolayers
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_kepsilon_twolayers-00070.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_kepsilon params.input
-Problem.Name test_ff_rans_lauferpipe_kepsilon_twolayers
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
dumux_add_test(NAME test_ff_rans_lauferpipe_kepsilon_wallfunction
TARGET test_ff_rans_lauferpipe_kepsilon
......@@ -28,7 +28,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_kepsilon_wallfunction
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_kepsilon_wallfunction-00034.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_kepsilon params_wallfunction.input
-Problem.Name test_ff_rans_lauferpipe_kepsilon_wallfunction
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
dumux_add_test(NAME test_ff_rans_lauferpipe_lowrekepsilon
SOURCES main.cc
......@@ -41,7 +41,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_lowrekepsilon
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_lowrekepsilon-00053.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_lowrekepsilon params.input
-Problem.Name test_ff_rans_lauferpipe_lowrekepsilon
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
add_executable(test_ff_rans_lauferpipe_komega EXCLUDE_FROM_ALL main.cc)
......@@ -57,7 +57,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_komega_channel
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_komega-00047.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_komega params.input
-Problem.Name test_ff_rans_lauferpipe_komega
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
dumux_add_test(NAME test_ff_rans_lauferpipe_komega_nochannel
TARGET test_ff_rans_lauferpipe_komega
......@@ -81,7 +81,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_oneeq
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_oneeq-00044.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_oneeq params.input
-Problem.Name test_ff_rans_lauferpipe_oneeq
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
dumux_add_test(NAME test_ff_rans_lauferpipe_zeroeq
SOURCES main.cc
......@@ -94,7 +94,7 @@ dumux_add_test(NAME test_ff_rans_lauferpipe_zeroeq
${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_zeroeq-00035.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/test_ff_rans_lauferpipe_zeroeq params.input
-Problem.Name test_ff_rans_lauferpipe_zeroeq
-RANS.HasChannelGeometry True")
-RANS.IsFlatWallBounded True")
#///////////////////////////////
#/// The nonisothermal tests ///
......
......@@ -22,7 +22,7 @@ EnableGravity = false
EddyViscosityModel = "baldwinLomax"
TurbulentPrandtlNumber = 0.85
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[Assembly]
NumericDifferenceMethod = 0
......
......@@ -22,7 +22,7 @@ YPlusThreshold = 10. # should be small (10-30) for coarse grids
[RANS]
TurbulentPrandtlNumber = 0.85
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[Assembly]
NumericDifferenceMethod = 0
......
......@@ -20,7 +20,7 @@ SandGrainRoughness = 0.0 # [m] # not implemented for EddyViscosityModel = 3
[RANS]
EddyViscosityModel = "baldwinLomax"
UseStoredEddyViscosity = false
HasChannelGeometry = True
IsFlatWallBounded = True
[KEpsilon]
YPlusThreshold = 60. # should be large (30-60) for fine grids
......
......@@ -22,7 +22,7 @@ InletMoleFraction = 1e-3
EddyViscosityModel = "prandtl"
TurbulentSchmidtNumber = 0.7
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[Assembly]
NumericDifferenceMethod = 0
......
......@@ -20,7 +20,7 @@ EddyViscosityModel = "prandtl"
TurbulentSchmidtNumber = 0.7
TurbulentPrandtlNumber = 0.85
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[Assembly]
NumericDifferenceMethod = 0
......
......@@ -18,7 +18,7 @@ EnableGravity = false
TurbulentSchmidtNumber = 0.7
TurbulentPrandtlNumber = 0.85
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[KEpsilon]
YPlusThreshold = 10. # should be small (10-30) for coarse grids
......
......@@ -21,7 +21,7 @@ InletMoleFraction = 1e-3
TurbulentSchmidtNumber = 0.7
TurbulentPrandtlNumber = 0.85
WallNormalAxis = 1
HasChannelGeometry = True
IsFlatWallBounded = True
[KEpsilon]
YPlusThreshold = 10. # should be small (10-30) for coarse grids
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment