Gaelle + Didier 26/04/2016 : bug dimensions 2D cases in netcdf
authorGaelle Tanguy <gaelle.tanguy@meteo.fr>
Tue, 26 Apr 2016 09:48:16 +0000 (09:48 +0000)
committerPhilippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Thu, 19 May 2016 14:44:49 +0000 (16:44 +0200)
src/LIB/SURCOUCHE/src/fmread_ll.f90
src/LIB/SURCOUCHE/src/fmwrit_ll.f90

index 5803897..b4edb57 100644 (file)
@@ -25,6 +25,7 @@ MODULE MODE_FMREAD
 !              lue non trouvĂ© !!!
 !  J.Escobar : 13/01/2015 : remove comment on BCAST(IRESP in FMREADX2_ll
 !  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!  D.Gazen   : avril 2016 bug dimensions 2D cases in netcdf
 !
 USE MODD_MPIF
 #if defined(MNH_IOCDF4)
@@ -279,6 +280,7 @@ END SUBROUTINE FMREADX1_ll
 SUBROUTINE FMREADX2_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
      KLENCH,HCOMMENT,KRESP, KIMAX_ll, KJMAX_ll, TPSPLITTING)
 USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LPACK,L1D,L2D , ISNPROC
+USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 USE MODD_FM
 USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
 USE MODE_SCATTER_ll
@@ -338,7 +340,7 @@ TZFD=>GETFD(YFNLFI)
 IF (ASSOCIATED(TZFD)) THEN
   IF (GSMONOPROC) THEN ! sequential execution
 !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(2:2,2:2)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -347,7 +349,7 @@ IF (ASSOCIATED(TZFD)) THEN
       END IF
       PFIELD(:,:)=SPREAD(SPREAD(PFIELD(2,2),DIM=1,NCOPIES=3),DIM=2,NCOPIES=3)
 !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(:,2:2)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -465,6 +467,7 @@ END SUBROUTINE FMREADX2_ll
 SUBROUTINE FMREADX3_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
      KLENCH,HCOMMENT,KRESP)
 USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LPACK,L1D,L2D 
+USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 USE MODD_FM
 USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
 USE MODE_SCATTER_ll
@@ -541,7 +544,7 @@ TZFD=>GETFD(YFNLFI)
 IF (ASSOCIATED(TZFD)) THEN
   IF (GSMONOPROC  .AND.  (TZFD%nb_procio.eq.1) ) THEN ! sequential execution
 !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-    IF (LPACK .AND. L1D  .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+    IF (LPACK .AND. L1D  .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(2:2,2:2,:)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -550,7 +553,7 @@ IF (ASSOCIATED(TZFD)) THEN
       END IF
       PFIELD(:,:,:)=SPREAD(SPREAD(PFIELD(2,2,:),DIM=1,NCOPIES=3),DIM=2,NCOPIES=3)
 !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ALLOCATE (ZFIELDP(SIZE(PFIELD,1),1,SIZE(PFIELD,3)))
       GALLOC = .TRUE.
       IF (ASSOCIATED(TZFD%CDF)) THEN
@@ -814,6 +817,7 @@ END SUBROUTINE FMREADX3_ll
 SUBROUTINE FMREADX4_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
      KLENCH,HCOMMENT,KRESP)
 USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LPACK,L1D,L2D 
+USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 USE MODD_FM
 USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
 USE MODE_SCATTER_ll
@@ -850,7 +854,7 @@ TZFD=>GETFD(YFNLFI)
 IF (ASSOCIATED(TZFD)) THEN
   IF (GSMONOPROC) THEN ! sequential execution
 !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(2:2,2:2,:,:)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -859,7 +863,7 @@ IF (ASSOCIATED(TZFD)) THEN
       END IF
       PFIELD(:,:,:,:)=SPREAD(SPREAD(PFIELD(2,2,:,:),DIM=1,NCOPIES=3),DIM=2,NCOPIES=3)
 !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(:,2:2,:,:)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -933,6 +937,7 @@ END SUBROUTINE FMREADX4_ll
 SUBROUTINE FMREADX5_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
      KLENCH,HCOMMENT,KRESP)
 USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LPACK,L1D,L2D 
+USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 USE MODD_FM
 USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
 USE MODE_SCATTER_ll
@@ -969,7 +974,7 @@ TZFD=>GETFD(YFNLFI)
 IF (ASSOCIATED(TZFD)) THEN
   IF (GSMONOPROC) THEN ! sequential execution
 !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+    IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(2:2,2:2,:,:,:)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -978,7 +983,7 @@ IF (ASSOCIATED(TZFD)) THEN
       END IF
       PFIELD(:,:,:,:,:)=SPREAD(SPREAD(PFIELD(2,2,:,:,:),DIM=1,NCOPIES=3),DIM=2,NCOPIES=3)
 !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+    ELSE IF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
       ZFIELDP=>PFIELD(:,2:2,:,:,:)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,ZFIELDP,TZFMH,IRESP)
@@ -1317,6 +1322,7 @@ END SUBROUTINE FMREADN1_ll
 SUBROUTINE FMREADN2_ll(HFILEM,HRECFM,HFIPRI,HDIR,KFIELD,KGRID,&
      KLENCH,HCOMMENT,KRESP)
 USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LPACK,L1D,L2D 
+USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 USE MODD_FM
 USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
 USE MODE_SCATTER_ll
@@ -1353,7 +1359,7 @@ TZFD=>GETFD(YFNLFI)
 IF (ASSOCIATED(TZFD)) THEN
   IF (GSMONOPROC) THEN ! sequential execution
 !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-    IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==3 .AND. SIZE(KFIELD,2)==3) THEN 
+    IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==2*JPHEXT+1 .AND. SIZE(KFIELD,2)==2*JPHEXT+1) THEN
       IFIELDP=>KFIELD(2:2,2:2)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,IFIELDP,TZFMH,IRESP)
@@ -1362,7 +1368,7 @@ IF (ASSOCIATED(TZFD)) THEN
       END IF
       KFIELD(:,:)=SPREAD(SPREAD(KFIELD(2,2),DIM=1,NCOPIES=3),DIM=2,NCOPIES=3)
 !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-    ELSE IF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==3) THEN
+    ELSE IF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==2*JPHEXT+1) THEN
       IFIELDP=>KFIELD(:,2:2)
       IF (ASSOCIATED(TZFD%CDF)) THEN
          CALL NCREAD(TZFD%CDF%NCID,HRECFM,IFIELDP,TZFMH,IRESP)
index ba87714..6e2feec 100644 (file)
@@ -12,6 +12,7 @@
 !-----------------------------------------------------------------
 !Correction :
 !  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+!  D.Gazen   : avril 2016 bug dimensions 2D cases
 !-----------------------------------------------------------------
 
 #ifdef MNH_MPI_DOUBLE_PRECISION
@@ -507,6 +508,7 @@ CONTAINS
   SUBROUTINE FMWRITX2_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
        KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L1D,L2D
+    USE MODD_PARAMETERS_ll,ONLY : JPHEXT
     USE MODD_FM
     USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
     USE MODE_ALLOCBUFFER_ll
@@ -587,7 +589,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN 
              ZFIELDP=>PFIELD(2:2,2:2)
 #ifdef MNH_NCWRIT
       IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -604,7 +606,7 @@ CONTAINS
              IF (LIOCDF4) CALL NCWRIT(TZFD%CDF,HRECFM,HDIR,ZFIELDP,TZFMH,IRESP)
 #endif
              !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-          ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+          ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
              ZFIELDP=>PFIELD(:,2:2)
 #ifdef MNH_NCWRIT
                IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -779,6 +781,7 @@ CONTAINS
   SUBROUTINE FMWRITX3_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
        KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L1D,L2D
+    USE MODD_PARAMETERS_ll,ONLY : JPHEXT
     USE MODD_FM
     USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
     USE MODE_ALLOCBUFFER_ll
