# Lambda-2 criterion

 User Name Remember Me Password
 Register Blogs Members List Search Today's Posts Mark Forums Read

 April 9, 2012, 13:16 Lambda-2 criterion #1 Member   Mohammad Saeedi Join Date: Apr 2011 Location: Canada Posts: 81 Rep Power: 7 Hi there, Does any one know how to calculate Lambda-2 criterion? I read the original paper by Adrian but I could not fully get it. I know how to calculate Q-criterion and I have done it for some cases but for Lambda-2 I have problem. I'd appreciate if you guide me about this.

April 10, 2012, 06:22
#2
Senior Member

Paolo Lampitella
Join Date: Mar 2009
Location: Italy
Posts: 571
Blog Entries: 14
Rep Power: 18
Dear saeedi,

the lambda 2 criterion simply concerns the definition of the scalar lambda2 and how turbulent structures can be visualized by proper isosurfaces of lambda2 (like for the Q criterion). Hence, the real difference with the scalar Q is how you compute the scalar lambda2.

This is defined as the second (in magnitude) eigenvalue of the matrix:

where:

This requires the construction of the characteristic cubic equation and its resolution in order to obtain lambda2 (that is, lambda2 is the second solution of the cubic characteristic equation).

For coherent structures the matrix above can be related to the opposite of the pressure Hessian matrix. As this matrix is real and symmetric, it has two positive eigenvalues when the pressure is at minimum. As a consequence, the matrix above has two negative eigenvalues and lambda2 is certainly negative (for coherent structures). How much negative you have to pick its isosurfaces is (for what i understand) related to the visual appealing of your images (like for the Q criterion)

I still have to seriously use and check it (so it comes without any warranty) but, some time ago, i made a routine for the computation of lambda2 in Fluent (you find it attached). It is very rudimental but i remember it did the job. Also, it is basically C so you can clearly adapt the core part to your needs (Fluent related parts are very understandable also for non-Fluent users)

Once you got lambda2, you just need to pick some negative isosurface and you're done

Hope it helps
Attached Files
 lambda2.c (2.6 KB, 874 views)

 April 10, 2012, 06:39 #3 Senior Member   Filippo Maria Denaro Join Date: Jul 2010 Posts: 2,516 Rep Power: 31 Hi, Paolo wrote a complete explanation, I just add that the relevant paper for the lambda-2 criterion is : http://journals.cambridge.org/action...ine&aid=353418 furhtermore, you can read the dedicated section in the book of Lesiuer. Just as practical suggestion coming from my experience: 1) a threshold value lamba2 =0 is not useful for many flows, for example in confined turbulence. Too structures are identified, I suggest to use a slight greater value 2) identification of vortical structure with such a criterion is "static", does not imply the coherence of the identified structures.

 April 10, 2012, 08:14 #4 Member   Mohammad Saeedi Join Date: Apr 2011 Location: Canada Posts: 81 Rep Power: 7 Hi Paolo and Flippo, Great and clear answers. I almost got it. Thank you so much. one question: Paolo, so the above matrix is -1 times pressure hessian ? I mean in theory we can also calculate pressure hessian and choose the negative of the second aigen value? one more question: Flippo, Could you please explain the point (2) a bit more? P.S. : I am the one who asked about LES filters last week and you two guided me on it. I wrote the routine for dynamic smagorinsky and it is working nicely. Now I am going to add more sophisticated models.

April 10, 2012, 08:22
#5
Senior Member

Filippo Maria Denaro
Join Date: Jul 2010
Posts: 2,516
Rep Power: 31
Quote:
 Originally Posted by saeedi Hi Paolo and Flippo, Great and clear answers. I almost got it. Thank you so much. one question: Paolo, so the above matrix is -1 times pressure hessian ? I mean in theory we can also calculate pressure hessian and choose the negative of the second aigen value? one more question: Flippo, Could you please explain the point (2) a bit more? P.S. : I am the one who asked about LES filters last week and you two guided me on it. I wrote the routine for dynamic smagorinsky and it is working nicely. Now I am going to add more sophisticated models.

The definition of what is a "coherent structure" is quite vague ...but it is somehow related to that fact that the life of a vortical structure must be at least greater than the characteristic turnover time. Therefore, once identified some vortices with the lamba2 criterion you have just a snaphot at a fixed time. What happens to this vortices after some time? Some will be dissipated rapidly, others can be considered "coherent" beacause will survive for sufficient time. Hence, identification is only the first step...
For example, you could explore the spectral energy content in time and discovering if some energy peak remains relevant for some time period.

April 10, 2012, 08:31
#6
Member

