diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index e1433f6e9a5fcc2259bb80f64950c521a3299c24..2f5a3e2050c6522ef2c3a5464a7c4fdf7167c025 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