📄 tsc.pro
字号:
bad=where(kz2 EQ nz,count) IF count NE 0 THEN BEGIN kz2[bad]=0 kz3[bad]=1 ENDIF ENDIF bad=0 ; Free memory.ENDIF ELSE BEGIN kz1=0 kz2=0 wz1=1 wz2=1ENDELSE ;-----------------------------; Interpolate samples to grid.;-----------------------------field=fltarr(nx,ny,nz)IF keyword_set(average) THEN tottscweight=fltarr(nx,ny,nz); tscweight adds up all tsc weights allocated to a grid point, we need; to keep track of this in order to compute the temperature.; Note that total(tscweight) is equal to nrsamples and that; total(ifield)=n0^3 if sph.plot NE 'sph,temp' (not 1 because we use; xpos=posx*n0 --> cube length different from EDFW paper).index=kx1+ky1*nx+kz1*nxnytscweight=wx1*wy1*wz1IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFORENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j]index=kx2+ky1*nx+kz1*nxnytscweight=wx2*wy1*wz1IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFORENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j]index=kx3+ky1*nx+kz1*nxnytscweight=wx3*wy1*wz1IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFORENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j]IF dim GE 2 THEN BEGIN index=kx1+ky2*nx+kz1*nxny tscweight=wx1*wy2*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky2*nx+kz1*nxny tscweight=wx2*wy2*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky2*nx+kz1*nxny tscweight=wx3*wy2*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky3*nx+kz1*nxny tscweight=wx1*wy3*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky3*nx+kz1*nxny tscweight=wx2*wy3*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky3*nx+kz1*nxny tscweight=wx3*wy3*wz1 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] IF dim EQ 3 THEN BEGIN index=kx1+ky1*nx+kz2*nxny tscweight=wx1*wy1*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky1*nx+kz2*nxny tscweight=wx2*wy1*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky1*nx+kz2*nxny tscweight=wx3*wy1*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky2*nx+kz2*nxny tscweight=wx1*wy2*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky2*nx+kz2*nxny tscweight=wx2*wy2*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky2*nx+kz2*nxny tscweight=wx3*wy2*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky3*nx+kz2*nxny tscweight=wx1*wy3*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky3*nx+kz2*nxny tscweight=wx2*wy3*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky3*nx+kz2*nxny tscweight=wx3*wy3*wz2 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky1*nx+kz3*nxny tscweight=wx1*wy1*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky1*nx+kz3*nxny tscweight=wx2*wy1*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky1*nx+kz3*nxny tscweight=wx3*wy1*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky2*nx+kz3*nxny tscweight=wx1*wy2*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky2*nx+kz3*nxny tscweight=wx2*wy2*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky2*nx+kz3*nxny tscweight=wx3*wy2*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx1+ky3*nx+kz3*nxny tscweight=wx1*wy3*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx2+ky3*nx+kz3*nxny tscweight=wx2*wy3*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] index=kx3+ky3*nx+kz3*nxny tscweight=wx3*wy3*wz3 IF keyword_set(average) THEN BEGIN FOR j=0l,nrsamples-1l DO BEGIN field[index[j]]=field[index[j]]+tscweight[j]*value[j] tottscweight[index[j]]=tottscweight[index[j]]+tscweight[j] ENDFOR ENDIF ELSE FOR j=0l,nrsamples-1l DO $ field[index[j]]=field[index[j]]+tscweight[j]*value[j] ENDIFENDIF; Free memory (no need to free any more local arrays, will not lower; maximum memory usage).index=0weight=0;--------------------------; Compute weighted average.;--------------------------IF keyword_set(average) THEN BEGIN good=where(tottscweight NE 0,nrgood) field[good]=temporary(field[good])/temporary(tottscweight[good])ENDIFreturn,fieldEND ; End of procedure tsc.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -