@parameters ; default,ivar,-1 default,iread,0 if iread eq 0 then begin pc_read_param,/param2,obj=param if iread eq 0 then begin if ivar ge 0 then begin pc_read_var,/magic,/trimall,obj=var,variables=['uu','bb','uij','aa'],ivar=ivar endif else begin pc_read_var,/magic,/trimall,obj=var,variables=['uu','bb','uij','aa'] endelse iread=1 endif xxx=var.x yyy=var.y zzz=var.z iread=1 endif nz=n_elements(zzz) ; tvscl,var.bb(*,*,nz-1,2) ; ; Procedure to compute rate of strain tensor, ; as well as its eigenvalues and eigenvectors. ; ; dimensions ; s=size(var.uij) nx=s[1] ny=s[2] nz=s[3] ; ;aa=reform(var.aa,1L*nx*ny*nz,3) bb=reform(var.bb,1L*nx*ny*nz,3) uij=reform(var.uij,1L*nx*ny*nz,3,3) sij=uij ; ; compute sij ; for i=0,2 do begin for j=0,2 do begin sij(*,i,j)=.5*(uij(*,i,j)+uij(*,j,i)) end end ; ; the last row, vecs(*,*,3), contains the eigenvalues ; ;stop b=1./sqrt(dot2(var.bb)) vecs=eigvec3_arr(sij) cosb1=b*dot(bb,vecs(*,*,0)) & pdf,fmin=0,fmax=1,n=500,abs(cosb1),xb1,yb1 cosb2=b*dot(bb,vecs(*,*,1)) & pdf,fmin=0,fmax=1,n=500,abs(cosb2),xb2,yb2 cosb3=b*dot(bb,vecs(*,*,2)) & pdf,fmin=0,fmax=1,n=500,abs(cosb3),xb3,yb3 save,file='align.sav',xb1,yb1,xb2,yb2,xb3,yb3 ; plot,xb3,yb3,xr=[0,1],yr=[0,1.6] oplot,xb2,yb2,col=122 oplot,xb1,yb1,col=55 ; pdfs of eigenvalues ; pdf,n=500,reform(vecs(*,0,3)),xe1,ye1 pdf,n=500,reform(vecs(*,1,3)),xe2,ye2 pdf,n=500,reform(vecs(*,2,3)),xe3,ye3 save,file='eigenvals.sav',xe1,ye1,xe2,ye2,xe3,ye3 ; bb=reform(bb,nx,ny,nz,3) sij=reform(sij,nx,ny,nz,3,3) vecs=reform(vecs,nx,ny,nz,3,4) nn=float(reform(vecs(*,*,*,*,1))) ; x=var.x y=var.y z=var.z dx=x(1)-x(0) & dkx=2.*!pi/(nx*dx) dy=y(1)-y(0) & dky=2.*!pi/(ny*dy) dz=z(1)-z(0) & dkz=2.*!pi/(nz*dz) ; kk=fltarr(nx,ny,nz,3) ; kk(*,*,*,0)=shift(rebin(reform(dkx*(findgen(nx)-(nx-1)/2),nx,1,1),nx,ny,nz),-(nx-1)/2,-(ny-1)/2,-(nz-1)/2) kk(*,*,*,1)=shift(rebin(reform(dky*(findgen(ny)-(ny-1)/2),1,ny,1),nx,ny,nz),-(nx-1)/2,-(ny-1)/2,-(nz-1)/2) kk(*,*,*,2)=shift(rebin(reform(dkz*(findgen(nz)-(nz-1)/2),1,1,nz),nx,ny,nz),-(nx-1)/2,-(ny-1)/2,-(nz-1)/2) ; k2=dot2(kk) Ak=complexarr(nx,ny,nz,3) for j=0,2 do Ak(*,*,*,j)=fft(var.aa(*,*,*,j),-1) nk=dot(nn,kk) term1=dot(kk,Ak)-nk*dot(nn,Ak) term2=k2-nk^2 bad=where(term2 eq 0.) term2(bad)=1. ratio=term1/term2 ratio(bad)=0. ii=complex(0.,1.) LLam=fltarr(nx,ny,nz,3) for j=0,2 do LLam(*,*,*,j)=fft(-kk(*,*,*,j)*ratio,1) bbz=fft(ii*kk(*,*,*,0)*Ak(*,*,*,1)-ii*kk(*,*,*,1)*Ak(*,*,*,0),1) ; b2m=mean(dot2(var.bb)) print,mean(dot2(var.aa)) print,mean(dot2(var.aa+LLam)) ; fo='(f7.1,2e10.2,2f8.4)' openw,1,'a2.tmp' printf,1,var.t,mean(dot2(var.aa)),mean(dot2(var.aa+LLam)),mean(dot2(var.aa+LLam))/b2m,sqrt(b2m),fo=fo close,1 ; spawn,'cat a2.tmp' spawn,'cat a2.tmp >> a2.dat' END