From bd3c98644cc17a00303c43ee565a21a395601e2c Mon Sep 17 00:00:00 2001
From: Juan Escobar <juan.escobar@aero.obs-mip.fr>
Date: Thu, 1 Oct 2015 14:33:46 +0000
Subject: [PATCH] Juan 1/10/2015: extend pseudo-cyclic filling on all HALO pts

---
 src/MNH/gradient_m.f90 | 16 ++++++-------
 src/MNH/shuman.f90     | 54 ++++++++++++++++++++++++------------------
 2 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/src/MNH/gradient_m.f90 b/src/MNH/gradient_m.f90
index c29a571d6..7a6abf734 100644
--- a/src/MNH/gradient_m.f90
+++ b/src/MNH/gradient_m.f90
@@ -527,15 +527,14 @@ IF (.NOT. LFLAT) THEN
     PGX_M_U(JI,:,KKU)=  ( PY(JI,:,KKU)-PY(JI-1,:,KKU)  )  / PDXX(JI,:,KKU) 
     PGX_M_U(JI,:,KKA)=   PGX_M_U(JI,:,KKU) ! -999.
   END DO
-!
-  PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
 ELSE
 !  PGX_M_U = DXM(PY) / PDXX
   PGX_M_U(1+1:IIU,:,:) = ( PY(1+1:IIU,:,:)-PY(1:IIU-1,:,:) ) & ! +JPHEXT
                              / PDXX(1+1:IIU,:,:)
-!
-  PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
-ENDIF  
+ENDIF
+DO JI=1,JPHEXT
+  PGX_M_U(JI,:,:)=PGX_M_U(IIU-2*JPHEXT+JI,:,:) ! for reprod JPHEXT <> 1
+END DO  
 !
 !-------------------------------------------------------------------------------
 !
@@ -652,15 +651,14 @@ IF (.NOT. LFLAT) THEN
     PGY_M_V(:,JJ,KKU)=  ( PY(:,JJ,KKU)-PY(:,JJ-1,KKU)  )  / PDYY(:,JJ,KKU) 
     PGY_M_V(:,JJ,KKA)=  PGY_M_V(:,JJ,KKU) ! -999.
   END DO
-!
-  PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
 ELSE
 !  PGY_M_V = DYM(PY)/PDYY
   PGY_M_V(:,1+1:IJU,:) = ( PY(:,1+1:IJU,:)-PY(:,1:IJU-1,:) ) & ! +JPHEXT
                                / PDYY(:,1+1:IJU,:)
-!
-  PGY_M_V(:,1,:)=PGY_M_V(:,IJU-2*JPHEXT+1,:)
 ENDIF  
+DO JJ=1,JPHEXT
+  PGY_M_V(:,JJ,:)=PGY_M_V(:,IJU-2*JPHEXT+JJ,:)
+END DO
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/shuman.f90 b/src/MNH/shuman.f90
index 75d67e1e6..526fa0491 100644
--- a/src/MNH/shuman.f90
+++ b/src/MNH/shuman.f90
@@ -187,7 +187,7 @@ IIU = SIZE(PA,1)
 IJU = SIZE(PA,2)
 IKU = SIZE(PA,3)
 !
-JIJKOR  = 1 + 1 ! JPHEXT
+JIJKOR  = 1 + 1 
 JIJKEND = IIU*IJU*IKU
 !
 !CDIR NODEP
@@ -198,9 +198,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PMXF(IIU,JJK,1)          = PMXF(2*JPHEXT,JJK,1) 
-   PMXF(IIU-JPHEXT+1,JJK,1) = PMXF(JPHEXT+1,JJK,1) ! for reprod JPHEXT <> 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
 !
 !-------------------------------------------------------------------------------
@@ -287,7 +288,7 @@ IIU = SIZE(PA,1)
 IJU = SIZE(PA,2)
 IKU = SIZE(PA,3)
 !
-JIJKOR  = 1 + 1 ! JPHEXT
+JIJKOR  = 1 + 1 
 JIJKEND = IIU*IJU*IKU
 !
 !CDIR NODEP
