;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FUNCTION FORWARD_CENTER_3D, DIFF=DIFF,del_x,del_y,del_z,del_t,times ss=SIZE(DIFF.uu, /DIMENSIONS) C_u = FLTARR(ss[0],ss[1],ss[2]) C_v = FLTARR(ss[0],ss[1],ss[2]) C_w = FLTARR(ss[0],ss[1],ss[2]) for i = 0, ss[0]-1 do begin for j = 0, ss[1]-1 do begin for k = 0, ss[2]-1 do begin C_u[i,j,k] = DIFF.uu[i,j,k]*(del_t/del_x) C_v[i,j,k] = DIFF.vv[i,j,k]*(del_t/del_y) C_w[i,j,k] = DIFF.vv[i,j,k]*(del_t/del_z) endfor endfor endfor ;A_FC=FLTARR(times, ss[0], ss[1],ss[2]) diff_ut = FLTARR(times,ss[0],ss[1], ss[2]) diff_vt = FLTARR(times,ss[0],ss[1], ss[2]) diff_wt = FLTARR(times,ss[0],ss[1], ss[2]) diff_tt = FLTARR(times,ss[0],ss[1], ss[2]) diff_ut(0,*,*,*)=REFORM(DIFF.uu(*,*,*)) diff_vt(0,*,*,*)=REFORM(DIFF.vv(*,*,*)) diff_wt(0,*,*,*)=REFORM(DIFF.ww(*,*,*)) diff_tt(0,*,*,*)=REFORM(DIFF.tt(*,*,*)) FOR t=0, times-2 DO BEGIN FOR i=2, ss[0]-2 DO BEGIN FOR j=2, ss[1]-2 DO BEGIN FOR k=2, ss[2]-2 DO BEGIN diff_ut(t+1,i,j,k)= diff_ut(t,i,j,k)+ ((0.5*(C_u[i,j,k])*(diff_ut(t,i+1,j,k)-diff_ut(t,i-1,j,k))) -(0.5*(C_v[i,j,k])*(diff_ut(t,i,j+1,k)-diff_ut(t,i,j-1,k))) -(0.5*(C_w[i,j,k])*(diff_ut(t,i,j,k+1)-diff_ut(t,i,j,k-1)))) diff_vt(t+1,i,j,k)= diff_vt(t,i,j,k)+ ((0.5*(C_u[i,j,k])*(diff_vt(t,i+1,j,k)-diff_vt(t,i-1,j,k))) -(0.5*(C_v[i,j,k])*(diff_vt(t,i,j+1,k)-diff_vt(t,i,j-1,k))) -(0.5*(C_w[i,j,k])*(diff_vt(t,i,j,k+1)-diff_vt(t,i,j,k-1)))) diff_wt(t+1,i,j,k)= diff_wt(t,i,j,k)+ ((0.5*(C_u[i,j,k])*(diff_wt(t,i+1,j,k)-diff_wt(t,i-1,j,k))) -(0.5*(C_v[i,j,k])*(diff_wt(t,i,j+1,k)-diff_wt(t,i,j-1,k))) -(0.5*(C_w[i,j,k])*(diff_wt(t,i,j,k+1)-diff_wt(t,i,j,k-1)))) diff_tt(t+1,i,j,k)= diff_tt(t,i,j,k)+ ((0.5*(C_u[i,j,k])*(diff_tt(t,i+1,j,k)-diff_tt(t,i-1,j,k))) -(0.5*(C_v[i,j,k])*(diff_tt(t,i,j+1,k)-diff_tt(t,i,j-1,k))) -(0.5*(C_w[i,j,k])*(diff_tt(t,i,j,k+1)-diff_tt(t,i,j,k-1)))) ENDFOR ENDFOR ENDFOR ENDFOR difft={ut:diff_ut, vt:diff_vt, wt:diff_wt, tt:diff_tt} PRINT,'forward center done' RETURN, difft END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;