! !NCEP_MESO:MODEL_LAYER: HORIZONTAL DIFFUSION ! !---------------------------------------------------------------------- !MODULE MODULE_DIFFUSION_NMM 2 ! !---------------------------------------------------------------------- USE MODULE_MPP
USE module_model_constants
!---------------------------------------------------------------------- ! LOGICAL :: SECOND=.TRUE. INTEGER :: KSMUD=1 ! !---------------------------------------------------------------------- ! CONTAINS ! !**********************************************************************
SUBROUTINE HDIFF(NTSD,DT,FIS,DY,HDAC,HDACV & 1 ,HTM,HBM2,VTM,DETA1,SIGMA & ,T,Q,U,V,Q2,Z & ,IHE,IHW,IVE,IVW,INDX3_WRK & ,IDS,IDE,JDS,JDE,KDS,KDE & ,IMS,IME,JMS,JME,KMS,KME & ,ITS,ITE,JTS,JTE,KTS,KTE) !********************************************************************** !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! SUBPROGRAM: HDIFF HORIZONTAL DIFFUSION ! PRGRMMR: JANJIC ORG: W/NP22 DATE: 93-11-17 ! ! ABSTRACT: ! HDIFF CALCULATES THE CONTRIBUTION OF THE HORIZONTAL DIFFUSION ! TO THE TENDENCIES OF TEMPERATURE, SPECIFIC HUMIDITY, WIND ! COMPONENTS, AND TURBULENT KINETIC ENERGY AND THEN UPDATES THOSE ! VARIABLES. A SECOND-ORDER NONLINEAR SCHEME SIMILAR TO ! SMAGORINSKY'S IS USED WHERE THE DIFFUSION COEFFICIENT IS ! A FUNCTION OF THE DEFORMATION FIELD AND OF THE TURBULENT ! KINETIC ENERGY. ! ! PROGRAM HISTORY LOG: ! 87-06-?? JANJIC - ORIGINATOR ! 95-03-25 BLACK - CONVERSION FROM 1-D TO 2-D IN HORIZONTAL ! 96-03-28 BLACK - ADDED EXTERNAL EDGE ! 98-10-30 BLACK - MODIFIED FOR DISTRIBUTED MEMORY ! 02-02-07 BLACK - CONVERTED TO WRF STRUCTURE ! 02-08-29 MICHALAKES - ! 02-09-06 WOLFE - ! 03-05-27 JANJIC - ADDED SLOPE ADJUSTMENT ! ! USAGE: CALL HDIFF FROM SUBROUTINE SOLVE_RUNSTREAM ! ! INPUT ARGUMENT LIST: ! ! OUTPUT ARGUMENT LIST: ! ! OUTPUT FILES: ! NONE ! ! SUBPROGRAMS CALLED: ! ! UNIQUE: NONE ! ! LIBRARY: NONE ! ! ATTRIBUTES: ! LANGUAGE: FORTRAN 90 ! MACHINE : IBM SP !$$$ !********************************************************************** !---------------------------------------------------------------------- ! IMPLICIT NONE ! !---------------------------------------------------------------------- ! INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE & ,IMS,IME,JMS,JME,KMS,KME & ,ITS,ITE,JTS,JTE,KTS,KTE ! INTEGER,INTENT(IN) :: NTSD ! REAL,INTENT(IN) :: DT,DY ! REAL,DIMENSION(KMS:KME),INTENT(IN) :: DETA1 ! REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: FIS,HBM2 & ,HDAC,HDACV ! REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: HTM,VTM,Z ! REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: T,Q,Q2 & ,U,V ! INTEGER, DIMENSION(jms:jme), INTENT(IN) :: IHE,IHW,IVE,IVW ! !*** NMM_MAX_DIM is set in configure.wrf and must agree with !*** the value of dimspec q in the Registry/Registry. ! INTEGER,DIMENSION(-3:3,NMM_MAX_DIM,0:6),INTENT(IN) :: indx3_wrk ! INTEGER,INTENT(IN) :: SIGMA ! !---------------------------------------------------------------------- ! !*** LOCAL VARIABLES ! INTEGER :: I,J,J1_P1,J1_P2,J2_00,J2_M1,J2_P1,J3_00,J3_P1,J3_P2 & ,J4_00,J4_M1,J4_M2,J4_P1,J4_P2,JJ,JKNT,JSTART,K,KS ! REAL :: DEF_J,DEFSK,DEFTK,HKNE_J,HKSE_J,Q2L,RDY,SLOP,SLOPHC & ,UTK,VKNE_J,VKSE_J,VTK ! REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE) :: SNE,SSE ! !*** TYPE 1 WORKING ARRAY (SEE PFDHT) ! REAL,DIMENSION(its-5:ite+5,KTS:KTE,-2:2) :: DEF ! !*** TYPE 2 WORKING ARRAY (SEE PFDHT) ! REAL,DIMENSION(its-5:ite+5,KTS:KTE,-2:1) :: HKNE,QNE,Q2NE,TNE & ,UNE,VKNE,VNE ! !*** TYPE 3 WORKING ARRAY (SEE PFDHT) ! REAL,DIMENSION(its-5:ite+5,KTS:KTE, -1:2) :: HKSE,QSE,Q2SE,TSE & ,USE,VKSE,VSE ! !*** TYPE 4 WORKING ARRAY (SEE PFDHT) ! REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-1:1) :: CKE,QDIF,Q2DIF & ,TDIF,UDIF,VDIF ! !---------------------------------------------------------------------- !********************************************************************** !---------------------------------------------------------------------- MYIE =MIN(IDE ,ITE ) ! MYIS1 =MAX(IDS+1,ITS ) MYIE1 =MIN(IDE-1,ITE ) MYJS2 =MAX(JDS+2,JTS ) MYJE2 =MIN(JDE-2,JTE ) ! MYIS_P1 =MAX(IDS ,ITS-1) MYIE_P1 =MIN(IDE ,ITE+1) ! MYIS1_P1=MAX(IDS+1,ITS-1) MYIE1_P1=MIN(IDE-1,ITE+1) ! JSTART=MYJS2 !---------------------------------------------------------------------- ! SLOPHC=SLOPHT*SQRT(2.)*0.5 RDY=1./DY ! !---------------------------------------------------------------------- !*** !*** DIFFUSING Q2 AT GROUND LEVEL DOES NOT MATTER !*** BECAUSE USTAR2 IS RECALCULATED !*** !---------------------------------------------------------------------- !*** MARCH NORTHWARD THROUGH THE SOUTHERNMOST SLABS TO BEGIN !*** FILLING THE MAIN WORKING ARRAYS WHICH ARE MULTI-DIMENSIONED !*** IN J BECAUSE THEY ARE DIFFERENCED OR AVERAGED IN J !---------------------------------------------------------------------- ! DEF = 0. TNE = 0. QNE = 0. Q2NE = 0. HKNE = 0. UNE = 0. VNE = 0. VKNE = 0. TSE = 0. QSE = 0. Q2SE = 0. HKSE = 0. USE = 0. VSE = 0. VKSE = 0. DO J=-2,1 JJ=JSTART+J ! DO K=KTS,KTE DO I=MYIS_P1,MYIE_P1 DEFTK=U(I+IHE(JJ),K,JJ)-U(I+IHW(JJ),K,JJ) & -V(I,K,JJ+1)+V(I,K,JJ-1) DEFSK=U(I,K,JJ+1)-U(I,K,JJ-1) & +V(I+IHE(JJ),K,JJ)-V(I+IHW(JJ),K,JJ) Q2L=MAX(Q2(I,K,JJ),EPSQ2) DEF_J=DEFTK*DEFTK+DEFSK*DEFSK+SCQ2*Q2L DEF_J=SQRT(DEF_J+DEF_J)*HBM2(I,JJ) DEF_J=MAX(DEF_J,DEFC) DEF_J=MIN(DEF_J,DEFM) DEF(I,K,J)=DEF_J ENDDO ENDDO ! ENDDO ! DO J=-2,0 JJ=JSTART+J ! !*** SLOPE SWITCHES FOR MOISTURE ! IF(SIGMA.EQ.1)THEN DO K=KTS,KTE ! !*** PRESSURE DOMAIN ! IF(DETA1(K).GT.0)THEN DO I=MYIS_P1,MYIE1_P1 SNE(I,K)=1. ENDDO ! !*** SIGMA DOMAIN ! ELSE DO I=MYIS_P1,MYIE1_P1 SLOP=ABS((Z(I+IHE(JJ),K,JJ+1)-Z(I,K,JJ))*RDY) IF(SLOP.LT.SLOPHC)THEN SNE(I,K)=1. ELSE SNE(I,K)=0. ENDIF ! ENDDO ENDIF ! ENDDO ENDIF ! DO K=KTS,KTE DO I=MYIS_P1,MYIE1_P1 HKNE_J=(DEF(I,K,J)+DEF(I+IHE(JJ),K,J+1)) & *HTM(I,K,JJ)*HTM(I+IHE(JJ),K,JJ+1)*SNE(I,K) TNE (I,K,J)=(T (I+IHE(JJ),K,JJ+1)-T (I,K,JJ))*HKNE_J QNE (I,K,J)=(Q (I+IHE(JJ),K,JJ+1)-Q (I,K,JJ))*HKNE_J Q2NE(I,K,J)=(Q2(I+IHE(JJ),K,JJ+1)-Q2(I,K,JJ))*HKNE_J HKNE(I,K,J)=HKNE_J ! VKNE_J=(DEF(I+IVE(JJ),K,J)+DEF(I,K,J+1)) & *VTM(I,K,JJ)*VTM(I+IVE(JJ),K,JJ+1) UNE(I,K,J)=(U(I+IVE(JJ),K,JJ+1)-U(I,K,JJ))*VKNE_J VNE(I,K,J)=(V(I+IVE(JJ),K,JJ+1)-V(I,K,JJ))*VKNE_J VKNE(I,K,J)=VKNE_J ENDDO ENDDO ! ENDDO ! DO J=-1,1 JJ=JSTART+J ! !*** SLOPE SWITCHES FOR MOISTURE ! IF(SIGMA.EQ.1)THEN DO K=KTS,KTE ! !*** PRESSURE DOMAIN ! IF(DETA1(K).GT.0)THEN DO I=MYIS_P1,MYIE1_P1 SSE(I,K)=1. ENDDO ! !*** SIGMA DOMAIN ! ELSE DO I=MYIS_P1,MYIE1_P1 SLOP=ABS((Z(I+IHE(JJ),K,JJ-1)-Z(I,K,JJ))*RDY) IF(SLOP.LT.SLOPHC)THEN SSE(I,K)=1. ELSE SSE(I,K)=0. ENDIF ENDDO ENDIF ! ENDDO ENDIF ! DO K=KTS,KTE DO I=MYIS_P1,MYIE1_P1 HKSE_J=(DEF(I+IHE(JJ),K,J-1)+DEF(I,K,J)) & *HTM(I+IHE(JJ),K,JJ-1)*HTM(I,K,JJ)*SSE(I,K) TSE (I,K,J)=(T (I+IHE(JJ),K,JJ-1)-T (I,K,JJ))*HKSE_J QSE (I,K,J)=(Q (I+IHE(JJ),K,JJ-1)-Q (I,K,JJ))*HKSE_J Q2SE(I,K,J)=(Q2(I+IHE(JJ),K,JJ-1)-Q2(I,K,JJ))*HKSE_J HKSE(I,K,J)=HKSE_J ! VKSE_J=(DEF(I,K,J-1)+DEF(I+IVE(JJ),K,J)) & *VTM(I+IVE(JJ),K,JJ-1)*VTM(I,K,JJ) USE(I,K,J)=(U(I+IVE(JJ),K,JJ-1)-U(I,K,JJ))*VKSE_J VSE(I,K,J)=(V(I+IVE(JJ),K,JJ-1)-V(I,K,JJ))*VKSE_J VKSE(I,K,J)=VKSE_J ENDDO ENDDO ! ENDDO ! DO J=-1,0 JJ=JSTART+J ! DO K=KTS,KTE DO I=MYIS1_P1,MYIE1 TDIF (I,K,J)=(TNE (I,K,J)-TNE (I+IHW(JJ),K,J-1) & +TSE (I,K,J)-TSE (I+IHW(JJ),K,J+1)) & *HDAC(I,JJ) QDIF (I,K,J)=(QNE (I,K,J)-QNE (I+IHW(JJ),K,J-1) & +QSE (I,K,J)-QSE (I+IHW(JJ),K,J+1)) & *HDAC(I,JJ)*FCDIF Q2DIF(I,K,J)=(Q2NE(I,K,J)-Q2NE(I+IHW(JJ),K,J-1) & +Q2SE(I,K,J)-Q2SE(I+IHW(JJ),K,J+1)) & *HDAC(I,JJ) ! UDIF (I,K,J)=(UNE (I,K,J)-UNE (I+IVW(JJ),K,J-1) & +USE (I,K,J)-USE (I+IVW(JJ),K,J+1)) & *HDACV(I,JJ) VDIF (I,K,J)=(VNE (I,K,J)-VNE (I+IVW(JJ),K,J-1) & +VSE (I,K,J)-VSE (I+IVW(JJ),K,J+1)) & *HDACV(I,JJ) ENDDO ENDDO ! ENDDO ! !---------------------------------------------------------------------- !*** ITERATION LOOP !---------------------------------------------------------------------- ! DO 600 KS=1,KSMUD ! JKNT=0 !---------------------------------------------------------------------- !*** MAIN VERTICAL INTEGRATION LOOP !---------------------------------------------------------------------- !---------------------------------------------------------------------- main_integration : DO J=MYJS2,MYJE2 !---------------------------------------------------------------------- ! !*** !*** SET THE 3RD INDEX IN THE WORKING ARRAYS (SEE SUBROUTINE INIT !*** AND DIAGRAMS IN PFDHT) !*** !*** J[TYPE]_NN WHERE "TYPE" IS THE WORKING ARRAY TYPE SEEN IN THE !*** LOCAL DECLARATION ABOVE (DEPENDENT UPON THE J EXTENT) AND !*** NN IS THE NUMBER OF ROWS NORTH OF THE CENTRAL ROW WHOSE J IS !*** THE CURRENT VALUE OF THE main_integration LOOP. !*** (P2 denotes +2, etc.) !*** JKNT=JKNT+1 ! J1_P2=INDX3_WRK(2,JKNT,1) J1_P1=INDX3_WRK(1,JKNT,1) ! J2_P1=INDX3_WRK(1,JKNT,2) J2_00=INDX3_WRK(0,JKNT,2) J2_M1=INDX3_WRK(-1,JKNT,2) ! J3_P2=INDX3_WRK(2,JKNT,3) J3_P1=INDX3_WRK(1,JKNT,3) J3_00=INDX3_WRK(0,JKNT,3) ! J4_P2=INDX3_WRK(2,JKNT,4) J4_P1=INDX3_WRK(1,JKNT,4) J4_00=INDX3_WRK(0,JKNT,4) J4_M1=INDX3_WRK(-1,JKNT,4) ! !---------------------------------------------------------------------- !*** SLOPE SWITCHES FOR MOISTURE !---------------------------------------------------------------------- IF(SIGMA.EQ.1)THEN ! DO K=KTS,KTE ! !*** PRESSURE DOMAIN ! IF(DETA1(K).GT.0)THEN DO I=MYIS_P1,MYIE1_P1 SNE(I,K)=1. SSE(I,K)=1. ENDDO ! !*** SIGMA DOMAIN ! ELSE DO I=MYIS_P1,MYIE1_P1 SLOP=ABS((Z(I+IHE(J+1),K,J+2)-Z(I,K,J+1))*RDY) IF(SLOP.LT.SLOPHC)THEN SNE(I,K)=1. ELSE SNE(I,K)=0. ENDIF ! SLOP=ABS((Z(I+IHE(J+2),K,J+1)-Z(I,K,J+2))*RDY) IF(SLOP.LT.SLOPHC)THEN SSE(I,K)=1. ELSE SSE(I,K)=0. ENDIF ENDDO ENDIF ! ENDDO ENDIF !---------------------------------------------------------------------- !*** DEFORMATIONS !---------------------------------------------------------------------- ! DO K=KTS,KTE DO I=MYIS_P1,MYIE_P1 ! DEFTK=U(I+IHE(J+2),K,J+2)-U(I+IHW(J+2),K,J+2) & -V(I,K,J+3)+V(I,K,J+1) DEFSK=U(I,K,J+3)-U(I,K,J+1) & +V(I+IHE(J+2),K,J+2)-V(I+IHW(J+2),K,J+2) Q2L=MAX(Q2(I,K,J+2),EPSQ2) DEF_J=DEFTK*DEFTK+DEFSK*DEFSK+SCQ2*Q2L DEF_J=SQRT(DEF_J+DEF_J)*HBM2(I,J+2) DEF_J=MAX(DEF_J,DEFC) DEF_J=MIN(DEF_J,DEFM) DEF(I,K,J1_P2)=DEF_J ENDDO ENDDO ! !---------------------------------------------------------------------- !*** DIAGONAL CONTRIBUTIONS !---------------------------------------------------------------------- ! DO K=KTS,KTE DO I=MYIS_P1,MYIE1_P1 HKNE_J=(DEF(I,K,J1_P1)+DEF(I+IHE(J+1),K,J1_P2)) & *HTM(I,K,J+1)*HTM(I+IHE(J+1),K,J+2)*SNE(I,K) TNE (I,K,J2_P1)=(T (I+IHE(J+1),K,J+2)-T (I,K,J+1))*HKNE_J QNE (I,K,J2_P1)=(Q (I+IHE(J+1),K,J+2)-Q (I,K,J+1))*HKNE_J Q2NE(I,K,J2_P1)=(Q2(I+IHE(J+1),K,J+2)-Q2(I,K,J+1))*HKNE_J HKNE(I,K,J2_P1)=HKNE_J ! VKNE_J=(DEF(I+IVE(J+1),K,J1_P1)+DEF(I,K,J1_P2)) & *VTM(I,K,J+1)*VTM(I+IVE(J+1),K,J+2) UNE(I,K,J2_P1)=(U(I+IVE(J+1),K,J+2)-U(I,K,J+1))*VKNE_J VNE(I,K,J2_P1)=(V(I+IVE(J+1),K,J+2)-V(I,K,J+1))*VKNE_J VKNE(I,K,J2_P1)=VKNE_J ! HKSE_J=(DEF(I+IHE(J+2),K,J1_P1)+DEF(I,K,J1_P2)) & *HTM(I+IHE(J+2),K,J+1)*HTM(I,K,J+2)*SSE(I,K) TSE (I,K,J3_P2)=(T (I+IHE(J+2),K,J+1)-T (I,K,J+2))*HKSE_J QSE (I,K,J3_P2)=(Q (I+IHE(J+2),K,J+1)-Q (I,K,J+2))*HKSE_J Q2SE(I,K,J3_P2)=(Q2(I+IHE(J+2),K,J+1)-Q2(I,K,J+2))*HKSE_J HKSE(I,K,J3_P2)=HKSE_J ! VKSE_J=(DEF(I,K,J1_P1)+DEF(I+IVE(J+2),K,J1_P2)) & *VTM(I+IVE(J+2),K,J+1)*VTM(I,K,J+2) USE (I,K,J3_P2)=(U (I+IVE(J+2),K,J+1)-U (I,K,J+2))*VKSE_J VSE (I,K,J3_P2)=(V (I+IVE(J+2),K,J+1)-V (I,K,J+2))*VKSE_J VKSE(I,K,J3_P2)=VKSE_J ENDDO ENDDO !---------------------------------------------------------------------- ! DO K=KTS,KTE DO I=MYIS_P1,MYIE TDIF (I,K,J4_P1)=(TNE (I,K,J2_P1)-TNE (I+IHW(J+1),K,J2_00) & +TSE (I,K,J3_P1)-TSE (I+IHW(J+1),K,J3_P2)) & *HDAC(I,J+1) QDIF (I,K,J4_P1)=(QNE (I,K,J2_P1)-QNE (I+IHW(J+1),K,J2_00) & +QSE (I,K,J3_P1)-QSE (I+IHW(J+1),K,J3_P2)) & *HDAC(I,J+1)*FCDIF Q2DIF(I,K,J4_P1)=(Q2NE(I,K,J2_P1)-Q2NE(I+IHW(J+1),K,J2_00) & +Q2SE(I,K,J3_P1)-Q2SE(I+IHW(J+1),K,J3_P2)) & *HDAC(I,J+1) ! UDIF (I,K,J4_P1)=(UNE (I,K,J2_P1)-UNE (I+IVW(J+1),K,J2_00) & +USE (I,K,J3_P1)-USE (I+IVW(J+1),K,J3_P2)) & *HDACV(I,J+1) VDIF (I,K,J4_P1)=(VNE (I,K,J2_P1)-VNE (I+IVW(J+1),K,J2_00) & +VSE (I,K,J3_P1)-VSE (I+IVW(J+1),K,J3_P2)) & *HDACV(I,J+1) ENDDO ENDDO ! !---------------------------------------------------------------------- !*** 2ND ORDER DIFFUSION !---------------------------------------------------------------------- ! IF(SECOND)THEN DO K=KTS,KTE DO I=MYIS1,MYIE1 T(I,K,J)=T(I,K,J)+TDIF(I,K,J4_00) Q(I,K,J)=Q(I,K,J)+QDIF(I,K,J4_00) ! U(I,K,J)=U(I,K,J)+UDIF(I,K,J4_00) V(I,K,J)=V(I,K,J)+VDIF(I,K,J4_00) ENDDO ENDDO ! !---------------------------------------------------------------------- DO K=KTS+1,KTE DO I=MYIS1,MYIE1 Q2(I,K,J)=Q2(I,K,J)+Q2DIF(I,K,J4_00)*HTM(I,K-1,J) ENDDO ENDDO ! !---------------------------------------------------------------------- !*** 4TH ORDER DIAGONAL CONTRIBUTIONS !---------------------------------------------------------------------- ! ELSE ! DO K=KTS,KTE DO I=MYIS_P1,MYIE1 HKNE_J=HKNE(I,K,J2_00) TNE (I,K,J2_00)=(TDIF (I+IHE(J),K,J4_P1)-TDIF (I,K,J4_00)) & *HKNE_J QNE (I,K,J2_00)=(QDIF (I+IHE(J),K,J4_P1)-QDIF (I,K,J4_00)) & *HKNE_J Q2NE(I,K,J2_00)=(Q2DIF(I+IHE(J),K,J4_P1)-Q2DIF(I,K,J4_00)) & *HKNE_J ! VKNE_J=VKNE(I,K,J2_00) UNE (I,K,J2_00)=(UDIF (I+IVE(J),K,J4_P1)-UDIF (I,K,J4_00)) & *VKNE_J VNE (I,K,J2_00)=(VDIF (I+IVE(J),K,J4_P1)-VDIF (I,K,J4_00)) & *VKNE_J ! HKSE_J=HKSE(I,K,J3_P1) TSE (I,K,J3_P1)=(TDIF (I+IHE(J+1),K,J4_00) & -TDIF (I ,K,J4_P1))*HKSE_J QSE (I,K,J3_P1)=(QDIF (I+IHE(J+1),K,J4_00) & -QDIF (I ,K,J4_P1))*HKSE_J Q2SE(I,K,J3_P1)=(Q2DIF(I+IHE(J+1),K,J4_00) & -Q2DIF(I ,K,J4_P1))*HKSE_J ! VKSE_J=VKSE(I,K,J3_P1) USE (I,K,J3_P1)=(UDIF (I+IVE(J+1),K,J4_00) & -UDIF (I ,K,J4_P1))*VKSE_J VSE (I,K,J3_P1)=(VDIF (I+IVE(J+1),K,J4_00) & -VDIF (I ,K,J4_P1))*VKSE_J ENDDO ENDDO ! IF(J.EQ.MYJS2)THEN DO K=KTS,KTE DO I=MYIS_P1,MYIE1 HKNE_J=HKNE(I,K,J2_M1) TNE (I,K,J2_M1)=(TDIF (I+IHE(J-1),K,J4_00) & -TDIF (I ,K,J4_M1))*HKNE_J QNE (I,K,J2_M1)=(QDIF (I+IHE(J-1),K,J4_00) & -QDIF (I ,K,J4_M1))*HKNE_J Q2NE(I,K,J2_M1)=(Q2DIF(I+IHE(J-1),K,J4_00) & -Q2DIF(I ,K,J4_M1))*HKNE_J ! VKNE_J=VKNE(I,K,J2_M1) UNE (I,K,J2_M1)=(UDIF (I+IVE(J-1),K,J4_00) & -UDIF (I ,K,J4_M1))*VKNE_J VNE (I,K,J2_M1)=(VDIF (I+IVE(J-1),K,J4_00) & -VDIF (I ,K,J4_M1))*VKNE_J ! HKSE_J=HKSE(I,K,J3_00) TSE (I,K,J3_00)=(TDIF (I+IHE(J),K,J4_M1) & -TDIF (I ,K,J4_00))*HKSE_J QSE (I,K,J3_00)=(QDIF (I+IHE(J),K,J4_M1) & -QDIF (I ,K,J4_00))*HKSE_J Q2SE(I,K,J3_00)=(Q2DIF(I+IHE(J),K,J4_M1) & -Q2DIF(I ,K,J4_00))*HKSE_J ! VKSE_J=VKSE(I,K,J3_00) USE (I,K,J3_00)=(UDIF (I+IVE(J),K,J4_M1) & -UDIF (I ,K,J4_00))*VKSE_J VSE (I,K,J3_00)=(VDIF (I+IVE(J),K,J4_M1) & -VDIF (I ,K,J4_00))*VKSE_J ENDDO ENDDO ENDIF ! IF(J.EQ.MYJE2)THEN ! DO K=KTS,KTE DO I=MYIS_P1,MYIE1 TNE (I,K,J2_P1)=0. QNE (I,K,J2_P1)=0. Q2NE(I,K,J2_P1)=0. UNE (I,K,J2_P1)=0. VNE (I,K,J2_P1)=0. ENDDO ENDDO ! ENDIF ! !---------------------------------------------------------------------- ! DO K=KTS,KTE DO I=MYIS1,MYIE1 T(I,K,J)=T(I,K,J)-(TNE (I,K,J2_00)-TNE (I+IHW(J),K,J2_M1) & +TSE (I,K,J3_00)-TSE (I+IHW(J),K,J3_P1)) & *HDAC(I,J) Q(I,K,J)=Q(I,K,J)-(QNE (I,K,J2_00)-QNE (I+IHW(J),K,J2_M1) & +QSE (I,K,J3_00)-QSE (I+IHW(J),K,J3_P1)) & *HDAC(I,J)*FCDIF ! UTK=U(I,K,J) VTK=V(I,K,J) U(I,K,J)=U(I,K,J)-(UNE (I,K,J2_00)-UNE (I+IVW(J),K,J2_M1) & +USE (I,K,J3_00)-USE (I+IVW(J),K,J3_P1)) & *HDACV(I,J) V(I,K,J)=V(I,K,J)-(VNE (I,K,J2_00)-VNE (I+IVW(J),K,J2_M1) & +VSE (I,K,J3_00)-VSE (I+IVW(J),K,J3_P1)) & *HDACV(I,J) CKE(I,K,J4_00)=0.5*(U(I,K,J)*U(I,K,J)-UTK*UTK & +V(I,K,J)*V(I,K,J)-VTK*VTK) ENDDO ENDDO ! !---------------------------------------------------------------------- ! DO K=KTS,KTE-1 DO I=MYIS1,MYIE1 Q2(I,K,J)=Q2(I,K,J)-(Q2NE(I,K,J2_00)-Q2NE(I+IHW(J),K,J2_M1) & +Q2SE(I,K,J3_00)-Q2SE(I+IHW(J),K,J3_P1)) & *HDAC(I,J)*HTM(I,K+1,J) ENDDO ENDDO ! !---------------------------------------------------------------------- ENDIF ! End 4th order diffusion !---------------------------------------------------------------------- ! ENDDO main_integration ! !---------------------------------------------------------------------- ! 600 CONTINUE ! !---------------------------------------------------------------------- END SUBROUTINE HDIFF !---------------------------------------------------------------------- END MODULE MODULE_DIFFUSION_NMM