@@ -298,9 +299,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PMXM(1,JJK,1)      = PMXM(IIU-2*JPHEXT+1,JJK,1) 
-   PMXM(JPHEXT,JJK,1) = PMXM(IIU-JPHEXT,JJK,1) ! for reprod JPHEXT <> 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
 !
 !-------------------------------------------------------------------------------
@@ -398,8 +400,9 @@ DO JIJK=JIJKOR , JIJKEND
    PMYF(JIJK-IIU,1,1) = 0.5*( PA(JIJK-IIU,1,1)+PA(JIJK,1,1) )
 END DO
 !
-PMYF(:,IJU,:)           = PMYF(:,2*JPHEXT,:)
-PMYF(:,IJU-JPHEXT+1,:)  = PMYF(:,JPHEXT+1,:) ! for reprod JPHEXT <> 1
+DO JJ=1,JPHEXT
+   PMYF(:,IJU-JPHEXT+JJ,:) = PMYF(:,JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !
 !
 !-------------------------------------------------------------------------------
@@ -494,8 +497,9 @@ DO JIJK=JIJKOR , JIJKEND
    PMYM(JIJK,1,1) = 0.5*( PA(JIJK,1,1)+PA(JIJK-IIU,1,1) )
 END DO
 !
-PMYM(:,1,:)      = PMYM(:,IJU-2*JPHEXT+1,:)
-PMYM(:,JPHEXT,:) = PMYM(:,IJU-JPHEXT,:) ! for reprod JPHEXT <> 1
+DO JJ=1,JPHEXT
+   PMYM(:,JJ,:)  = PMYM(:,IJU-2*JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !
 !-------------------------------------------------------------------------------
 !
@@ -773,7 +777,7 @@ IIU = SIZE(PA,1)
 IJU = SIZE(PA,2)
 IKU = SIZE(PA,3)
 !
-JIJKOR  = 1 + 1 ! JPHEXT
+JIJKOR  = 1 + 1
 JIJKEND = IIU*IJU*IKU
 !
 !CDIR NODEP
@@ -784,9 +788,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PDXF(IIU,JJK,1)           = PDXF(2*JPHEXT,JJK,1) 
-   PDXF(IIU-JPHEXT+1,JJK,1)  = PDXF(JPHEXT+1,JJK,1) ! for reprod JPHEXT <> 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
 !
 !-------------------------------------------------------------------------------
@@ -884,9 +889,10 @@ END DO
 !
 !CDIR NODEP
 !OCL NOVREC
-DO JJK=1,IJU*IKU
-   PDXM(1,JJK,1)      = PDXM(IIU-2*JPHEXT+1,JJK,1) 
-   PDXM(JPHEXT,JJK,1) = PDXM(IIU-JPHEXT,JJK,1) ! for reprod JPHEXT <> 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
 !
 !-------------------------------------------------------------------------------
@@ -984,8 +990,9 @@ DO JIJK=JIJKOR , JIJKEND
    PDYF(JIJK-IIU,1,1)         = PA(JIJK,1,1)  -  PA(JIJK-IIU,1,1) 
 END DO
 !
-PDYF(:,IJU,:)           = PDYF(:,2*JPHEXT,:)
-PDYF(:,IJU-JPHEXT+1,:)  = PDYF(:,JPHEXT+1,:) ! for reprod JPHEXT <> 1
+DO JJ=1,JPHEXT
+   PDYF(:,IJU-JPHEXT+JJ,:) = PDYF(:,JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !
 !-------------------------------------------------------------------------------
 !
@@ -1082,8 +1089,9 @@ DO JIJK=JIJKOR , JIJKEND
    PDYM(JIJK,1,1)           = PA(JIJK,1,1)  -  PA(JIJK-IIU,1,1) 
 END DO
 !
-PDYM(:,1,:)      = PDYM(:,IJU-2*JPHEXT+1,:)
-PDYM(:,JPHEXT,:) = PDYM(:,IJU-JPHEXT,:) ! for reprod JPHEXT <> 1
+DO JJ=1,JPHEXT
+   PDYM(:,JJ,:) = PDYM(:,IJU-2*JPHEXT+JJ,:) ! for reprod JPHEXT <> 1
+END DO
 !
 !
 !-------------------------------------------------------------------------------
-- 
GitLab