diff --git a/src/LIB/SURCOUCHE/src/fmread_ll.f90 b/src/LIB/SURCOUCHE/src/fmread_ll.f90 index 5803897a48e3ce44bb26c79405f1644637aee75f..b4edb578eb3051f90ed0ac17b7bdffc2ab8e9fca 100644 --- a/src/LIB/SURCOUCHE/src/fmread_ll.f90 +++ b/src/LIB/SURCOUCHE/src/fmread_ll.f90 @@ -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) diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 index ba87714e639d1fd035a6c0f302a2b3c7404fd7db..6e2feec89534ccd852c8a8d2feb433104994c261 100644 --- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 +++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 @@ -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