From 2d3c362fdfdb23539b07ae9a84b180fc0b5c71ea Mon Sep 17 00:00:00 2001
From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr>
Date: Fri, 25 Nov 2016 16:00:47 +0100
Subject: [PATCH] S.Bielli S.Faroux 25/11/2016 : correction for NHALO=0

---
 src/MNH/prep_pgd.f90 | 41 +++++++++++++++++++++++++++++++++++++----
 1 file changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90
index e1433f6e9..2f5a3e205 100644
--- a/src/MNH/prep_pgd.f90
+++ b/src/MNH/prep_pgd.f90
@@ -68,6 +68,7 @@
 !!    M.Moge          11/2015     disable the creation of files on multiple 
 !!                                Z-levels when using parallel IO for PREP_PGD
 !!  06/2016     (G.Delautier) phasage surfex 8
+!!    10/2016    (S.Faroux S.Bielli) correction for NHALO=0
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
@@ -287,11 +288,27 @@ IF (LNETCDF.AND..NOT.LCARTESIAN) THEN
   ALLOCATE(ZWORK_LAT(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT))
   ALLOCATE(ZWORK_LON(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT))
   ZWORK=RESHAPE(YSURF_CUR%UG%XLAT, (/ (IIMAX+NHALO*2),(IJMAX+NHALO*2) /) )
-  ZWORK_LAT=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+  IF (NHALO/=0) THEN   
+    ZWORK_LAT=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+  ELSE
+    ZWORK_LAT(2:IIMAX+1,2:IJMAX+1)=ZWORK
+    ZWORK_LAT(1,:) = ZWORK_LAT(2,:)
+    ZWORK_LAT(IIMAX+2,:) = ZWORK_LAT(IIMAX+1,:)
+    ZWORK_LAT(:,1) = ZWORK_LAT(:,2)
+    ZWORK_LAT(:,IJMAX+2) = ZWORK_LAT(:,IJMAX+1)
+  ENDIF
 !!
 CALL FMWRIT(COUTFMFILE,'LAT',CLUOUT0,'XY',ZWORK_LAT,1,21,'X_Y_latitude (degree)',IRESP)
   ZWORK=RESHAPE(YSURF_CUR%UG%XLON, (/ IIMAX+NHALO*2,IJMAX+NHALO*2 /) )
-  ZWORK_LON=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   IF (NHALO/=0) THEN   
+     ZWORK_LON=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   ELSE
+     ZWORK_LON(2:IIMAX+1,2:IJMAX+1)=ZWORK
+     ZWORK_LON(1,:) = ZWORK_LON(2,:)
+     ZWORK_LON(IIMAX+2,:) = ZWORK_LON(IIMAX+1,:)
+     ZWORK_LON(:,1) = ZWORK_LAT(:,2)
+     ZWORK_LON(:,IJMAX+2) = ZWORK_LON(:,IJMAX+1)           
+   ENDIF    
 CALL FMWRIT(COUTFMFILE,'LON',CLUOUT0,'XY',ZWORK_LON,1,22,'X_Y_longitude (degree)',IRESP)
   DEALLOCATE(ZWORK)
   LLFIFM = .TRUE.
@@ -334,9 +351,25 @@ IF (.NOT.LCARTESIAN) THEN
    ALLOCATE(ZWORK_LAT(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT))
    ALLOCATE(ZWORK_LON(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT))
    ZWORK=RESHAPE(YSURF_CUR%UG%XLAT, (/ (IIMAX+NHALO*2),(IJMAX+NHALO*2) /) )
-   ZWORK_LAT=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   IF (NHALO/=0) THEN   
+     ZWORK_LAT=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   ELSE
+     ZWORK_LAT(2:IIMAX+1,2:IJMAX+1)=ZWORK
+     ZWORK_LAT(1,:) = ZWORK_LAT(2,:)
+     ZWORK_LAT(IIMAX+2,:) = ZWORK_LAT(IIMAX+1,:)
+     ZWORK_LAT(:,1) = ZWORK_LAT(:,2)
+     ZWORK_LAT(:,IJMAX+2) = ZWORK_LAT(:,IJMAX+1)
+   ENDIF
    ZWORK=RESHAPE(YSURF_CUR%UG%XLON, (/ IIMAX+NHALO*2,IJMAX+NHALO*2 /) )
-   ZWORK_LON=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   IF (NHALO/=0) THEN   
+     ZWORK_LON=ZWORK(NHALO:(IIMAX+NHALO+1),NHALO:(IJMAX+NHALO+1))
+   ELSE
+     ZWORK_LON(2:IIMAX+1,2:IJMAX+1)=ZWORK
+     ZWORK_LON(1,:) = ZWORK_LON(2,:)
+     ZWORK_LON(IIMAX+2,:) = ZWORK_LON(IIMAX+1,:)
+     ZWORK_LON(:,1) = ZWORK_LON(:,2)
+     ZWORK_LON(:,IJMAX+2) = ZWORK_LON(:,IJMAX+1)           
+   ENDIF   
    YRECFM='LAT'
    YCOMMENT='X_Y_latitude (degree)'
    IGRID=1
-- 
GitLab