Improved implementation of dynamic Smagorinsky
Hello,
if you need a dynamic Smagorinsky code with a truly dynamic coefficient (not domain-averaged as in the current implementation), you might find this useful. You can find an implementation the dynamic model with local average of the coefficient here: http://www.openfoam.com/mantisbt/view.php?id=99 I proposed it for inclusion in OpenFOAM. If this is not going to happen (very probable, read the answer), the code is available from my GitHub repository git://github.com/AlbertoPa/dynLocalAverageSmagorinsky.git Best, |
LES - VOF Method
Dear Alberto,
I would like to know if this new dynamic smagorinsky model is useful too two-phase flow models. I don't know is could be possible to you explain me better how con set my /constant/LESmodel to use this new approach. Thanks in advance My deep regards Respectfully Javier Basurco |
Quote:
The additional model I posted can be simply compiled with "wmake libso", and then include Code:
libs ( "libOpenFOAM.so" "libdynLocalAverageSmagorinskyModel.so" ) ; Code:
LESModel dynLocalAverageSmagorinsky; Code:
dynLocalAverageSmagorinskyCoeffs |
Thanky you for the generous contribution, Alberto. I will give it a try as soon as I get some resources free.
|
Hi Flavio, there is nothing new in the model. It is basically the dynamic model proposed by Lilly, with face averaging to limit the risk of numerical instabilities.
Best, |
Quote:
i don't understand, why to include a library in controlDict.... :confused: best regards grandgo |
Quote:
Best, |
Since the proper name of the model is "dynamic Smagorinsky", I updated code, description (added reference) and repository.
The new URL is here: git clone git://github.com/AlbertoPa/dynamicSmagorinsky.git The README also contains the instructions to use the it. Notice that the limitation observed by the current implementation of dynamic Smagorinsky in OpenFOAM affects all the dynamic models, not only the dynSmagorinsky. All the SGS models relying on the dynamic procedure in OpenFOAM average the dynamic coefficient over the whole domain. Best, |
Dear alberto ,
What's the meaning of "face averaging "? It is not "not domain averaging"? If not average at all, but give a cutoff for nuSGS (for example, nu+nuSGS>0), it is better or not ? Could you make your model easier to be modified by others who wants to use this. Thank you very much. |
Quote:
Lilly's formulation of the dynamic model, which is the one implemented, relies on a formulation of L and M, so that both the numerator and the denominator should vanish if one tends to zero. Based on this consideration, formally, the model should not present problems. However, the coefficient can change significantly, and some averaging might be required. The less intrusive form of averaging I could think to is the "face-averaging". Face averaging means that the numerator and the denominator in the definition of the dynamic coefficient are the face-average value for that cell. This helps in limiting steep variations of the coefficient which would cause numerical problems. It is very different from the "domain average" used in the standard implementation in OpenFOAM 1.7.x. In the domain average you end up having one single value of the coefficient over the whole domain, which removes the advantages of the dynamic procedure. Quote:
Quote:
Best, |
I added a modified version of channel395 to the git repository, where the model is enabled. I hope this makes things a bit more clear.
Best, |
Dear alberto ,
Thank you very much. And I also have question. Originally in dynamic model, it seems that k is not needed. But in OpenFOAM's dynamic model, the SGS kinetic energy k is needed. Could you explain this for us ? and how we can give this boundary condition ? in one equation model, Eugene said at inflow boundary, the resolved kinetic energy is OK, and it will quickly decrease. In this dynamic model, also like this ? thanks. And I am sorry, your git repository is not allowed to acess for me. I just download the "Attached files", but can't download the channel395 example. |
Quote:
Quote:
Quote:
Either: Code:
git clone https://github.com/AlbertoPa/dynamicSmagorinsky.git Code:
git clone git://github.com/AlbertoPa/dynamicSmagorinsky.git Best, |
1 Attachment(s)
Dear alberto,
at the inlet position, I have the kinetic energy profile measured from experiment, and I just use this as SGS k. But my professor doesn't agree with me, and said that "turbulent kinetic energy is more large than SGS k, you shouldn't use like this". He let me to fine other papers, see how does other people give inlet condition for SGS k. But I think that inlet condition for SGS k is not important, do you agree with me ? the following is my simulation. at the inlet position, I use experiment profile ,and the SGS k is very large, but as flow proceeded downstream, the k quickly decrease. |
Hi,
Quote:
The turbulent kinetic energy you measure from experiments is the trace of the Reynolds stress tensor, while the SGS turbulent kinetic energy is the kinetic energy of the residual (unresolved) scales. Clearly they can be very different. Quote:
Do a simple check: set k = 0 at the inlet. Run your case. Compare with what you obtain from the case with k=k_sgs. Does it show any difference? Of course, if you use a model involving the transport equation for k, things are different, and you must specify an appropriate BC for k_sgs. Best, |
Dear alberto .
Thank you very much. You means in dynamic Smagorinsky model, the k_Sgs is not used, so will not influence the result. If it is like this, now I will do simulation using this dynamic model, and compare with my experiement. I have two case , one is empty domain, another is flow around a cubic building. I think the first case can be finished in 10 days. |
Quote:
Best, |
plannar averaging
Quote:
thanks for sharing your corrected dynamicSmagorinsky with us! I tried it and it works fine. I wonder if the model can be changed in a way that it uses a planar averaging technique as was proposed by Germano (1990)? Of course that would only work for channel flow. That way the constant would only change with the height of the channel. Do you know of any plannar averaging methods in OpenFoam? Are you getting fairly low results for C for the channel testcase as well? I'm getting values around 0.01, but I was expecting values at around 0.1 or 0.2. Also I'm getting negative values for C. Best Stefanie |
Quote:
Additionally, keep in mind that Germano's formulation for Cs is different from Lilly's formulation. Lilly's formulation in theory is always defined (numerically you still have issues due to large values). Check the corresponding references. Quote:
Best, |
thanks, I think I'll keep working with Lilly's locally defined Cs then.
Is there a reason why the function cD is missing the factor 1/2 in the implementation? Or is that considered somewhere else? Best Stefanie |
Warning
Hi Alberto,
thanks for sharing your corrected dynamicSmagorinsky. I have complied it without any problem. but when I want to decompose my mesh, the below warning wolud be appear( I am using OF-1.6.x and Fedora-12): --> FOAM Warning : From function dlLibraryTable::open(const fileName& functionLibName) in file db/dlLibraryTable/dlLibraryTable.C at line 79 could not load /home/Yashar/OpenFOAM/OpenFOAM-1.6.x/lib/linux64GccDPOpt/libdynamicSmagorinskyModel.so: undefined symbol: _ZNK4Foam14incompressible9LESModels I would appreciate if you could help me to solve it. |
Hi Yashfar,
nothing to worry about. You can safely ignore the warning. It happens sometime when using libraries through controlDict. Best, |
Quote:
thanks for your reply and your sharing. sincerely yours. |
Hi Alberto,
I would appreciate if you could answer me that " how could this model be used in compressible solver?" Best regard, |
Hi Yashar,
it cannot. The implementation I released works for incompressible solvers. For the compressible version you need to implement a compressible dynamic Smagorinsky model (see for example Piomelli's papers to have an idea). Best, |
non-root compilation of dynamicSmagorinsky
Alberto,
thank you very much for your efforts on implementing a truly dynamic Smagorinsky model! I realized the flaw of the old implementation a few weeks ago and I am more than happy that someone already took care of the issue. I'm running my simulations as a non-root user on my university's HP XC3000, where OpenFOAM 1.7 is pre-installed. Logically it produces an error when compiling with wmake libso: Code:
... Best regards, Bernhard |
non-root compilation of dynamicSmagorinsky
ok, problem solved. One only has to change the content of ./Make/files:
I replaced FOAM_LIBBIN with FOAM_USER_LIBBIN |
Good the code is useful to someone :-)
|
Thanks!
Dear Alberto,
Many thanks for your contribution! This is just what I have been looking for... kind regards, James |
Happy to share! :)
|
Alberto,
Just trying to understand your code (and OpenFOAM coding in general), not being picky. If I have understood your code correctly, by changing the average(LLMM/MMMM) to fvc::average(LLMM/MMMM), you have averaged over the faces belonging to the cells, which are interpolated from their respective cells. So essentially, you have applied the box filter (or simple filter as OpenFOAM calls it) and could accomplish the same thing using filter_(LLMM/MMMM) assuming the user chooses the simple filter. This would also allow use of the other filters to perform this averaging at the choice of the user. Please correct me if I have misunderstood anything. FYI, the fluent manual states that it averages locally using the test filter, which appears to be what you have done as well (fluent also uses box filter). Regards, Perry |
Quote:
Quote:
Best, |
Quote:
Perry |
Quote:
Quote:
Best, |
Hi,
I am having some trouble compiling this on OpenFOAM 2.0.x. I get the following error: Code:
dynLocalAverageSmagorinsky.C:40: instantiated from here Kris |
This was released by Alberto this morning:
https://github.com/AlbertoPa/dynamicSmagorinsky |
hi alberto,
i'm using dynamicSmagorinsky for a LES in parallel processing. i have this message. the calculation is running but i'm concerned because of this warning. Code:
FOAM Warning : best regards grandgo |
grandgo,
I think your question is posed and answered in posts 21 and 22 respectively. Perry |
Quote:
(couldn't find the keywords via search function ...) |
Quote:
If you need both, take a look at the README. However I am not going to update the version for 1.7.x in case bugs are found. P.S. Notice that OF 2.0.x comes with the dynLagrangian model, which uses Lagrangian averaging to find the dynamic coefficient. It is a more refined model than the traditional dynamic Smagorinsky, so it might be worth considering it too (the reference is in the header file). Best, |
All times are GMT -4. The time now is 23:06. |