#include "dims.h" SUBROUTINE ADVEC(NX,S,idebug) use cons_module,only: long,dlamda_2div3,dlamda_1div12, | dphi_1div12,re_inv implicit none #include "params.h" #include "fcom.h" #include "cadvec.h" #include "buff.h" #include "index.h" #include "phys.h" ! ! Args: integer,intent(in) :: nx,idebug real,intent(out) :: S(1) ! ! Local: integer :: nuk,i,nxk,nvjpk,nvjmk,nxjpk,nxjmk ! if (idebug > 0) then ! write(6,"('advec: lat=',i2,' save F_IN.')") j ! call addfsech('F_IN',' ',' ',f(1,nj+nx),zimxp,zkmxp,zkmx,j) ! endif C C **** COMPUTE X = RACS*DL(X) C C **** UBARL = (U(I+1)+U(I-1))/2 NUK = NJ+NU do i=1,long ubarl(i) = (f(i+3,nuk)+f(i+1,nuk))*0.5 enddo ! if (idebug > 0) ! | call addfsech('UBARL',' ',' ',ubarl,zimxp,zkmxp,zkmx,j) C D2X = dlamda_2div3*(X(I+1)-X(I-1)) NXK = NJ+NX do i=1,long d2x(i) = (f(i+3,nxk)-f(i+1,nxk))*dlamda_2div3 enddo ! if (idebug > 0) ! | call addfsech('D2X',' ',' ',d2x,zimxp,zkmxp,zkmx,j) C **** D2X = D2X*UBARL do i=1,long d2x(i) = d2x(i)*ubarl(i) enddo C **** UBARL = (U(I+2)+U(I-2))/2 do i=1,long ubarl(i) = (f(i+4,nuk)+f(i,nuk))*0.5 enddo C **** D4X = dlamda_1div12*(X(I+2)-X(I-2)) do i=1,long d4x(i) = (f(i+4,nxk)-f(i,nxk))*dlamda_1div12 enddo ! if (idebug > 0) ! | call addfsech('D4X',' ',' ',d4x,zimxp,zkmxp,zkmx,j) C **** D4X = D4X*UBAR2L do i=1,long d4x(i) = d4x(i)*ubarl(i) enddo ! if (idebug > 0) ! | call addfsech('D4X',' ',' ',d4x,zimxp,zkmxp,zkmx,j) C **** X = (D2X-D4X)*RACS do i=1,long x(i) = (d2x(i)-d4x(i))*racs enddo ! if (idebug > 0) ! | call addfsech('WK',' ',' ',x,zimxp,zkmxp,zkmx,j) C C **** COMPUTE re_inv*DP(X) C C VBARP = (V(J+1)+V(J-1))/2 NVJPK = NJP2+NV NVJMK = NJM2+NV do i=1,long vbarp(i) = (f(i+2,nvjpk)+f(i+2,nvjmk))*0.5 enddo ! if (idebug > 0) ! | call addfsech('VBARP',' ',' ',vbarp,zimxp,zkmxp,zkmx,j) C **** D4X = dphi_1div12*(X(J+2)-X(J-2)) NXJPK = NJP2+NX NXJMK = NJM2+NX do i=1,long d4x(i) = (f(i+2,nxjpk)-f(i+2,nxjmk))*dphi_1div12 enddo ! if (idebug > 0) ! | call addfsech('D4XJ',' ',' ',d4x,zimxp,zkmxp,zkmx,j) C **** D4X = D4X*VBARP do i=1,long d4x(i) = d4x(i)*vbarp(i) enddo ! if (idebug > 0) ! | call addfsech('D4XJ',' ',' ',d4x,zimxp,zkmxp,zkmx,j) C **** D2X = (D2X-D4X)*re_inv do i=1,long d2x(i) = (d2x(i)-d4x(i))*re_inv enddo ! if (idebug > 0) ! | call addfsech('D2XJ',' ',' ',d2x,zimxp,zkmxp,zkmx,j) C **** S = X+D2X = ADVEC(X) do i=1,long s(i+2) = x(i)+d2x(i) enddo ! if (idebug > 0) ! | call addfsech('HADVEC',' ',' ',s,zimxp,zkmxp,zkmx,j) RETURN END C