Wall treatment with OpenFOAM
Hello,
It is probably a question that often comes to this forum in many threads, but I couldn't find a suitable answer: Are the wall functions used by OpenFOAM a high Reynolds or low Reynolds treatment? I read somewhere that since OF1.6 some "enhanced" wall treatment was somehow implemented (blending between the two functions). Is there a way to chose which to use? how can I know up to which y+ I have to refine the grid? |
Hi Roby,
just wondering whether you had gotten any further with this query of yours ... i am currently investigating the same thing! cheers jonathan |
Hello Jonathan,
Unfortunately not, but in case I find out something I will not hesitate to post it on this thread to address this issue. In case you get further information, please, post it as well. Roby |
The answer to your questions is indirectly available in the User Guide :D
OpenFOAM has low-Re models which do not require wall-functions, since they implement damping functions. You find them listed in Table 3.9. With low-Re models you can use the nutLowReWallFunction (mutLowReWallFunction for compressible cases) condition, which is a place-holder and enables the calculation of y+. The various wall-functions can be found in the directories with the command: Code:
find $FOAM_SRC/turbulenceModels -name wallFunctions |
actually a lot of information is INDIRECTLY available in the User Guide :(
As far as I can understand (and that you appear to confirm) is that: -some low Reynolds models exist that don't need wall functions (I guess Spalart-Allmaras and k-w, which are suited for wall turbulence modelling and therfore are somehow themselves "wall-functions") -In other cases, when a wall function applies, apparently the type of wall function (low-Re, rough wall, etc...) has to be set in the mut / nut file according to what Alberto and the manual suggest (http://www.openfoam.org/docs/user/tu...38-2090007.2.2). What sounds strange to me is that in the "0" directory, OpenFOAM calculates mut/nut depending on k, epsilon, omega or whatever (at least it writes mut down just feeding OpenFOAM with k and exsilon). So, how can it be that it uses this file to set the case? Best regards Roberto |
law of the wall
Hi Roby
Quote:
The code is there if you want a deeper look. But I recommend you to always create nut or mut with the boundary you want. Cheers |
Quote:
Quote:
Best, |
Quote:
|
I am a bit confused how this works.....
When you mesh, either you mesh for a wall function, where you try to get your first cell in the log-law region (y+ > 30 or 60 or so). Then you have resolution down to the wall where a wall function is not employed. What I would like to know is what to put down for the two cases above in the U, p, nut, etc. files within 0? Is the below example using a wall function on "wall-wing," where I should mesh with y+ > 30, or is it solving to the wall, where y+ ought to be around 1? File /0/k wall-wing { type kqRWallFunction; } File /0/omega wall-wing { type omegaWallFunction; value uniform ##; } File /0/nut wall-wing { type nutkWallFunction; value uniform 0; } |
These are for wall function.
omegawallfunction is written in a way to be continuous, which means they can be used in low-re mode. nut should depends on the turb model, and is the most complicated one, for some models it will automatically be created, but you need to check which type of nut it is creating; for some models, it maybe not, i am not sure. But you can always create it manually so to overwrite it. One of the difficulties in the whole wall function is that the two turb variables and nut are coupled, so it makes the wall function design and use complicated (other code may just add flux to the momentum eq, but openfoam does not, openfoam built it into turb viscosity). But anyway it is always good to build confidence with some STANDARD Test Cases. |
By continuous/low-Re mode, do you mean suitable for y+ 1? If I use RealizableKE, which wall function would be suitable for y+ in the log-law region? At least online I haven't seen any other models aside from nutkWallFunction being used in practice.
Thanks for your response! |
wall universal law
Dear Aerogt3,
I think I didn't get 100% your questions but I will try to give some answer from the beginning: All turbulent boundary layers behave as described by a law that can be found in litterature as "universal logarithmic wall law" (theory is exact on flat plates but some correctors are sometimes used in formulae to account for the pressure gradient). If you look at how y+ is formulated (y+=y*u_tau/nu) where:
This brings the existance of a viscous sub-layer near the wall and the existance of a logaritmic layer "far" from the wall (google images for this law). So, when we talk about low Reynolds treatment, we talk about formulations that describe the wall flux behavior as described by the viscous sub-layer. When we talk about high-Reynolds treatment, the formulaion describes the latter. A low-Reynolds treatment requires the mesh to be very well refined at wall in order to put at least one point in the viscous sublayer. A less refined mesh is required if we use a high-Reynolds wall treatment, where the first point has to be put in the logarithmic region. About the grid size at the wall, if you use a low-Reynolds treatment the grid has to be fine enough to get y+ in the viscous sublayer (say at least y+=4, but lower y+ is desirable). Similar discussion for the High Reynolds. But to avoid the buffer layer standing between sublayer and log-law, use y+>30 (bear in mind that if you go too far you get out of the boundary layer). About turbulence models: some turbulence models are built to represent the wall turbulence (both sublayer and log-law). They are called as "low-Reynolds turbulence models" (e.g. k-omega and Spalart-Allmaras in some commercial codes). In these commercial codes they usually don't need to set a wall treatment because they implement it themselves (although I saw that k-omega wall functions exist in OpenFOAM. It is probably just a different formulation). Other models such as k-epsilon, modelize a turbulence more likely the one occuring far from the wall (not in the boundary layers) and absolutely need a wall treatment to simulate the behavior of the turbulence at wall. Here it comes the low-reynolds or the high-reynolds wall treatment. Anyway, I am still trying to work out the details of OpenFOAM Low-Reynolds models wall treatment. Nevertheless, since OpenFOAM implements wall functions for k-omega too, I would mind using it. Sorry for giving such an approximate description but even this took a long piece of parchment. :D Hope that was accurate enough and useful for somebody. Roby |
My understanding is:
if y+ ~ 1, no need of any wall function (omegaWallFunction in OF can be still used though), y+ in log, standard wall function applies. ** the difficulty is in complex flows, it's extremely difficult to have y+ in the same region, so continuous wall function should be pursued. k-omega is different than k-epsilon by design, so the former, no need of WF in low-re mode, the latter, needs special damping formulation in low-re mode. Sorry for my poor english. |
hello, I take the opportunity of this opened thread for asking 2 points regarding wall treatment in OF:
*What is the meaning of using realizable turbulence model, without creating "nut" file under /0 (incompressible)? My calculations are running well and I get am acceptable solution in comparison with experiments *Nevertheless, for the same calculation, if I switch to standard kE model (also without "nut" file in /0), the solver freezed after some iterations |
Hi,
So, if you are using a turbulence model which has low Re capability, you need to use nutLowReWallFunction as a place holder in the 'nut' dictionary file? the confusion for me comes in when i see i need to specify data for nut / mut, when i know from theory, these are calculated from k / omega / epsilon etc ... it doesnt make sense! anyway, being a 'Fluent person', i am relatively new to OF, but am trying to understand the implementations - to the point where i am now taking a C++ course! :) best regards jonathan |
IMO, Realizability constraints should be ALWAYS satisfied, it does no harm, so use it instead of using the standard one.
Quote:
|
Remember all of these efforts are under the eddy viscosity framework, they are not the end, their aim is to estimate the Reynolds stress accurately in the momentum equation.
These equations have not account for the physics we are trying to solve, that is the wall damping effects, they did not reflect the truth we observed in the vicinity of wall. I am not saying they are just for the isotropic turbulence, but I am saying they are still not able to reflect the inhomogeneous effect of wall. In a word, it is all about the gradients evaluation! Wall Turbulence is characterized by its huge gradient and complex production and destruction close to the wall. ------- This is the physics! From no slip wall to first cell center, there is gradient, right? And suppose now, we have a coarse mesh, if you are not using any nut corrections for the 1st cell center, then the calculated Reynolds stress at the 1st cell center (from -2*nut*Sij) would be totally underestimated or usually unpredictable! That's why we need manually to create a formulation based on DNS, experience and physics to correct this discrepancy. This is very important not just to the flow field prediction of U, p, k, and omega, ..., but also critical to the friction prediction as needed in many industrial field. ------ 1/153 dw |
hi 1/153
ok! yes, i see and understand + you make good points! however, again, as far as i understand, the low Re models do account for the near wall dynamics using damping functions etc. I know SA does and that k-omega SST also has the damping functions built in, so surely again we dont need WF's for these models? unless you mean, even if the first cell node is at y+ ~ 1, the we still need some kind of nut WF to account for the distance between the actual wall and the first node point still since the node is not on the wall! is this correct?? :) regards jonathan |
Quote:
These models (S-A and k-Omega) are designed so that they can be used both in High-Re mode (but need WF) and Low-Re mode. As you said they have damping functions built in, that's why they can be used in Low-Re mode without any other treatment. This is in contrast to: Because traditionally, models like k-e and other models they don't have damping function built in, so even if you use them in Low-Re mode, i.e., using them on a very fine mesh, you still CANNOT get a correct result. k-e based models that are having damping functions built in include: models designed by Bremhorst or Sharma's, these models are quite popular and for ZPG flows, their prediction are pretty good according to my experience. Sorry for the confusion, my English is still poor. :( ----- 1/153 dw |
hi 1/153!
thanks for your comments - no prob about your english! its good!! i have thought about this overnight, and actually gone back to the theory and a couple papers to as well, and i think the confusion comes in because of a couple idiosyncracies in the models themselves and so terminology used in OF ... 1) high Re models = normal y+ rules, wall functions required 2) low Re models = normal y+ rule, no wall functions, specify explicit BC's 3) SPECIAL = Menter's k-omega SST = either high Re with wall functions, or low Re BUT THEN you need to use a "wall function" for blending the viscosity from the k-omega implementation to the k-e implementation. Currently this is nutUSpaldingWallFunction (formulation based on U, OF2.1.1), previously nutSpalartAllmarasWallFunction (older releases). You also should use the kqRWallFunction for k and omegaWallFunction for omega, although you can use explicit BC's as for the other low Re models. I think the reason for the 'wallfunctions' needed in SST are because in the revised Menter model (2003), the model constants are blended from the k-omega implemetation to the k-e implementation, and the omega-equation is blended into the epsilon-equation, which may not be done in OF. Perhaps the wallfunctions for nut, k and omega blending are in fact work-arounds for this (i havent checked the code for omega, so i dont know if omegaWallFunction is in fact the omega-equation blending used in the 2003 model. The confusion for me has been as a result of the reference to the blending functions as 'wall functions' - a term which one doesnt associated with low Re models! 4) FINALLY, with the low Re models, in order to allow for the calculation of yPlusRAS, instead of using 'calculated' for nut, you need to use nutLowReWallFunction, which as Roby mentioned above, is actually just a placeholder, and equivalent to ( fixedValue uniform 0 ) but allows OF to calc yPlus values. Unfortunately, i am still getting terrible convergence with k-omega SST, but as far as i can tell, the above is how its supposed to work in OF! Anyway, those in the know - please correct me where i am wrong!!! EDIT: oops sorry, reference to Roby above was incorrect, i was reading another thread on this where the poster was AlmostSurelyRob - who i meant to reference, not Roby above |
This thread turns out to be very interesting and it contains good explanations.
I arrive here because I want to know how OF manages the heat flux at the wall in a turbulent flow. I've found that Fluent includes the Energy into it's wall functions ( http://combust.hit.edu.cn:8080/fluen...e430.htm#stdwf ). From what I know so far and from the source code I've read, it seems that OF doesn't make any adjustment of the thermal boundary layer. So my question is: does the temperature field have meaning in case of a coarse mesh (y+ = 30). I feel that my question is stupid because the thermal boundary layer can be quite different from the momentum boundary layer but I still want to get some point of view. Does any of you have an idea of how to get the heat flux at a wall in the case of a turbulent flow ? For example an airfoil of 1m at Mach 0.3 ? Also, can you confirm that OpenFoam doesn't have any friction heating ? (edit, it seems to be included in the solver itself but I don't know if this treatment include the boundary layer). Ps. I mostly use rhoSimplecFoam. |
I also wonder, does the thermal boundary layer works like the momentum boundary layer, I mean: is it possible to make a very fine mesh and so avoid any wall function ?
For example, is it possible to make a very fine mesh y+ < 1, and then simply compute the heat flux using the gradient of temperature ? |
Terrible Convergence for k-omega SST
Hi Jonathan,
I have also gotten terrible residuals for k-w-SST. Then I went to the motorbike tutorial in OF-2.2.0 which should be the Meca of a fine tuned model, and the residuals look amazingly crappy (granted it only iterates to 500 steps - but doesn't look as if it gets any better after). I found after a bit of poking around the model, that the quality of the residuals is highly dependent on your mesh. For example, I got much better results by sending the layer insertion to hell and just leaving the elements from the snap alone. Here is a thread I started, asking about the convergence for the motorbike tutorial (OF-2.2.0): http://www.cfd-online.com/Forums/ope...mega-mine.html Quote:
|
I answer part of my question: I've just found the Foam::compressible::alphatJayatillekeWallFunctionF vPatchScalarField
Quote:
|
enhanced wall treatment
Hi,
I read the thread because I'm facing some problems regarding the wall treatment in openfoam. I found a presentation which could solve some problems: http://www.opensourcecfd.com/confere...9_Kurenkov.pdf Here, for k-epsilon and k-omegaSST automatic wall treatment was implemented. Does anyone have some experience with that? Maybe can help to implement or did something similar already? Best regards, Andy |
hi all
Is there any low-Re capable turbulent model in OF for "compressible,internal flow in a tube"? Could introduce them to me? Thanks so much. |
Quote:
Hi Jonathan, I'm interested in what you had to say about the Low Reynolds wall function (LowReWallFunction). Do you implement it it on a low Reynolds mesh? with a very small y+? I have been using the LowReWallFunction in 'nut' with the corresponding transport equations like kappa and omega (k-Omega SST) and thought 'if I'm applying a wall function k and W also require wall functions'. Is this correct because I can't see how it would really work. Any help would be greatly appreciated. Regards David |
hi Crossley
my understanding is that LowReWallFunction was instituted by the OF developers to be used as the BC for nut with low Reynolds turbulence models on y+ ~1 meshes. If you look at the header of the code, it says: Code:
Class Quote:
in terms of the 'correct' setup for kOmegaSST, there are a few other threads where this is discussed, and perhaps they might help as well. hope this helps, cheers jonathan |
Hello guys,
I read trough all the discussion, it was very useful to understand the general topic of wall function. However I got a bit lost and at the end I have probably a very stupid question. Which is the wall function that I should use for high Reynolds? I am using compressible k-e with Y+ above 30. Can you provide me the name of the wall function? I was a Fluent user so I am used to the Fluent nomenclature, in this case I was used to employ the standard wall function. Thanks |
Hi
those are different for different variables.for k use:"kqRWallFunction" for epsilon:"epsilonWallFunction" look into a turbulent case in tutorial folder. |
Shall I define also the wall function for the mut?
|
yes,you can use "xxx" for example in return of type of mut or anything else and compiler says you what types are there for using.like mutkWallFunction,mutUWallFunction,mutUSpaldingWall Function,...
|
I was searching everywhere for the way to get kw-sst working as low-re formulation and your post got me on the right way with the NutUSpaldingWallFunction. Thanks alot.
|
if its so, add a reputation power for me :)
and you remembered me about it to write in my thesis mention to it. do you know a good reference that has described mutUSpaldingWallFunction? |
damping functions within the sst model
1 Attachment(s)
this is quite an interesting thread, with some good explanations
i have a question regarding the damping function the sst model uses. so it says earlier in this post that the sst model can be used as a high Re model or a low RE model. I'm simulating the propagation of a pressure wave within a pipe.I have created a simulation using the RNG k-epsilon model and got reasonable results, using a mesh with a y+ in the range 30-300. then i applied the SST k-omega model. i got a slightly better result that the RNG model. I did not refine the mesh, so i applied the SST model with wall functions. my question - in the SST model are the damping functions also applied when the model is being used as a high Re model? or how can i explain the improved results? I've attached a graph of my results some advice would be appreciated |
Rough wall example
Quote:
Thank you very much for your help. |
Hey guys,
first of all I'm a nooby in OF so keep it in mind please :D my question: how can I have different wall treatment in one case. Lets say wall 1 should have a high Reynolds number treatment and wall 2 should have a low one. - What exactly do I have to choose for a turbulence model in RASProperties file? RASModel: kEpsilon (for high Re) or LaunderSharmaKE (for low Re)? - What should I put instead of epsilonWallFunction in the following code segment in case of a low Reynolds treatment? wall_high_Re { type epsilonWallFunction; value uniform 0.02911; } wall_low_Re { ? } thx |
Hi Mo,
As I understand it, your model must be capable of doing this. I am not sure, if the low-Re k-epsilon models in openfoam (such as the LaunderSharma you mentioned) work with high-Re boundary conditions at all. I guess the k-omega-SST could do this. If the model supports it, you just need to use: wall_low_Re { type fixedValue; //(<- most of the low_re conditions are fixedValue, depends on the model value XXX; //whatever fits to your model, LaunderSharma needs a boundary condition for the modified epsilon-tilda to be zero at walls } Have a look here for all the boundary conditions: http://www.tfd.chalmers.se/~lada/pos...ndium_turb.pdf |
Quote:
from what I know so far, in order to have an enhanced-wall-function-like feature in openFoam, nutUSpaldingWallFunction (unified wall function based on Spalding's law) can be used together with kqRWallFunction and EpsilonWallFunction. And I saw from other threads stating that kLowReWallFunction and epsilonLowReWallFunction can be used in kEpsilon model, which I doubt it, as those 2 wall functions are actually created for v2f-turbulence model. I'm still new to openFoam and correct me if I'm wrong. |
All times are GMT -4. The time now is 03:57. |