[Paraview] Velocity field analysis - lambda2
David Larsson
david.larsson at sth.kth.se
Wed Dec 9 07:35:57 EST 2015
Hi Armin and Tim,
Thanks both for the helpful instructions. I think using your Python Calculator tip Armin is the way to go - however, I can't seem to find any transpose function there (according to http://www.vtk.org/Wiki/Python_Calculator ). Following numpy it should be something on the lines of myTensor.T but that doesn't seem to work...
Anyway thanks for all the advice.
Cheers
David
-----Ursprungligt meddelande-----
Från: ParaView [mailto:paraview-bounces at paraview.org] För Armin Wehrfritz
Skickat: den 8 december 2015 21:16
Till: paraview at paraview.org
Ämne: Re: [Paraview] Velocity field analysis - lambda2
Hi,
ParaView has several possibilities for user defined expressions, e.g:
1) "Calculator" filter
2) "Python Calculator" filter
3) "Programmable Filter"
The "Calculator" filter is very limited and only suited for simple calculations (basically what you see in the GUI). The "Python Calculator" filter has a wider selection of functions, including a gradient function. For really advanced things, the "Programmable Filter"
probably gives you the most flexibility.
I have attached a very simple state file, that demonstrates how to use the "Python Calculator" filter with an arbitrary expression, i.e.
"curl(gradient(RTData))" where RTData is a scalar field. The expression itself doesn't make much sense, but shows the basic principle.
A really good introduction to all of this functionality is given in the ParaView user guide (section 5.8 and 13):
http://www.paraview.org/paraview-guide/
HTH
-Armin
On 12/08/2015 01:45 PM, Tim Gallagher wrote:
> David,
>
> If you are using the filter called Calculator, there is no gradient
> nor transpose functions in it. The only functions you can use are the
> ones you can click on the little buttons in the GUI (you can type them
> instead of clicking, but those are the only ones available). So you
> must use the ComputeDerivative filter before the Calculator because
> you won't get the gradient any other way.
>
> Additionally, keep in mind that velocity is a vector and so the vector
> gradient of velocity will be a tensor output. It will have variable
> names like VectorGradient_0 through VectorGradient_8 when used inside
> the calculator. Only the scalar components are available, it doesn't
> work like a matrix in the Calculator filter.
>
> If you want to compute the strain (what I think your S is), you should
> use the ComputeDerivatives filter and set the "Vectors" to your
> velocity vector, set the "Output Tensor Type" to "Strain" and since
> you are after lambda_2, you should set the "Output Vector Type" to "Vorticity".
>
> Once this is done, you will have cell-data fields for strain and for
> vorticity. You probably want to do a CellDataToPointData filter to get
> this back to node-centered data (which is required if you want
> iso-surfaces). Once that is done, in your Calculator filter, you now
> have access to scalars called Strain_0 through Strain_8 and
> Vorticity_X, Vorticity_Y and Vorticity_Z.
>
> Strain_0 is S_xx, Strain_1 is S_xy, Strain_2 is S_xz, Strain_3 is
> S_yx... through to Strain_8 = S_zz.
>
> With all of those individual components, your Calculator filter for
> Lambda_2 will just be a bunch of products and sums of those terms.
>
> Tim
>
> ----------------------------------------------------------------------
> --
> *From: *"David Larsson" <david.larsson at sth.kth.se>
> *To: *"Tim Gallagher" <tim.gallagher at gatech.edu>
> *Cc: *paraview at paraview.org
> *Sent: *Tuesday, December 8, 2015 6:30:28 AM
> *Subject: *SV: [Paraview] Velocity field analysis - lambda2
>
> Hi Tim,
>
>
> thanks for your answer. Your method sound straight-forward. The only
> issue I have now is that I'm simply not sure how to control the
> Calculator of paraview. Following your steps, I want to set e.g.:
>
>
> 'Result Array Name': S_squared
>
>
> and then compute using the calculator something like
>
>
> (gradient(velocity) + transpose(gradient(velocity)))^2/2
>
>
> but this gives me a calculator error ('Syntax Error: expecting a
> variable name'). So I assume I'm simply using the calculator the wrong
> way (giving input in an incorrect manor).
>
>
> Could you specify how you give input to the calculator following your
> outlined steps? Also, do you know the difference between the
> 'ComputeDerivative' and 'Gradient' is?
>
>
> Thanks again for the help,
>
>
> /David
>
>
>
> <https://webmail.kth.se/owa/redir.aspx?C=IxWYxXymHES_fQvc4qU3B9BOtBARs
> tEIlfcjHJ6nx0MeBY57EwkoSX2SdYQPib-GqeXHouLYnDA.&URL=mailto%3adavid.lar
> sson%40sth.kth.se>
>
> ----------------------------------------------------------------------
> --
> *Från:* Tim Gallagher <tim.gallagher at gatech.edu>
> *Skickat:* den 7 december 2015 23:16
> *Till:* tim gallagher
> *Kopia:* paraview at paraview.org; David Larsson
> *Ämne:* Re: [Paraview] Velocity field analysis - lambda2 For the sake
> of people years later who come across this thread, there is a typo in
> my definition and it should be:
>
> lambda_2 = S_ik S_kj + \Omega_ik \Omega_kj
>
> Tim
>
> ----------------------------------------------------------------------
> --
> *From: *"Tim Gallagher" <tim.gallagher at gatech.edu>
> *To: *"David Larsson" <david.larsson at sth.kth.se>
> *Cc: *paraview at paraview.org
> *Sent: *Monday, December 7, 2015 5:11:30 PM
> *Subject: *Re: [Paraview] Velocity field analysis - lambda2
>
> David,
>
> I haven't taken on lambda-2 yet, but I have been able to build a
> pipeline for Q-Criterion. It looks something like:
>
> Data -> CellDataToPointData (if it isn't already point data) ->
> ComputeDerivatives (set the gradient option to vorticity and the
> tensor option to strain) -> CellDataToPointData -> Calculator (compute
> |S|^2)
> -> Calculator (compute |\Omega|^2) -> Calculator (compute Q-criterion)
>
> Since lambda_2 = S_ik S_ij + \Omega_ik \Omega_kj, you can use the same
> procedure and use just the standard calculators if you want to expand
> the Einstein summation and plug them all.
>
> Once I've done this, I save the set of 3 calculators as a custom filter.
> When I use pvpython, I load my custom filter in the server manager and
> then use the CD2PD and ComputeDerivatives filters as needed. The
> python calculator might be a better way to do it, but I haven't tried that yet.
>
> Tim
>
> ----------------------------------------------------------------------
> --
> *From: *"David Larsson" <david.larsson at sth.kth.se>
> *To: *paraview at paraview.org
> *Sent: *Monday, December 7, 2015 4:11:39 PM
> *Subject: *[Paraview] Velocity field analysis - lambda2
>
> Dear all,
>
>
> I'm working with velocity vector fields over multiple time steps. I
> would like to compute a number of entities for the velocity field -
> most importantly the lambda2-scalar, but being relatively new to
> paraview I'm not really sure how to do that.
>
>
> I can do some simple modifications using the calculator but can't
> really find my way to grad() or curl() etc. I guess the solution is
> going over to pvpython (which would also be preferred with regards to
> doing automated analysis).
>
>
> Does anyone have any experience with performing numerical analysis of
> vector velocity fields in pvpython that could give some hints on how
> to get started? Or does anyone even have performed lambda2-analysis on such?
>
>
> I've seen some similar questions in the mail-list from before but
> can't seem to find a conclusive answer, so I thought I'd give it a try myself.
>
>
> Thanks for the help.
>
>
> /David
>
>
>
> <https://webmail.kth.se/owa/redir.aspx?C=IxWYxXymHES_fQvc4qU3B9BOtBARs
> tEIlfcjHJ6nx0MeBY57EwkoSX2SdYQPib-GqeXHouLYnDA.&URL=mailto%3adavid.lar
> sson%40sth.kth.se>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>
More information about the ParaView
mailing list