- **OpenFOAM Running, Solving & CFD**
(*https://www.cfd-online.com/Forums/openfoam-solving/*)

- - **Wall functions**
(*https://www.cfd-online.com/Forums/openfoam-solving/58623-wall-functions.html*)

Hi group,
I started consideHi group,
I started considering Foam and have to state its a great code. Nevertheless, I miss the option of using a "non equilibrium wall function" as posible in FLUENT or STAR. This is helpful for complex geometries. As far as I interpreted the code Foam uses a standard wall function for Hi-Re Models. I am interested in implementing the non equilibrium function but I am faced with some problems due t the fact that Foam obviously expects to input viscosity values instead of velocity. Did anybody try to implement something like this before? BastiL |

What precisely do you mean? WaWhat precisely do you mean? Wall functions will create a cell sink of momentum for a cell next to the wall which is proportional to the wall velocity. The easiest way to implement this is to modify the turbulent viscosity on the wall, which is precisely what I did.
Therefore, any form of wall functions for an eddy viscosity model will ultimately be described as the corrected viscosity on the wall: it is the easiest, most consistent and least messy way of doing it. What are you sensitising the non-equilibrium to? I would guess you are after pressure-sensitised wall functions, in which case everything is well known and quite easy to handle. I'm sorry to say that the job of re-doing the wall functions is ugly at the moment: this is a place where a run-time selection mechanism is definitely needed but it's not there. If there's lots of people who are keen on doing their own wall functions, I will put it in (a bit of a pain though...) Hrv |

Hi Hrv,
youre right, I am aHi Hrv,
youre right, I am after pressure-sensitised wall functions. Maybe its easy to handle for you but not for me at that moment. Nevertheless, I did not understand what the problem is for redoing a wall function? As described here you can make a copy of the tubrulence model and the wall function and edit this, can't you? Yours BastiL |

Yes, you can easily do that - Yes, you can easily do that - it's quite sufficient for the testing and paying around. However, I don't want multiple copies of turbulence models just because of the wall functions plus I want my wall treatment to be run-time selectable. This means I should be able to just change the type of wall treatment in the turbulenceProperties dictionary and get the new wall function treatment, just as I do with differencing schemes, linear solvers, gradient calculation and (indeed) the turbulence models themselves. That's the bit which is missing and it's really my problem :-(
Sorry if I've confused you, Hrv |

Hi Hrv,
I am not clear how Hi Hrv,
I am not clear how to modify the viscosity for a non equilibrium wall function. All the implementation documentations handles it as a normalised wall velocity u+ and I do not understand how to exactly modify the viscosity. But I will make my way by trial and error, I have some ideas but no exact way how to go. BastiL |

I added a transient boundary cI added a transient boundary conditions that has the form of wall function. This b.c. applies to a scalar equation that is solved together with channelOodles
like code. I wrote it similar to nuSgsWallFunction but this time it sets the scalar value at the boundary. I noticed that evaluate() member function is called after the scalar equation is solved. How can I forced to be used before? Best regards, Maka |

this is important if the transthis is important if the transient boundary condition (b.c.) for the scalar C is function of C itself. Let's consider the two options of evaluating before or after solving.
a) before solving: the field written (C) will have a b.c. that is consistent with internal field of C. For example if you check residual manually after solving, they will be OK. b) after solving: the written C will have the new updated boundary value which is not consistent with the internal field. For example if you check residual manually after solving, they will "not" be OK unless the changes of boundary value from previous time step is really small. this is the motivation of my question. Best regards, Maka. |

Hi Foamers,
I'm wondering iHi Foamers,
I'm wondering if there were attempts to incorporate improved wall functions as mentionend by Hrovje in Febr. 2007? Is there someone working currently on improving the (currently) standard wall function (SWF) approach, e.g., by using UMIST-A or UMIST-N or something similar? br Stefan Radl |

Hi Stefan,
I'm looking at aHi Stefan,
I'm looking at an implementation of wall functions for laminar (!) magnetohydrodynamic flows, that I published in 2002. It might sound strange with wall functions for laminar flows, but for MHD flows the reason is the same as for turbulent flows: boundary layers are very thin, and too expensive to resolve properly. Anyway. My MHD wall functions are developed using the same approach as for the UMIST-A: analytical integration gives an expression for U in first node (p) as a function of tau, etc. I can implement this only partly by adjusting the wall viscosity. I also need to add to the first cell a momentum source which is _not_ related to the velocity gradient. That is typically where you would find some pressure gradient stuff, I guess, in a more advanced WF for turbulent flows. I see no big problems with doing that using ordinary OF features, but it can be implemented in many different ways, and it's not very clean. Maybe a more universal implementation of wall functions, like the one Hrv thinks of (with run-time selection and all), would provide also for terms like that. What I will do is probably to hack a simple class to hold the methods and extra data I need for my particular type of WF. Certainly nothing universal... /Ola |

Hi,
I wonder, how the attemHi,
I wonder, how the attempts to get an improved wall function look like :-) I am actually trying to implement the 'Compound wall function' by Hanjalic/Popovac for this, one needs a 'non-equilibrium function' psi: psi=1- Cu-y / (rho U kappa utau) with Cu like: Cu= du/dt + U dU/dx +V dU/dy + dp/dx Could the implementation of Cu work like this: Cu_[faceCelli] += ddt(U_[faceCelli]) + div(phi_[faceCelli],U_[faceCelli]) + grad(p[faceCelli]) where 'faceCelli' is the usual: forAll(patches, patchi) { const fvPatch& curPatch = patches[patchi]; if (isType<wallfvpatch>(curPatch)) { forAll(curPatch, facei) { label faceCelli = curPatch.faceCells()[facei]; Would be nice, if anyone has a suggestion!? Fabian |

Hallo everybody,
I am quite interested in implementing new wall functions in OpenFOAM, bacause it is part of my master thesis :). I have also seen and read the papers about the UMIST approach and the approach by Popovac/Hanjalic. Now my question: Is there anybody who already implemented these wall functions and who can give me some information on the improvements made by using these wall functions? Regards, Michael |

questionQuote:
Hi,Michael I have on question from you, please answer. what different between nonlinear wall Function in nonlinear models and wall function presented by Popovac/Hanjalic. I think no different between two wall functions. what your idea ? Regards. Mohammadi |

All times are GMT -4. The time now is 20:53. |