diff --git a/src/MNH/gradient_m.f90 b/src/MNH/gradient_m.f90
index a31398eb734c7c8259b6cba9fefca8c169553b8c..25bd46fee85fce4a936a36d92010997ec19b176c 100644
--- a/src/MNH/gradient_m.f90
+++ b/src/MNH/gradient_m.f90
@@ -859,8 +859,8 @@ INTEGER  IIU,IJU,IKU,JI
 IIU=SIZE(PY,1)
 IJU=SIZE(PY,2)
 IKU=SIZE(PY,3)
-IF (.NOT. LFLAT) THEN 
 !$acc kernels
+IF (.NOT. LFLAT) THEN 
 PGX_M_U(1+JPHEXT:IIU,1:IJU,1+JPVEXT_TURB:IKU-JPVEXT_TURB) = &
   (  PY(1+JPHEXT:IIU,1:IJU,1+JPVEXT_TURB:IKU-JPVEXT_TURB)-PY(JPHEXT:IIU-1,1:IJU,1+JPVEXT_TURB:IKU-JPVEXT_TURB)      &
     -(  (PY(1+JPHEXT:IIU,1:IJU,1+JPVEXT_TURB:IKU-JPVEXT_TURB)-PY(1+JPHEXT:IIU,1:IJU,JPVEXT_TURB:IKU-JPVEXT_TURB-1)) &
@@ -877,21 +877,16 @@ PGX_M_U(1+JPHEXT:IIU,1:IJU,1+JPVEXT_TURB:IKU-JPVEXT_TURB) = &
 !
   DO JI=1+JPHEXT,IIU
     PGX_M_U(JI,:,KKU)=  ( PY(JI,:,KKU)-PY(JI-1,:,KKU)  )  / PDXX(JI,:,KKU) 
-    PGX_M_U(JI,:,KKA)=  -999.
+    PGX_M_U(JI,:,KKA)=   PGX_M_U(JI,:,KKU) ! -999.
   END DO
-!
-  PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
-!$acc end kernels 
-
 ELSE
-!$acc kernels
-  PGX_M_U(1+JPHEXT:IIU,:,:) = ( PY(1+JPHEXT:IIU,:,:)-PY(JPHEXT:IIU-1,:,:) ) &
-                             / PDXX(1+JPHEXT:IIU,:,:)
-!
-  PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
-!$acc end kernels
-!
+  PGX_M_U(1+1:IIU,:,:) = ( PY(1+1:IIU,:,:)-PY(1:IIU-1,:,:) ) & ! +JPHEXT
+                             / PDXX(1+1:IIU,:,:)
 ENDIF  
+DO JI=1,JPHEXT
+  PGX_M_U(JI,:,:)=PGX_M_U(IIU-2*JPHEXT+JI,:,:) ! for reprod JPHEXT <> 1
+END DO  
+!$acc end kernels
 
 !
 !-------------------------------------------------------------------------------
@@ -1061,8 +1056,8 @@ INTEGER  IJU,IKU,JJ,JK
 !
 IJU=SIZE(PY,2)
 IKU=SIZE(PY,3)
-IF (.NOT. LFLAT) THEN 
 !$acc kernels
+IF (.NOT. LFLAT) THEN 
   DO JK=1+JPVEXT_TURB,IKU-JPVEXT_TURB
     DO JJ=1+JPHEXT,IJU
         PGY_M_V(:,JJ,JK)=                                                 &
@@ -1079,19 +1074,16 @@ IF (.NOT. LFLAT) THEN
 !
   DO JJ=1+JPHEXT,IJU
     PGY_M_V(:,JJ,KKU)=  ( PY(:,JJ,KKU)-PY(:,JJ-1,KKU)  )  / PDYY(:,JJ,KKU) 
-    PGY_M_V(:,JJ,KKA)=  -999.
+    PGY_M_V(:,JJ,KKA)=  PGY_M_V(:,JJ,KKU) ! -999.
   END DO
-!
-  PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
-!$acc end kernels
 ELSE
-!$acc kernels
-  PGY_M_V(:,1+JPHEXT:IJU,:) = ( PY(:,1+JPHEXT:IJU,:)-PY(:,JPHEXT:IJU-1,:) ) & 
-                               / PDYY(:,1+JPHEXT:IJU,:)
-!
-  PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
-!$acc end kernels
+  PGY_M_V(:,1+1:IJU,:) = ( PY(:,1+1:IJU,:)-PY(:,1:IJU-1,:) ) & ! +JPHEXT
+                               / PDYY(:,1+1:IJU,:)
 ENDIF  
+DO JJ=1,JPHEXT
+  PGY_M_V(:,JJ,:)=PGY_M_V(:,IJU-2*JPHEXT+JJ,:)
+END DO
+!$acc end kernels
 !
 !-------------------------------------------------------------------------------
 !
@@ -1230,7 +1222,7 @@ PGZ_M_W(:,:,IKTB:IKTE) =  (PY(:,:,IKTB:IKTE)-PY(:,:,IKTB-KL:IKTE-KL))  &
                            / PDZZ(:,:,IKTB:IKTE)
 PGZ_M_W(:,:,KKU)=  (PY(:,:,KKU)-PY(:,:,KKU-KL))  &
                            / PDZZ(:,:,KKU)
-PGZ_M_W(:,:,KKA)=-999.
+PGZ_M_W(:,:,KKA)= PGZ_M_W(:,:,KKU) ! -999.
 !$acc end kernels
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/shuman_device.f90 b/src/MNH/shuman_device.f90
index 5c10471b615f41267373d04db84a631193d1b03e..46a2227806186f5e512a0745d5ecd08ee7392614 100644
--- a/src/MNH/shuman_device.f90
+++ b/src/MNH/shuman_device.f90
@@ -143,6 +143,8 @@ END MODULE MODI_SHUMAN_DEVICE
 !!      Original    04/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1   
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -184,7 +186,7 @@ IKU = SIZE(PA,3)
 !$acc kernels present(PMXF,PA)
 DO JK = 1, IKU
   DO JJ = 1, IJU
-    DO JI = 1 + JPHEXT, IIU
+    DO JI = 1 + 1, IIU
       PMXF(JI-1,JJ,JK) = 0.5*( PA(JI-1,JJ,JK)+PA(JI,JJ,JK) )
     ENDDO
   ENDDO
@@ -193,7 +195,7 @@ ENDDO
 PMXF(IIU,:,:)    = PMXF(2*JPHEXT,:,:) 
 !$acc end kernels
 #else
-JIJKOR  = 1 + JPHEXT
+JIJKOR  = 1 + 1
 JIJKEND = IIU*IJU*IKU
 !
 !$acc kernels present(PMXF,PA)
@@ -205,8 +207,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PMXF(IIU,JJK,1)    = PMXF(2*JPHEXT,JJK,1)
+DO JI=1,JPHEXT
+   DO JJK=1,IJU*IKU
+      PMXF(IIU-JPHEXT+JI,JJK,1) = PMXF(JPHEXT+JI,JJK,1) ! for reprod JPHEXT <> 1
+   END DO
 END DO
 !$acc end kernels
 #endif
@@ -260,6 +264,8 @@ END SUBROUTINE MXF_DEVICE
 !!      Original    04/07/94
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1 
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -303,7 +309,7 @@ IKU = SIZE(PA,3)
 !$acc kernels present(PA,PMXM)
 DO JK = 1, IKU
   DO JJ = 1, IJU
-    DO JI = 1 + JPHEXT, IIU
+    DO JI = 1 + 1, IIU
       PMXM(JI,JJ,JK) = 0.5*( PA(JI,JJ,JK)+PA(JI-1,JJ,JK) )
     ENDDO
   ENDDO
@@ -316,7 +322,7 @@ DO JK = 1, IKU
 ENDDO
 !$acc end kernels
 #else
-JIJKOR  = 1 + JPHEXT
+JIJKOR  = 1 + 1
 JIJKEND = IIU*IJU*IKU
 !
 !CDIR NODEP
@@ -328,8 +334,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PMXM(1,JJK,1)    = PMXM(IIU-2*JPHEXT+1,JJK,1)
+DO JI=1,JPHEXT
+   DO JJK=1,IJU*IKU
+      PMXM(JI,JJK,1) = PMXM(IIU-2*JPHEXT+JI,JJK,1) ! for reprod JPHEXT <> 1
+   END DO
 END DO
 !$acc end kernels
 #endif
@@ -383,6 +391,8 @@ END SUBROUTINE MXM_DEVICE
 !!      Original    04/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1   
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1  
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -419,8 +429,8 @@ IIU = SIZE(PA,1)
 IJU = SIZE(PA,2)
 IKU = SIZE(PA,3)
 !
-#ifndef _OPT_LINEARIZED_LOOPS
 !$acc kernels present(PA,PMYF)
+#ifndef _OPT_LINEARIZED_LOOPS
 DO JK=1,IKU
   DO JJ=1,IJU-1
     DO JI=1,IIU !TODO: remplacer le 1 par JPHEXT ?
@@ -428,23 +438,22 @@ DO JK=1,IKU
     END DO
   END DO
 END DO
-!
-PMYF(:,IJU,:)    = PMYF(:,2*JPHEXT,:)
-!$acc end kernels
 #else
 JIJKOR  = 1 + IIU
 JIJKEND = IIU*IJU*IKU
 !
-!$acc kernels present(PA,PMYF)
 !CDIR NODEP
 !OCL NOVREC
 DO JIJK=JIJKOR , JIJKEND
    PMYF(JIJK-IIU,1,1) = 0.5*( PA(JIJK-IIU,1,1)+PA(JIJK,1,1) )
 END DO
+#endif
 !
-PMYF(:,IJU,:)    = PMYF(:,2*JPHEXT,:)
+DO JJ=1,JPHEXT
+   PMYF(:,IJU-JPHEXT+JJ,:) = PMYF(:,JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !$acc end kernels
-#endif
+!
 !
 !-------------------------------------------------------------------------------
 !
@@ -495,6 +504,8 @@ END SUBROUTINE MYF_DEVICE
 !!      Original    04/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1    
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -542,9 +553,6 @@ DO JK=1,IKU
     END DO
   END DO
 END DO
-!
-PMYM(:,1,:)    = PMYM(:,IJU-2*JPHEXT+1,:)
-!$acc end kernels
 #else
 JIJKOR  = 1 + IIU
 JIJKEND = IIU*IJU*IKU
@@ -554,10 +562,12 @@ JIJKEND = IIU*IJU*IKU
 DO JIJK=JIJKOR , JIJKEND
    PMYM(JIJK,1,1) = 0.5*( PA(JIJK,1,1)+PA(JIJK-IIU,1,1) )
 END DO
+#endif
 !
-PMYM(:,1,:)    = PMYM(:,IJU-2*JPHEXT+1,:)
+DO JJ=1,JPHEXT
+   PMYM(:,JJ,:)  = PMYM(:,IJU-2*JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !$acc end kernels
-#endif
 !
 !-------------------------------------------------------------------------------
 !
@@ -661,7 +671,7 @@ END DO
 !CDIR NODEP
 !OCL NOVREC
 DO JIJ=1,IIU*IJU
-   PMZF(JIJ,1,IKU)    = -999.
+   PMZF(JIJ,1,IKU)    = PMZF(JIJ,1,IKU-1) !-999.
 END DO
 !$acc end kernels
 #endif
@@ -825,6 +835,8 @@ END SUBROUTINE MZM_DEVICE
 !!      Original    05/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1    
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -866,7 +878,7 @@ IKU = SIZE(PA,3)
 !$acc kernels present(PA,PDXF)
 DO JK=1,IKU
   DO JJ=1,IJU
-    DO JI=1+JPHEXT,IIU
+    DO JI=1+1,IIU
      PDXF(JI-1,JJ,JK) = PA(JI,JJ,JK) - PA(JI-1,JJ,JK) 
     END DO
   END DO
@@ -879,7 +891,7 @@ DO JK=1,IKU
 ENDDO
 !$acc end kernels
 #else
-JIJKOR  = 1 + JPHEXT
+JIJKOR  = 1 + 1
 JIJKEND = IIU*IJU*IKU
 !
 !$acc kernels present(PA,PDXF)
@@ -891,8 +903,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PDXF(IIU,JJK,1) = PDXF(2*JPHEXT,JJK,1) 
+DO JI=1,JPHEXT
+   DO JJK=1,IJU*IKU
+      PDXF(IIU-JPHEXT+JI,JJK,1) = PDXF(JPHEXT+JI,JJK,1) ! for reprod JPHEXT <> 1
+   END DO
 END DO
 !$acc end kernels
 #endif
@@ -1011,8 +1025,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PDXM(1,JJK,1)    = PDXM(IIU-2*JPHEXT+1,JJK,1)
+DO JI=1,JPHEXT
+   DO JJK=1,IJU*IKU
+      PDXM(JI,JJK,1) = PDXM(IIU-2*JPHEXT+JI,JJK,1) ! for reprod JPHEXT <> 1
+   END DO
 END DO
 !$acc end kernels
 #endif
@@ -1066,6 +1082,8 @@ END SUBROUTINE DXM_DEVICE
 !!      Original    05/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1 
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1101,8 +1119,8 @@ IIU = SIZE(PA,1)
 IJU = SIZE(PA,2)
 IKU = SIZE(PA,3)
 !
-#ifndef _OPT_LINEARIZED_LOOPS
 !$acc kernels present(PA,PDYF)
+#ifndef _OPT_LINEARIZED_LOOPS
 DO JK=1,IKU
   DO JJ=1,IJU-1 !TODO: remplacer le 1 par JPHEXT ?
     DO JI=1,IIU
@@ -1110,23 +1128,21 @@ DO JK=1,IKU
     END DO
   END DO
 END DO
-!
-PDYF(:,IJU,:)    = PDYF(:,2*JPHEXT,:)
-!$acc end kernels
 #else
 JIJKOR  = 1 + IIU
 JIJKEND = IIU*IJU*IKU
 !
-!$acc kernels present(PA,PDYF)
 !CDIR NODEP
 !OCL NOVREC
 DO JIJK=JIJKOR , JIJKEND
    PDYF(JIJK-IIU,1,1)         = PA(JIJK,1,1)  -  PA(JIJK-IIU,1,1) 
 END DO
+#endif
 !
-PDYF(:,IJU,:)    = PDYF(:,2*JPHEXT,:)
+DO JJ=1,JPHEXT
+   PDYF(:,IJU-JPHEXT+JJ,:) = PDYF(:,JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !$acc end kernels
-#endif
 !
 !-------------------------------------------------------------------------------
 !
@@ -1177,6 +1193,8 @@ END SUBROUTINE DYF_DEVICE
 !!      Original    05/07/94 
 !!      Modification to include the periodic case 13/10/94 J.Stein 
 !!                   optimisation                 20/08/00 J. Escobar
+!!      correction of in halo/pseudo-cyclic calculation for JPHEXT<> 1 
+!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1222,8 +1240,9 @@ DO JK=1,IKU
   END DO
 END DO
 !
-PDYM(:,1,:)    =  PDYM(:,IJU-2*JPHEXT+1,:)
-!$acc end kernels
+DO JJ=1,JPHEXT
+   PDYM(:,JJ,:) = PDYM(:,IJU-2*JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 #else
 JIJKOR  = 1 + IIU
 JIJKEND = IIU*IJU*IKU
@@ -1232,12 +1251,14 @@ JIJKEND = IIU*IJU*IKU
 !CDIR NODEP
 !OCL NOVREC
 DO JIJK=JIJKOR , JIJKEND
-   PDYM(JIJK,1,1)           = PA(JIJK,1,1)  -  PA(JIJK-IIU,1,1) 
+   PDYM(JIJK,1,1) = PA(JIJK,1,1)  -  PA(JIJK-IIU,1,1) 
 END DO
+#endif
 !
-PDYM(:,1,:)    =  PDYM(:,IJU-2*JPHEXT+1,:)
+DO JJ=1,JPHEXT
+   PDYM(:,JJ,:) = PDYM(:,IJU-2*JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !$acc end kernels
-#endif
 !
 !
 !-------------------------------------------------------------------------------