@@ -897,7 +900,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN 
              ZFIELDP=>PFIELD(2:2,2:2,:)
 #ifdef MNH_NCWRIT
         IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -914,7 +917,7 @@ CONTAINS
              IF (LIOCDF4) CALL NCWRIT(TZFD%CDF,HRECFM,HDIR,ZFIELDP,TZFMH,IRESP)
 #endif
              !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-          ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+          ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
              ZFIELDP=>PFIELD(:,2:2,:)
 #ifdef MNH_NCWRIT
         IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1233,6 +1236,7 @@ CONTAINS
   SUBROUTINE FMWRITX4_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
        KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L1D,L2D
+    USE MODD_PARAMETERS_ll,ONLY : JPHEXT
     USE MODD_FM
     USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
     USE MODE_ALLOCBUFFER_ll
@@ -1281,7 +1285,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN 
              ZFIELDP=>PFIELD(2:2,2:2,:,:)
 #ifdef MNH_NCWRIT
            IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1292,7 +1296,7 @@ CONTAINS
              IF (LIOCDF4) CALL NCWRIT(TZFD%CDF,HRECFM,HDIR,ZFIELDP,TZFMH,IRESP)
 #endif
              !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-          ELSEIF (LPACK .AND. L2D  .AND. SIZE(PFIELD,2)==3) THEN
+          ELSEIF (LPACK .AND. L2D  .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
              ZFIELDP=>PFIELD(:,2:2,:,:)
 #ifdef MNH_NCWRIT
           IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1360,6 +1364,7 @@ CONTAINS
   SUBROUTINE FMWRITX5_ll(HFILEM,HRECFM,HFIPRI,HDIR,PFIELD,KGRID,&
        KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L1D,L2D
+    USE MODD_PARAMETERS_ll,ONLY : JPHEXT
     USE MODD_FM
     USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
     USE MODE_ALLOCBUFFER_ll
@@ -1419,7 +1424,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==3 .AND. SIZE(PFIELD,2)==3) THEN 
+          IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==2*JPHEXT+1 .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN 
              ZFIELDP=>PFIELD(2:2,2:2,:,:,:)
 #ifdef MNH_NCWRIT
             IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1430,7 +1435,7 @@ CONTAINS
              IF (LIOCDF4) CALL NCWRIT(TZFD%CDF,HRECFM,HDIR,ZFIELDP,TZFMH,IRESP)
 #endif
              !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-     ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==3) THEN
+     ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==2*JPHEXT+1) THEN
              ZFIELDP=>PFIELD(:,2:2,:,:,:)
 #ifdef MNH_NCWRIT
             IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1865,6 +1870,7 @@ CONTAINS
   SUBROUTINE FMWRITN2_ll(HFILEM,HRECFM,HFIPRI,HDIR,KFIELD,KGRID,&
        KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L1D,L2D
+    USE MODD_PARAMETERS_ll,ONLY : JPHEXT
     USE MODD_FM
     USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
     USE MODE_ALLOCBUFFER_ll
@@ -1915,7 +1921,7 @@ CONTAINS
           TZFMH%COMLEN=KLENCH
           TZFMH%COMMENT=HCOMMENT
           !    IF (LPACK .AND. L1D .AND. HDIR=='XY') THEN 
-          IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==3 .AND. SIZE(KFIELD,2)==3) THEN 
+          IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==2*JPHEXT+1 .AND. SIZE(KFIELD,2)==2*JPHEXT+1) THEN 
              IFIELDP=>KFIELD(2:2,2:2)
 #ifdef MNH_NCWRIT
                IF ( DEF_NC .AND. LLFIFM ) THEN
@@ -1926,7 +1932,7 @@ CONTAINS
              IF (LIOCDF4) CALL NCWRIT(TZFD%CDF,HRECFM,HDIR,IFIELDP,TZFMH,IRESP)
 #endif
              !    ELSE IF (LPACK .AND. L2D .AND. HDIR=='XY') THEN
-          ELSEIF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==3) THEN
+          ELSEIF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==2*JPHEXT+1) THEN
              IFIELDP=>KFIELD(:,2:2)
 #ifdef MNH_NCWRIT
                IF ( DEF_NC .AND. LLFIFM ) THEN