Join Date: Apr 2011
Posts: 81
Rep Power: 7
Quote:
 Originally Posted by FMDenaro The definition of what is a "coherent structure" is quite vague ...but it is somehow related to that fact that the life of a vortical structure must be at least greater than the characteristic turnover time. Therefore, once identified some vortices with the lamba2 criterion you have just a snaphot at a fixed time. What happens to this vortices after some time? Some will be dissipated rapidly, others can be considered "coherent" beacause will survive for sufficient time. Hence, identification is only the first step... For example, you could explore the spectral energy content in time and discovering if some energy peak remains relevant for some time period.
Ok. Got it. Or we can provide the variation of the same contours over time (like animation) and qualitatively see which ones remains. This will show us coherent structures qualitatively. right?

 April 10, 2012, 08:40 #7 Senior Member   Filippo Maria Denaro Join Date: Jul 2010 Posts: 2,516 Rep Power: 31 yes, someway once identified (and marked) a vortex, you should follow in its evolution for a period of time greater than the turnover time, assessing if it is coherent or disappears ... A statistical analysis of coherence can be found in: Jeong J, Hussain F, Schoppa W, Kim J. Coherent structures near the wall in a turbulent channel flow. Journal of Fluid Mechanics 1997; 332: 185–214.

 April 10, 2012, 10:01 #8 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear saeedi, according to my understanding of this matter you are correct and the reason for using such a matrix (instead of the negative of the pressure Hessian) is barely due to the lower order of the derivatives involved in it which, by the way, are also already available (see my routine, where i simply ask fluent for them). In contrast, pressure 2nd derivative should be computed on purpose (and in my case it wasn't an option). However, i don't actually know if there are more intrinsic reasons for this (e.g., if the whole reasoning is still valid for compressible flows etc.), but doing what other people do usually is the best first step if you don't know what to do. Actually, i simply got the lambda2 definition from the Lesieur's book cited by Filippo and used it

 April 10, 2012, 10:43 #9 Member   Mohammad Saeedi Join Date: Apr 2011 Location: Canada Posts: 81 Rep Power: 7 Good! So much thanks to both of you

 April 26, 2012, 15:40 #10 Senior Member   mahdi abdollahzadeh Join Date: Mar 2011 Location: Covilha,Portugal Posts: 150 Rep Power: 7 Hi Paolo Thanks for your clear answer. i have used your UDF. but unfortunately it gives fatal error. could you please help me? Best Mehdi

 April 26, 2012, 16:01 #11 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear mahdi, sorry if it looks silly by i have first to ask you to do the following: 1 - go under /solve/set/expert and when asked to keep memory from being freezed answer yes 2 - compute, say, 5 time steps (just to be sure) 3 - add 1 user defined memory 4 - load the udf and interpret it 5 - use it under define on demand 6 - under the surface->isosurface GUI menu define an isosurface of user_defined_memory_0 This is for what concerns the basic functionality (which indeed i already tested and now i tested again, it works for me)... that is, it works. As i said, i still have to check its correctness, but it should be ok. Of course, if you want to produce an animation, you have to call it at every time step you need an image, then the isosurface is automatically updated mm.abdollahzadeh likes this.

 April 27, 2012, 06:32 #12 Senior Member   mahdi abdollahzadeh Join Date: Mar 2011 Location: Covilha,Portugal Posts: 150 Rep Power: 7 Dear Paolo thanks for your quick reply. now it is working. I am begiiner in fluent best mehdi

 May 1, 2012, 01:21 #13 New Member   Sony Join Date: May 2010 Posts: 14 Rep Power: 8 Dear Paolo, I am using your UDF for Lambda2. As per your guidelines, I followed till step 3. But in step 4 I get an error as below - undefined reference to `main' ld returned 1 exit status Could you please help me identify where I am possibly going wrong. Thanks and Regards, Last edited by SonyCFD; May 1, 2012 at 01:22. Reason: typo

 May 1, 2012, 10:00 #14 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear Sony, i'm afraid i can't be of much help as i never had such error in interpreting the udf, on linux clusters in parallel as well as in serial on a windows machine. However, could you say what is your Fluent configuration: Linux/Windows - Serial/Parallel - 3d/3ddp Also, is the udf in your working directory? Another thing which usually bother me is using an udf written under windows (i admit it, i usually work on windows) on a linux machine, as i usually forget the dos2unix command, which is required to get it properly interpreted/compiled.

 May 7, 2012, 12:15 #15 Senior Member   mahdi abdollahzadeh Join Date: Mar 2011 Location: Covilha,Portugal Posts: 150 Rep Power: 7 Dear Paolo Could you please guide me ? how can use reletive velocity in the your lambda2 udf. is it possible to modify that? Best Mehdi

 May 7, 2012, 13:11 #16 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear mehdi, i admit that i have little knowledge about the accessibility and nature of the relative velocity in the UDFs. However, let us assume you have this in some variable C_U_REL(c,t), C_V_REL(c,t) and C_W_REL(c,t). What you have to do is to add a first subroutine to the code (a DEFINE_ON_DEMAND one) in which you copy your relative velocities in user defined scalar variables. Then what should change in the main code for lambda2 is that the velocity gradients have to be substituted with those of the user defined scalars. Finally, you should call them in sequence when a new lambda2 iso-surface is needed. The writing of the whole thing is probably more cumbersome than it appears at first sight; also, it is still necessary to check that all the variables are readily accessible. However it should not be difficult; i would provide some code but i have no time at the moment and you can surely copy and paste pieces from the UDF manual or Fluent online resources. mm.abdollahzadeh likes this.

 May 21, 2012, 06:38 #17 Senior Member   mahdi abdollahzadeh Join Date: Mar 2011 Location: Covilha,Portugal Posts: 150 Rep Power: 7 Dear Paolo Thanks for your good advise. I have claculated the relative velocities and define them in user defined scalers. and then expect usuing the relative velocities gradient i use the gradient of these scalers ( relative velocites). but again while running the Demand i get some Fatel error. I cheked after this eror the scalers for relative velocitires are correct and they are gettingg value.

 May 21, 2012, 07:44 #18 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear mehdi, generally speaking, the ACCESS VIOLATION error (which, i guess, is the one you're getting) is related to your UDF trying to access some variables which are not defined and/or are not accessible for some other reason (e.g., the gradient of some variable after it has being freed or face variables for interior threads, etc.). Now, in order for the UDF to work correctly, you have to be sure that the accessed variables are actually accessible. So, before going deep in the debug, i suggest you to delete from the UDF all the parts relative to the lambda2 criterion and leave only those concerning the definition of the relative velocities and the access to their gradients. My idea is that the problem you are facing is relative to that part. Also, from the Fluent 14 Manual (i think it is available somewhere online too if you don't have one. I don't have others now so i can't check for you), you have two examples concerning the retrieval of gradients for user defined scalars. The first one is under Data Access Macros - > User Defined Memory Macros (Paragraph 3.2.10.6 of the UDF Manual for Fluent 14). The second one is under Detailed UDF Examples -> User Defined Scalars (Paragraph 8.2.5). Hope it helps

