#include "dims.h" SUBROUTINE ADVEC(NX,S) use cons_module,only: long,dlamda_2div3,dlamda_1div12,re_inv, | dphi_2div3,dphi_1div12 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 real,intent(out) :: s(zimxp,zkmxp) ! ! Local: integer :: i,nuk,nxk,nvjpk,nvjmk,nxjpk,nxjmk 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 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 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 C **** D4X = D4X*UBAR2L do i=1,long d4x(i) = d4x(i)*ubarl(i) enddo C **** X = (D2X-D4X)*RACS do i=1,long x(i) = (d2x(i)-d4x(i))*racs enddo C C **** COMPUTE re_inv*DP(X) C C VBARP = (V(J+1)+V(J-1))/2 NVJPK = NJP1+NV NVJMK = NJM1+NV do i=1,long vbarp(i) = (f(i+2,nvjpk)+f(i+2,nvjmk))*0.5 enddo C D2X = dphi_2div3*(X(J+1)-X(J-1)) NXJPK = NJP1+NX NXJMK = NJM1+NX do i=1,long d2x(i) = (f(i+2,nxjpk)-f(i+2,nxjmk))*dphi_2div3 enddo C **** D2X = D2X*VBARP do i=1,long d2x(i) = d2x(i)*vbarp(i) enddo C **** VBARP = (V(J+2)+V(J-2))/2 NVJPK = NJP2+NV NVJMK = NJM2+NV do i=1,long vbarp(i) = (f(i+2,nvjpk)+f(i+2,nvjmk))*0.5 enddo 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 C **** D4X = D4X*VBARP do i=1,long d4x(i) = d4x(i)*vbarp(i) enddo C **** D2X = (D2X-D4X)*re_inv do i=1,long d2x(i) = (d2x(i)-d4x(i))*re_inv enddo C **** S = X+D2X = ADVEC(X) do i=1,long s(i+2,1) = x(i)+d2x(i) enddo RETURN END C