CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   nutRoughWallFunction and Surface Roughness Documented (https://www.cfd-online.com/Forums/openfoam-programming-development/71412-nutroughwallfunction-surface-roughness-documented.html)

davidfuhrman July 15, 2011 05:57

I also initially experienced the problem that the same solution was returned, regardless of the roughness Ks, when using nutRoughWallFunction (OpenFoam version 1.6-ext, and a variant of kOmega for the turbulence model). However, after some inspection, the reason was that my first grid point was too small i.e. not in the log layer, hence the code was essentially treating the wall as smooth, as far as I could tell.

If you check in nutRoughWallFunctionFvPatchScalerField.C, there is an if statement that is only entered if yPlus is greater than yPlusLam, which seems to be taken as 11.5301 (I inserted a temporary Info statement, just to write it to my screen during simulations). Hence, if your first grid point is below this value, then the if statement is not entered, and nutw is not modified.

If you want to model roughness properly with these wall functions, as I see it, care must be taken such that the first cell center should be the order of the roughness length Ks. This will ensure that it is sufficiently large to lie in the log layer for a rough wall. Alternatively, this strategy will also (apparently) lead to a wall being treated as smooth, for sufficiently small Ks (and hence grid size).

Cheers,
David

aerothermal July 15, 2011 11:13

Hi David,

Yes, you are right regarding the Y+ distance when simulating roughness. It does not have physical sense to calculate the turbulent boundary layer profiles where there is a roughness elements.

Below the Y+ that corresponds to Ks, the OF considers/assumes a sub-layer is that viscous/laminar. Actually the presence of the roughness causes a shift in the U+ profile so increasing the laminar region. However, depending on shape and distribution of the roughness the profile may not follow that of laminar sub-layer.

The heat transfer is even more complicated because the increasing height of the roughness will degrate the heat flux due to effect of an additional thermal resistance. This is the reason why the direct Pr_t analogy does not work well. This is the assumption made by OpenFoam, however, there is a need to correct the analogy to take into account the effect of roughness sub-layer thermal resistance.

This fact becomes a real challenge when the roughness equivalent height Ks (or the Reynolds roughness number Re_k=u_tau \cdot Ks / \nu) is high.

See references:
http://papers.sae.org/2011-38-0023/
http://www.cfd-online.com/Forums/ope...tml#post307393

Regards,

Guilherme

hei@ge January 5, 2012 01:04

Hi,friend.I now use simplefoam to calculate windfarm. The ground condition of nut is nutroughwallfunction,but the profile of velocity from inlet to outlet are not fit very well,The max error is about 16%.So i guess it is the problem of Ks and Cs.My z0 is 0.03.Ks=(10/Cs)*z0.Can you give me some advice about my problem.

aerothermal January 5, 2012 14:19

Hi hei@ge,

take a look at Tapia thesis...you may find how to make a map of Cs to simulate your terrain.

http://hig.diva-portal.org/smash/get...936/FULLTEXT01

Regards,

Aerothermal

hei@ge January 6, 2012 22:52

Hi,Aerothermal.I think it will be helpful.Now my epsilon's ground condition is epsilonwallfunction,and it works well.Thanks a lot.

aerothermal January 8, 2012 08:42

Hi hei@ge

After thinking about the problem, I also suggest to you to implemet your own Cs function inside the wallFunction by modifying the source code itself and making a new model customized for your case.

I implemented a new Cs based on Stanford group work (Kays and Crawford book on convective heat transfer) and wall function in the paper:
http://www.ats4i.com.br/en/publicati...11-38-0023.pdf

Several reasons led me to implement that model but the important point is that sometimes you will need to modify the source code in order to get the the code work for you purposes. Remember that eventually OpenFoam was not implemented to run your specific case.

Regards,

Aerothermal

pug January 18, 2012 10:45

Hello all,

Would somebody be able to confirm for me from where the equation underlying nutkRoughWallFunction is taken from? Is it the same implementation of rough walls as in Fluent? Or is there another paper/document which describes the derivation of the function used?

I'm trying to choose appropriate Ks for my atmospheric roughness length (r0) following Blocken et al. (2007), but without knowing the basic function used I can't be sure of the correct relationship between Ks and r0. My attempts at unravelling the source code haven't been enlightening so far..., but then I'm new to C++...

Any help much appreciated!

Cheers,

Tom

Jos February 21, 2015 11:37

nutkRoughWallFunction
 
Quote:

Originally Posted by maddalena (Post 260766)
Well.. Since nutRoughWallFunction is defined in 0/nut file for every patch, I simply need to define a different Ks and Cs for the patch I want a different roughness... :o Yeah, that's sound obvious now!

mad

Dear Maddalena,

Do you know how to implement nutkRoughWallFunction in OpenFoam 2.3.0 version? the parameters Ks and Cs are the same, but it is necessary to add a vaule at 0/nut dict. Could you provide an example of the usage of this wall function?

Thank you very much.

harsha_kulkarni July 31, 2015 02:47

Quote:

Originally Posted by Jos (Post 532789)
Dear Maddalena,

Do you know how to implement nutkRoughWallFunction in OpenFoam 2.3.0 version? the parameters Ks and Cs are the same, but it is necessary to add a vaule at 0/nut dict. Could you provide an example of the usage of this wall function?

Thank you very much.

Dear Jos,

I am also stuck at this point. Have you figured out correct syntax to implement nutkRoughWallFunction in OpenFoam 2.3.0?

Harsha

Divyaprakash August 30, 2015 02:55

Surface roughness of seabed
 
I need to solve a case where there is flow over a rough seabed with the roughness given as Zw =1E-6m where zw = d(50)/12, where d(50) is the median grain size diameter.

Where do I specify these values in OpenFoam. Is there a similar tutorial case?

fabian_roesler September 1, 2015 02:20

You have to use a special nutWallFuction for rough walls. There you can specify the roughness:

Quote:

This boundary condition provides a turbulent kinematic viscosity condition when using wall functions for rough walls, based on turbulence kinetic energy. The condition manipulates the E parameter to account for roughness effects. Parameter ranges

roughness height = sand-grain roughness (0 for smooth walls)
roughness constant = 0.5-1.0

myPatch
{
type nutkRoughWallFunction;
Ks uniform 0;
Cs uniform 0.5;
}

Divyaprakash September 5, 2015 02:28

Thank You!

kodexys June 21, 2016 11:45

Hello everyone,

I'm a beginner trying to find a rough wall flow simulation sample case. Does anyone know of any out there?

If not, then I would like some guidance on making one. I have done successful simulations for smooth foils, but now want to run simulations for rough foils. Any help would be greatly appreciated.

---

Hello everyone, I'm searching for some validation on my implementation of surface roughness. By that I mean the code works but I'm not sure if it's giving me the right results.

Here is my turbulenceProperties:
Code:

simulationType RAS;
RAS
{
    RASModel    kOmegaSST;
    turbulence    on;
    printCoeffs    on;
    kOmegaSSTCoeffs
    {
          F3    yes;
    }
}

This is the boundary condition for the foil I want to simulate roughness for in the nut file:
Code:

Foil
{
    type    nutURoughWallFunction;
    roughnessHeight 1e-5;
    roughnessConstant 0.5;
    roughnessFactor  1;
    value    0;
}

Does this seem legitimate to anyone who has ran any cases like this before? I'm a little confused over why I need the value parameter.

Any help would be appreciated!

---

Hi Jos and Harsha,

Have you folks figured out implementing nutkRoughWallFunction?

Kevin

---

Hi Divya,

Did you have any luck with that case? I'm trying to perform simulations of rough foils, but no matter what I do it doesn't seem to be performing any different from a smooth foil. The y+ values do vary, but lift, drag, and pressure only vary quite slightly if they do at all.

---

Hello everyone,

Does anyone know how nutURoughWallFunction and nutkRoughWallFunction work to account for roughness? I know that they both have roughness height and roughness constant parameters but I don't know how they are used. Is there some equation that they use? I couldn't find anything in the source code. Maybe I missed something.

I'm also having trouble figuring out what the E parameter is that nutkRoughWallFunction uses.

---

Hey everyone, I'm trying to use the nutkRoughWallFunction for rough foils but no matter how I vary the parameters, I get the same results for lift, drag, and inception cavitation number. Here is my nut file, and to my inexperience, which is where roughness is implemented. Am I missing anything? Any help would be greatly appreciated.

Code:

/*--------------------------------*- C++ -*-------------------------------------------------*\
|  =========                |                                                                          |
|  \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  3.0.1                                                      |
|    \\  /    A nd          | Web:      www.OpenFOAM.org                                |
|    \\/    M anipulation  |                                                                            |
\*----------------------------------- --------------------------------------------------------*/

FoamFile
{
    version    2.0;
    format      ascii;
    class      volScalarField;
    object      nut;
}
 
dimensions      [0 2 -1 0 0 0 0];
 
internalField  uniform 0;
 
boundaryField
{
    frontAndBack
    {
        type            empty;
    }
    Inlet
    {
        type            calculated;
    }
    Outlet
    {
        type            calculated;
    }
    Foil
    {
        type            nutkRoughWallFunction;
    value          uniform 0;
    Ks          uniform 0.005;
    Cs          uniform 0.5;
    }
    Walls
    {
        type            calculated;
    }
}


Taataa August 10, 2016 07:33

All of the required information can be found here and here.

wyldckat September 9, 2016 19:01

Greetings to all!

@kodexys: I hope you don't mind, I've moved all of your posts on this topic into this thread and then I merged all of them.

To give a bit of context to my answer for everyone reading, I and kodexys have exchanged a few messages, most of which were through this bug report: http://bugs.openfoam.org/view.php?id=2157

kodexys asked me a few days ago if I had managed to investigate further into this and half-way through my answer, I figured I might as well finds related posts and answer here. The latest question was:

Quote:

Originally Posted by kodexys
Have you been able to investigate the roughness functions any further?

Sorry, no I haven't. Nonetheless, after what we discussed on the bug tracker, I'm expecting that the only problem is related to a misinterpretation of how this wall function can actually be used. On the bug report mentioned above, Henry provided information about the book from which the implementation was based on. I don't know if you've managed to get a hold of a copy of the book, but I expect that more complete details are provided there.

Either way, my suspicion is what your preliminary findings indicated and what I already wrote on the bug report: the cells near the wall have to be thick enough to justify using this wall function.
If the cells are too thin, it will make more sense if you simply use "fixedValue" for the "k" and/or "nut" fields, in order to define a fixed turbulence source on those walls. As to how you calculate those fixed values, I have no idea yet. I can only guess that the book will have details on that as well, or at least a few hints.

Worst case scenario, you will have to create a small scale simulation with an actual rough wall to get a realistic flow provide over actual bumps/needles coming out of the wall, in order to get a calculation of how it affects the flow profile. Nonetheless, I believe this work is already documented on the book that Henry mentioned, namely:
Quote:

ISBN Number 1-928729-08-8
Turbulence Modeling for CFD
(Third Edition)
by David C. Wilcox
Best regards,
Bruno

lourencosm October 24, 2016 11:10

Hey!
Couldn't find that book.

Does anyone have found the definition of "roughness height" in the nutURoughWallFunction?
Is it equivalent sand roughness ou just average height?

By the way, which function do you prefer to use with InterFOAM?

Thank you,
Lourenço

aerogt3 March 1, 2018 07:31

This thread is really helpful. But just one question that I can't seem to get from the openfoam documentation: on what turbulence fields should the roughwall functions be applied?

only nut? what about k, epsilon, omega, etc.?

fabian_roesler March 2, 2018 02:39

Only for nut.

aerogt3 March 2, 2018 09:00

Quote:

Originally Posted by fabian_roesler (Post 683467)
Only for nut.

And for nuTilda, in the case of a SA-DES run? Or still only nut?

fabian_roesler March 5, 2018 02:02

Still only nut.

nuTilda is fixedValue value 0 at the wall.

Cheers

Fabian


All times are GMT -4. The time now is 14:16.