diff --git a/MNH/ppm.f90 b/MNH/ppm.f90 index 0f8ebfaaef89e7202834b362560e557adc0dac64..433d5ec69ea239eef81595c84c5073fd1fee20df 100644 --- a/MNH/ppm.f90 +++ b/MNH/ppm.f90 @@ -297,16 +297,16 @@ REAL , DIMENSION(IIU,IJU,IKU) :: & !$acc declare present (ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) ! !BEG JUAN PPM_LL -INTEGER :: IJS,IJN +INTEGER :: IJS,IJN, IIW,IIA !END JUAN PPM_LL !JUAN ACC LOGICAL :: GWEST , GEAST ! ! inline shuman with macro ! -#define dif2x(DQ,PQ) DQ(IIB:IIE,:,:)=0.5*(PQ(IIB+1:IIE+1,:,:)-PQ(IIB-1:IIE-1,:,:));\ -DQ(IIB-1,:,:)=0.5*(PQ(IIB,:,:)-PQ(IIE-1,:,:));\ -DQ(IIE+1,:,:)=0.5*(PQ(IIB+1,:,:)-PQ(IIE,:,:)) ! DIF2X(DQ,PQ) +#define dif2x(DQ,PQ) DQ(IIW:IIA,:,:)=0.5*(PQ(IIW+1:IIA+1,:,:)-PQ(IIW-1:IIA-1,:,:));\ +DQ(IIW-1,:,:)=0.5*(PQ(IIW,:,:)-PQ(IIA-1,:,:));\ +DQ(IIA+1,:,:)=0.5*(PQ(IIW+1,:,:)-PQ(IIA,:,:)) ! DIF2X(DQ,PQ) #define dxf(PDXF,PA) PDXF(1:IIU-1,:,:) = PA(2:IIU,:,:) - PA(1:IIU-1,:,:) ; PDXF(IIU,:,:) = PDXF(2*JPHEXT,:,:) ! DXF(PDXF,PA) #define mxm(PMXM,PA) PMXM(2:IIU,:,:) = 0.5*( PA(2:IIU,:,:)+PA(1:IIU-1,:,:) ) ; PMXM(1,:,:) = PMXM(IIU-2*JPHEXT+1,:,:) ! MXM(PMXM,PA) @@ -319,6 +319,8 @@ DQ(IIE+1,:,:)=0.5*(PQ(IIB+1,:,:)-PQ(IIE,:,:)) ! DIF2X(DQ,PQ) CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) IJS=IJB IJN=IJE +IIW=2 ! IIB +IIA=IIU -1 ! IIE GWEST = LWEST_ll() GEAST = LEAST_ll() ! @@ -523,11 +525,11 @@ ZFNEG=PSRC ! ! ZDMQ(i) = Fct[ ZDMQ(i),PSRC(i),PSRC(i-1),PSRC(i+1) ] ! - ZDMQ(IIB:IIE,IJS:IJN,:) = & - SIGN( (MIN( ABS(ZDMQ(IIB:IIE,IJS:IJN,:)),2.0*(PSRC(IIB:IIE,IJS:IJN,:) - & - MIN(PSRC(IIB-1:IIE-1,IJS:IJN,:),PSRC(IIB:IIE,IJS:IJN,:),PSRC(IIB+1:IIE+1,IJS:IJN,:))), & - 2.0*(MAX(PSRC(IIB-1:IIE-1,IJS:IJN,:),PSRC(IIB:IIE,IJS:IJN,:),PSRC(IIB+1:IIE+1,IJS:IJN,:)) - & - PSRC(IIB:IIE,IJS:IJN,:)) )), ZDMQ(IIB:IIE,IJS:IJN,:) ) + ZDMQ(IIW:IIA,IJS:IJN,:) = & + SIGN( (MIN( ABS(ZDMQ(IIW:IIA,IJS:IJN,:)),2.0*(PSRC(IIW:IIA,IJS:IJN,:) - & + MIN(PSRC(IIW-1:IIA-1,IJS:IJN,:),PSRC(IIW:IIA,IJS:IJN,:),PSRC(IIW+1:IIA+1,IJS:IJN,:))), & + 2.0*(MAX(PSRC(IIW-1:IIA-1,IJS:IJN,:),PSRC(IIW:IIA,IJS:IJN,:),PSRC(IIW+1:IIA+1,IJS:IJN,:)) - & + PSRC(IIW:IIA,IJS:IJN,:)) )), ZDMQ(IIW:IIA,IJS:IJN,:) ) ! ! WEST BOUND ! @@ -541,7 +543,7 @@ ZFNEG=PSRC #define TEMPO_JUAN #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZDMQ,HDIR="01_X") +!CALL GET_HALO_D(ZDMQ,HDIR="01_X") !!$IF (MPPDB_INITIALIZED) THEN !!$!$acc update host(ZDMQ) !!$ENDIF @@ -553,14 +555,14 @@ CALL MPPDB_CHECK3DM("PPM::PPM_01_X OPEN ::ZDMQ",PRECISION,ZDMQ) ! ! ZQL0(i) = Fct[ PSRC(i),PSRC(i-1),ZDMQ(i),ZDMQ(i-1) ] ! - ZQL0(IIB:IIE+1,IJS:IJN,:) = 0.5*(PSRC(IIB:IIE+1,IJS:IJN,:) + PSRC(IIB-1:IIE,IJS:IJN,:)) - & - (ZDMQ(IIB:IIE+1,IJS:IJN,:) - ZDMQ(IIB-1:IIE,IJS:IJN,:))/6.0 + ZQL0(IIW:IIA+1,IJS:IJN,:) = 0.5*(PSRC(IIW:IIA+1,IJS:IJN,:) + PSRC(IIW-1:IIA,IJS:IJN,:)) - & + (ZDMQ(IIW:IIA+1,IJS:IJN,:) - ZDMQ(IIW-1:IIA,IJS:IJN,:))/6.0 ! ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZQL0,HDIR="01_X") +!CALL GET_HALO_D(ZQL0,HDIR="01_X") !$acc kernels #endif ! @@ -573,11 +575,11 @@ CALL GET_HALO_D(ZQL0,HDIR="01_X") ! acc end kernels ENDIF ! - ZQR0(IIB-1:IIE,IJS:IJN,:) = ZQL0(IIB:IIE+1,IJS:IJN,:) + ZQR0(IIW-1:IIA,IJS:IJN,:) = ZQL0(IIW:IIA+1,IJS:IJN,:) ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZQR0,HDIR="01_X") +!CALL GET_HALO_D(ZQR0,HDIR="01_X") !$acc kernels #endif ! @@ -630,20 +632,20 @@ ENDDO ; ENDDO ; ENDDO ! ! 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*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,:)) + ZFPOS(IIW:IIA+1,IJS:IJN,:) = ZQR(IIW-1:IIA,IJS:IJN,:) - 0.5*PCR(IIW:IIA+1,IJS:IJN,:) * & + (ZDQ(IIW-1:IIA,IJS:IJN,:) - (1.0 - 2.0*PCR(IIW:IIA+1,IJS:IJN,:)/3.0) & + * ZQ6(IIW-1:IIA,IJS:IJN,:)) ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZFPOS,HDIR="01_X") +!CALL GET_HALO_D(ZFPOS,HDIR="01_X") !$acc kernels #endif ! ! ! WEST BOUND ! -! advection flux at open boundary when u(IIB) > 0 +! advection flux at open boundary when u(IIW) > 0 ! IF (GWEST) THEN ! acc kernels @@ -659,7 +661,7 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_X") ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZFNEG,HDIR="01_X") +!CALL GET_HALO_D(ZFNEG,HDIR="01_X") !$acc kernels #endif ! @@ -884,6 +886,8 @@ DQ(:,IJE+1,:) = 0.5*(PQ(:,IJB+1,:) - PQ(:,IJE,:)) ! DIF2Y(DQ,PQ) CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) IIW=IIB IIA=IIE +IJB=2 +IJE=IJU-1 GSOUTH=LSOUTH_ll() GNORTH=LNORTH_ll() @@ -1091,7 +1095,7 @@ ZFNEG(IIA:,:,:)=PSRC(IIA:,:,:) ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZDMQ,HDIR="01_Y") +!CALL GET_HALO_D(ZDMQ,HDIR="01_Y") !$acc kernels #endif ! @@ -1111,7 +1115,7 @@ CALL GET_HALO_D(ZDMQ,HDIR="01_Y") ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZQL0,HDIR="01_Y") +!CALL GET_HALO_D(ZQL0,HDIR="01_Y") !$acc kernels #endif ! @@ -1201,7 +1205,7 @@ CALL GET_HALO_D(ZQL0,HDIR="01_Y") ! #ifdef TEMPO_JUAN !$acc end kernels -CALL GET_HALO_D(ZFPOS,HDIR="01_Y") +!CALL GET_HALO_D(ZFPOS,HDIR="01_Y") !$acc kernels #endif ! @@ -1235,7 +1239,7 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y") ! #ifdef TEMPO_JUAN !$acc end kernels - CALL GET_HALO_D(ZFNEG,HDIR="01_Y") +! CALL GET_HALO_D(ZFNEG,HDIR="01_Y") !$acc kernels #endif !