diff --git a/src/MNH/ppm.f90 b/src/MNH/ppm.f90 index d48a21a7ea45384653608c675326e1bb5331e7a4..7ef68d79ee1f78c04628cdc2a3c3211ce474de9b 100644 --- a/src/MNH/ppm.f90 +++ b/src/MNH/ppm.f90 @@ -42,10 +42,10 @@ DQ(:,:,IKE+1) = -DQ(:,:,IKE) ! DIF2Z(DQ,PQ) INTERFACE ! #ifndef _OPENACC -FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_01_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) +SUBROUTINE PPM_01_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP, PR) #endif CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type ! @@ -53,15 +53,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -75,10 +75,10 @@ END SUBROUTINE PPM_01_X ! ! #ifndef _OPENACC -FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_01_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) +SUBROUTINE PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP, PR) #endif CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type ! @@ -86,15 +86,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -107,9 +107,9 @@ END SUBROUTINE PPM_01_Y #endif ! #ifndef _OPENACC -FUNCTION PPM_01_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) RESULT(PR) +FUNCTION PPM_01_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) RESULT(PR) #else -SUBROUTINE PPM_01_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) +SUBROUTINE PPM_01_Z(KGRID, PSRC, PCR, PRHO, PTSTEP, PR) #endif ! INTEGER, INTENT(IN) :: KGRID ! C grid localisation @@ -120,15 +120,15 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -141,10 +141,10 @@ END SUBROUTINE PPM_01_Z #endif ! #ifndef _OPENACC -FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP & +SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP & , PR) #endif CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type @@ -153,15 +153,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -174,10 +174,10 @@ END SUBROUTINE PPM_S0_X #endif ! #ifndef _OPENACC -FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_S0_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP & +SUBROUTINE PPM_S0_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP & , PR) #endif ! @@ -187,8 +187,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) @@ -196,7 +196,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -209,10 +209,10 @@ END SUBROUTINE PPM_S0_Y #endif ! #ifndef _OPENACC -FUNCTION PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) & +FUNCTION PPM_S0_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP & +SUBROUTINE PPM_S0_Z(KGRID, PSRC, PCR, PRHO, PTSTEP & , PR) #endif ! @@ -220,15 +220,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -241,10 +241,10 @@ END SUBROUTINE PPM_S0_Z #endif ! #ifndef _OPENACC -FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & +FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP) RESULT(PR) #else -SUBROUTINE PPM_S1_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & +SUBROUTINE PPM_S1_X(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR) #endif ! @@ -254,8 +254,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -264,7 +264,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -277,10 +277,10 @@ END SUBROUTINE PPM_S1_X #endif ! #ifndef _OPENACC -FUNCTION PPM_S1_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PRHOT, & +FUNCTION PPM_S1_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP) RESULT(PR) #else -SUBROUTINE PPM_S1_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PRHOT, & +SUBROUTINE PPM_S1_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR) #endif ! @@ -290,8 +290,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -300,7 +300,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -313,10 +313,10 @@ END SUBROUTINE PPM_S1_Y #endif ! #ifndef _OPENACC -FUNCTION PPM_S1_Z(KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP) & +FUNCTION PPM_S1_Z(KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP) & RESULT(PR) #else -SUBROUTINE PPM_S1_Z(KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP, & +SUBROUTINE PPM_S1_Z(KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP, & PR) #endif ! @@ -328,8 +328,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -338,7 +338,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -359,9 +359,9 @@ END MODULE MODI_PPM ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +!!$ FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & !!$ RESULT(PR) - SUBROUTINE PPM_01_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) + SUBROUTINE PPM_01_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP, PR) ! ######################################################################## USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D @@ -377,8 +377,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step @@ -392,7 +392,7 @@ INTEGER :: IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG CALL MNH_GET_ZT3D(IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG) CALL PPM_01_X_D(IIU,IJU,IKU,HLBCX, KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZT3D(:,:,:,IZQL),ZT3D(:,:,:,IZQR),ZT3D(:,:,:,IZDQ),ZT3D(:,:,:,IZQ6), & & ZT3D(:,:,:,IZDMQ),ZT3D(:,:,:,IZQL0),ZT3D(:,:,:,IZQR0), ZT3D(:,:,:,IZQ60), & & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG) ) @@ -403,13 +403,13 @@ CONTAINS ! ! ######################################################################## SUBROUTINE PPM_01_X_D(IIU,IJU,IKU,HLBCX, KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & + FUNCTION PPM_01_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -457,15 +457,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(IIU,IJU,IKU), INTENT(INOUT) :: PR !$acc declare present (PR) @@ -478,15 +478,15 @@ INTEGER:: IIE,IJE ! End useful area in x,y,z directions ! #ifndef _OPENACC ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL,ZQR -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDQ,ZQ6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDMQ +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL,ZQR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDQ,ZQ6 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDMQ ! ! extra variables for the initial guess of parabolae parameters -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL0,ZQR0,ZQ60 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL0,ZQR0,ZQ60 ! ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG ! !BEG JUAN PPM_LL INTEGER :: IJS,IJN @@ -647,10 +647,10 @@ PRINT *,'OPENACC: ppm::PPM_01_X CYCL/WALL boundaries not yet implemented' ! ! and finally calculate fluxes for the advection ! -! ZFPOS(i) = Fct[ ZQR(i-1),ZCR(i),ZDQ(i-1),ZQ6(i-1) ] +! ZFPOS(i) = Fct[ ZQR(i-1),PCR(i),ZDQ(i-1),ZQ6(i-1) ] ! - ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZQR(IIB-1:IIE,IJS:IJN,:) - 0.5*ZCR(IIB:IIE+1,IJS:IJN,:) * & - (ZDQ(IIB-1:IIE,IJS:IJN,:) - (1.0 - 2.0*ZCR(IIB:IIE+1,IJS:IJN,:)/3.0) & + ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZQR(IIB-1:IIE,IJS:IJN,:) - 0.5*PCR(IIB:IIE+1,IJS:IJN,:) * & + (ZDQ(IIB-1:IIE,IJS:IJN,:) - (1.0 - 2.0*PCR(IIB:IIE+1,IJS:IJN,:)/3.0) & * ZQ6(IIB-1:IIE,IJS:IJN,:)) ! CALL GET_HALO(ZFPOS) @@ -661,16 +661,16 @@ PRINT *,'OPENACC: ppm::PPM_01_X CYCL/WALL boundaries not yet implemented' ! we set it to 0 !!$ ZFPOS(IIB-1,:,:) = 0.0 JUANPPMLL01 ! - ZFNEG(:,IJS:IJN,:) = ZQL(:,IJS:IJN,:) - 0.5*ZCR(:,IJS:IJN,:) * & - ( ZDQ(:,IJS:IJN,:) + (1.0 + 2.0*ZCR(:,IJS:IJN,:)/3.0) * ZQ6(:,IJS:IJN,:) ) + ZFNEG(:,IJS:IJN,:) = ZQL(:,IJS:IJN,:) - 0.5*PCR(:,IJS:IJN,:) * & + ( ZDQ(:,IJS:IJN,:) + (1.0 + 2.0*PCR(:,IJS:IJN,:)/3.0) * ZQ6(:,IJS:IJN,:) ) ! CALL GET_HALO(ZFNEG) ! ! advect the actual field in X direction by U*dt ! #ifndef _OPENACC - PR = DXF( ZCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + PR = DXF( PCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else PRINT *,'not yet implemented' STOP @@ -854,14 +854,14 @@ ENDDO ; ENDDO ; ENDDO ! and finally calculate fluxes for the advection ! ! -! ZFPOS(i) = Fct[ ZQR(i-1),ZCR(i),ZDQ(i-1),ZQ6(i-1) ] +! ZFPOS(i) = Fct[ ZQR(i-1),PCR(i),ZDQ(i-1),ZQ6(i-1) ] ! -!!$ ZFPOS(IIB+1:IIE+1,:,:) = ZQR(IIB:IIE,:,:) - 0.5*ZCR(IIB+1:IIE+1,:,:) * & -!!$ (ZDQ(IIB:IIE,:,:) - (1.0 - 2.0*ZCR(IIB+1:IIE+1,:,:)/3.0) & +!!$ ZFPOS(IIB+1:IIE+1,:,:) = ZQR(IIB:IIE,:,:) - 0.5*PCR(IIB+1:IIE+1,:,:) * & +!!$ (ZDQ(IIB:IIE,:,:) - (1.0 - 2.0*PCR(IIB+1:IIE+1,:,:)/3.0) & !!$ * ZQ6(IIB:IIE,:,:)) - ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZQR(IIB-1:IIE,IJS:IJN,:) - 0.5*ZCR(IIB:IIE+1,IJS:IJN,:) * & - (ZDQ(IIB-1:IIE,IJS:IJN,:) - (1.0 - 2.0*ZCR(IIB:IIE+1,IJS:IJN,:)/3.0) & + ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZQR(IIB-1:IIE,IJS:IJN,:) - 0.5*PCR(IIB:IIE+1,IJS:IJN,:) * & + (ZDQ(IIB-1:IIE,IJS:IJN,:) - (1.0 - 2.0*PCR(IIB:IIE+1,IJS:IJN,:)/3.0) & * ZQ6(IIB-1:IIE,IJS:IJN,:)) ! #ifndef _OPENACC @@ -878,18 +878,18 @@ ENDDO ; ENDDO ; ENDDO ! advection flux at open boundary when u(IIB) > 0 ! IF (GWEST) THEN - ZFPOS(IIB,IJS:IJN,:) = (PSRC(IIB-1,IJS:IJN,:) - ZQR(IIB-1,IJS:IJN,:))*ZCR(IIB,IJS:IJN,:) + & + ZFPOS(IIB,IJS:IJN,:) = (PSRC(IIB-1,IJS:IJN,:) - ZQR(IIB-1,IJS:IJN,:))*PCR(IIB,IJS:IJN,:) + & ZQR(IIB-1,IJS:IJN,:) ! PPOSX(IIB-1,:,:) is not important for the calc of advection so ! we set it to 0 !!$ ZFPOS(IIB-1,:,:) = 0.0 ENDIF ! -!!$ ZFNEG(IIB-1:IIE,:,:) = ZQL(IIB-1:IIE,:,:) - 0.5*ZCR(IIB-1:IIE,:,:) * & -!!$ (ZDQ(IIB-1:IIE,:,:) + (1.0 + 2.0*ZCR(IIB-1:IIE,:,:)/3.0) & +!!$ ZFNEG(IIB-1:IIE,:,:) = ZQL(IIB-1:IIE,:,:) - 0.5*PCR(IIB-1:IIE,:,:) * & +!!$ (ZDQ(IIB-1:IIE,:,:) + (1.0 + 2.0*PCR(IIB-1:IIE,:,:)/3.0) & !!$ * ZQ6(IIB-1:IIE,:,:)) - ZFNEG(:,IJS:IJN,:) = ZQL(:,IJS:IJN,:) - 0.5*ZCR(:,IJS:IJN,:) * & - ( ZDQ(:,IJS:IJN,:) + (1.0 + 2.0*ZCR(:,IJS:IJN,:)/3.0) * ZQ6(:,IJS:IJN,:) ) + ZFNEG(:,IJS:IJN,:) = ZQL(:,IJS:IJN,:) - 0.5*PCR(:,IJS:IJN,:) * & + ( ZDQ(:,IJS:IJN,:) + (1.0 + 2.0*PCR(:,IJS:IJN,:)/3.0) * ZQ6(:,IJS:IJN,:) ) ! #ifndef _OPENACC CALL GET_HALO(ZFNEG) @@ -903,22 +903,22 @@ ENDDO ; ENDDO ; ENDDO ! ! advection flux at open boundary when u(IIE+1) < 0 IF (GEAST) THEN - ZFNEG(IIE+1,IJS:IJN,:) = (ZQR(IIE,IJS:IJN,:)-PSRC(IIE+1,IJS:IJN,:))*ZCR(IIE+1,IJS:IJN,:) + & + ZFNEG(IIE+1,IJS:IJN,:) = (ZQR(IIE,IJS:IJN,:)-PSRC(IIE+1,IJS:IJN,:))*PCR(IIE+1,IJS:IJN,:) + & ZQR(IIE,IJS:IJN,:) ENDIF ! ! advect the actual field in X direction by U*dt ! #ifndef _OPENACC - PR = DXF( ZCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + PR = DXF( PCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) CALL GET_HALO(PR) #else !mxm(ZQL,PRHO) !$acc end kernels CALL MXM_DEVICE(PRHO,ZQL) !$acc kernels - ZQR = ZCR* ZQL *( ZFPOS*(0.5+SIGN(0.5,ZCR)) + ZFNEG*(0.5-SIGN(0.5,ZCR)) ) + ZQR = PCR* ZQL *( ZFPOS*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !dxf(PR,ZQR) !$acc end kernels CALL DXF_DEVICE(ZQR,PR) @@ -999,9 +999,9 @@ END FUNCTION PPM_01_X ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +!!$ FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & !!$ RESULT(PR) - SUBROUTINE PPM_01_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) + SUBROUTINE PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP, PR) ! ######################################################################## USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D @@ -1018,9 +1018,9 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! REAL, DIMENSION(:,:,:), INTENT(INOUT):: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR & ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR & ! Courant number , PRHO ! density -!$acc declare present(ZCR,PRHO) +!$acc declare present(PCR,PRHO) ! ! output source term REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR @@ -1031,7 +1031,7 @@ INTEGER :: IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG CALL MNH_GET_ZT3D(IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG) CALL PPM_01_Y_D(IIU,IJU,IKU,HLBCY, KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZT3D(:,:,:,IZQL),ZT3D(:,:,:,IZQR),ZT3D(:,:,:,IZDQ),ZT3D(:,:,:,IZQ6), & & ZT3D(:,:,:,IZDMQ),ZT3D(:,:,:,IZQL0),ZT3D(:,:,:,IZQR0), ZT3D(:,:,:,IZQ60), & & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG) ) @@ -1042,13 +1042,13 @@ CONTAINS ! ! ######################################################################## SUBROUTINE PPM_01_Y_D(IIU,IJU,IKU,HLBCY, KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & + FUNCTION PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -1093,15 +1093,15 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density -!$acc declare present(ZCR,PRHO) +!$acc declare present(PCR,PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(IIU,IJU,IKU), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -1118,15 +1118,15 @@ LOGICAL :: GSOUTH , GNORTH #ifndef _OPENACC ! ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL,ZQR -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDQ,ZQ6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDMQ +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL,ZQR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDQ,ZQ6 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDMQ ! ! extra variables for the initial guess of parabolae parameters -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL0,ZQR0,ZQ60 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL0,ZQR0,ZQ60 ! ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG ! !BEG JUAN PPM_LL !END JUAN PPM_LL @@ -1293,10 +1293,10 @@ PRINT *,'OPENACC: ppm::PPM_01_Y CYCL/WALL boundaries not yet implemented' ! ! and finally calculate fluxes for the advection ! -! ZFPOS(j) = Fct[ ZQR(j-1),ZCR(i),ZDQ(j-1),ZQ6(j-1) ] +! ZFPOS(j) = Fct[ ZQR(j-1),PCR(i),ZDQ(j-1),ZQ6(j-1) ] ! - ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZQR(IIW:IIA,IJB-1:IJE,:) - 0.5*ZCR(IIW:IIA,IJB:IJE+1,:) * & - (ZDQ(IIW:IIA,IJB-1:IJE,:) - (1.0 - 2.0*ZCR(IIW:IIA,IJB:IJE+1,:)/3.0) & + ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZQR(IIW:IIA,IJB-1:IJE,:) - 0.5*PCR(IIW:IIA,IJB:IJE+1,:) * & + (ZDQ(IIW:IIA,IJB-1:IJE,:) - (1.0 - 2.0*PCR(IIW:IIA,IJB:IJE+1,:)/3.0) & * ZQ6(IIW:IIA,IJB-1:IJE,:)) ! CALL GET_HALO(ZFPOS) @@ -1307,16 +1307,16 @@ PRINT *,'OPENACC: ppm::PPM_01_Y CYCL/WALL boundaries not yet implemented' ! we set it to 0 !!$ ZFPOS(:,IJB-1,:) = 0.0 JUANPPMLL01 ! - ZFNEG(IIW:IIA,:,:) = ZQL(IIW:IIA,:,:) - 0.5*ZCR(IIW:IIA,:,:) * & - ( ZDQ(IIW:IIA,:,:) + (1.0 + 2.0*ZCR(IIW:IIA,:,:)/3.0) * ZQ6(IIW:IIA,:,:) ) + ZFNEG(IIW:IIA,:,:) = ZQL(IIW:IIA,:,:) - 0.5*PCR(IIW:IIA,:,:) * & + ( ZDQ(IIW:IIA,:,:) + (1.0 + 2.0*PCR(IIW:IIA,:,:)/3.0) * ZQ6(IIW:IIA,:,:) ) ! CALL GET_HALO(ZFNEG) ! ! advect the actual field in Y direction by V*dt ! #ifndef _OPENACC - PR = DYF( ZCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + PR = DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else PRINT *,'not yet implemented' STOP @@ -1484,11 +1484,11 @@ CALL GET_HALO_D(ZQL0,HDIR="01_Y") ! ! and finally calculate fluxes for the advection ! -!!$ ZFPOS(:,IJB+1:IJE+1,:) = ZQR(:,IJB:IJE,:) - 0.5*ZCR(:,IJB+1:IJE+1,:) * & -!!$ (ZDQ(:,IJB:IJE,:) - (1.0 - 2.0*ZCR(:,IJB+1:IJE+1,:)/3.0) & +!!$ ZFPOS(:,IJB+1:IJE+1,:) = ZQR(:,IJB:IJE,:) - 0.5*PCR(:,IJB+1:IJE+1,:) * & +!!$ (ZDQ(:,IJB:IJE,:) - (1.0 - 2.0*PCR(:,IJB+1:IJE+1,:)/3.0) & !!$ * ZQ6(:,IJB:IJE,:)) - ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZQR(IIW:IIA,IJB-1:IJE,:) - 0.5*ZCR(IIW:IIA,IJB:IJE+1,:) * & - (ZDQ(IIW:IIA,IJB-1:IJE,:) - (1.0 - 2.0*ZCR(IIW:IIA,IJB:IJE+1,:)/3.0) & + ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZQR(IIW:IIA,IJB-1:IJE,:) - 0.5*PCR(IIW:IIA,IJB:IJE+1,:) * & + (ZDQ(IIW:IIA,IJB-1:IJE,:) - (1.0 - 2.0*PCR(IIW:IIA,IJB:IJE+1,:)/3.0) & * ZQ6(IIW:IIA,IJB-1:IJE,:)) ! #ifndef _OPENACC @@ -1507,7 +1507,7 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y") ! SOUTH BOUND ! IF (GSOUTH) THEN - ZFPOS(IIW:IIA,IJB,:) = (PSRC(IIW:IIA,IJB-1,:) - ZQR(IIW:IIA,IJB-1,:))*ZCR(IIW:IIA,IJB,:) + & + ZFPOS(IIW:IIA,IJB,:) = (PSRC(IIW:IIA,IJB-1,:) - ZQR(IIW:IIA,IJB-1,:))*PCR(IIW:IIA,IJB,:) + & ZQR(IIW:IIA,IJB-1,:) ENDIF ! @@ -1515,11 +1515,11 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y") ! we set it to 0 !!$ ZFPOS(:,IJB-1,:) = 0.0 ! JUAN PPMLL01 ! -!!$ ZFNEG(:,IJB-1:IJE,:) = ZQL(:,IJB-1:IJE,:) - 0.5*ZCR(:,IJB-1:IJE,:) * & -!!$ ( ZDQ(:,IJB-1:IJE,:) + (1.0 + 2.0*ZCR(:,IJB-1:IJE,:)/3.0) * & +!!$ ZFNEG(:,IJB-1:IJE,:) = ZQL(:,IJB-1:IJE,:) - 0.5*PCR(:,IJB-1:IJE,:) * & +!!$ ( ZDQ(:,IJB-1:IJE,:) + (1.0 + 2.0*PCR(:,IJB-1:IJE,:)/3.0) * & !!$ ZQ6(:,IJB-1:IJE,:) ) - ZFNEG(IIW:IIA,:,:) = ZQL(IIW:IIA,:,:) - 0.5*ZCR(IIW:IIA,:,:) * & - ( ZDQ(IIW:IIA,:,:) + (1.0 + 2.0*ZCR(IIW:IIA,:,:)/3.0) * ZQ6(IIW:IIA,:,:) ) + ZFNEG(IIW:IIA,:,:) = ZQL(IIW:IIA,:,:) - 0.5*PCR(IIW:IIA,:,:) * & + ( ZDQ(IIW:IIA,:,:) + (1.0 + 2.0*PCR(IIW:IIA,:,:)/3.0) * ZQ6(IIW:IIA,:,:) ) ! #ifndef _OPENACC CALL GET_HALO(ZFNEG) @@ -1534,15 +1534,15 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y") ! NORTH BOUND ! IF (GNORTH) THEN - ZFNEG(IIW:IIA,IJE+1,:) = (ZQR(IIW:IIA,IJE,:)-PSRC(IIW:IIA,IJE+1,:))*ZCR(IIW:IIA,IJE+1,:) + & + ZFNEG(IIW:IIA,IJE+1,:) = (ZQR(IIW:IIA,IJE,:)-PSRC(IIW:IIA,IJE+1,:))*PCR(IIW:IIA,IJE+1,:) + & ZQR(IIW:IIA,IJE,:) ENDIF #ifndef _OPENACC ! ! advect the actual field in X direction by U*dt ! - PR = DYF( ZCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + PR = DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) ! #else !$acc end kernels @@ -1551,9 +1551,9 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y") DO K=IKB,IKE DO J=IJS,IJN DO I=1,IIU - ZQR(I,J,K) = ZCR(I,J,K)* ZQL(I,J,K) & - * ( ZFPOS(I,J,K)*(0.5+SIGN(0.5,ZCR(I,J,K))) & - + ZFNEG(I,J,K)*(0.5-SIGN(0.5,ZCR(I,J,K))) ) + ZQR(I,J,K) = PCR(I,J,K)* ZQL(I,J,K) & + * ( ZFPOS(I,J,K)*(0.5+SIGN(0.5,PCR(I,J,K))) & + + ZFNEG(I,J,K)*(0.5-SIGN(0.5,PCR(I,J,K))) ) END DO END DO END DO @@ -1644,8 +1644,8 @@ END FUNCTION PPM_01_Y ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_01_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) RESULT(PR) - SUBROUTINE PPM_01_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) +!!$ FUNCTION PPM_01_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) RESULT(PR) + SUBROUTINE PPM_01_Z(KGRID, PSRC, PCR, PRHO, PTSTEP, PR) ! ######################################################################## USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D @@ -1661,9 +1661,9 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR & ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR & ! Courant number , PRHO ! density -!$acc declare present(ZCR,PRHO) +!$acc declare present(PCR,PRHO) ! ! output source term REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR @@ -1674,7 +1674,7 @@ INTEGER :: IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG CALL MNH_GET_ZT3D(IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG) CALL PPM_01_Z_D(IIU,IJU,IKU, KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZT3D(:,:,:,IZQL),ZT3D(:,:,:,IZQR),ZT3D(:,:,:,IZDQ),ZT3D(:,:,:,IZQ6), & & ZT3D(:,:,:,IZDMQ),ZT3D(:,:,:,IZQL0),ZT3D(:,:,:,IZQR0), ZT3D(:,:,:,IZQ60), & & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG) ) @@ -1685,12 +1685,12 @@ CONTAINS ! ! ######################################################################## SUBROUTINE PPM_01_Z_D(IIU,IJU,IKU,KGRID, & - & PSRC, ZCR, PRHO, PTSTEP, PR, & + & PSRC, PCR, PRHO, PTSTEP, PR, & & ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_01_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) RESULT(PR) + FUNCTION PPM_01_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) RESULT(PR) ! ######################################################################## #endif !! @@ -1729,15 +1729,15 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density -!$acc declare present(ZCR,PRHO) +!$acc declare present(PCR,PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(IIU,IJU,IKU), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -1751,15 +1751,15 @@ INTEGER:: IKE ! End useful area in x,y,z directions INTEGER:: IKU ! ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL,ZQR -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDQ,ZQ6 -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZDMQ +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL,ZQR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDQ,ZQ6 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZDMQ ! ! extra variables for the initial guess of parabolae parameters -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZQL0,ZQR0,ZQ60 +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL0,ZQR0,ZQ60 ! ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG #else ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 REAL, DIMENSION(IIU,IJU,IKU) :: & @@ -1888,36 +1888,36 @@ ZDQ = ZQR - ZQL ! ! and finally calculate fluxes for the advection ! -ZFPOS(:,:,IKB+1:IKE+1) = ZQR(:,:,IKB:IKE) - 0.5*ZCR(:,:,IKB+1:IKE+1) * & - (ZDQ(:,:,IKB:IKE) - (1.0 - 2.0*ZCR(:,:,IKB+1:IKE+1)/3.0) & +ZFPOS(:,:,IKB+1:IKE+1) = ZQR(:,:,IKB:IKE) - 0.5*PCR(:,:,IKB+1:IKE+1) * & + (ZDQ(:,:,IKB:IKE) - (1.0 - 2.0*PCR(:,:,IKB+1:IKE+1)/3.0) & * ZQ6(:,:,IKB:IKE)) ! ! advection flux at open boundary when u(IKB) > 0 -ZFPOS(:,:,IKB) = (PSRC(:,:,IKB-1) - ZQR(:,:,IKB-1))*ZCR(:,:,IKB) + & +ZFPOS(:,:,IKB) = (PSRC(:,:,IKB-1) - ZQR(:,:,IKB-1))*PCR(:,:,IKB) + & ZQR(:,:,IKB-1) ! ! PPOSX(IKB-1) is not important for the calc of advection so ! we set it to 0 ZFPOS(:,:,IKB-1) = 0.0 ! -ZFNEG(:,:,IKB-1:IKE) = ZQL(:,:,IKB-1:IKE) - 0.5*ZCR(:,:,IKB-1:IKE) * & - ( ZDQ(:,:,IKB-1:IKE) + (1.0 + 2.0*ZCR(:,:,IKB-1:IKE)/3.0) * & +ZFNEG(:,:,IKB-1:IKE) = ZQL(:,:,IKB-1:IKE) - 0.5*PCR(:,:,IKB-1:IKE) * & + ( ZDQ(:,:,IKB-1:IKE) + (1.0 + 2.0*PCR(:,:,IKB-1:IKE)/3.0) * & ZQ6(:,:,IKB-1:IKE) ) ! ! advection flux at open boundary when u(IKE+1) < 0 -ZFNEG(:,:,IKE+1) = (ZQR(:,:,IKE)-PSRC(:,:,IKE+1))*ZCR(:,:,IKE+1) + & +ZFNEG(:,:,IKE+1) = (ZQR(:,:,IKE)-PSRC(:,:,IKE+1))*PCR(:,:,IKE+1) + & ZQR(:,:,IKE) ! ! advect the actual field in Z direction by W*dt ! #ifndef _OPENACC -PR = DZF(1,IKU,1, ZCR*MZM(1,IKU,1,PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) +PR = DZF(1,IKU,1, PCR*MZM(1,IKU,1,PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels CALL MZM_DEVICE(PRHO,ZQL) !$acc kernels - ZQR = ZCR* ZQL*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + ZFNEG*(0.5-SIGN(0.5,ZCR)) ) + ZQR = PCR* ZQL*( ZFPOS*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !dzf(PR,ZQR) !$acc end kernels CALL DZF_DEVICE(1,1,1,ZQR,PR) @@ -2008,9 +2008,9 @@ END FUNCTION PPM_01_Z ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +!!$ FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & !!$ RESULT(PR) -SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR) +SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP , PR) USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D USE MODE_MNH_ZWORK, ONLY : ZPSRC_HALO2_WEST @@ -2025,8 +2025,8 @@ SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR) ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) - REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) + REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step @@ -2039,7 +2039,7 @@ SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR) CALL MNH_GET_ZT3D(IZFPOS,IZFNEG,IZPHAT,IZRHO_MXM,IZCR_MXM,IZCR_DXF) - CALL PPM_S0_X_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR, & + CALL PPM_S0_X_D(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP , PR, & & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG),ZT3D(:,:,:,IZPHAT),ZT3D(:,:,:,IZRHO_MXM), & & ZT3D(:,:,:,IZCR_MXM),ZT3D(:,:,:,IZCR_DXF),ZPSRC_HALO2_WEST ) @@ -2048,14 +2048,14 @@ SUBROUTINE PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR) CONTAINS ! ! ######################################################################## - SUBROUTINE PPM_S0_X_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR & + SUBROUTINE PPM_S0_X_D(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP , PR & & ,ZFPOS,ZPHAT,ZFNEG & & ,ZRHO_MXM,ZCR_MXM,ZCR_DXF,ZPSRC_HALO2_WEST ) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PTSTEP) & + FUNCTION PPM_S0_X(HLBCX, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -2104,18 +2104,18 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR #endif -!$acc declare present (PSRC,ZCR,PRHO,PR) +!$acc declare present (PSRC,PCR,PRHO,PR) ! !* 0.2 Declarations of local variables : ! @@ -2127,11 +2127,11 @@ INTEGER :: IJS,IJN LOGICAL :: GWEST, GEAST #endif ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG !$acc declare present (ZFPOS,ZFNEG) ! ! variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT !$acc declare present (ZPHAT) ! !BEG JUAN PPM_LL @@ -2140,13 +2140,13 @@ TYPE(HALO2LIST_ll), POINTER :: TZ_PSRC_HALO2_ll ! halo2 for PSRC ! #ifdef _OPENACC !JUAN ACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZRHO_MXM, ZCR_MXM , ZCR_DXF +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRHO_MXM, ZCR_MXM , ZCR_DXF !$acc declare present (ZRHO_MXM,ZCR_MXM,ZCR_DXF) INTEGER :: I,J,K ! !JUAN ACC #endif -REAL, DIMENSION(SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPSRC_HALO2_WEST +REAL, DIMENSION(SIZE(PCR,2),SIZE(PCR,3)) :: ZPSRC_HALO2_WEST !$acc declare present (ZPSRC_HALO2_WEST) !------------------------------------------------------------------------------- ! @@ -2232,16 +2232,16 @@ PRINT *,'OPENACC: ppm::PPM_S0_X CYCL/WALL boundaries not yet implemented' CALL GET_HALO(ZPHAT) ! ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZPHAT(IIB:IIE+1,IJS:IJN,:) - & - ZCR(IIB:IIE+1,IJS:IJN,:)*(ZPHAT(IIB:IIE+1,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) - & - ZCR(IIB:IIE+1,IJS:IJN,:)*(1.0 - ZCR(IIB:IIE+1,IJS:IJN,:)) * & + PCR(IIB:IIE+1,IJS:IJN,:)*(ZPHAT(IIB:IIE+1,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) - & + PCR(IIB:IIE+1,IJS:IJN,:)*(1.0 - PCR(IIB:IIE+1,IJS:IJN,:)) * & (ZPHAT(IIB-1:IIE,IJS:IJN,:) - 2.0*PSRC(IIB-1:IIE,IJS:IJN,:) + ZPHAT(IIB:IIE+1,IJS:IJN,:)) ! !!$ ZFPOS(IIB-1,:,:) = ZFPOS(IIE,:,:) !JUAN CALL GET_HALO(ZFPOS) ! JUAN ! ZFNEG(IIB-1:IIE,IJS:IJN,:) = ZPHAT(IIB-1:IIE,IJS:IJN,:) + & - ZCR(IIB-1:IIE,IJS:IJN,:)*(ZPHAT(IIB-1:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) + & - ZCR(IIB-1:IIE,IJS:IJN,:)*(1.0 + ZCR(IIB-1:IIE,IJS:IJN,:)) * & + PCR(IIB-1:IIE,IJS:IJN,:)*(ZPHAT(IIB-1:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) + & + PCR(IIB-1:IIE,IJS:IJN,:)*(1.0 + PCR(IIB-1:IIE,IJS:IJN,:)) * & (ZPHAT(IIB-1:IIE,IJS:IJN,:) - 2.0*PSRC(IIB-1:IIE,IJS:IJN,:) + ZPHAT(IIB:IIE+1,IJS:IJN,:)) ! ! define fluxes for CYCL BC outside physical domain @@ -2253,8 +2253,8 @@ CALL GET_HALO(ZFNEG) ! JUAN ! #ifndef _OPENACC PR = PSRC * PRHO - & - DXF( ZCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + DXF( PCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else PRINT *,'not yet implemented' STOP @@ -2306,19 +2306,19 @@ CALL GET_HALO(ZPHAT(:,:,:),HDIR="Z0_X") !!$CALL GET_HALO(ZPHAT) ! !!$ ZFPOS(IIB+1:IIE+1,:,:) = ZPHAT(IIB+1:IIE+1,:,:) - & -!!$ ZCR(IIB+1:IIE+1,:,:)*(ZPHAT(IIB+1:IIE+1,:,:) - PSRC(IIB:IIE,:,:)) - & -!!$ ZCR(IIB+1:IIE+1,:,:)*(1.0 - ZCR(IIB+1:IIE+1,:,:)) * & +!!$ PCR(IIB+1:IIE+1,:,:)*(ZPHAT(IIB+1:IIE+1,:,:) - PSRC(IIB:IIE,:,:)) - & +!!$ PCR(IIB+1:IIE+1,:,:)*(1.0 - PCR(IIB+1:IIE+1,:,:)) * & !!$ (ZPHAT(IIB:IIE,:,:) - 2.0*PSRC(IIB:IIE,:,:) + ZPHAT(IIB+1:IIE+1,:,:)) #ifndef _OPENACC ZFPOS(IIB:IIE+1,IJS:IJN,:) = ZPHAT(IIB:IIE+1,IJS:IJN,:) - & - ZCR(IIB:IIE+1,IJS:IJN,:)*(ZPHAT(IIB:IIE+1,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) - & - ZCR(IIB:IIE+1,IJS:IJN,:)*(1.0 - ZCR(IIB:IIE+1,IJS:IJN,:)) * & + PCR(IIB:IIE+1,IJS:IJN,:)*(ZPHAT(IIB:IIE+1,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) - & + PCR(IIB:IIE+1,IJS:IJN,:)*(1.0 - PCR(IIB:IIE+1,IJS:IJN,:)) * & (ZPHAT(IIB-1:IIE,IJS:IJN,:) - 2.0*PSRC(IIB-1:IIE,IJS:IJN,:) + ZPHAT(IIB:IIE+1,IJS:IJN,:)) #else !TODO PW: BUG? which one is correct? Both? ZFPOS(IIB:IIE,IJS:IJN,:) = ZPHAT(IIB:IIE,IJS:IJN,:) - & - ZCR(IIB:IIE,IJS:IJN,:)*(ZPHAT(IIB:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE-1,IJS:IJN,:)) - & - ZCR(IIB:IIE,IJS:IJN,:)*(1.0 - ZCR(IIB:IIE,IJS:IJN,:)) * & + PCR(IIB:IIE,IJS:IJN,:)*(ZPHAT(IIB:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE-1,IJS:IJN,:)) - & + PCR(IIB:IIE,IJS:IJN,:)*(1.0 - PCR(IIB:IIE,IJS:IJN,:)) * & (ZPHAT(IIB-1:IIE-1,IJS:IJN,:) - 2.0*PSRC(IIB-1:IIE-1,IJS:IJN,:) + ZPHAT(IIB:IIE,IJS:IJN,:)) !$acc end kernels #endif @@ -2334,7 +2334,7 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_X") ! JUAN !$acc kernels ! positive flux on the WEST boundary IF (GWEST) THEN - ZFPOS(IIB,IJS:IJN,:) = (PSRC(IIB-1,IJS:IJN,:) - ZPHAT(IIB,IJS:IJN,:))*ZCR(IIB,IJS:IJN,:) + & + ZFPOS(IIB,IJS:IJN,:) = (PSRC(IIB-1,IJS:IJN,:) - ZPHAT(IIB,IJS:IJN,:))*PCR(IIB,IJS:IJN,:) + & ZPHAT(IIB,IJS:IJN,:) ! this is not used ZFPOS(IIB-1,IJS:IJN,:) = 0.0 @@ -2342,20 +2342,20 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_X") ! JUAN ! ! negative fluxes !!$ ZFNEG(IIB:IIE,:,:) = ZPHAT(IIB:IIE,:,:) + & -!!$ ZCR(IIB:IIE,:,:)*(ZPHAT(IIB:IIE,:,:) - PSRC(IIB:IIE,:,:)) + & -!!$ ZCR(IIB:IIE,:,:)*(1.0 + ZCR(IIB:IIE,:,:)) * & +!!$ PCR(IIB:IIE,:,:)*(ZPHAT(IIB:IIE,:,:) - PSRC(IIB:IIE,:,:)) + & +!!$ PCR(IIB:IIE,:,:)*(1.0 + PCR(IIB:IIE,:,:)) * & !!$ (ZPHAT(IIB:IIE,:,:) - 2.0*PSRC(IIB:IIE,:,:) + ZPHAT(IIB+1:IIE+1,:,:)) #ifndef _OPENACC ZFNEG(IIB-1:IIE,IJS:IJN,:) = ZPHAT(IIB-1:IIE,IJS:IJN,:) + & - ZCR(IIB-1:IIE,IJS:IJN,:)*(ZPHAT(IIB-1:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) + & - ZCR(IIB-1:IIE,IJS:IJN,:)*(1.0 + ZCR(IIB-1:IIE,IJS:IJN,:)) * & + PCR(IIB-1:IIE,IJS:IJN,:)*(ZPHAT(IIB-1:IIE,IJS:IJN,:) - PSRC(IIB-1:IIE,IJS:IJN,:)) + & + PCR(IIB-1:IIE,IJS:IJN,:)*(1.0 + PCR(IIB-1:IIE,IJS:IJN,:)) * & (ZPHAT(IIB-1:IIE,IJS:IJN,:) - 2.0*PSRC(IIB-1:IIE,IJS:IJN,:) + ZPHAT(IIB:IIE+1,IJS:IJN,:)) #else !TODO PW: BUG? which one is correct? Both? !See also comment in IF(GEAST) ZFNEG(IIB:IIE,IJS:IJN,:) = ZPHAT(IIB:IIE,IJS:IJN,:) + & - ZCR(IIB:IIE,IJS:IJN,:)*(ZPHAT(IIB:IIE,IJS:IJN,:) - PSRC(IIB:IIE,IJS:IJN,:)) + & - ZCR(IIB:IIE,IJS:IJN,:)*(1.0 + ZCR(IIB:IIE,IJS:IJN,:)) * & + PCR(IIB:IIE,IJS:IJN,:)*(ZPHAT(IIB:IIE,IJS:IJN,:) - PSRC(IIB:IIE,IJS:IJN,:)) + & + PCR(IIB:IIE,IJS:IJN,:)*(1.0 + PCR(IIB:IIE,IJS:IJN,:)) * & (ZPHAT(IIB:IIE,IJS:IJN,:) - 2.0*PSRC(IIB:IIE,IJS:IJN,:) + ZPHAT(IIB+1:IIE+1,IJS:IJN,:)) !$acc end kernels #endif @@ -2371,14 +2371,14 @@ CALL GET_HALO(ZFNEG,HDIR="Z0_X") ! JUAN !$acc kernels IF (GEAST) THEN ! -! in OPEN case ZCR(IIB-1) is not used, so we also set ZFNEG(IIB-1) = 0 +! in OPEN case PCR(IIB-1) is not used, so we also set ZFNEG(IIB-1) = 0 ! ZFNEG(IIB-1,IJS:IJN,:) = 0.0 ! ! modified negative flux on EAST boundary. We use linear function instead of a ! parabola to represent the tracer field, so it simplifies the flux expresion ! - ZFNEG(IIE+1,IJS:IJN,:) = (ZPHAT(IIE+1,IJS:IJN,:) - PSRC(IIE+1,IJS:IJN,:))*ZCR(IIE+1,IJS:IJN,:) + & + ZFNEG(IIE+1,IJS:IJN,:) = (ZPHAT(IIE+1,IJS:IJN,:) - PSRC(IIE+1,IJS:IJN,:))*PCR(IIE+1,IJS:IJN,:) + & ZPHAT(IIE+1,IJS:IJN,:) ENDIF ! @@ -2386,13 +2386,13 @@ CALL GET_HALO(ZFNEG,HDIR="Z0_X") ! JUAN ! #ifndef _OPENACC PR = PSRC * PRHO - & - DXF( ZCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + DXF( PCR*MXM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels CALL MXM_DEVICE(PRHO,ZRHO_MXM) !$acc kernels - ZCR_MXM = ZCR * ZRHO_MXM * ( ZFPOS*(0.5+SIGN(0.5,ZCR)) + ZFNEG*(0.5-SIGN(0.5,ZCR)) ) + ZCR_MXM = PCR * ZRHO_MXM * ( ZFPOS*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !$acc end kernels CALL DXF_DEVICE(ZCR_MXM,ZCR_DXF) !$acc kernels @@ -2402,7 +2402,7 @@ CALL GET_HALO(ZFNEG,HDIR="Z0_X") ! JUAN ! in OPEN case fix boundary conditions ! IF (GWEST) THEN - WHERE ( ZCR(IIB,IJS:IJN,:) <= 0. ) ! OUTFLOW condition + WHERE ( PCR(IIB,IJS:IJN,:) <= 0. ) ! OUTFLOW condition PR(IIB-1,IJS:IJN,:) = 2.*PR(IIB,IJS:IJN,:) - PR(IIB+1,IJS:IJN,:) ELSEWHERE PR(IIB-1,IJS:IJN,:) = PR(IIB,IJS:IJN,:) @@ -2410,7 +2410,7 @@ CALL GET_HALO(ZFNEG,HDIR="Z0_X") ! JUAN ENDIF ! IF (GEAST) THEN - WHERE ( ZCR(IIE,IJS:IJN,:) >= 0. ) ! OUTFLOW condition + WHERE ( PCR(IIE,IJS:IJN,:) >= 0. ) ! OUTFLOW condition PR(IIE+1,IJS:IJN,:) = 2.*PR(IIE,IJS:IJN,:) - PR(IIE-1,IJS:IJN,:) ELSEWHERE PR(IIE+1,IJS:IJN,:) = PR(IIE,IJS:IJN,:) @@ -2445,9 +2445,9 @@ END FUNCTION PPM_S0_X ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & +!!$ FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & !!$ RESULT(PR) - SUBROUTINE PPM_S0_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) + SUBROUTINE PPM_S0_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP, PR) USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D USE MODE_MNH_ZWORK, ONLY : ZPSRC_HALO2_SOUTH @@ -2462,8 +2462,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step @@ -2476,7 +2476,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR CALL MNH_GET_ZT3D(IZFPOS,IZFNEG,IZPHAT,IZRHO_MYM,IZCR_MYM,IZCR_DYF) - CALL PPM_S0_Y_D(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR, & + CALL PPM_S0_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP , PR, & & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG),ZT3D(:,:,:,IZPHAT),ZT3D(:,:,:,IZRHO_MYM), & & ZT3D(:,:,:,IZCR_MYM),ZT3D(:,:,:,IZCR_DYF),ZPSRC_HALO2_SOUTH ) @@ -2485,14 +2485,14 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR CONTAINS ! ! ######################################################################## - SUBROUTINE PPM_S0_Y_D(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP , PR & + SUBROUTINE PPM_S0_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP , PR & & ,ZFPOS,ZPHAT,ZFNEG & & ,ZRHO_MYM,ZCR_MYM,ZCR_DYF,ZPSRC_HALO2_SOUTH ) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PTSTEP) & + FUNCTION PPM_S0_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -2539,14 +2539,14 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -2564,24 +2564,24 @@ LOGICAL :: GNORTH, GSOUTH #endif ! ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG ! ! variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT ! !BEG JUAN PPM_LL TYPE(HALO2LIST_ll), POINTER :: TZ_PSRC_HALO2_ll ! halo2 for PSRC !END JUAN PPM_LL #ifdef _OPENACC ! -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZRHO_MYM , ZCR_MYM , ZCR_DYF -!$acc declare present (PSRC,ZCR,PRHO) +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRHO_MYM , ZCR_MYM , ZCR_DYF +!$acc declare present (PSRC,PCR,PRHO) !$acc declare present (ZFPOS, ZFNEG,ZPHAT ,ZRHO_MYM , ZCR_MYM , ZCR_DYF ) ! INTEGER :: I,J,K ! #endif -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,3)) :: ZPSRC_HALO2_SOUTH +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,3)) :: ZPSRC_HALO2_SOUTH !$acc declare present (ZPSRC_HALO2_SOUTH) ! !------------------------------------------------------------------------------- @@ -2665,16 +2665,16 @@ CALL GET_HALO(ZPHAT) ! calculate the fluxes: ! ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZPHAT(IIW:IIA,IJB:IJE+1,:) - & - ZCR(IIW:IIA,IJB:IJE+1,:)*(ZPHAT(IIW:IIA,IJB:IJE+1,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) - & - ZCR(IIW:IIA,IJB:IJE+1,:)*(1.0 - ZCR(IIW:IIA,IJB:IJE+1,:)) * & + PCR(IIW:IIA,IJB:IJE+1,:)*(ZPHAT(IIW:IIA,IJB:IJE+1,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) - & + PCR(IIW:IIA,IJB:IJE+1,:)*(1.0 - PCR(IIW:IIA,IJB:IJE+1,:)) * & (ZPHAT(IIW:IIA,IJB-1:IJE,:) - 2.0*PSRC(IIW:IIA,IJB-1:IJE,:) + ZPHAT(IIW:IIA,IJB:IJE+1,:)) ! !!$ ZFPOS(:,IJB-1,:) = ZFPOS(:,IJE,:) CALL GET_HALO(ZFPOS) ! JUAN ! ZFNEG(IIW:IIA,IJB-1:IJE,:) = ZPHAT(IIW:IIA,IJB-1:IJE,:) + & - ZCR(IIW:IIA,IJB-1:IJE,:)*(ZPHAT(IIW:IIA,IJB-1:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) + & - ZCR(IIW:IIA,IJB-1:IJE,:)*(1.0 + ZCR(IIW:IIA,IJB-1:IJE,:)) * & + PCR(IIW:IIA,IJB-1:IJE,:)*(ZPHAT(IIW:IIA,IJB-1:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) + & + PCR(IIW:IIA,IJB-1:IJE,:)*(1.0 + PCR(IIW:IIA,IJB-1:IJE,:)) * & (ZPHAT(IIW:IIA,IJB-1:IJE,:) - 2.0*PSRC(IIW:IIA,IJB-1:IJE,:) +ZPHAT(IIW:IIA,IJB:IJE+1,:)) ! @@ -2687,8 +2687,8 @@ CALL GET_HALO(ZFNEG) ! JUAN ! #ifndef _OPENACC PR = PSRC * PRHO - & - DYF( ZCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else PRINT *,'not yet implemented' STOP @@ -2743,19 +2743,19 @@ CALL GET_HALO(ZPHAT(:,:,:),HDIR="Z0_Y") ! calculate the fluxes: ! positive fluxes !!$ ZFPOS(:,IJB+1:IJE+1,:) = ZPHAT(:,IJB+1:IJE+1,:) - & -!!$ ZCR(:,IJB+1:IJE+1,:)*(ZPHAT(:,IJB+1:IJE+1,:) - PSRC(:,IJB:IJE,:)) - & -!!$ ZCR(:,IJB+1:IJE+1,:)*(1.0 - ZCR(:,IJB+1:IJE+1,:)) * & +!!$ PCR(:,IJB+1:IJE+1,:)*(ZPHAT(:,IJB+1:IJE+1,:) - PSRC(:,IJB:IJE,:)) - & +!!$ PCR(:,IJB+1:IJE+1,:)*(1.0 - PCR(:,IJB+1:IJE+1,:)) * & !!$ (ZPHAT(:,IJB:IJE,:) - 2.0*PSRC(:,IJB:IJE,:) + ZPHAT(:,IJB+1:IJE+1,:)) #ifndef _OPENACC ZFPOS(IIW:IIA,IJB:IJE+1,:) = ZPHAT(IIW:IIA,IJB:IJE+1,:) - & - ZCR(IIW:IIA,IJB:IJE+1,:)*( ZPHAT(IIW:IIA,IJB:IJE+1,:) - PSRC(IIW:IIA,IJB-1:IJE ,:) ) - & - ZCR(IIW:IIA,IJB:IJE+1,:)*( 1.0 - ZCR(IIW:IIA,IJB :IJE+1,:) ) * & + PCR(IIW:IIA,IJB:IJE+1,:)*( ZPHAT(IIW:IIA,IJB:IJE+1,:) - PSRC(IIW:IIA,IJB-1:IJE ,:) ) - & + PCR(IIW:IIA,IJB:IJE+1,:)*( 1.0 - PCR(IIW:IIA,IJB :IJE+1,:) ) * & (ZPHAT(IIW:IIA,IJB-1:IJE,:) - 2.0*PSRC(IIW:IIA,IJB-1:IJE,:) + ZPHAT(IIW:IIA,IJB:IJE+1,:)) #else !TODO PW: BUG? which one is correct? Both? ZFPOS(IIW:IIA,IJB:IJE,:) = ZPHAT(IIW:IIA,IJB:IJE,:) - & - ZCR(IIW:IIA,IJB:IJE,:)*(ZPHAT(IIW:IIA,IJB:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE-1,:)) - & - ZCR(IIW:IIA,IJB:IJE,:)*(1.0 - ZCR(IIW:IIA,IJB:IJE,:)) * & + PCR(IIW:IIA,IJB:IJE,:)*(ZPHAT(IIW:IIA,IJB:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE-1,:)) - & + PCR(IIW:IIA,IJB:IJE,:)*(1.0 - PCR(IIW:IIA,IJB:IJE,:)) * & (ZPHAT(IIW:IIA,IJB-1:IJE-1,:) - 2.0*PSRC(IIW:IIA,IJB-1:IJE-1,:) + ZPHAT(IIW:IIA,IJB:IJE,:)) !$acc end kernels #endif @@ -2771,7 +2771,7 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN !$acc kernels ! positive flux on the SOUTH boundary IF (GSOUTH) THEN - ZFPOS(IIW:IIA,IJB,:) = (PSRC(IIW:IIA,IJB-1,:) - ZPHAT(IIW:IIA,IJB,:))*ZCR(IIW:IIA,IJB,:) + & + ZFPOS(IIW:IIA,IJB,:) = (PSRC(IIW:IIA,IJB-1,:) - ZPHAT(IIW:IIA,IJB,:))*PCR(IIW:IIA,IJB,:) + & ZPHAT(IIW:IIA,IJB,:) ! ! this is not used @@ -2780,19 +2780,19 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN ! ! negative fluxes !!$ ZFNEG(:,IJB:IJE,:) = ZPHAT(:,IJB:IJE,:) + & -!!$ ZCR(:,IJB:IJE,:)*(ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB:IJE,:)) + & -!!$ ZCR(:,IJB:IJE,:)*(1.0 + ZCR(:,IJB:IJE,:)) * & +!!$ PCR(:,IJB:IJE,:)*(ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB:IJE,:)) + & +!!$ PCR(:,IJB:IJE,:)*(1.0 + PCR(:,IJB:IJE,:)) * & !!$ (ZPHAT(:,IJB:IJE,:) - 2.0*PSRC(:,IJB:IJE,:) +ZPHAT(:,IJB+1:IJE+1,:)) #ifndef _OPENACC ZFNEG(IIW:IIA,IJB-1:IJE,:) = ZPHAT(IIW:IIA,IJB-1:IJE,:) + & - ZCR(IIW:IIA,IJB-1:IJE,:)*(ZPHAT(IIW:IIA,IJB-1:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) + & - ZCR(IIW:IIA,IJB-1:IJE,:)*(1.0 + ZCR(IIW:IIA,IJB-1:IJE,:)) * & + PCR(IIW:IIA,IJB-1:IJE,:)*(ZPHAT(IIW:IIA,IJB-1:IJE,:) - PSRC(IIW:IIA,IJB-1:IJE,:)) + & + PCR(IIW:IIA,IJB-1:IJE,:)*(1.0 + PCR(IIW:IIA,IJB-1:IJE,:)) * & (ZPHAT(IIW:IIA,IJB-1:IJE,:) - 2.0*PSRC(IIW:IIA,IJB-1:IJE,:) +ZPHAT(IIW:IIA,IJB:IJE+1,:)) #else !TODO PW: BUG? which one is correct? Both? ZFNEG(IIW:IIA,IJB:IJE,:) = ZPHAT(IIW:IIA,IJB:IJE,:) + & - ZCR(IIW:IIA,IJB:IJE,:)*(ZPHAT(IIW:IIA,IJB:IJE,:) - PSRC(IIW:IIA,IJB:IJE,:)) + & - ZCR(IIW:IIA,IJB:IJE,:)*(1.0 + ZCR(IIW:IIA,IJB:IJE,:)) * & + PCR(IIW:IIA,IJB:IJE,:)*(ZPHAT(IIW:IIA,IJB:IJE,:) - PSRC(IIW:IIA,IJB:IJE,:)) + & + PCR(IIW:IIA,IJB:IJE,:)*(1.0 + PCR(IIW:IIA,IJB:IJE,:)) * & (ZPHAT(IIW:IIA,IJB:IJE,:) - 2.0*PSRC(IIW:IIA,IJB:IJE,:) +ZPHAT(IIW:IIA,IJB+1:IJE+1,:)) !$acc end kernels #endif @@ -2811,7 +2811,7 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN ZFNEG(IIW:IIA,IJB-1,:) = 0.0 ! ! negative flux on the NORTH boundary - ZFNEG(IIW:IIA,IJE+1,:) = (ZPHAT(IIW:IIA,IJE+1,:) - PSRC(IIW:IIA,IJE+1,:))*ZCR(IIW:IIA,IJE+1,:) + & + ZFNEG(IIW:IIA,IJE+1,:) = (ZPHAT(IIW:IIA,IJE+1,:) - PSRC(IIW:IIA,IJE+1,:))*PCR(IIW:IIA,IJE+1,:) + & ZPHAT(IIW:IIA,IJE+1,:) ENDIF ! @@ -2819,13 +2819,13 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN ! #ifndef _OPENACC PR = PSRC * PRHO - & - DYF( ZCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels CALL MYM_DEVICE(PRHO,ZRHO_MYM) !$acc kernels - ZCR_MYM = ZCR* ZRHO_MYM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,ZCR)) + ZFNEG*(0.5-SIGN(0.5,ZCR)) ) + ZCR_MYM = PCR* ZRHO_MYM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !$acc end kernels CALL DYF_DEVICE(ZCR_MYM,ZCR_DYF) !$acc kernels @@ -2835,7 +2835,7 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN ! in OPEN case fix boundary conditions ! IF (GSOUTH) THEN - WHERE ( ZCR(IIW:IIA,IJB,:) <= 0. ) ! OUTFLOW condition + WHERE ( PCR(IIW:IIA,IJB,:) <= 0. ) ! OUTFLOW condition PR(IIW:IIA,IJB-1,:) = 1.0 * 2.*PR(IIW:IIA,IJB,:) - PR(IIW:IIA,IJB+1,:) ELSEWHERE PR(IIW:IIA,IJB-1,:) = PR(IIW:IIA,IJB,:) @@ -2843,7 +2843,7 @@ CALL GET_HALO(ZFPOS(:,:,:),HDIR="Z0_Y") ! JUAN ENDIF ! IF (GNORTH) THEN - WHERE ( ZCR(IIW:IIA,IJE,:) >= 0. ) ! OUTFLOW condition + WHERE ( PCR(IIW:IIA,IJE,:) >= 0. ) ! OUTFLOW condition PR(IIW:IIA,IJE+1,:) = 1.0 * 2.*PR(IIW:IIA,IJE,:) - PR(IIW:IIA,IJE-1,:) ELSEWHERE PR(IIW:IIA,IJE+1,:) = PR(IIW:IIA,IJE,:) @@ -2878,9 +2878,9 @@ END FUNCTION PPM_S0_Y ! #ifdef _OPENACC ! ######################################################################## -!!$ FUNCTION PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) & +!!$ FUNCTION PPM_S0_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) & !!$ RESULT(PR) -SUBROUTINE PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) +SUBROUTINE PPM_S0_Z(KGRID, PSRC, PCR, PRHO, PTSTEP, PR) USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D @@ -2891,20 +2891,20 @@ SUBROUTINE PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP, PR) INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term REAL, DIMENSION(:,:,:),INTENT(INOUT):: PR -!$acc declare present (PSRC,ZCR,PRHO,PR) +!$acc declare present (PSRC,PCR,PRHO,PR) INTEGER :: IZFPOS,IZPHAT,IZFNEG,IZRHO_MZM,IZCR_MZM,IZCR_DZF CALL MNH_GET_ZT3D(IZFPOS,IZFNEG,IZPHAT,IZRHO_MZM,IZCR_MZM,IZCR_DZF) - CALL PPM_S0_Z_D(KGRID, PSRC, ZCR, PRHO, PTSTEP , PR, & + CALL PPM_S0_Z_D(KGRID, PSRC, PCR, PRHO, PTSTEP , PR, & & ZT3D(:,:,:,IZFPOS), ZT3D(:,:,:,IZFNEG), ZT3D(:,:,:,IZPHAT), & & ZT3D(:,:,:,IZRHO_MZM),ZT3D(:,:,:,IZCR_MZM),ZT3D(:,:,:,IZCR_DZF) ) @@ -2913,14 +2913,14 @@ REAL, DIMENSION(:,:,:),INTENT(INOUT):: PR CONTAINS ! ! ######################################################################## -SUBROUTINE PPM_S0_Z_D(KGRID, PSRC, ZCR, PRHO, PTSTEP , PR & +SUBROUTINE PPM_S0_Z_D(KGRID, PSRC, PCR, PRHO, PTSTEP , PR & & ,ZFPOS,ZFNEG,ZPHAT & & ,ZRHO_MZM,ZCR_MZM,ZCR_DZF ) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S0_Z(KGRID, PSRC, ZCR, PRHO, PTSTEP) & + FUNCTION PPM_S0_Z(KGRID, PSRC, PCR, PRHO, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -2958,15 +2958,15 @@ IMPLICIT NONE INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density -!$acc declare present (PSRC,ZCR,PRHO) +!$acc declare present (PSRC,PCR,PRHO) REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:),INTENT(INOUT):: PR !$acc declare present(PR) @@ -2980,10 +2980,10 @@ INTEGER:: IKE ! End useful area in x,y,z directions INTEGER:: IKU ! ! advection fluxes -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFPOS, ZFNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG ! ! interpolated variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT #else ! advection fluxes REAL, DIMENSION(:,:,:),INTENT(INOUT):: ZFPOS, ZFNEG & @@ -3034,14 +3034,14 @@ ZPHAT(:,:,IKE+1) = 0.5*(PSRC(:,:,IKE) + PSRC(:,:,IKE+1)) ! (for inflow or outflow situation) ! ZFPOS(:,:,IKB+1:IKE+1) = ZPHAT(:,:,IKB+1:IKE+1) - & - ZCR(:,:,IKB+1:IKE+1)*(ZPHAT(:,:,IKB+1:IKE+1) - PSRC(:,:,IKB:IKE)) - & - ZCR(:,:,IKB+1:IKE+1)*(1.0 - ZCR(:,:,IKB+1:IKE+1)) * & + PCR(:,:,IKB+1:IKE+1)*(ZPHAT(:,:,IKB+1:IKE+1) - PSRC(:,:,IKB:IKE)) - & + PCR(:,:,IKB+1:IKE+1)*(1.0 - PCR(:,:,IKB+1:IKE+1)) * & (ZPHAT(:,:,IKB:IKE) - 2.0*PSRC(:,:,IKB:IKE) + ZPHAT(:,:,IKB+1:IKE+1)) ! !!$CALL GET_HALO(ZFPOS(:,:,:)) ! JUAN ! ! positive flux on the BOTTOM boundary -ZFPOS(:,:,IKB) = (PSRC(:,:,IKB-1) - ZPHAT(:,:,IKB))*ZCR(:,:,IKB) + & +ZFPOS(:,:,IKB) = (PSRC(:,:,IKB-1) - ZPHAT(:,:,IKB))*PCR(:,:,IKB) + & ZPHAT(:,:,IKB) ! ! below bottom flux - not used @@ -3050,8 +3050,8 @@ ZFPOS(:,:,IKB-1) = 0.0 ! negative fluxes: ! ZFNEG(:,:,IKB:IKE) = ZPHAT(:,:,IKB:IKE) + & - ZCR(:,:,IKB:IKE)*(ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB:IKE)) + & - ZCR(:,:,IKB:IKE)*(1.0 + ZCR(:,:,IKB:IKE)) * & + PCR(:,:,IKB:IKE)*(ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB:IKE)) + & + PCR(:,:,IKB:IKE)*(1.0 + PCR(:,:,IKB:IKE)) * & (ZPHAT(:,:,IKB:IKE) - 2.0*PSRC(:,:,IKB:IKE) +ZPHAT(:,:,IKB+1:IKE+1)) ! !!$ CALL GET_HALO(ZFNEG) ! JUAN @@ -3060,20 +3060,20 @@ ZFNEG(:,:,IKB:IKE) = ZPHAT(:,:,IKB:IKE) + & ZFNEG(:,:,IKB-1) = 0.0 ! ! negative flux at the TOP -ZFNEG(:,:,IKE+1) = (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1))*ZCR(:,:,IKE+1) + & +ZFNEG(:,:,IKE+1) = (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1))*PCR(:,:,IKE+1) + & ZPHAT(:,:,IKE+1) ! ! calculate the advection ! #ifndef _OPENACC PR = PSRC * PRHO - & - DZF(1,IKU,1, ZCR*MZM(1,IKU,1,PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,ZCR)) + & - ZFNEG*(0.5-SIGN(0.5,ZCR)) ) ) + DZF(1,IKU,1, PCR*MZM(1,IKU,1,PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + & + ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels CALL MZM_DEVICE(PRHO,ZRHO_MZM) !$acc kernels - ZCR_MZM = ZCR* ZRHO_MZM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,ZCR)) + ZFNEG*(0.5-SIGN(0.5,ZCR)) ) + ZCR_MZM = PCR* ZRHO_MZM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !dzf(ZCR_DZF,ZCR_MZM) !$acc end kernels CALL DZF_DEVICE(1,1,1,ZCR_MZM,ZCR_DZF) @@ -3113,9 +3113,9 @@ END FUNCTION PPM_S0_Z ! #ifdef _OPENACC ! ######################################################################## -! FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & +! FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & ! PTSTEP) RESULT(PR) - SUBROUTINE PPM_S1_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & + SUBROUTINE PPM_S1_X(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR) ! ######################################################################## USE MODE_ll @@ -3142,8 +3142,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3151,7 +3151,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR !$acc declare present(PR) INTEGER :: IZPHAT,IZRUT,IZFUP,IZFCOR,IZRPOS,IZRNEG @@ -3164,7 +3164,7 @@ CALL ABORT CALL MNH_GET_ZT3D(IZPHAT,IZRUT,IZFUP,IZFCOR,IZRPOS,IZRNEG) - CALL PPM_S1_X_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP, PR, & + CALL PPM_S1_X_D(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP, PR, & ZT3D(:,:,:,IZPHAT),ZT3D(:,:,:,IZRUT),ZT3D(:,:,:,IZFUP), & ZT3D(:,:,:,IZFCOR),ZT3D(:,:,:,IZRPOS),ZT3D(:,:,:,IZRNEG) ) @@ -3174,14 +3174,14 @@ CALL ABORT CONTAINS ! ! ######################################################################## -! FUNCTION PPM_S1_X_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & +! FUNCTION PPM_S1_X_D(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & ! PTSTEP) RESULT(PR) - SUBROUTINE PPM_S1_X_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & + SUBROUTINE PPM_S1_X_D(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR, ZPHAT,ZRUT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & + FUNCTION PPM_S1_X(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP) RESULT(PR) ! ######################################################################## #endif @@ -3224,8 +3224,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3234,7 +3234,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -3246,13 +3246,13 @@ INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions ! ! variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT, ZRUT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRUT ! ! advection fluxes, upwind and correction -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFUP, ZFCOR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZRPOS, ZRNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG !$acc declare present(ZPHAT,ZRUT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ! variables for limiting the correction flux @@ -3276,7 +3276,7 @@ IKE = SIZE(PSRC,3) - JPVEXT ! ! Calculate contravariant component rho*u/dx ! -ZRUT = ZCR/PTSTEP * MXM(PRHO) +ZRUT = PCR/PTSTEP * MXM(PRHO) ! ! calculate 4th order fluxes at cell edges in the inner domain ! @@ -3308,47 +3308,47 @@ END SELECT ! that makes it equivalent to the PPM flux ! flux_ppm = flux_up + flux_corr ! -WHERE ( ZCR(IIB:IIE,:,:) .GT. 0.0 ) +WHERE ( PCR(IIB:IIE,:,:) .GT. 0.0 ) ZFUP(IIB:IIE,:,:) = ZRUT(IIB:IIE,:,:) * PSRC(IIB-1:IIE-1,:,:) ZFCOR(IIB:IIE,:,:) = ZRUT(IIB:IIE,:,:) * & - (1.0 - ZCR(IIB:IIE,:,:)) * & - (ZPHAT(IIB:IIE,:,:) - PSRC(IIB-1:IIE-1,:,:) - ZCR(IIB:IIE,:,:) * & + (1.0 - PCR(IIB:IIE,:,:)) * & + (ZPHAT(IIB:IIE,:,:) - PSRC(IIB-1:IIE-1,:,:) - PCR(IIB:IIE,:,:) * & (ZPHAT(IIB-1:IIE-1,:,:) - 2.0*PSRC(IIB-1:IIE-1,:,:)+ZPHAT(IIB:IIE,:,:))) ELSEWHERE ZFUP(IIB:IIE,:,:) = ZRUT(IIB:IIE,:,:) * PSRC(IIB:IIE,:,:) ZFCOR(IIB:IIE,:,:) = ZRUT(IIB:IIE,:,:) * & - (1.0 + ZCR(IIB:IIE,:,:)) * & - (ZPHAT(IIB:IIE,:,:) - PSRC(IIB:IIE,:,:) + ZCR(IIB:IIE,:,:) * & + (1.0 + PCR(IIB:IIE,:,:)) * & + (ZPHAT(IIB:IIE,:,:) - PSRC(IIB:IIE,:,:) + PCR(IIB:IIE,:,:) * & (ZPHAT(IIB:IIE,:,:) - 2.0*PSRC(IIB:IIE,:,:) + ZPHAT(IIB+1:IIE+1,:,:))) END WHERE ! ! set boundaries to CYCL ! -WHERE ( ZCR(IIB-1,:,:) .GT. 0.0 ) +WHERE ( PCR(IIB-1,:,:) .GT. 0.0 ) ZFUP(IIB-1,:,:) = ZRUT(IIB-1,:,:) * PSRC(IIE-1,:,:) ZFCOR(IIB-1,:,:) = ZRUT(IIB-1,:,:) * & - (1.0 - ZCR(IIB-1,:,:)) * & - (ZPHAT(IIB-1,:,:) - PSRC(IIE-1,:,:) - ZCR(IIB-1,:,:) * & + (1.0 - PCR(IIB-1,:,:)) * & + (ZPHAT(IIB-1,:,:) - PSRC(IIE-1,:,:) - PCR(IIB-1,:,:) * & (ZPHAT(IIE-1,:,:) - 2.0*PSRC(IIE-1,:,:) + ZPHAT(IIB-1,:,:))) ELSEWHERE ZFUP(IIB-1,:,:) = ZRUT(IIB-1,:,:) * PSRC(IIB-1,:,:) ZFCOR(IIB-1,:,:) = ZRUT(IIB-1,:,:) * & - (1.0 + ZCR(IIB-1,:,:)) * & - (ZPHAT(IIB-1,:,:) - PSRC(IIB-1,:,:) + ZCR(IIB-1,:,:) * & + (1.0 + PCR(IIB-1,:,:)) * & + (ZPHAT(IIB-1,:,:) - PSRC(IIB-1,:,:) + PCR(IIB-1,:,:) * & (ZPHAT(IIB-1,:,:) - 2.0*PSRC(IIB-1,:,:) + ZPHAT(IIB,:,:))) END WHERE ! -WHERE ( ZCR(IIE+1,:,:) .GT. 0.0 ) +WHERE ( PCR(IIE+1,:,:) .GT. 0.0 ) ZFUP(IIE+1,:,:) = ZRUT(IIE+1,:,:) * PSRC(IIE,:,:) ZFCOR(IIE+1,:,:) = ZRUT(IIE+1,:,:) * & - (1.0 - ZCR(IIE+1,:,:)) * & - (ZPHAT(IIE+1,:,:) - PSRC(IIE,:,:) - ZCR(IIE+1,:,:) * & + (1.0 - PCR(IIE+1,:,:)) * & + (ZPHAT(IIE+1,:,:) - PSRC(IIE,:,:) - PCR(IIE+1,:,:) * & (ZPHAT(IIE,:,:) - 2.0*PSRC(IIE,:,:) + ZPHAT(IIE+1,:,:))) ELSEWHERE ZFUP(IIE+1,:,:) = ZRUT(IIE+1,:,:) * PSRC(IIE+1,:,:) ZFCOR(IIE+1,:,:) = ZRUT(IIE+1,:,:) * & - (1.0 + ZCR(IIE+1,:,:)) * & - (ZPHAT(IIE+1,:,:) - PSRC(IIE+1,:,:) + ZCR(IIE+1,:,:) * & + (1.0 + PCR(IIE+1,:,:)) * & + (ZPHAT(IIE+1,:,:) - PSRC(IIE+1,:,:) + PCR(IIE+1,:,:) * & (ZPHAT(IIE+1,:,:) - 2.0*PSRC(IIE+1,:,:) + ZPHAT(IIB+1,:,:))) END WHERE ! @@ -3460,9 +3460,9 @@ END FUNCTION PPM_S1_X ! #ifdef _OPENACC ! ######################################################################## -! FUNCTION PPM_S1_Y(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & +! FUNCTION PPM_S1_Y(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & ! PTSTEP) RESULT(PR) - SUBROUTINE PPM_S1_Y(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, & + SUBROUTINE PPM_S1_Y(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR) ! ######################################################################## USE MODE_ll @@ -3489,8 +3489,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3498,7 +3498,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR !$acc declare present(PR) INTEGER :: IZPHAT,IZRVT,IZFUP,IZFCOR,IZRPOS,IZRNEG @@ -3511,7 +3511,7 @@ CALL ABORT CALL MNH_GET_ZT3D(IZPHAT,IZRVT,IZFUP,IZFCOR,IZRPOS,IZRNEG) - CALL PPM_S1_Y_D(HLBCX, KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP, PR, & + CALL PPM_S1_Y_D(HLBCX, KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP, PR, & ZT3D(:,:,:,IZPHAT),ZT3D(:,:,:,IZRVT),ZT3D(:,:,:,IZFUP), & ZT3D(:,:,:,IZFCOR),ZT3D(:,:,:,IZRPOS),ZT3D(:,:,:,IZRNEG) ) @@ -3521,14 +3521,14 @@ CALL ABORT CONTAINS ! ! ######################################################################## -! FUNCTION PPM_S1_Y_D(HLBCY, KGRID, PSRC, ZCR, PRHO, PRHOT, & +! FUNCTION PPM_S1_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PRHOT, & ! PTSTEP) RESULT(PR) - SUBROUTINE PPM_S1_Y_D(HLBCY, KGRID, PSRC, ZCR, PRHO, PRHOT, & + SUBROUTINE PPM_S1_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR, ZPHAT,ZRVT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S1_Y(HLBCY, KGRID, PSRC, ZCR, PRHO, PRHOT, & + FUNCTION PPM_S1_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP) RESULT(PR) ! ######################################################################## #endif @@ -3574,8 +3574,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3584,7 +3584,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -3596,13 +3596,13 @@ INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions ! ! variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT, ZRVT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRVT ! ! advection fluxes, upwind and correction -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFUP, ZFCOR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZRPOS, ZRNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG !$acc declare present(ZPHAT,ZRVT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ! variables for limiting the correction flux @@ -3632,7 +3632,7 @@ IKE = SIZE(PSRC,3) - JPVEXT ! !------------------------------------------------------------------------------- ! -ZRVT = ZCR/PTSTEP * MYM(PRHO) +ZRVT = PCR/PTSTEP * MYM(PRHO) ! ! calculate 4th order fluxes at cell edges in the inner domain ! ZPHAT(:,IJB+1:IJE,:) = (7.0 * & @@ -3663,47 +3663,47 @@ END SELECT ! that makes it equivalent to the PPM flux ! flux_ppm = flux_up + flux_corr ! -WHERE ( ZCR(:,IJB:IJE,:) .GT. 0.0 ) +WHERE ( PCR(:,IJB:IJE,:) .GT. 0.0 ) ZFUP(:,IJB:IJE,:) = ZRVT(:,IJB:IJE,:) * PSRC(:,IJB-1:IJE-1,:) ZFCOR(:,IJB:IJE,:) = ZRVT(:,IJB:IJE,:) * & - (1.0 - ZCR(:,IJB:IJE,:)) * & - (ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB-1:IJE-1,:) - ZCR(:,IJB:IJE,:) * & + (1.0 - PCR(:,IJB:IJE,:)) * & + (ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB-1:IJE-1,:) - PCR(:,IJB:IJE,:) * & (ZPHAT(:,IJB-1:IJE-1,:) - 2.0*PSRC(:,IJB-1:IJE-1,:)+ZPHAT(:,IJB:IJE,:))) ELSEWHERE ZFUP(:,IJB:IJE,:) = ZRVT(:,IJB:IJE,:) * PSRC(:,IJB:IJE,:) ZFCOR(:,IJB:IJE,:) = ZRVT(:,IJB:IJE,:) * & - (1.0 + ZCR(:,IJB:IJE,:)) * & - (ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB:IJE,:) + ZCR(:,IJB:IJE,:) * & + (1.0 + PCR(:,IJB:IJE,:)) * & + (ZPHAT(:,IJB:IJE,:) - PSRC(:,IJB:IJE,:) + PCR(:,IJB:IJE,:) * & (ZPHAT(:,IJB:IJE,:) - 2.0*PSRC(:,IJB:IJE,:) + ZPHAT(:,IJB+1:IJE+1,:))) END WHERE ! ! set boundaries to CYCL ! -WHERE ( ZCR(:,IJB-1,:) .GT. 0.0 ) +WHERE ( PCR(:,IJB-1,:) .GT. 0.0 ) ZFUP(:,IJB-1,:) = ZRVT(:,IJB-1,:) * PSRC(:,IJE-1,:) ZFCOR(:,IJB-1,:) = ZRVT(:,IJB-1,:) * & - (1.0 - ZCR(:,IJB-1,:)) * & - (ZPHAT(:,IJB-1,:) - PSRC(:,IJE-1,:) - ZCR(:,IJB-1,:) * & + (1.0 - PCR(:,IJB-1,:)) * & + (ZPHAT(:,IJB-1,:) - PSRC(:,IJE-1,:) - PCR(:,IJB-1,:) * & (ZPHAT(:,IJE-1,:) - 2.0*PSRC(:,IJE-1,:) + ZPHAT(:,IJB-1,:))) ELSEWHERE ZFUP(:,IJB-1,:) = ZRVT(:,IJB-1,:) * PSRC(:,IJB-1,:) ZFCOR(:,IJB-1,:) = ZRVT(:,IJB-1,:) * & - (1.0 + ZCR(:,IJB-1,:)) * & - (ZPHAT(:,IJB-1,:) - PSRC(:,IJB-1,:) + ZCR(:,IJB-1,:) * & + (1.0 + PCR(:,IJB-1,:)) * & + (ZPHAT(:,IJB-1,:) - PSRC(:,IJB-1,:) + PCR(:,IJB-1,:) * & (ZPHAT(:,IJB-1,:) - 2.0*PSRC(:,IJB-1,:) + ZPHAT(:,IJB,:))) END WHERE ! -WHERE ( ZCR(:,IJE+1,:) .GT. 0.0 ) +WHERE ( PCR(:,IJE+1,:) .GT. 0.0 ) ZFUP(:,IJE+1,:) = ZRVT(:,IJE+1,:) * PSRC(:,IJE,:) ZFCOR(:,IJE+1,:) = ZRVT(:,IJE+1,:) * & - (1.0 - ZCR(:,IJE+1,:)) * & - (ZPHAT(:,IJE+1,:) - PSRC(:,IJE,:) - ZCR(:,IJE+1,:) * & + (1.0 - PCR(:,IJE+1,:)) * & + (ZPHAT(:,IJE+1,:) - PSRC(:,IJE,:) - PCR(:,IJE+1,:) * & (ZPHAT(:,IJE,:) - 2.0*PSRC(:,IJE,:) + ZPHAT(:,IJE+1,:))) ELSEWHERE ZFUP(:,IJE+1,:) = ZRVT(:,IJE+1,:) * PSRC(:,IJE+1,:) ZFCOR(:,IJE+1,:) = ZRVT(:,IJE+1,:) * & - (1.0 + ZCR(:,IJE+1,:)) * & - (ZPHAT(:,IJE+1,:) - PSRC(:,IJE+1,:) + ZCR(:,IJE+1,:) * & + (1.0 + PCR(:,IJE+1,:)) * & + (ZPHAT(:,IJE+1,:) - PSRC(:,IJE+1,:) + PCR(:,IJE+1,:) * & (ZPHAT(:,IJE+1,:) - 2.0*PSRC(:,IJE+1,:) + ZPHAT(:,IJB+1,:))) END WHERE ! @@ -3814,9 +3814,9 @@ END FUNCTION PPM_S1_Y #ifdef _OPENACC ! ! ######################################################################## -! FUNCTION PPM_S1_Z(KGRID, PSRC, ZCR, PRHO, PRHOT, & +! FUNCTION PPM_S1_Z(KGRID, PSRC, PCR, PRHO, PRHOT, & ! PTSTEP) RESULT(PR) - SUBROUTINE PPM_S1_Z(KGRID, PSRC, ZCR, PRHO, PRHOT, & + SUBROUTINE PPM_S1_Z(KGRID, PSRC, PCR, PRHO, PRHOT, & PTSTEP, PR) ! ######################################################################## USE MODE_ll @@ -3841,8 +3841,8 @@ INTEGER, INTENT(IN) :: KGRID ! C grid localisation ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3850,7 +3850,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR !$acc declare present(PR) INTEGER :: IZPHAT,IZRVT,IZFUP,IZFCOR,IZRPOS,IZRNEG @@ -3863,7 +3863,7 @@ CALL ABORT CALL MNH_GET_ZT3D(IZPHAT,IZRVT,IZFUP,IZFCOR,IZRPOS,IZRNEG) - CALL PPM_S1_Z_D(KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP, PR, & + CALL PPM_S1_Z_D(KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP, PR, & ZT3D(:,:,:,IZPHAT),ZT3D(:,:,:,IZRVT),ZT3D(:,:,:,IZFUP), & ZT3D(:,:,:,IZFCOR),ZT3D(:,:,:,IZRPOS),ZT3D(:,:,:,IZRNEG) ) @@ -3872,12 +3872,12 @@ CALL ABORT CONTAINS ! ######################################################################## - SUBROUTINE PPM_S1_Z_D(KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP, & + SUBROUTINE PPM_S1_Z_D(KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP, & PR, ZPHAT,ZRVT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ######################################################################## #else ! ######################################################################## - FUNCTION PPM_S1_Z(KGRID, PSRC, ZCR, PRHO, PRHOT, PTSTEP) & + FUNCTION PPM_S1_Z(KGRID, PSRC, PCR, PRHO, PRHOT, PTSTEP) & RESULT(PR) ! ######################################################################## #endif @@ -3919,8 +3919,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRC ! variable at t !$acc declare present(PSRC) #endif -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZCR ! Courant number -!$acc declare present(ZCR) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCR ! Courant number +!$acc declare present(PCR) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! density !$acc declare present(PRHO) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOT ! density at t+dt @@ -3929,7 +3929,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step ! ! output source term #ifndef _OPENACC -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: PR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR !$acc declare present(PR) @@ -3942,13 +3942,13 @@ INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions INTEGER:: IKU ! ! variable at cell edges -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZPHAT, ZRVT +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRVT ! ! advection fluxes, upwind and correction -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZFUP, ZFCOR +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux -REAL, DIMENSION(SIZE(ZCR,1),SIZE(ZCR,2),SIZE(ZCR,3)) :: ZRPOS, ZRNEG +REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG !$acc declare present(ZPHAT,ZRVT,ZFUP,ZFCOR,ZRPOS,ZRNEG) ! ! variables for limiting the correction flux @@ -3970,7 +3970,7 @@ IKU = SIZE(PSRC,3) ! !------------------------------------------------------------------------------- ! -ZRVT = ZCR/PTSTEP * MZM(1,IKU,1,PRHO) +ZRVT = PCR/PTSTEP * MZM(1,IKU,1,PRHO) ! ! calculate 4th order fluxes at cell edges in the inner domain ! ZPHAT(:,:,IKB+1:IKE) = (7.0 * & @@ -3998,78 +3998,78 @@ ZPHAT(:,:,IKE+1) = (7.0 * & ! that makes it equivalent to the PPM flux ! flux_ppm = flux_up + flux_corr ! -WHERE ( ZCR(:,:,IKB:IKE) .GT. 0.0 ) +WHERE ( PCR(:,:,IKB:IKE) .GT. 0.0 ) ZFUP(:,:,IKB:IKE) = ZRVT(:,:,IKB:IKE) * PSRC(:,:,IKB-1:IKE-1) ZFCOR(:,:,IKB:IKE) = ZRVT(:,:,IKB:IKE) * & - (1.0 - ZCR(:,:,IKB:IKE)) * & - (ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB-1:IKE-1) - ZCR(:,:,IKB:IKE) * & + (1.0 - PCR(:,:,IKB:IKE)) * & + (ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB-1:IKE-1) - PCR(:,:,IKB:IKE) * & (ZPHAT(:,:,IKB-1:IKE-1) - 2.0*PSRC(:,:,IKB-1:IKE-1)+ZPHAT(:,:,IKB:IKE))) ELSEWHERE ZFUP(:,:,IKB:IKE) = ZRVT(:,:,IKB:IKE) * PSRC(:,:,IKB:IKE) ZFCOR(:,:,IKB:IKE) = ZRVT(:,:,IKB:IKE) * & - (1.0 + ZCR(:,:,IKB:IKE)) * & - (ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB:IKE) + ZCR(:,:,IKB:IKE) * & + (1.0 + PCR(:,:,IKB:IKE)) * & + (ZPHAT(:,:,IKB:IKE) - PSRC(:,:,IKB:IKE) + PCR(:,:,IKB:IKE) * & (ZPHAT(:,:,IKB:IKE) - 2.0*PSRC(:,:,IKB:IKE) + ZPHAT(:,:,IKB+1:IKE+1))) END WHERE ! ! set BC to WALL ! -WHERE ( ZCR(:,:,IKB-1) .GT. 0.0 ) +WHERE ( PCR(:,:,IKB-1) .GT. 0.0 ) ZFUP(:,:,IKB-1) = ZRVT(:,:,IKB-1) * PSRC(:,:,IKB+2) ZFCOR(:,:,IKB-1) = ZRVT(:,:,IKB-1) * & - (1.0 - ZCR(:,:,IKB-1)) * & - (ZPHAT(:,:,IKB+1) - PSRC(:,:,IKB+2) - ZCR(:,:,IKB+1) * & + (1.0 - PCR(:,:,IKB-1)) * & + (ZPHAT(:,:,IKB+1) - PSRC(:,:,IKB+2) - PCR(:,:,IKB+1) * & (ZPHAT(:,:,IKB+2) - 2.0*PSRC(:,:,IKB+2) + ZPHAT(:,:,IKB+1))) ELSEWHERE ZFUP(:,:,IKB-1) = ZRVT(:,:,IKB-1) * PSRC(:,:,IKB+1) ZFCOR(:,:,IKB-1) = ZRVT(:,:,IKB-1) * & - (1.0 + ZCR(:,:,IKB-1)) * & - (ZPHAT(:,:,IKB+1) - PSRC(:,:,IKB+1) + ZCR(:,:,IKB+1) * & + (1.0 + PCR(:,:,IKB-1)) * & + (ZPHAT(:,:,IKB+1) - PSRC(:,:,IKB+1) + PCR(:,:,IKB+1) * & (ZPHAT(:,:,IKB+1) - 2.0*PSRC(:,:,IKB+1) + ZPHAT(:,:,IKB))) END WHERE ! -WHERE ( ZCR(:,:,IKE+1) .GT. 0.0 ) +WHERE ( PCR(:,:,IKE+1) .GT. 0.0 ) ZFUP(:,:,IKE+1) = ZRVT(:,:,IKE+1) * PSRC(:,:,IKE) ZFCOR(:,:,IKE+1) = ZRVT(:,:,IKE+1) * & - (1.0 - ZCR(:,:,IKE+1)) * & - (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE) - ZCR(:,:,IKE+1) * & + (1.0 - PCR(:,:,IKE+1)) * & + (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE) - PCR(:,:,IKE+1) * & (ZPHAT(:,:,IKE) - 2.0*PSRC(:,:,IKE) + ZPHAT(:,:,IKE+1))) ELSEWHERE ZFUP(:,:,IKE+1) = ZRVT(:,:,IKE+1) * PSRC(:,:,IKE+1) ZFCOR(:,:,IKE+1) = ZRVT(:,:,IKE+1) * & - (1.0 + ZCR(:,:,IKE+1)) * & - (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1) + ZCR(:,:,IKE+1) * & + (1.0 + PCR(:,:,IKE+1)) * & + (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1) + PCR(:,:,IKE+1) * & (ZPHAT(:,:,IKE+1) - 2.0*PSRC(:,:,IKE+1) + ZPHAT(:,:,IKE))) END WHERE ! ! !!$! set boundaries to CYCL !!$! -!!$WHERE ( ZCR(:,:,IKB-1) .GT. 0.0 ) +!!$WHERE ( PCR(:,:,IKB-1) .GT. 0.0 ) !!$ ZFUP(:,:,IKB-1) = ZRVT(:,:,IKB-1) * PSRC(:,:,IKE-1) !!$ ZFCOR(:,:,IKB-1) = ZRVT(:,:,IKB-1) * & -!!$ (1.0 - ZCR(:,:,IKB-1)) * & -!!$ (ZPHAT(:,:,IKB-1) - PSRC(:,:,IKE-1) - ZCR(:,:,IKB-1) * & +!!$ (1.0 - PCR(:,:,IKB-1)) * & +!!$ (ZPHAT(:,:,IKB-1) - PSRC(:,:,IKE-1) - PCR(:,:,IKB-1) * & !!$ (ZPHAT(:,:,IKE-1) - 2.0*PSRC(:,:,IKE-1) + ZPHAT(:,:,IKB-1))) !!$ELSEWHERE !!$ ZFUP(:,:,IKB-1) = ZRVT(:,:,IKB-1) * PSRC(:,:,IKB-1) !!$ ZFCOR(:,:,IKB-1) = ZRVT(:,:,IKB-1) * & -!!$ (1.0 + ZCR(:,:,IKB-1)) * & -!!$ (ZPHAT(:,:,IKB-1) - PSRC(:,:,IKB-1) + ZCR(:,:,IKB-1) * & +!!$ (1.0 + PCR(:,:,IKB-1)) * & +!!$ (ZPHAT(:,:,IKB-1) - PSRC(:,:,IKB-1) + PCR(:,:,IKB-1) * & !!$ (ZPHAT(:,:,IKB-1) - 2.0*PSRC(:,:,IKB-1) + ZPHAT(:,:,IKB))) !!$END WHERE !!$! -!!$WHERE ( ZCR(:,:,IKE+1) .GT. 0.0 ) +!!$WHERE ( PCR(:,:,IKE+1) .GT. 0.0 ) !!$ ZFUP(:,:,IKE+1) = ZRVT(:,:,IKE+1) * PSRC(:,:,IKE) !!$ ZFCOR(:,:,IKE+1) = ZRVT(:,:,IKE+1) * & -!!$ (1.0 - ZCR(:,:,IKE+1)) * & -!!$ (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE) - ZCR(:,:,IKE+1) * & +!!$ (1.0 - PCR(:,:,IKE+1)) * & +!!$ (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE) - PCR(:,:,IKE+1) * & !!$ (ZPHAT(:,:,IKE) - 2.0*PSRC(:,:,IKE) + ZPHAT(:,:,IKE+1))) !!$ELSEWHERE !!$ ZFUP(:,:,IKE+1) = ZRVT(:,:,IKE+1) * PSRC(:,:,IKE+1) !!$ ZFCOR(:,:,IKE+1) = ZRVT(:,:,IKE+1) * & -!!$ (1.0 + ZCR(:,:,IKE+1)) * & -!!$ (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1) + ZCR(:,:,IKE+1) * & +!!$ (1.0 + PCR(:,:,IKE+1)) * & +!!$ (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1) + PCR(:,:,IKE+1) * & !!$ (ZPHAT(:,:,IKE+1) - 2.0*PSRC(:,:,IKE+1) + ZPHAT(:,:,IKB+1))) !!$END WHERE !