# 3D Energy Spectrum

 Register Blogs Members List Search Today's Posts Mark Forums Read

 November 16, 2011, 06:46 3D Energy Spectrum #1 New Member   Join Date: Nov 2011 Posts: 2 Rep Power: 0 Hi all 1st post so be gentle! I have a 3D (turbulent) velocity field. For the sake of example lets say this is contained in 3 n^3 arrays, ux, uy, uz. I want the 3d energy spectrum, my method at the moment is to calculate fft of these arrays (everything below is in matlab syntax) i.e. >fux=fftn(ux)/(n^3); >fuy=fftn(uy)/(n^3); >fuz=fftn(uz)/(n^3); I then get real and imaginary parts: >energyr=real(fux).^2+real(fuy).^2+real(fuz).^2; >energyi=imag(fux).^2+imag(fuy).^2+imag(fuz).^2; Define the maximum wavenumber >midpt=n/2+1; Now I compute energy spectra in shells, spect(1:1.5*n)=0.; for i=1:n for j=1:n for k=1:n ii=i; jj=j; kk=k; if ii>midpt ; ii=n-ii+1; ; end ; if jj>midpt ; jj=n-jj+1; ; end ; if kk>midpt ; kk=n-kk+1; ; end ; r=round(sqrt(ii^2+jj^2+kk^2)); spect(r)=spect(r)+energyr(i,j,k)+energyi(i,j,k); end end end My question is, whilst this works well, I do not get the energy at the box scale (k=1). Where am I going wrong? Many thanks in advance

 December 2, 2011, 08:20 #2 New Member   Join Date: Nov 2011 Posts: 2 Rep Power: 0 Anyone got any ideas?

 December 3, 2011, 18:58 #3 Member   Mohammad Saeedi Join Date: Apr 2011 Location: Canada Posts: 82 Rep Power: 7 Hey, You know you should first calculate the Autocorrelation or autocovariance, and then take the fft of that one not the vlocity itslf.

September 23, 2015, 10:16
#4
New Member

V
Join Date: Sep 2015
Posts: 2
Rep Power: 0
Hi
Did you figure it out? I may need the same code too

Quote:
 Originally Posted by CFDrookie Hi all 1st post so be gentle! I have a 3D (turbulent) velocity field. For the sake of example lets say this is contained in 3 n^3 arrays, ux, uy, uz. I want the 3d energy spectrum, my method at the moment is to calculate fft of these arrays (everything below is in matlab syntax) i.e. >fux=fftn(ux)/(n^3); >fuy=fftn(uy)/(n^3); >fuz=fftn(uz)/(n^3); I then get real and imaginary parts: >energyr=real(fux).^2+real(fuy).^2+real(fuz).^2; >energyi=imag(fux).^2+imag(fuy).^2+imag(fuz).^2; Define the maximum wavenumber >midpt=n/2+1; Now I compute energy spectra in shells, spect(1:1.5*n)=0.; for i=1:n for j=1:n for k=1:n ii=i; jj=j; kk=k; if ii>midpt ; ii=n-ii+1; ; end ; if jj>midpt ; jj=n-jj+1; ; end ; if kk>midpt ; kk=n-kk+1; ; end ; r=round(sqrt(ii^2+jj^2+kk^2)); spect(r)=spect(r)+energyr(i,j,k)+energyi(i,j,k); end end end My question is, whilst this works well, I do not get the energy at the box scale (k=1). Where am I going wrong? Many thanks in advance

 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 cfd.newbie Main CFD Forum 6 September 24, 2015 16:13 cfd.newbie CD-adapco 1 June 19, 2008 23:48 cfd.newbie FLUENT 0 June 18, 2008 18:34 Fabian Main CFD Forum 4 October 18, 2005 02:04 Emad Khalifa Main CFD Forum 3 June 30, 2003 16:03

All times are GMT -4. The time now is 08:37.