;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FUNCTION FORWARD_UP_ADV,B_IC=B_IC,del_t,del_x,del_y,times ss=SIZE(B_IC.A0, /DIMENSIONS) ss=SIZE(B_IC.A0, /DIMENSIONS) C_u = FLTARR(ss[0],ss[1]) C_v = FLTARR(ss[0],ss[1]) A_FC=FLTARR(times, ss[0], ss[1]) for i = 0, ss[0]-1 do begin for j = 0, ss[1]-1 do begin C_u[i,j] = B_IC.UU[i,j]*(del_t/del_x) C_v[i,j] = B_IC.VV[i,j]*(del_t/del_y) endfor endfor A_FC(0,*,*)= B_IC.A0(*,*) FOR t=0, times-2 DO BEGIN FOR i=2, ss[0]-2 DO BEGIN FOR j=2, ss[1]-2 DO BEGIN A_FC(t+1,i,j)= A_FC(t,i,j)+ (((C_u[i,j])*(A_FC(t,i+1,j)-A_FC(t,i-1,j))) - ((C_v[i,j])*(A_FC(t,i,j+1)-A_FC(t,i,j-1)))) ENDFOR ENDFOR ENDFOR PRINT,'forward up done' RETURN, A_FC ;C_u = FLTARR(ss[0],ss[1]) ;C_v = FLTARR(ss[0],ss[1]) ;A_FU=FLTARR(times, ss[0], ss[1]);; ; ;for i = 0, ss[0]-1 do begin ; for j = 0, ss[1]-1 do begin ; C_u[i,j] = B_IC.UU[i,j]*(del_t/del_x) ; C_v[i,j] = B_IC.VV[i,j]*(del_t/del_y) ; endfor ;endfor; ;; ; ;A_FU(0,*,*)= B_IC.A0(*,*) ; FOR t=0, times-2, del_t*4 DO BEGIN ; FOR ii=2, ss[0]-3 DO BEGIN ; FOR jj=2, ss[1]-3 DO BEGIN ; A_FU(t+1,ii,jj)= A_FU(t,ii,jj)-((C_u(ii-1,jj)* A_FU(t,ii,jj) - A_FU(t,ii-1,jj)) - (C_v[ii,jj]*( A_FU(t,ii,jj) - A_FU(t,ii,jj-1)))) ; ; A_FC(t+1,i,j)= A_FC(t,i,j)+ ((0.5*(C_u[i,j])*(A_FC(t,i+1,j)-A_FC(t,i-1,j))) - (0.5*(C_v[i,j])*(A_FC(t,i,j+1)-A_FC(t,i,j-1)))) ; ;IF (UU(ii,jj) LT 0) THEN A_FU(t+1,ii,jj)= (C_u(ii-1,jj)*(A0(ii+1,jj) - A0(ii,jj))) + (C_v[ii,jj-1]*(A0(ii,jj+1) - A0(ii,jj))) ; ;IF (UU(ii,jj) GT 0) THEN A_FU(t+1,ii,jj)= (C_u(ii-1,jj)*(A0(ii+1,jj) - A0(ii-1,jj))) + (C_v[ii,jj-1]*(A0(ii,jj+1) - A0(ii,jj-1))) ; ENDFOR ; ENDFOR ; PRINT,'STOP' ; ENDFOR ;PRINT,'Forward up done' ;RETURN, A_FC END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;