May 22, 2012, 02:09
Lambda 2
#19
New Member

Sony
Join Date: May 2010
Posts: 14
Rep Power: 8
Dear Paolo,
sorry for the delayed response.
I am using Linux in parallel and I use 3ddp.

Now I have managed to get to step 5. I got rid of the compilation error.
However, in step 6, when I try to create iso-surface, the min and max value of user memory 0 are both zeros. Hence it cannot create, a surface.

Please advise. For memory - I have defined 1 UD Memory Locations and 0 UD Node Memory Locations

Many Thanks,
Sony

Quote:
 Originally Posted by sbaffini Dear Sony, i'm afraid i can't be of much help as i never had such error in interpreting the udf, on linux clusters in parallel as well as in serial on a windows machine. However, could you say what is your Fluent configuration: Linux/Windows - Serial/Parallel - 3d/3ddp Also, is the udf in your working directory? Another thing which usually bother me is using an udf written under windows (i admit it, i usually work on windows) on a linux machine, as i usually forget the dos2unix command, which is required to get it properly interpreted/compiled.

 May 22, 2012, 05:34 #20 Senior Member     Paolo Lampitella Join Date: Mar 2009 Location: Italy Posts: 571 Blog Entries: 14 Rep Power: 18 Dear Sony, as a first guess i would say that there is something wrong with the velocity field and or derivatives used for lambda2. I am saying this because your settings seem correct and the UDF is correctly interpreted. As for mahdi, could you try to remove all the lambda2 related parts from the UDF and try to see if the UDM you use can receive, say, some of the derivatives?

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post tH3f0rC3 OpenFOAM 7 February 23, 2013 06:37 Aindya FLUENT 4 June 7, 2011 03:51 tH3f0rC3 OpenFOAM 6 May 16, 2011 04:32 Dominique FLUENT 5 November 24, 2006 03:36 Moose Main CFD Forum 5 June 9, 2005 20:39

All times are GMT -4. The time now is 18:21.

 Contact Us - CFD Online - Top