Howto IncompressibleWallRoughness
1 OBSOLETE OBSOLETE OBSOLETE
2 OBSOLOTE How to add wall roughness OBSOLETE
Im not sure if this is entirely correct, but the test I ran showed improved results on the pressure drop of a simple pipe flow.
The implementation follows the Fluent stuff, found at for instance here http://www.ipt.ntnu.no/manuals/Fluent.Inc/fluent6.3.26/help/html/ug//node253.htm
Go to the directory src/turbulenceModels/RAS/incompressible.
Open the file RASModel/RASModel.H and after the 'dimensionedScalar E_'-line add
dimensionedScalar kappa_; dimensionedScalar E_; //- Roughness height dimensionedScalar Ks_; //- Roughness constant dimensionedScalar Cs_;
Next, open up the file RASModel/RASModel.C and after the E_ constructor add
E_ ( dimensioned<scalar>::lookupOrAddToDict ( "E", subDict("wallFunctionCoeffs"), 9.0 ) ), Ks_ ( dimensioned<scalar>::lookupOrAddToDict ( "Ks", subDict("wallFunctionCoeffs"), 0.0 ) ), Cs_ ( dimensioned<scalar>::lookupOrAddToDict ( "Cs", subDict("wallFunctionCoeffs"), 0.0 ) ),
Next file to edit: wallFunctions/wallViscosityI.H Change the forAll-loop to what's below.
forAll(curPatch, facei) { label faceCelli = curPatch.faceCells()[facei]; scalar uStar = Cmu25*sqrt(k_[faceCelli]); scalar yPlus = y_[patchi][facei]*uStar/nuw[facei]; scalar KsPlus = Ks_.value()*uStar/nuw[facei]; // hydrodynamically smooth scalar logDB = 1.0; if (KsPlus > 2.25) { // fully rough if (KsPlus > 90.0) { logDB = 1.0 + Cs_.value()*KsPlus; } else // transitional { if (Ks_.value() > 0.0) { scalar n = ::sin(0.4258*(log(KsPlus) - 0.811)); scalar a = (KsPlus - 2.25)/87.75 + Cs_.value()*KsPlus; logDB = ::pow(a, n); } } } if (yPlus > yPlusLam_ || Ks_.value() > 0) { nutw[facei] = nuw[facei] *(yPlus*kappa_.value()/log(E_.value()*yPlus/logDB) - 1); } else { nutw[facei] = 0.0; } }
Now you just need to run 'wmake libso' to recompile the library.
The law of the wall states that
where is the addition due to surface roughness.
Using the fact that
we simply just need to modify the constant by the appropriate factor to incorporate the effect of
The only doubt I have is the line
if (yPlus > yPlusLam_ || Ks_.value() > 0)
which I modified so that if you have surface roughness, it always uses the log-law and it doesnt check if you're in the right region or not.
--Niklas 13:37, 16 December 2008 (CET)