diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 index 47c52b7b5eaca79b144229cea96d2548a36ffcf4..c7a39030555be3f9f1cc8e7167ed2bd4c3b97d18 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 @@ -365,8 +365,8 @@ LOGICAL :: GALLOC logical :: glfi, gnc4 INTEGER :: IRESP INTEGER :: IHEXTOT -REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2 -REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 type(tfielddata) :: tzfield #ifdef MNH_GA REAL,DIMENSION(:,:),POINTER :: ZFIELD_GA @@ -376,7 +376,7 @@ INTEGER :: IINFO_ll ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_read_byfield_X2',TRIM(TPFILE%CNAME)//': reading '//TRIM(TPFIELD%CMNHNAME)) ! -CALL SECOND_MNH2(T11) +CALL SECOND_MNH2(ZT11) GALLOC = .FALSE. IRESP = 0 ZFIELDP => NULL() @@ -436,7 +436,7 @@ IF (IRESP==0) THEN if ( glfi ) call IO_Field_read_lfi( tpfile, tpfield, pfield, iresp ) end if ELSE - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) IF (ISP == TPFILE%NMASTER_RANK) THEN ! I/O process case CALL ALLOCBUFFER_ll(ZFIELDP,PFIELD,TPFIELD%CDIR,GALLOC, KIMAX_ll, KJMAX_ll) @@ -447,8 +447,8 @@ IF (IRESP==0) THEN ALLOCATE(ZFIELDP(0,0)) GALLOC = .TRUE. END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_READ2D_READ=TIMEZ%T_READ2D_READ + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READ2D_READ=TIMEZ%T_READ2D_READ + ZT1 - ZT0 ! CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! @@ -503,8 +503,8 @@ IF (IRESP==0) THEN ELSE CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF - CALL SECOND_MNH2(T2) - TIMEZ%T_READ2D_SCAT=TIMEZ%T_READ2D_SCAT + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_READ2D_SCAT=TIMEZ%T_READ2D_SCAT + ZT2 - ZT1 END IF END IF ! @@ -514,8 +514,8 @@ IF (IRESP==-111) IRESP = 0 !-111 is not really an error (metadata has changed) ! IF (PRESENT(KRESP)) KRESP = IRESP ! -CALL SECOND_MNH2(T22) -TIMEZ%T_READ2D_ALL=TIMEZ%T_READ2D_ALL + T22 - T11 +CALL SECOND_MNH2(ZT22) +TIMEZ%T_READ2D_ALL=TIMEZ%T_READ2D_ALL + ZT22 - ZT11 ! END SUBROUTINE IO_Field_read_byfield_X2 @@ -572,18 +572,18 @@ INTEGER :: IHEXTOT INTEGER :: IK_FILE,IK_RANK,INB_PROC_REAL,JK_MAX INTEGER :: JI,IXO,IXE,IYO,IYE INTEGER :: JK,JKK -INTEGER :: NB_REQ -INTEGER,ALLOCATABLE,DIMENSION(:) :: REQ_TAB -INTEGER, DIMENSION(MPI_STATUS_SIZE) :: STATUS +INTEGER :: INB_REQ +INTEGER,ALLOCATABLE,DIMENSION(:) :: IREQ_TAB +INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ISTATUS LOGICAL :: GALLOC, GALLOC_ll logical :: glfi, gnc4 -REAL,DIMENSION(:,:),POINTER :: TX2DP +REAL,DIMENSION(:,:),POINTER :: ZTX2DP REAL,DIMENSION(:,:),POINTER :: ZSLICE_ll,ZSLICE real,dimension(:), pointer :: zfieldp1d real,dimension(:,:), pointer :: zfieldp2d REAL,DIMENSION(:,:,:), POINTER :: ZFIELDP -REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2 -REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 CHARACTER(LEN=2) :: YDIR CHARACTER(LEN=4) :: YK CHARACTER(LEN=NMNHNAMELGTMAX+4) :: YRECZSLICE @@ -597,7 +597,7 @@ REAL,DIMENSION(:,:,:),POINTER :: ZFIELD_GA ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_read_byfield_X3',TRIM(TPFILE%CNAME)//': reading '//TRIM(TPFIELD%CMNHNAME)) ! -CALL SECOND_MNH2(T11) +CALL SECOND_MNH2(ZT11) ! TZFILE => NULL() GALLOC = .FALSE. @@ -709,7 +709,7 @@ IF (IRESP==0) THEN ! ! init/create the ga ! - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) CALL MNH_INIT_GA(SIZE(PFIELD,1),SIZE(PFIELD,2),SIZE(PFIELD,3),TPFIELD%CMNHNAME,"READ") ! ! read the data @@ -735,15 +735,15 @@ IF (IRESP==0) THEN CALL ALLOCBUFFER_ll(ZSLICE_ll,ZSLICE,YDIR,GALLOC_ll) END IF ! - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) WRITE(YK,'(I4.4)') JKK YRECZSLICE = TRIM(TPFIELD%CMNHNAME)//YK call IO_Format_read_select( tzfile, glfi, gnc4 ) !Safer to do that (probably useless) if ( gnc4 ) call IO_Field_read_nc4( tzfile, tzfield, zslice_ll, iresp_tmp ) if ( glfi ) call IO_Field_read_lfi( tzfile, tzfield, zslice_ll, iresp_tmp ) IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP - CALL SECOND_MNH2(T1) - TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + ZT1 - ZT0 ! ! put the data in the g_a , this proc get this JKK slide ! @@ -774,7 +774,7 @@ IF (IRESP==0) THEN GALLOC_ll = .TRUE. IRESP_ISP=0 INB_PROC_REAL = MIN(TPFILE%NSUBFILES_IOZ,ISNPROC) - ALLOCATE(REQ_TAB((ISNPROC-1)*INB_PROC_REAL)) + ALLOCATE(IREQ_TAB((ISNPROC-1)*INB_PROC_REAL)) ALLOCATE(T_TX2DP((ISNPROC-1)*INB_PROC_REAL)) Z_SLICE: DO JK=1,SIZE(PFIELD,3),INB_PROC_REAL ! @@ -782,7 +782,7 @@ IF (IRESP==0) THEN ! JK_MAX=MIN(SIZE(PFIELD,3),JK+INB_PROC_REAL-1) ! - NB_REQ=0 + INB_REQ=0 DO JKK=JK,JK_MAX IF (TPFILE%NSUBFILES_IOZ .GT. 1 ) THEN IK_FILE = IO_Level2filenumber_get(JKK,TPFILE%NSUBFILES_IOZ) @@ -803,31 +803,31 @@ IF (IRESP==0) THEN DEALLOCATE(ZSLICE_ll) CALL ALLOCBUFFER_ll(ZSLICE_ll,ZSLICE,YDIR,GALLOC_ll) END IF - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) WRITE(YK,'(I4.4)') JKK YRECZSLICE = TRIM(TPFIELD%CMNHNAME)//YK call IO_Format_read_select( tzfile, glfi, gnc4 ) !Safer to do that (probably useless) if ( gnc4 ) call IO_Field_read_nc4( tzfile, tzfield, zslice_ll, iresp_tmp ) if ( glfi ) call IO_Field_read_lfi( tzfile, tzfield, zslice_ll, iresp_tmp ) IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP - CALL SECOND_MNH2(T1) - TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + ZT1 - ZT0 DO JI = 1,ISNPROC CALL GET_DOMREAD_ll(JI,IXO,IXE,IYO,IYE) - TX2DP=>ZSLICE_ll(IXO:IXE,IYO:IYE) + ZTX2DP=>ZSLICE_ll(IXO:IXE,IYO:IYE) IF (ISP /= JI) THEN - NB_REQ = NB_REQ + 1 - ALLOCATE(T_TX2DP(NB_REQ)%X(IXO:IXE,IYO:IYE)) - T_TX2DP(NB_REQ)%X=TX2DP - CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+IK_RANK, & - TZFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR) - !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+IK_RANK,TZFILE%NMPICOMM,IERR) + INB_REQ = INB_REQ + 1 + ALLOCATE(T_TX2DP(INB_REQ)%X(IXO:IXE,IYO:IYE)) + T_TX2DP(INB_REQ)%X=ZTX2DP + CALL MPI_ISEND(T_TX2DP(INB_REQ)%X,SIZE(ZTX2DP),MNHREAL_MPI,JI-1,199+IK_RANK, & + TZFILE%NMPICOMM,IREQ_TAB(INB_REQ),IERR) + !CALL MPI_BSEND(ZTX2DP,SIZE(ZTX2DP),MNHREAL_MPI,JI-1,199+IK_RANK,TZFILE%NMPICOMM,IERR) ELSE - PFIELD(:,:,JKK) = TX2DP(:,:) + PFIELD(:,:,JKK) = ZTX2DP(:,:) END IF END DO - CALL SECOND_MNH2(T2) - TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + ZT2 - ZT1 END IF ! TZFILE => NULL() @@ -849,7 +849,7 @@ IF (IRESP==0) THEN ! ! XY Scatter Field ! - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) DO JKK=JK,JK_MAX ! ! get the file & rank @@ -867,29 +867,29 @@ IF (IRESP==0) THEN !CALL SCATTER_XYFIELD(ZSLICE_ll,ZSLICE,TZFILE%NMASTER_RANK,TZFILE%NMPICOMM) IF (ISP .NE. IK_RANK) THEN CALL MPI_RECV(ZSLICE,SIZE(ZSLICE),MNHREAL_MPI,IK_RANK-1,199+IK_RANK, & - TZFILE%NMPICOMM,STATUS,IERR) + TZFILE%NMPICOMM,ISTATUS,IERR) END IF TZFILE => NULL() END DO - CALL SECOND_MNH2(T1) - TIMEZ%T_READ3D_RECV=TIMEZ%T_READ3D_RECV + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READ3D_RECV=TIMEZ%T_READ3D_RECV + ZT1 - ZT0 END IF ELSE ! Broadcast Field call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_read_byfield_X3', 'broadcast field not yet planned on Blue Gene' ) CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF - CALL SECOND_MNH2(T0) - IF (NB_REQ .GT.0 ) THEN - CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR) - DO JI=1,NB_REQ ; DEALLOCATE(T_TX2DP(JI)%X) ; ENDDO + CALL SECOND_MNH2(ZT0) + IF (INB_REQ .GT.0 ) THEN + CALL MPI_WAITALL(INB_REQ,IREQ_TAB,MNH_STATUSES_IGNORE,IERR) + DO JI=1,INB_REQ ; DEALLOCATE(T_TX2DP(JI)%X) ; ENDDO END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_READ3D_WAIT=TIMEZ%T_READ3D_WAIT + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READ3D_WAIT=TIMEZ%T_READ3D_WAIT + ZT1 - ZT0 END DO Z_SLICE ! DEALLOCATE(T_TX2DP) - DEALLOCATE(REQ_TAB) + DEALLOCATE(IREQ_TAB) ! CALL MPI_ALLREDUCE(-ABS(IRESP_ISP),IRESP_TMP,1,MNHINT_MPI,MPI_MIN,TPFILE%NMPICOMM,IRESP) IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error" @@ -910,8 +910,8 @@ IF (IRESP==-111) IRESP = 0 !-111 is not really an error (metadata has changed) IF (PRESENT(KRESP)) KRESP = IRESP ! CALL MPI_BARRIER(TPFILE%NMPICOMM,IERR) -CALL SECOND_MNH2(T22) -TIMEZ%T_READ3D_ALL=TIMEZ%T_READ3D_ALL + T22 - T11 +CALL SECOND_MNH2(ZT22) +TIMEZ%T_READ3D_ALL=TIMEZ%T_READ3D_ALL + ZT22 - ZT11 ! END SUBROUTINE IO_Field_read_byfield_X3 @@ -2137,16 +2137,16 @@ INTEGER :: IHEXTOT INTEGER :: IIMAX_ll,IJMAX_ll INTEGER :: IIB,IIE,IJB,IJE INTEGER :: JI -INTEGER :: NB_REQ,IKU -INTEGER, DIMENSION(MPI_STATUS_SIZE) :: STATUS -INTEGER, ALLOCATABLE,DIMENSION(:,:) :: STATUSES -INTEGER,ALLOCATABLE,DIMENSION(:) :: REQ_TAB +INTEGER :: INB_REQ,IKU +INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ISTATUS +INTEGER, ALLOCATABLE,DIMENSION(:,:) :: ISTATUSES +INTEGER,ALLOCATABLE,DIMENSION(:) :: IREQ_TAB logical :: glfi, gnc4 REAL,DIMENSION(:,:,:),ALLOCATABLE,TARGET :: Z3D -real, dimension(:,:), pointer :: tx2dp +real, dimension(:,:), pointer :: ZTX2DP REAL,DIMENSION(:,:,:), POINTER :: TX3DP -REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2, T3 -REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2, ZT3 +REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 type(tfielddata) :: tzfield TYPE(TX_3DP),ALLOCATABLE,DIMENSION(:) :: T_TX3DP ! @@ -2162,7 +2162,7 @@ END IF ! !* 1.1 THE NAME OF LFIFM ! -CALL SECOND_MNH2(T11) +CALL SECOND_MNH2(ZT11) IRESP = 0 !------------------------------------------------------------------ IHEXTOT = 2*JPHEXT+1 @@ -2183,9 +2183,9 @@ IF (IRESP==0) THEN tzfield%ndimlist(3) = tzfield%ndimlist(4) !Necessary if time dimension tzfield%ndimlist(4:) = NMNHDIM_UNUSED end if - TX2DP=>Z3D(:,JPHEXT+1,:) - if ( gnc4 ) call IO_Field_read_nc4( tpfile, tzfield, tx2dp, iresp ) - if ( glfi ) call IO_Field_read_lfi( tpfile, tzfield, tx2dp, iresp ) + ZTX2DP=>Z3D(:,JPHEXT+1,:) + if ( gnc4 ) call IO_Field_read_nc4( tpfile, tzfield, ZTX2DP, iresp ) + if ( glfi ) call IO_Field_read_lfi( tpfile, tzfield, ZTX2DP, iresp ) Z3D(:,:,:) = SPREAD(Z3D(:,JPHEXT+1,:),DIM=2,NCOPIES=IHEXTOT) else tzfield = tpfield @@ -2210,7 +2210,7 @@ IF (IRESP==0) THEN END IF ELSE ! multiprocesses execution IF (ISP == TPFILE%NMASTER_RANK) THEN - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll) IF (YLBTYPE == 'LBX' .OR. YLBTYPE == 'LBXU') THEN ALLOCATE(Z3D(KL3D,IJMAX_ll+2*JPHEXT,SIZE(PLB,3))) @@ -2238,8 +2238,8 @@ IF (IRESP==0) THEN ! erase gap in LB field Z3D(:,KRIM+JPHEXT+1:2*(KRIM+JPHEXT),:) = Z3D(:,KL3D-KRIM-JPHEXT+1:KL3D,:) END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + ZT1 - ZT0 END IF ! CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) @@ -2248,13 +2248,13 @@ IF (IRESP==0) THEN !because metadata of field has been modified in IO_Field_read_xxx IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! - NB_REQ=0 - ALLOCATE(REQ_TAB(ISNPROC-1)) - !REQ_TAB=MPI_REQUEST_NULL + INB_REQ=0 + ALLOCATE(IREQ_TAB(ISNPROC-1)) + !IREQ_TAB=MPI_REQUEST_NULL IF (ISP == TPFILE%NMASTER_RANK) THEN - CALL SECOND_MNH2(T1) - !ALLOCATE(REQ_TAB(ISNPROC-1)) - !REQ_TAB=MPI_REQUEST_NULL + CALL SECOND_MNH2(ZT1) + !ALLOCATE(IREQ_TAB(ISNPROC-1)) + !IREQ_TAB=MPI_REQUEST_NULL ALLOCATE(T_TX3DP(ISNPROC-1)) IKU = SIZE(Z3D,3) DO JI = 1,ISNPROC @@ -2262,46 +2262,46 @@ IF (IRESP==0) THEN IF (IIB /= 0) THEN TX3DP=>Z3D(IIB:IIE,IJB:IJE,:) IF (ISP /= JI) THEN - NB_REQ = NB_REQ + 1 - ALLOCATE(T_TX3DP(NB_REQ)%X(IIB:IIE,IJB:IJE,IKU)) - T_TX3DP(NB_REQ)%X=Z3D(IIB:IIE,IJB:IJE,:) - CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR) - !CALL MPI_BSEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,IERR) + INB_REQ = INB_REQ + 1 + ALLOCATE(T_TX3DP(INB_REQ)%X(IIB:IIE,IJB:IJE,IKU)) + T_TX3DP(INB_REQ)%X=Z3D(IIB:IIE,IJB:IJE,:) + CALL MPI_ISEND(T_TX3DP(INB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,IREQ_TAB(INB_REQ),IERR) + !CALL MPI_BSEND(T_TX3DP(INB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,IERR) ELSE CALL GET_DISTRIB_lb(YLBTYPE,JI,'LOC','READ',KRIM,IIB,IIE,IJB,IJE) PLB(IIB:IIE,IJB:IJE,:) = TX3DP(:,:,:) END IF END IF END DO - CALL SECOND_MNH2(T2) - TIMEZ%T_READLB_SEND=TIMEZ%T_READLB_SEND + T2 - T1 - IF (NB_REQ .GT.0 ) THEN - !ALLOCATE(STATUSES(MPI_STATUS_SIZE,NB_REQ)) - !CALL MPI_WAITALL(NB_REQ,REQ_TAB,STATUSES,IERR) - CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR) - !DEALLOCATE(STATUSES) - DO JI=1,NB_REQ ; DEALLOCATE(T_TX3DP(JI)%X) ; ENDDO + CALL SECOND_MNH2(ZT2) + TIMEZ%T_READLB_SEND=TIMEZ%T_READLB_SEND + ZT2 - ZT1 + IF (INB_REQ .GT.0 ) THEN + !ALLOCATE(ISTATUSES(MPI_STATUS_SIZE,INB_REQ)) + !CALL MPI_WAITALL(INB_REQ,IREQ_TAB,ISTATUSES,IERR) + CALL MPI_WAITALL(INB_REQ,IREQ_TAB,MNH_STATUSES_IGNORE,IERR) + !DEALLOCATE(ISTATUSES) + DO JI=1,INB_REQ ; DEALLOCATE(T_TX3DP(JI)%X) ; ENDDO END IF DEALLOCATE(T_TX3DP) - !DEALLOCATE(REQ_TAB) - CALL SECOND_MNH2(T3) - TIMEZ%T_READLB_WAIT=TIMEZ%T_READLB_WAIT + T3 - T2 + !DEALLOCATE(IREQ_TAB) + CALL SECOND_MNH2(ZT3) + TIMEZ%T_READLB_WAIT=TIMEZ%T_READLB_WAIT + ZT3 - ZT2 ELSE - CALL SECOND_MNH2(T0) - !ALLOCATE(REQ_TAB(1)) - !REQ_TAB=MPI_REQUEST_NULL + CALL SECOND_MNH2(ZT0) + !ALLOCATE(IREQ_TAB(1)) + !IREQ_TAB=MPI_REQUEST_NULL CALL GET_DISTRIB_lb(YLBTYPE,ISP,'LOC','READ',KRIM,IIB,IIE,IJB,IJE) IF (IIB /= 0) THEN TX3DP=>PLB(IIB:IIE,IJB:IJE,:) - CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,STATUS,IERR) - !NB_REQ = NB_REQ + 1 - !CALL MPI_IRECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR) - !IF (NB_REQ .GT.0 ) CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR) + CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,ISTATUS,IERR) + !INB_REQ = INB_REQ + 1 + !CALL MPI_IRECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,IREQ_TAB(INB_REQ),IERR) + !IF (INB_REQ .GT.0 ) CALL MPI_WAITALL(INB_REQ,IREQ_TAB,MNH_STATUSES_IGNORE,IERR) END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_READLB_RECV=TIMEZ%T_READLB_RECV + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_READLB_RECV=TIMEZ%T_READLB_RECV + ZT1 - ZT0 END IF - DEALLOCATE(REQ_TAB) + DEALLOCATE(IREQ_TAB) END IF !(GSMONOPROC) END IF !---------------------------------------------------------------- @@ -2312,8 +2312,8 @@ IF (IRESP==-111) IRESP = 0 !-111 is not really an error (metadata has changed) ! IF (PRESENT(KRESP)) KRESP = IRESP ! -CALL SECOND_MNH2(T22) -TIMEZ%T_READLB_ALL=TIMEZ%T_READLB_ALL + T22 - T11 +CALL SECOND_MNH2(ZT22) +TIMEZ%T_READLB_ALL=TIMEZ%T_READLB_ALL + ZT22 - ZT11 ! END SUBROUTINE IO_Field_read_byfield_lb diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 index e777d5cac115882bb0cd781ac0f704acae52686f..ad12c64bd4efd7fe553f2f386ce238de8a5ffd9e 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 @@ -572,8 +572,8 @@ CONTAINS LOGICAL :: GALLOC LOGICAL :: GLFI, GNC4 ! - REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2 - REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 #ifdef MNH_GA REAL,DIMENSION(:,:),POINTER :: ZFIELD_GA #endif @@ -592,7 +592,7 @@ CONTAINS GALLOC = .FALSE. IHEXTOT = 2*JPHEXT+1 ! - CALL SECOND_MNH2(T11) + CALL SECOND_MNH2(ZT11) ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_byfield_X2',TRIM(YFILEM)//': writing '//TRIM(YRECFM)) ! @@ -651,7 +651,7 @@ CONTAINS IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,PFIELD,iresp_nc4) END IF ELSE ! multiprocesses execution - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IERR) IF (ISIZEMAX==0) THEN CALL PRINT_MSG(NVERB_INFO,'IO','IO_Field_write_byfield_X2','ignoring variable with a zero size ('//TRIM(YRECFM)//')') @@ -703,8 +703,8 @@ CONTAINS #endif END IF END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + ZT1 - ZT0 ! IF (ISP == TPFILE%NMASTER_RANK) THEN IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZFIELDP,iresp_lfi) @@ -713,8 +713,8 @@ CONTAINS #ifdef MNH_GA call ga_sync #endif - CALL SECOND_MNH2(T2) - TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + ZT2 - ZT1 END IF END IF @@ -722,8 +722,8 @@ CONTAINS if ( Present( kresp ) ) kresp = iresp_glob IF (GALLOC) DEALLOCATE(ZFIELDP) - CALL SECOND_MNH2(T22) - TIMEZ%T_WRIT2D_ALL=TIMEZ%T_WRIT2D_ALL + T22 - T11 + CALL SECOND_MNH2(ZT22) + TIMEZ%T_WRIT2D_ALL=TIMEZ%T_WRIT2D_ALL + ZT22 - ZT11 END SUBROUTINE IO_Field_write_byfield_X2 @@ -774,7 +774,7 @@ CONTAINS TYPE(TFILEDATA),TARGET, INTENT(IN) :: TPFILE TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:,:,:),TARGET,INTENT(IN) :: PFIELD ! array containing the data field - INTEGER,OPTIONAL, INTENT(OUT):: KRESP ! return-code + INTEGER,OPTIONAL, INTENT(OUT):: KRESP ! return-code ! !* 0.2 Declarations of local variables ! @@ -795,17 +795,17 @@ CONTAINS REAL,DIMENSION(:,:),POINTER :: ZSLICE_ll,ZSLICE INTEGER :: IK_FILE,IK_RANK,INB_PROC_REAL,JK_MAX INTEGER :: JI,IXO,IXE,IYO,IYE - REAL,DIMENSION(:,:),POINTER :: TX2DP - INTEGER, DIMENSION(MPI_STATUS_SIZE) :: STATUS + REAL,DIMENSION(:,:),POINTER :: ZTX2DP + INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ISTATUS LOGICAL :: GALLOC_ll - INTEGER,ALLOCATABLE,DIMENSION(:) :: REQ_TAB - INTEGER :: NB_REQ + INTEGER,ALLOCATABLE,DIMENSION(:) :: IREQ_TAB + INTEGER :: INB_REQ TYPE TX_2DP REAL, DIMENSION(:,:), POINTER :: X END TYPE TX_2DP TYPE(TX_2DP),ALLOCATABLE,DIMENSION(:) :: T_TX2DP - REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2 - REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 #ifdef MNH_GA REAL,DIMENSION(:,:,:),POINTER :: ZFIELD_GA #endif @@ -833,7 +833,7 @@ CONTAINS ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_byfield_X3',TRIM(YFILEM)//': writing '//TRIM(YRECFM)) ! - CALL SECOND_MNH2(T11) + CALL SECOND_MNH2(ZT11) ! CALL IO_Field_metadata_check(TPFIELD,TYPEREAL,3,'IO_Field_write_byfield_X3') ! @@ -843,7 +843,7 @@ CONTAINS ! IF (IRESP==0) THEN IF (GSMONOPROC .AND. TPFILE%NSUBFILES_IOZ==0 ) THEN ! sequential execution - ! IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN + ! IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==IHEXTOT .AND. SIZE(PFIELD,2)==IHEXTOT) THEN if ( tpfile%ldimreduced ) then tzfield = tpfield @@ -940,20 +940,20 @@ CONTAINS ! ! init/create the ga ! - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) CALL MNH_INIT_GA(SIZE(PFIELD,1),SIZE(PFIELD,2),SIZE(PFIELD,3),YRECFM,"WRITE") ! - ! copy columun data to global arrays g_a + ! copy columun data to global arrays g_a ! ALLOCATE (ZFIELD_GA (SIZE(PFIELD,1),SIZE(PFIELD,2),SIZE(PFIELD,3))) ZFIELD_GA = PFIELD !print*,"IO_WRITE_FIELD_BYFIELD_X3::nga_put=",g_a, lo_col, hi_col,NIXO_L,NIYO_L , ld_col, YRECFM ; call flush(6) call ga_sync() - call nga_put(g_a, lo_col, hi_col,ZFIELD_GA(NIXO_L,NIYO_L,1) , ld_col) + call nga_put(g_a, lo_col, hi_col,ZFIELD_GA(NIXO_L,NIYO_L,1) , ld_col) call ga_sync() DEALLOCATE(ZFIELD_GA) - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + ZT1 - ZT0 ! ! write the data ! @@ -967,8 +967,8 @@ CONTAINS ! IK_RANK = TZFILE%NMASTER_RANK ! - IF (ISP == IK_RANK ) THEN - CALL SECOND_MNH2(T0) + IF (ISP == IK_RANK ) THEN + CALL SECOND_MNH2(ZT0) ! IF ( SIZE(ZSLICE_ll) .EQ. 0 ) THEN DEALLOCATE(ZSLICE_ll) @@ -981,22 +981,22 @@ CONTAINS hi_zplan(JPIZ) = JKK !print*,"IO_WRITE_FIELD_BYFIELD_X3::nga_get=",g_a, lo_zplan, hi_zplan, ld_zplan, YRECFM,JKK ; call flush(6) call nga_get(g_a, lo_zplan, hi_zplan,ZSLICE_ll, ld_zplan) - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + ZT1 - ZT0 ! IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,iresp_tmp_lfi,KVERTLEVEL=JKK,KZFILE=IK_FILE+1) if ( iresp_tmp_lfi /= 0 ) iresp_lfi = iresp_tmp_lfi IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,iresp_tmp_nc4,KVERTLEVEL=JKK,KZFILE=IK_FILE+1) if ( iresp_tmp_nc4 /= 0 ) iresp_nc4 = iresp_tmp_nc4 - CALL SECOND_MNH2(T2) - TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + ZT2 - ZT1 END IF END DO ! - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) call ga_sync - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_WAIT=TIMEZ%T_WRIT3D_WAIT + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_WAIT=TIMEZ%T_WRIT3D_WAIT + ZT1 - ZT0 #else ! ALLOCATE(ZSLICE_ll(0,0)) @@ -1008,8 +1008,8 @@ CONTAINS ! JK_MAX=MIN(SIZE(PFIELD,3),JK+INB_PROC_REAL-1) ! - NB_REQ=0 - ALLOCATE(REQ_TAB(INB_PROC_REAL)) + INB_REQ=0 + ALLOCATE(IREQ_TAB(INB_PROC_REAL)) ALLOCATE(T_TX2DP(INB_PROC_REAL)) DO JKK=JK,JK_MAX ! @@ -1033,23 +1033,23 @@ CONTAINS '2D not (yet) allowed for parallel execution' ) CALL GATHER_XXFIELD('XX',PFIELD(:,JPHEXT+1,:),ZFIELDP(:,1,:),TPFILE%NMASTER_RANK,TPFILE%NMPICOMM) ELSE - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) IF ( ISP /= IK_RANK ) THEN ! Other processes CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE) IF (IXO /= 0) THEN ! intersection is not empty - NB_REQ = NB_REQ + 1 - ALLOCATE(T_TX2DP(NB_REQ)%X(IXO:IXE,IYO:IYE)) + INB_REQ = INB_REQ + 1 + ALLOCATE(T_TX2DP(INB_REQ)%X(IXO:IXE,IYO:IYE)) ZSLICE => PFIELD(:,:,JKK) - TX2DP=>ZSLICE(IXO:IXE,IYO:IYE) - T_TX2DP(NB_REQ)%X=ZSLICE(IXO:IXE,IYO:IYE) - CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK & - & ,TZFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR) - !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK,TZFILE%NMPICOMM,IERR) + ZTX2DP=>ZSLICE(IXO:IXE,IYO:IYE) + T_TX2DP(INB_REQ)%X=ZSLICE(IXO:IXE,IYO:IYE) + CALL MPI_ISEND(T_TX2DP(INB_REQ)%X,SIZE(ZTX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK & + & ,TZFILE%NMPICOMM,IREQ_TAB(INB_REQ),IERR) + !CALL MPI_BSEND(ZTX2DP,SIZE(ZTX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK,TZFILE%NMPICOMM,IERR) END IF END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + ZT1 - ZT0 END IF END IF END DO @@ -1071,7 +1071,7 @@ CONTAINS IK_RANK = TZFILE%NMASTER_RANK ! IF (ISP == IK_RANK ) THEN - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) ! I/O proc case IF ( SIZE(ZSLICE_ll) .EQ. 0 ) THEN DEALLOCATE(ZSLICE_ll) @@ -1080,36 +1080,36 @@ CONTAINS DO JI=1,ISNPROC CALL GET_DOMWRITE_ll(JI,'global',IXO,IXE,IYO,IYE) IF (IXO /= 0) THEN ! intersection is not empty - TX2DP=>ZSLICE_ll(IXO:IXE,IYO:IYE) - IF (ISP == JI) THEN + ZTX2DP=>ZSLICE_ll(IXO:IXE,IYO:IYE) + IF (ISP == JI) THEN CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE) ZSLICE => PFIELD(:,:,JKK) - TX2DP = ZSLICE(IXO:IXE,IYO:IYE) - ELSE - CALL MPI_RECV(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,99+IK_RANK,TZFILE%NMPICOMM,STATUS,IERR) + ZTX2DP = ZSLICE(IXO:IXE,IYO:IYE) + ELSE + CALL MPI_RECV(ZTX2DP,SIZE(ZTX2DP),MNHREAL_MPI,JI-1,99+IK_RANK,TZFILE%NMPICOMM,ISTATUS,IERR) END IF END IF END DO - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + ZT1 - ZT0 IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,iresp_tmp_lfi,KVERTLEVEL=JKK,KZFILE=IK_FILE+1) if ( iresp_tmp_lfi /= 0 ) iresp_lfi = iresp_tmp_lfi IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,iresp_tmp_nc4,KVERTLEVEL=JKK,KZFILE=IK_FILE+1) if ( iresp_tmp_nc4 /= 0 ) iresp_nc4 = iresp_tmp_nc4 - CALL SECOND_MNH2(T2) - TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + ZT2 - ZT1 END IF END DO ! - CALL SECOND_MNH2(T0) - IF (NB_REQ .GT.0 ) THEN - CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR) - DO JI=1,NB_REQ ; DEALLOCATE(T_TX2DP(JI)%X) ; ENDDO + CALL SECOND_MNH2(ZT0) + IF (INB_REQ .GT.0 ) THEN + CALL MPI_WAITALL(INB_REQ,IREQ_TAB,MNH_STATUSES_IGNORE,IERR) + DO JI=1,INB_REQ ; DEALLOCATE(T_TX2DP(JI)%X) ; ENDDO END IF DEALLOCATE(T_TX2DP) - DEALLOCATE(REQ_TAB) - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT3D_WAIT=TIMEZ%T_WRIT3D_WAIT + T1 - T0 + DEALLOCATE(IREQ_TAB) + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT3D_WAIT=TIMEZ%T_WRIT3D_WAIT + ZT1 - ZT0 END DO Z_SLICE !JUAN BG Z SLICE ! end of MNH_GA @@ -1127,8 +1127,8 @@ CONTAINS IF (GALLOC) DEALLOCATE(ZFIELDP) IF (GALLOC_ll) DEALLOCATE(ZSLICE_ll) - CALL SECOND_MNH2(T22) - TIMEZ%T_WRIT3D_ALL=TIMEZ%T_WRIT3D_ALL + T22 - T11 + CALL SECOND_MNH2(ZT22) + TIMEZ%T_WRIT3D_ALL=TIMEZ%T_WRIT3D_ALL + ZT22 - ZT11 END SUBROUTINE IO_Field_write_byfield_X3 @@ -1851,8 +1851,8 @@ CONTAINS LOGICAL :: GALLOC LOGICAL :: GLFI, GNC4 ! - REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2 - REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT0, ZT1, ZT2 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 INTEGER :: IHEXTOT CHARACTER(LEN=:),ALLOCATABLE :: YMSG CHARACTER(LEN=6) :: YRESP @@ -1871,7 +1871,7 @@ CONTAINS ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_byfield_N2',TRIM(YFILEM)//': writing '//TRIM(YRECFM)) ! - CALL SECOND_MNH2(T11) + CALL SECOND_MNH2(ZT11) ! CALL IO_Field_metadata_check(TPFIELD,TYPEINT,2,'IO_Field_write_byfield_N2') ! @@ -1934,7 +1934,7 @@ CONTAINS RETURN END IF - CALL SECOND_MNH2(T0) + CALL SECOND_MNH2(ZT0) IF (ISP == TPFILE%NMASTER_RANK) THEN ! I/O process case CALL ALLOCBUFFER_ll(IFIELDP,KFIELD,YDIR,GALLOC) @@ -1953,15 +1953,15 @@ CONTAINS CALL GATHER_XYFIELD(KFIELD,IFIELDP,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM) END IF END IF - CALL SECOND_MNH2(T1) - TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + T1 - T0 + CALL SECOND_MNH2(ZT1) + TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + ZT1 - ZT0 ! IF (ISP == TPFILE%NMASTER_RANK) THEN IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,IFIELDP,iresp_lfi) IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,IFIELDP,iresp_nc4) END IF - CALL SECOND_MNH2(T2) - TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + T2 - T1 + CALL SECOND_MNH2(ZT2) + TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + ZT2 - ZT1 END IF END IF @@ -1969,8 +1969,8 @@ CONTAINS if ( Present( kresp ) ) kresp = iresp_glob IF (GALLOC) DEALLOCATE(IFIELDP) - CALL SECOND_MNH2(T22) - TIMEZ%T_WRIT2D_ALL=TIMEZ%T_WRIT2D_ALL + T22 - T11 + CALL SECOND_MNH2(ZT22) + TIMEZ%T_WRIT2D_ALL=TIMEZ%T_WRIT2D_ALL + ZT22 - ZT11 ! END SUBROUTINE IO_Field_write_byfield_N2 @@ -2032,7 +2032,7 @@ CONTAINS LOGICAL :: GALLOC LOGICAL :: GLFI, GNC4 ! - REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22 + REAL(kind=MNHTIME), DIMENSION(2) :: ZT11, ZT22 INTEGER :: IHEXTOT CHARACTER(LEN=:),ALLOCATABLE :: YMSG CHARACTER(LEN=6) :: YRESP @@ -2051,7 +2051,7 @@ CONTAINS ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_byfield_N3',TRIM(YFILEM)//': writing '//TRIM(YRECFM)) ! - CALL SECOND_MNH2(T11) + CALL SECOND_MNH2(ZT11) ! CALL IO_Field_metadata_check(TPFIELD,TYPEINT,3,'IO_Field_write_byfield_N3') ! @@ -2144,8 +2144,8 @@ CONTAINS if ( Present( kresp ) ) kresp = iresp_glob IF (GALLOC) DEALLOCATE(IFIELDP) - CALL SECOND_MNH2(T22) - TIMEZ%T_WRIT3D_ALL=TIMEZ%T_WRIT3D_ALL + T22 - T11 + CALL SECOND_MNH2(ZT22) + TIMEZ%T_WRIT3D_ALL=TIMEZ%T_WRIT3D_ALL + ZT22 - ZT11 ! END SUBROUTINE IO_Field_write_byfield_N3 @@ -2739,14 +2739,14 @@ CONTAINS INTEGER :: IERR integer :: iresp, iresp_lfi, iresp_nc4, iresp_glob REAL,DIMENSION(:,:,:),ALLOCATABLE,TARGET :: Z3D - real,dimension(:,:), pointer :: tx2dp + real,dimension(:,:), pointer :: ztx2dp REAL,DIMENSION(:,:,:), POINTER :: TX3DP INTEGER :: IIMAX_ll,IJMAX_ll INTEGER :: JI INTEGER :: IIB,IIE,IJB,IJE - INTEGER, DIMENSION(MPI_STATUS_SIZE) :: STATUS - INTEGER,ALLOCATABLE,DIMENSION(:) :: REQ_TAB - INTEGER :: NB_REQ,IKU + INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ISTATUS + INTEGER,ALLOCATABLE,DIMENSION(:) :: IREQ_TAB + INTEGER :: INB_REQ,IKU LOGICAL :: GLFI, GNC4 TYPE TX_3DP REAL,DIMENSION(:,:,:), POINTER :: X @@ -2797,9 +2797,9 @@ CONTAINS tzfield%ndimlist(3) = tzfield%ndimlist(4) !Necessary if time dimension tzfield%ndimlist(4:) = NMNHDIM_UNUSED end if - tx2dp => plb(:, jphext + 1, :) - if ( glfi ) call IO_Field_write_lfi( tpfile, tzfield, tx2dp, iresp_lfi ) - if ( gnc4 ) call IO_Field_write_nc4( tpfile, tzfield, tx2dp, iresp_nc4 ) + ztx2dp => plb(:, jphext + 1, :) + if ( glfi ) call IO_Field_write_lfi( tpfile, tzfield, ztx2dp, iresp_lfi ) + if ( gnc4 ) call IO_Field_write_nc4( tpfile, tzfield, ztx2dp, iresp_nc4 ) else tzfield = tpfield if ( tzfield%ndimlist(2) /= NMNHDIM_UNKNOWN ) tzfield%ndimlist(2) = NMNHDIM_ONE @@ -2825,7 +2825,7 @@ CONTAINS IF (IIB /= 0) THEN TX3DP=>Z3D(IIB:IIE,IJB:IJE,:) IF (ISP /= JI) THEN - CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,STATUS,IERR) + CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,ISTATUS,IERR) ELSE CALL GET_DISTRIB_lb(YLBTYPE,JI,'LOC','WRITE',IRIM,IIB,IIE,IJB,IJE) TX3DP = PLB(IIB:IIE,IJB:IJE,:) @@ -2841,26 +2841,26 @@ CONTAINS IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,TX3DP,iresp_lfi) IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,TX3DP,iresp_nc4) ELSE - NB_REQ=0 - ALLOCATE(REQ_TAB(1)) + INB_REQ=0 + ALLOCATE(IREQ_TAB(1)) ALLOCATE(T_TX3DP(1)) IKU = SIZE(PLB,3) ! Other processes CALL GET_DISTRIB_lb(YLBTYPE,ISP,'LOC','WRITE',IRIM,IIB,IIE,IJB,IJE) IF (IIB /= 0) THEN TX3DP=>PLB(IIB:IIE,IJB:IJE,:) - NB_REQ = NB_REQ + 1 - ALLOCATE(T_TX3DP(NB_REQ)%X(IIB:IIE,IJB:IJE,IKU)) - T_TX3DP(NB_REQ)%X=PLB(IIB:IIE,IJB:IJE,:) - CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99, & - TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR) + INB_REQ = INB_REQ + 1 + ALLOCATE(T_TX3DP(INB_REQ)%X(IIB:IIE,IJB:IJE,IKU)) + T_TX3DP(INB_REQ)%X=PLB(IIB:IIE,IJB:IJE,:) + CALL MPI_ISEND(T_TX3DP(INB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99, & + TPFILE%NMPICOMM,IREQ_TAB(INB_REQ),IERR) !CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,IERR) END IF - IF (NB_REQ .GT.0 ) THEN - CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR) + IF (INB_REQ .GT.0 ) THEN + CALL MPI_WAITALL(INB_REQ,IREQ_TAB,MNH_STATUSES_IGNORE,IERR) DEALLOCATE(T_TX3DP(1)%X) END IF - DEALLOCATE(T_TX3DP,REQ_TAB) + DEALLOCATE(T_TX3DP,IREQ_TAB) END IF END IF END IF diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 index ed9e0833eeb74c12365adccc7304821de1d57498..c81a2edb710e2dd94d7abc1cecb0630f8874a5b9 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 @@ -63,7 +63,7 @@ INTEGER :: IERRLEVEL INTEGER :: IGRID INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: ILEN -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus CHARACTER(LEN=12) :: YVAL_FILE, YVAL_MEM CHARACTER(LEN=:),ALLOCATABLE :: YVALUE LOGICAL :: GOLDMNH !if old version of MesoNH (<5.4, old files without complete and correct metadata) @@ -83,9 +83,9 @@ END IF ! ! GRID ! -STATUS = NF90_GET_ATT(INCID,KVARID,'grid',IGRID) -IF (STATUS /= NF90_NOERR) STATUS = NF90_GET_ATT(INCID,KVARID,'GRID',IGRID) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_GET_ATT(INCID,KVARID,'grid',IGRID) +IF (istatus /= NF90_NOERR) istatus = NF90_GET_ATT(INCID,KVARID,'GRID',IGRID) +IF (istatus == NF90_NOERR) THEN IF (IGRID/=TPFIELD%NGRID) THEN WRITE(YVAL_FILE,'(I12)') IGRID WRITE(YVAL_MEM, '(I12)') TPFIELD%NGRID @@ -112,10 +112,10 @@ ENDIF ! ! COMMENT ! -STATUS = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'comment', LEN=ILEN) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'comment', LEN=ILEN) +IF (istatus == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN) :: YVALUE) - STATUS = NF90_GET_ATT(INCID, KVARID, 'comment', YVALUE) + istatus = NF90_GET_ATT(INCID, KVARID, 'comment', YVALUE) IF (LEN_TRIM(TPFIELD%CCOMMENT)==0 .AND. LEN_TRIM(YVALUE)>0) THEN !Expected comment is empty, read comment is not CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_read_check_nc4',TRIM(TPFILE%CNAME)// & @@ -144,10 +144,10 @@ END IF ! ! STDNAME ! -STATUS = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'standard_name', LEN=ILEN) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'standard_name', LEN=ILEN) +IF (istatus == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN) :: YVALUE) - STATUS = NF90_GET_ATT(INCID, KVARID, 'standard_name', YVALUE) + istatus = NF90_GET_ATT(INCID, KVARID, 'standard_name', YVALUE) IF (TRIM(YVALUE)/=TRIM(TPFIELD%CSTDNAME)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_attr_read_check_nc4',TRIM(TPFILE%CNAME)// & ': expected STDNAME ('//TRIM(TPFIELD%CSTDNAME)// & @@ -171,10 +171,10 @@ END IF ! ! LONGNAME ! -STATUS = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'long_name', LEN=ILEN) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'long_name', LEN=ILEN) +IF (istatus == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN) :: YVALUE) - STATUS = NF90_GET_ATT(INCID, KVARID, 'long_name', YVALUE) + istatus = NF90_GET_ATT(INCID, KVARID, 'long_name', YVALUE) IF (TRIM(YVALUE)/=TRIM(TPFIELD%CLONGNAME)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_attr_read_check_nc4',TRIM(TPFILE%CNAME)// & ': expected LONGNAME ('//TRIM(TPFIELD%CLONGNAME)// & @@ -198,10 +198,10 @@ END IF ! ! UNITS ! -STATUS = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'units', LEN=ILEN) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'units', LEN=ILEN) +IF (istatus == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN) :: YVALUE) - STATUS = NF90_GET_ATT(INCID, KVARID, 'units', YVALUE) + istatus = NF90_GET_ATT(INCID, KVARID, 'units', YVALUE) IF (TRIM(YVALUE)/=TRIM(TPFIELD%CUNITS)) THEN IF(.NOT.PRESENT(HCALENDAR)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_attr_read_check_nc4',TRIM(TPFILE%CNAME)// & @@ -237,10 +237,10 @@ END IF ! CALENDAR ! IF(PRESENT(HCALENDAR)) THEN -STATUS = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'calendar', LEN=ILEN) -IF (STATUS == NF90_NOERR) THEN +istatus = NF90_INQUIRE_ATTRIBUTE(INCID, KVARID, 'calendar', LEN=ILEN) +IF (istatus == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN) :: YVALUE) - STATUS = NF90_GET_ATT(INCID, KVARID, 'calendar', YVALUE) + istatus = NF90_GET_ATT(INCID, KVARID, 'calendar', YVALUE) IF (TRIM(YVALUE)/=TRIM(HCALENDAR)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_attr_read_check_nc4',TRIM(TPFILE%CNAME)// & ': expected CALENDAR ('//TRIM(HCALENDAR)// & @@ -265,7 +265,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL, INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -282,22 +282,22 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -320,7 +320,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -339,27 +339,27 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 1 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN == SIZE(PFIELD)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -387,7 +387,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:,:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -406,21 +406,21 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !Treat special case of a degenerated 3D array (3rd dimension size is 1) IF (IDIMS==3) THEN - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(3)==1) THEN CALL PRINT_MSG(NVERB_INFO,'IO','IO_Field_read_nc4_X2',TRIM(TPFILE%CNAME)// & ': reading 3D array with degenerated third dimension in 2D array for '//TRIM(YVARNAME)) @@ -432,16 +432,16 @@ END IF IF (IDIMS == 2 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(1) == SIZE(PFIELD,1) .AND. IDIMLEN(2) == SIZE(PFIELD,2)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X2','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X2','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -469,7 +469,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:,:,:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -488,31 +488,31 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 3 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(1) == SIZE(PFIELD,1) .AND. IDIMLEN(2) == SIZE(PFIELD,2) .AND. IDIMLEN(3) == SIZE(PFIELD,3)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X3','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X3','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -540,7 +540,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:,:,:,:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -559,34 +559,34 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 4 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF ( IDIMLEN(1) == SIZE(PFIELD,1) .AND. IDIMLEN(2) == SIZE(PFIELD,2) .AND. & IDIMLEN(3) == SIZE(PFIELD,3) .AND. IDIMLEN(4) == SIZE(PFIELD,4)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X4','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X4','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -614,7 +614,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:,:,:,:,:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -633,37 +633,37 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 5 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(5), LEN=IDIMLEN(5)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(5), LEN=IDIMLEN(5)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF ( IDIMLEN(1) == SIZE(PFIELD,1) .AND. IDIMLEN(2) == SIZE(PFIELD,2) .AND. & IDIMLEN(3) == SIZE(PFIELD,3) .AND. IDIMLEN(4) == SIZE(PFIELD,4) .AND. & IDIMLEN(5) == SIZE(PFIELD,5) ) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X5','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X5','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -691,7 +691,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD REAL,DIMENSION(:,:,:,:,:,:),INTENT(INOUT) :: PFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -710,39 +710,39 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 IF (IDIMS == 6 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(5), LEN=IDIMLEN(5)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(6), LEN=IDIMLEN(6)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(4), LEN=IDIMLEN(4)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(5), LEN=IDIMLEN(5)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(6), LEN=IDIMLEN(6)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF ( IDIMLEN(1) == SIZE(PFIELD,1) .AND. IDIMLEN(2) == SIZE(PFIELD,2) .AND. & IDIMLEN(3) == SIZE(PFIELD,3) .AND. IDIMLEN(4) == SIZE(PFIELD,4) .AND. & IDIMLEN(5) == SIZE(PFIELD,5) .AND. IDIMLEN(6) == SIZE(PFIELD,6) ) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, PFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_X6','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, PFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_X6','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -770,7 +770,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD INTEGER, INTENT(INOUT) :: KFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -787,13 +787,13 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 @@ -801,9 +801,9 @@ IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !Can read either 4 or 8 byte integers IF (IDIMS == 0 .AND. (ITYPE == NF90_INT .OR. ITYPE == NF90_INT64) ) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, KFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, KFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -826,7 +826,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD INTEGER, DIMENSION(:), INTENT(INOUT) :: KFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -845,13 +845,13 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 @@ -859,14 +859,14 @@ IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !NF90_INT1 is for the case a boolean was written IF (IDIMS == 1 .AND. (ITYPE == NF90_INT .OR. ITYPE == NF90_INT64 .OR. ITYPE == NF90_INT1) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN == SIZE(KFIELD)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, KFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, KFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -894,7 +894,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD INTEGER, DIMENSION(:,:), INTENT(INOUT) :: KFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -913,21 +913,21 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !Treat special case of a degenerated 3D array (3rd dimension size is 1) IF (IDIMS==3) THEN - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(3)==1) THEN CALL PRINT_MSG(NVERB_INFO,'IO','IO_Field_read_nc4_N2',TRIM(TPFILE%CNAME)// & ': reading 3D array with degenerated third dimension in 2D array for '//TRIM(YVARNAME)) @@ -940,16 +940,16 @@ END IF !NF90_INT1 is for the case a boolean was written IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. (ITYPE == NF90_INT .OR. ITYPE == NF90_INT64 .OR. ITYPE == NF90_INT1) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(1) == SIZE(KFIELD,1) .AND. IDIMLEN(2) == SIZE(KFIELD,2)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, KFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N2','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, KFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N2','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -976,7 +976,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: KFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -995,13 +995,13 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 @@ -1009,18 +1009,18 @@ IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !NF90_INT1 is for the case a boolean was written IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. (ITYPE == NF90_INT .OR. ITYPE == NF90_INT64 .OR. ITYPE == NF90_INT1) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN(1)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(2), LEN=IDIMLEN(2)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(3), LEN=IDIMLEN(3)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN(1) == SIZE(KFIELD,1) .AND. IDIMLEN(2) == SIZE(KFIELD,2) .AND. IDIMLEN(3) == SIZE(KFIELD,3)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, KFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_N3','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, KFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_N3','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable @@ -1047,7 +1047,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD LOGICAL, INTENT(INOUT) :: OFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -1065,13 +1065,13 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 @@ -1080,9 +1080,9 @@ IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !Accept also INT and INT64 (for backward compatibility) IF (IDIMS == 0 .AND. (ITYPE == NF90_INT1 .OR. ITYPE == NF90_INT .OR. ITYPE == NF90_INT64) ) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, IFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, IFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF @@ -1117,7 +1117,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD LOGICAL,DIMENSION(:),INTENT(INOUT) :: OFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -1138,13 +1138,13 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L1','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L1','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) !Neglect the time dimension (of size 1) IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 @@ -1153,14 +1153,14 @@ IF (TPFIELD%LTIMEDEP) IDIMS=IDIMS-1 !Accept also INT and INT64 (for backward compatibility) IF (IDIMS == 1 .AND. (ITYPE == NF90_INT1 .OR. ITYPE == NF90_INT .OR. ITYPE == NF90_INT64) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L1','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) IF (IDIMLEN == SIZE(OFIELD)) THEN ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, IFIELD) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_L1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, IFIELD) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_L1','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF @@ -1204,7 +1204,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD CHARACTER(LEN=*), INTENT(INOUT) :: HFIELD INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -1224,24 +1224,24 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_C0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_C0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_C0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_C0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) IF (IDIMS == 1 .AND. (ITYPE == NF90_CHAR) ) THEN ! Check size of variable before reading - STATUS = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_C0','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) + istatus = NF90_INQUIRE_DIMENSION(INCID, IVDIMS(1), LEN=IDIMLEN) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_C0','NF90_INQUIRE_DIMENSION',TRIM(YVARNAME)) ! ALLOCATE(CHARACTER(LEN=IDIMLEN)::YSTR) ! Read variable - STATUS = NF90_GET_VAR(INCID, IVARID, YSTR) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_C0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, YSTR) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_C0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF IF (LEN_TRIM(YSTR) > LEN(HFIELD)) & @@ -1273,7 +1273,7 @@ TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD TYPE (DATE_TIME), INTENT(INOUT) :: TPDATA INTEGER, INTENT(OUT) :: KRESP ! return-code -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: INCID INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ITYPE ! variable type @@ -1292,19 +1292,19 @@ INCID = TPFILE%NNCID CALL IO_Mnhname_clean(TPFIELD%CMNHNAME,YVARNAME) ! Get variable ID, NDIMS and TYPE -STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) -IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_T0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) +istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) +IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0','NF90_INQ_VARID',TRIM(YVARNAME),IRESP) GOTO 1000 END IF -STATUS = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) -IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_T0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) +istatus = NF90_INQUIRE_VARIABLE(INCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0','NF90_INQUIRE_VARIABLE',TRIM(YVARNAME)) IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Read time - STATUS = NF90_GET_VAR(INCID, IVARID, TPDATA%TIME) - IF (STATUS /= NF90_NOERR) THEN - CALL IO_Err_handle_nc4(status,'IO_Field_read_nc4_T0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) + istatus = NF90_GET_VAR(INCID, IVARID, TPDATA%TIME) + IF (istatus /= NF90_NOERR) THEN + CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 END IF ! Read and check attributes of variable diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index afd9c8da0cfb252253323f0c57f0bb2aefd0c4e5..0dd498e97178b902db75519aea05911de248139a 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -170,10 +170,10 @@ INTEGER(KIND=CDFINT), DIMENSION(:), OPTIONAL, INTENT(IN) :: KSHAPE CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCALENDAR LOGICAL, OPTIONAL, INTENT(IN) :: OISCOORD ! Is a coordinate variable (->do not write coordinates attribute) ! -INTEGER(KIND=CDFINT) :: INCID -INTEGER(KIND=CDFINT) :: STATUS -CHARACTER(LEN=:),ALLOCATABLE :: YCOORDS -LOGICAL :: GISCOORD +CHARACTER(LEN=:), ALLOCATABLE :: YCOORDS +INTEGER(KIND=CDFINT) :: INCID +INTEGER(KIND=CDFINT) :: istatus +LOGICAL :: GISCOORD ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','called for field '//TRIM(TPFIELD%CMNHNAME)) ! @@ -197,8 +197,8 @@ INCID = TPFILE%NNCID IF(LEN_TRIM(TPFIELD%CSTDNAME)==0) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%CSTDNAME not set for variable '//TRIM(TPFIELD%CMNHNAME)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'standard_name', TRIM(TPFIELD%CSTDNAME)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','standard_name for ' & + istatus = NF90_PUT_ATT(INCID, KVARID,'standard_name', TRIM(TPFIELD%CSTDNAME)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','standard_name for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! @@ -206,8 +206,8 @@ ENDIF IF(LEN_TRIM(TPFIELD%CLONGNAME)==0) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%CLONGNAME not set for variable '//TRIM(TPFIELD%CMNHNAME)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'long_name', TRIM(TPFIELD%CLONGNAME)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','long_name for ' & + istatus = NF90_PUT_ATT(INCID, KVARID,'long_name', TRIM(TPFIELD%CLONGNAME)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','long_name for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! @@ -215,8 +215,8 @@ ENDIF IF(LEN_TRIM(TPFIELD%CUNITS)==0) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%CUNITS not set for variable '//TRIM(TPFIELD%CMNHNAME)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'units', TRIM(TPFIELD%CUNITS)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','units for ' & + istatus = NF90_PUT_ATT(INCID, KVARID,'units', TRIM(TPFIELD%CUNITS)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','units for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! @@ -225,8 +225,8 @@ IF(TPFIELD%NGRID<0) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%NGRID not set for variable '//TRIM(TPFIELD%CMNHNAME)) !Do not write GRID attribute if NGRID=0 ELSE IF (TPFIELD%NGRID>0) THEN - STATUS = NF90_PUT_ATT(INCID, KVARID, 'grid', TPFIELD%NGRID) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','grid for ' & + istatus = NF90_PUT_ATT(INCID, KVARID, 'grid', TPFIELD%NGRID) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','grid for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! @@ -234,16 +234,16 @@ ENDIF IF(LEN_TRIM(TPFIELD%CCOMMENT)==0) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%CCOMMENT not set for variable '//TRIM(TPFIELD%CMNHNAME)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'comment', TRIM(TPFIELD%CCOMMENT)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','comment for ' & + istatus = NF90_PUT_ATT(INCID, KVARID,'comment', TRIM(TPFIELD%CCOMMENT)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','comment for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! ! Calendar (CF convention) IF(PRESENT(HCALENDAR)) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','CALENDAR provided for variable '//TRIM(TPFIELD%CMNHNAME)) - STATUS = NF90_PUT_ATT(INCID, KVARID,'calendar', TRIM(HCALENDAR)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','calendar for ' & + istatus = NF90_PUT_ATT(INCID, KVARID,'calendar', TRIM(HCALENDAR)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','calendar for ' & //trim(TPFIELD%CMNHNAME)) ENDIF ! @@ -278,8 +278,8 @@ IF (.NOT.GISCOORD) THEN CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Field_attr_write_nc4','invalid NGRID for variable '//TRIM(TPFIELD%CMNHNAME)) END SELECT ! - STATUS = NF90_PUT_ATT(INCID, KVARID,'coordinates',YCOORDS) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','coordinates') + istatus = NF90_PUT_ATT(INCID, KVARID,'coordinates',YCOORDS) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','coordinates') DEALLOCATE(YCOORDS) ELSE CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_attr_write_nc4','coordinates not implemented for variable ' & @@ -303,16 +303,16 @@ IF(TPFIELD%NTYPE==TYPEINT .AND. TPFIELD%NDIMS>0) THEN !BUG: NF90_PUT_ATT does not work for NF90_INT64 and _FillValue attribute if netCDF-fortran version < 4.4.5 (bug in netCDF) ! (see https://github.com/Unidata/netcdf-fortran/issues/62) IF(.NOT.OEXISTED) THEN - STATUS = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%NFILLVALUE) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue') + istatus = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%NFILLVALUE) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue') END IF ! ! Valid_min/max (CF/COMODO convention) - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%NVALIDMIN) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_min') + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%NVALIDMIN) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_min') ! - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_max',TPFIELD%NVALIDMAX) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_max') + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_max',TPFIELD%NVALIDMAX) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_max') ENDIF ! IF(TPFIELD%NTYPE==TYPEREAL .AND. TPFIELD%NDIMS>0) THEN @@ -326,27 +326,27 @@ IF(TPFIELD%NTYPE==TYPEREAL .AND. TPFIELD%NDIMS>0) THEN ! * it cannot be modified if some data has already been written (->check OEXISTED) IF(.NOT.OEXISTED) THEN IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN - STATUS = NF90_PUT_ATT(INCID, KVARID,'_FillValue', REAL(TPFIELD%XFILLVALUE,KIND=4)) + istatus = NF90_PUT_ATT(INCID, KVARID,'_FillValue', REAL(TPFIELD%XFILLVALUE,KIND=4)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%XFILLVALUE) + istatus = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%XFILLVALUE) END IF - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue') END IF ! ! Valid_min/max (CF/COMODO convention) IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_min', REAL(TPFIELD%XVALIDMIN,KIND=4)) + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_min', REAL(TPFIELD%XVALIDMIN,KIND=4)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%XVALIDMIN) + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%XVALIDMIN) END IF - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_min') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_min') ! IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_max', REAL(TPFIELD%XVALIDMAX,KIND=4)) + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_max', REAL(TPFIELD%XVALIDMAX,KIND=4)) ELSE - STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_max',TPFIELD%XVALIDMAX) + istatus = NF90_PUT_ATT(INCID, KVARID,'valid_max',TPFIELD%XVALIDMAX) END IF - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_max') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_attr_write_nc4','NF90_PUT_ATT','valid_max') ENDIF ! END SUBROUTINE IO_Field_attr_write_nc4 @@ -515,7 +515,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL, INTENT(IN) :: PFIELD INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X0',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -525,8 +525,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X0 @@ -538,7 +538,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:), INTENT(IN) :: PFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID logical :: gisempty ! @@ -549,8 +549,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( pfield ), kvarid = ivarid, oisempty = gisempty ) ! Write the data -if ( .not. gisempty ) STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +if ( .not. gisempty ) istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X1 @@ -565,7 +565,7 @@ INTEGER,OPTIONAL, INTENT(IN) :: KVERTLEVEL ! Number of the vertical level ( INTEGER,OPTIONAL, INTENT(IN) :: KZFILE ! Number of the Z-level split file LOGICAL,OPTIONAL, INTENT(IN) :: OISCOORD ! Is a coordinate variable (->do not write coordinates attribute) ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus CHARACTER(LEN=4) :: YSUFFIX INTEGER(KIND=CDFINT) :: IVARID TYPE(TFIELDDATA) :: TZFIELD @@ -596,8 +596,8 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X2',TRIM(TZFILE%CNAME)//': w call IO_Field_create_nc4( tzfile, tzfield, kshape = Shape( pfield ), oiscoord = oiscoord, kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TZFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X2','NF90_PUT_VAR',trim(TZFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TZFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X2','NF90_PUT_VAR',trim(TZFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X2 @@ -609,7 +609,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X3',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -619,8 +619,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( pfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X3','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X3','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X3 @@ -632,7 +632,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:,:,:,:), INTENT(IN) :: PFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X4',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -642,8 +642,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( pfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X4','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X4','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X4 @@ -655,7 +655,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:,:,:,:,:), INTENT(IN) :: PFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X5',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -665,8 +665,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( pfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X5','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X5','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X5 @@ -678,7 +678,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN) :: PFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X6',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -688,8 +688,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( pfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_X6','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, PFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_X6','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_X6 @@ -711,7 +711,7 @@ INTEGER, INTENT(IN) :: KFIELD INTEGER, INTENT(OUT):: KRESP ! integer :: iidx -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_N0',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -721,8 +721,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_N0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_N0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) ! ! Use IMAX, JMAX, KMAX to define DIM_NI, DIM_NJ, DIM_LEVEL ! /!\ Can only work if IMAX, JMAX or KMAX are written before any array @@ -760,7 +760,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD INTEGER, DIMENSION(:), INTENT(IN) :: KFIELD INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_N1',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -770,8 +770,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( kfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_N1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_N1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_N1 @@ -783,7 +783,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD INTEGER,DIMENSION(:,:),INTENT(IN) :: KFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_N2',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -793,8 +793,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( kfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_N2','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_N2','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_N2 @@ -806,7 +806,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD INTEGER,DIMENSION(:,:,:),INTENT(IN) :: KFIELD ! array containing the data field INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_N3',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -816,8 +816,8 @@ KRESP = 0 call IO_Field_create_nc4( tpfile, tpfield, kshape = Shape( kfield ), kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_N3','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, KFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_N3','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_N3 @@ -830,7 +830,7 @@ LOGICAL, INTENT(IN) :: OFIELD INTEGER, INTENT(OUT):: KRESP ! INTEGER :: IFIELD -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_L0',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -847,8 +847,8 @@ ELSE END IF ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, IFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_L0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, IFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_L0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_L0 @@ -861,7 +861,7 @@ LOGICAL, DIMENSION(:), INTENT(IN) :: OFIELD INTEGER, INTENT(OUT):: KRESP ! INTEGER, DIMENSION(SIZE(OFIELD)) :: IFIELD -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_L1',TRIM(TPFILE%CNAME)//': writing '//TRIM(TPFIELD%CMNHNAME)) @@ -878,8 +878,8 @@ ELSEWHERE END WHERE ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, IFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_L1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, IFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_L1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_L1 @@ -891,7 +891,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD CHARACTER(LEN=*), INTENT(IN) :: HFIELD INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID INTEGER :: ILEN CHARACTER(LEN=:), ALLOCATABLE :: YFIELD @@ -914,8 +914,8 @@ YFIELD(1:LEN_TRIM(HFIELD))=TRIM(HFIELD) YFIELD(LEN_TRIM(HFIELD)+1:)=' ' ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, YFIELD) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_C0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, YFIELD) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_C0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_C0 @@ -931,7 +931,7 @@ INTEGER, INTENT(OUT) :: KRESP ! INTEGER(KIND=CDFINT),PARAMETER :: IONE = 1 ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: ILEN, ISIZE ! @@ -945,8 +945,8 @@ ISIZE = SIZE(HFIELD) call IO_Field_create_nc4( tpfile, tpfield, kshape = [ ilen, isize ], kvarid = ivarid ) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, HFIELD(1:ISIZE)(1:ILEN), START=(/IONE,IONE/), COUNT=(/ILEN,ISIZE/)) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_C1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, HFIELD(1:ISIZE)(1:ILEN), START=(/IONE,IONE/), COUNT=(/ILEN,ISIZE/)) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_C1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_C1 @@ -963,7 +963,7 @@ TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD TYPE (DATE_TIME), INTENT(IN) :: TPDATA INTEGER, INTENT(OUT):: KRESP ! -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID TYPE(TFIELDDATA) :: TZFIELD CHARACTER(LEN=40) :: YUNITS @@ -999,8 +999,8 @@ call IO_Field_create_nc4( tpfile, tzfield, kvarid = ivarid, hcalendar = 'standar CALL DATETIME_DISTANCE(TZREF,TPDATA,ZDELTATIME) ! Write the data -STATUS = NF90_PUT_VAR(TPFILE%NNCID, IVARID, ZDELTATIME) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_T0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR(TPFILE%NNCID, IVARID, ZDELTATIME) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_T0','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_T0 @@ -1019,7 +1019,7 @@ INTEGER, INTENT(OUT):: KRESP ! CHARACTER(LEN=40) :: YUNITS INTEGER :: JI -INTEGER(KIND=CDFINT) :: STATUS +INTEGER(KIND=CDFINT) :: istatus INTEGER(KIND=CDFINT) :: IVARID REAL, DIMENSION(:), ALLOCATABLE :: ZDELTATIME !Distance in seconds since reference date and time TYPE(DATE_TIME) :: TZREF @@ -1058,8 +1058,8 @@ DO JI = 1, SIZE( TPDATA ) END DO ! Write the data -STATUS = NF90_PUT_VAR( TPFILE%NNCID, IVARID, ZDELTATIME(:) ) -IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_write_nc4_T1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) +istatus = NF90_PUT_VAR( TPFILE%NNCID, IVARID, ZDELTATIME(:) ) +IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_write_nc4_T1','NF90_PUT_VAR',trim(TPFIELD%CMNHNAME),KRESP) END SUBROUTINE IO_Field_write_nc4_T1 @@ -1464,68 +1464,70 @@ SUBROUTINE WRITE_VER_COORD(TDIM,HLONGNAME,HSTDNAME,HCOMPNAME,PSHIFT,KBOUNDLOW,KB INTEGER :: JI INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: IVDIM - INTEGER(KIND=CDFINT) :: STATUS + INTEGER(KIND=CDFINT) :: istatus isize = tdim%nlen yvarname = Trim( tdim%cname ) ivdim = tdim%nid - STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) - IF (STATUS /= NF90_NOERR) THEN + istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) + IF (istatus /= NF90_NOERR) THEN ! Define the coordinate variable - STATUS = NF90_DEF_VAR(INCID, YVARNAME, MNHREAL_NF90, IVDIM, IVARID) - IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_DEF_VAR',trim(YVARNAME)) + istatus = NF90_DEF_VAR(INCID, YVARNAME, MNHREAL_NF90, IVDIM, IVARID) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_DEF_VAR',trim(YVARNAME)) ELSE CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_VER_COORD',TRIM(YVARNAME)//' already defined') END IF ! Write metadata - STATUS = NF90_PUT_ATT(INCID, IVARID, 'long_name',HLONGNAME) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','long_name for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'long_name',HLONGNAME) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','long_name for '//trim(YVARNAME)) if ( Len_trim( hstdname ) > 0 ) then - STATUS = NF90_PUT_ATT(INCID, IVARID, 'standard_name',HSTDNAME) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','standard_name for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'standard_name',HSTDNAME) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','standard_name for '//trim(YVARNAME)) end if - STATUS = NF90_PUT_ATT(INCID, IVARID, 'units','m') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','units for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'axis','Z') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','axis for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'positive','up') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','positive for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'c_grid_axis_shift',PSHIFT) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','c_grid_axis_shift for ' & + istatus = NF90_PUT_ATT(INCID, IVARID, 'units','m') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','units for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'axis','Z') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','axis for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'positive','up') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','positive for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'c_grid_axis_shift',PSHIFT) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','c_grid_axis_shift for ' & //trim(YVARNAME)) WRITE(YRANGE,'( I0,":",I0 )') 1+KBOUNDLOW,ISIZE-KBOUNDHIGH - STATUS = NF90_PUT_ATT(INCID, IVARID, 'c_grid_dynamic_range',TRIM(YRANGE)) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','c_grid_dynamic_range for ' & + istatus = NF90_PUT_ATT(INCID, IVARID, 'c_grid_dynamic_range',TRIM(YRANGE)) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','c_grid_dynamic_range for ' & //trim(YVARNAME)) ! IF (GSLEVE) THEN !Remark: ZS, ZSMT and ZTOP in the formula are the same for mass point or flux point - STATUS = NF90_PUT_ATT(INCID, IVARID,'formula_terms','s: '//TRIM(YVARNAME)// & + istatus = NF90_PUT_ATT(INCID, IVARID,'formula_terms','s: '//TRIM(YVARNAME)// & ' height: ZTOP oro_ls: ZSMT oro: ZS len1: LEN1 len2: LEN2') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','formula_terms for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'formula_definition','z(n,k,j,i)=s(k)'// & + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','formula_terms for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'formula_definition','z(n,k,j,i)=s(k)'// & '+ oro_ls(j,i)*sinh((height/len1)**1.35-(s(k)/len1)**1.35)/sinh((s(k)/len1)**1.35)'// & '+(oro(j,i)-oro_ls(j,i))*sinh((height/len2)**1.35-(s(k)/len2)**1.35)/sinh((s(k)/len2)**1.35)') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','formula_definition for ' & + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','formula_definition for ' & //trim(YVARNAME)) ELSE !Remark: ZS and ZTOP in the formula are the same for mass point or flux point - STATUS = NF90_PUT_ATT(INCID, IVARID, 'formula_terms','s: '//TRIM(YVARNAME)//' height: ZTOP orog: ZS') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','formula_terms for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'formula_definition','z(n,k,j,i)=s(k)*(height-orog(j,i))/height+orog(j,i)') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','formula_definition for ' & + istatus = NF90_PUT_ATT(INCID, IVARID, 'formula_terms','s: '//TRIM(YVARNAME)//' height: ZTOP orog: ZS') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','formula_terms for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'formula_definition','z(n,k,j,i)=s(k)*(height-orog(j,i))/height+orog(j,i)') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','formula_definition for ' & //trim(YVARNAME)) ENDIF ! - STATUS = NF90_PUT_ATT(INCID, IVARID, 'computed_standard_name',HCOMPNAME) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_ATT','computed_standard_name for ' & - //trim(YVARNAME)) + if ( Len_trim( hcompname ) > 0 ) then + istatus = NF90_PUT_ATT(INCID, IVARID, 'computed_standard_name',HCOMPNAME) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_ATT','computed_standard_name for ' & + //trim(YVARNAME)) + end if ! Write the data - STATUS = NF90_PUT_VAR(INCID, IVARID, PCOORDS) - IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_VER_COORD','NF90_PUT_VAR',trim(YVARNAME)) + istatus = NF90_PUT_VAR(INCID, IVARID, PCOORDS) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_VER_COORD','NF90_PUT_VAR',trim(YVARNAME)) END SUBROUTINE WRITE_VER_COORD @@ -1545,7 +1547,7 @@ SUBROUTINE WRITE_TIME_COORD(TDIM) CHARACTER(LEN=:),ALLOCATABLE :: YVARNAME INTEGER(KIND=CDFINT) :: IVARID INTEGER(KIND=CDFINT) :: IVDIM - INTEGER(KIND=CDFINT) :: STATUS + INTEGER(KIND=CDFINT) :: istatus TYPE(DATE_TIME) :: TZREF @@ -1553,28 +1555,29 @@ SUBROUTINE WRITE_TIME_COORD(TDIM) yvarname = Trim( tdim%cname ) ivdim = tdim%nid - STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) - IF (STATUS /= NF90_NOERR) THEN + istatus = NF90_INQ_VARID(INCID, YVARNAME, IVARID) + IF (istatus /= NF90_NOERR) THEN ! Define the coordinate variable - STATUS = NF90_DEF_VAR(INCID, YVARNAME, MNHREAL_NF90, IVDIM, IVARID) - IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_DEF_VAR',trim(YVARNAME)) + istatus = NF90_DEF_VAR(INCID, YVARNAME, MNHREAL_NF90, IVDIM, IVARID) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_DEF_VAR',trim(YVARNAME)) ELSE CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_TIME_COORD',TRIM(YVARNAME)//' already defined') END IF ! Write metadata - STATUS = NF90_PUT_ATT(INCID, IVARID, 'long_name','time axis') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_ATT','long_name for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'standard_name','time') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_ATT','standard_name for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'long_name','time axis') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_ATT','long_name for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'standard_name','time') + IF (istatus /= NF90_NOERR) & + CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_ATT','standard_name for '//trim(YVARNAME)) WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') & TDTMOD%TDATE%YEAR,TDTMOD%TDATE%MONTH,TDTMOD%TDATE%DAY - STATUS = NF90_PUT_ATT(INCID, IVARID, 'units',YUNITS) - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_ATT','units for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID, 'axis','T') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_ATT','axis for '//trim(YVARNAME)) - STATUS = NF90_PUT_ATT(INCID, IVARID,'calendar','standard') - IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_ATT','calendar for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'units',YUNITS) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_ATT','units for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID, 'axis','T') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_ATT','axis for '//trim(YVARNAME)) + istatus = NF90_PUT_ATT(INCID, IVARID,'calendar','standard') + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_ATT','calendar for '//trim(YVARNAME)) ! Model beginning date (TDTMOD%TDATE) is used as the reference date ! Reference time is set to 0. @@ -1583,8 +1586,8 @@ SUBROUTINE WRITE_TIME_COORD(TDIM) ! Compute the temporal distance from reference CALL DATETIME_DISTANCE(TZREF,TDTCUR,ZDELTATIME) ! Write the data - STATUS = NF90_PUT_VAR(INCID, IVARID, ZDELTATIME) - IF (status /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'WRITE_TIME_COORD','NF90_PUT_VAR',trim(YVARNAME)) + istatus = NF90_PUT_VAR(INCID, IVARID, ZDELTATIME) + IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'WRITE_TIME_COORD','NF90_PUT_VAR',trim(YVARNAME)) END IF END SUBROUTINE WRITE_TIME_COORD diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index dcfe7b1e65ffd3fe804e74db710c50fa29b2b7a1..2bcfc576c330bbf0f687a939d3926d349e9a5d15 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2012-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2012-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -192,25 +192,25 @@ TYPE(TFILEDATA),POINTER :: TZFILE ! ! For netcdf ! -integer(kind=CDFINT) :: status, ncid, varid -integer(kind=CDFINT) :: lat_varid, lon_varid, lev_varid, time_varid -integer(kind=CDFINT) :: hyam_varid, hybm_varid, p0_varid, t_varid, q_varid, ps_varid -integer(kind=CDFINT) :: recid, latid, lonid, levid, timeid -integer(kind=CDFINT) :: latlen, lonlen, levlen, nrecs, timelen -integer(kind=CDFINT) :: itimeindex, KILEN -CHARACTER(LEN=40) :: recname -REAL, DIMENSION(:), ALLOCATABLE :: lats -REAL, DIMENSION(:), ALLOCATABLE :: lons -REAL, DIMENSION(:), ALLOCATABLE :: levs -INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count3d, start3d -INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count2d, start2d -REAL, DIMENSION(:), ALLOCATABLE :: time, hyam, hybm -REAL :: p0 -INTEGER, DIMENSION(:), ALLOCATABLE :: kinlo -REAL, DIMENSION(:,:,:), ALLOCATABLE :: vartemp3d,vartemp3dbis,vartemp3dter -REAL, DIMENSION(:,:,:), ALLOCATABLE :: vartemp3dquater -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCHEMMOZ, TMOZ, QMOZ -REAL, DIMENSION(:,:), ALLOCATABLE :: PSMOZ +CHARACTER(LEN=40) :: yrecname +integer(kind=CDFINT) :: istatus, incid, ivarid +integer(kind=CDFINT) :: ilat_varid, ilon_varid, ilev_varid, itime_varid +integer(kind=CDFINT) :: ihyam_varid, ihybm_varid, ip0_varid, it_varid, iq_varid, ips_varid +integer(kind=CDFINT) :: irecid, ilatid, ilonid, ilevid, itimeid +integer(kind=CDFINT) :: ilatlen, ilonlen, ilevlen, inrecs, itimelen +integer(kind=CDFINT) :: itimeindex, IKILEN +INTEGER, DIMENSION(:), ALLOCATABLE :: ikinlo +INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: icount3d, istart3d +INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: icount2d, istart2d +REAL :: zp0 +REAL, DIMENSION(:), ALLOCATABLE :: zlats +REAL, DIMENSION(:), ALLOCATABLE :: zlons +REAL, DIMENSION(:), ALLOCATABLE :: zlevs +REAL, DIMENSION(:), ALLOCATABLE :: ztime, zhyam, zhybm +REAL, DIMENSION(:,:), ALLOCATABLE :: ZPSMOZ +REAL, DIMENSION(:,:,:), ALLOCATABLE :: zvartemp3d, zvartemp3dbis, zvartemp3dter +REAL, DIMENSION(:,:,:), ALLOCATABLE :: zvartemp3dquater +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCHEMMOZ, ZTMOZ, ZQMOZ real ::a,b @@ -263,87 +263,87 @@ DEALLOCATE (ZXM) ! 2.1 Open netcdf files !print*,'Open netcdf files:',HFILE ! -status = nf90_open(HFILE, nf90_nowrite, ncid) -if (status /= nf90_noerr) call handle_err(status) +istatus = nf90_open(HFILE, nf90_nowrite, incid) +if (istatus /= nf90_noerr) call handle_err(istatus) ! ! 2.2 Read netcdf files ! ! get dimension IDs ! !* get dimension ID of unlimited variable in netcdf file -status = nf90_inquire(ncid, unlimitedDimId = recid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_dimid(ncid, "lat", latid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_dimid(ncid, "lon", lonid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_dimid(ncid, "lev", levid) -if (status /= nf90_noerr) call handle_err(status) +istatus = nf90_inquire(incid, unlimitedDimId = irecid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_dimid(incid, "lat", ilatid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_dimid(incid, "lon", ilonid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_dimid(incid, "lev", ilevid) +if (istatus /= nf90_noerr) call handle_err(istatus) ! ! get dimensions ! !* get dimension and name of unlimited variable in netcdf file -status = nf90_inquire_dimension(ncid, recid, name=recname, len=nrecs) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inquire_dimension(ncid, latid, len=latlen) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inquire_dimension(ncid, lonid, len=lonlen) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inquire_dimension(ncid, levid, len=levlen) -if (status /= nf90_noerr) call handle_err(status) -!print*, latlen, lonlen, levlen, nrecs +istatus = nf90_inquire_dimension(incid, irecid, name=yrecname, len=inrecs) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inquire_dimension(incid, ilatid, len=ilatlen) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inquire_dimension(incid, ilonid, len=ilonlen) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inquire_dimension(incid, ilevid, len=ilevlen) +if (istatus /= nf90_noerr) call handle_err(istatus) +!print*, ilatlen, ilonlen, ilevlen, inrecs ! ! get variable IDs ! -status = nf90_inq_varid(ncid, "lat", lat_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "lon", lon_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "lev", lev_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "time", time_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "P0", p0_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "hyam", hyam_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "hybm", hybm_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "T", t_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "Q", q_varid) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_inq_varid(ncid, "PS", ps_varid) -if (status /= nf90_noerr) call handle_err(status) -! -KILEN = latlen * lonlen +istatus = nf90_inq_varid(incid, "lat", ilat_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "lon", ilon_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "lev", ilev_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "time", itime_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "P0", ip0_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "hyam", ihyam_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "hybm", ihybm_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "T", it_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "Q", iq_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_inq_varid(incid, "PS", ips_varid) +if (istatus /= nf90_noerr) call handle_err(istatus) +! +IKILEN = ilatlen * ilonlen ! ! 2.3 Read data. ! -ALLOCATE (count3d(4)) -ALLOCATE (start3d(4)) -ALLOCATE (count2d(3)) -ALLOCATE (start2d(3)) -ALLOCATE (lats(latlen)) -ALLOCATE (lons(lonlen)) -ALLOCATE (levs(levlen)) -ALLOCATE (time(nrecs)) -ALLOCATE (kinlo(latlen)) -kinlo(:) = lonlen -ALLOCATE (vartemp3d(lonlen,latlen,levlen)) -ALLOCATE (vartemp3dbis(lonlen,latlen,levlen)) -ALLOCATE (vartemp3dter(lonlen,latlen,levlen)) -ALLOCATE (vartemp3dquater(lonlen,latlen,levlen)) -ALLOCATE (ZCHEMMOZ(lonlen,latlen,levlen)) -ALLOCATE (TMOZ(lonlen,latlen,levlen)) -ALLOCATE (QMOZ(lonlen,latlen,levlen)) -ALLOCATE (PSMOZ(lonlen,latlen)) -ALLOCATE (XA_SV_LS(levlen)) -ALLOCATE (hyam(levlen)) -ALLOCATE (XB_SV_LS(levlen)) -ALLOCATE (hybm(levlen)) -ALLOCATE (XT_SV_LS(IIU,IJU,levlen)) -ALLOCATE (XQ_SV_LS(IIU,IJU,levlen,1)) +ALLOCATE (icount3d(4)) +ALLOCATE (istart3d(4)) +ALLOCATE (icount2d(3)) +ALLOCATE (istart2d(3)) +ALLOCATE (zlats(ilatlen)) +ALLOCATE (zlons(ilonlen)) +ALLOCATE (zlevs(ilevlen)) +ALLOCATE (ztime(inrecs)) +ALLOCATE (ikinlo(ilatlen)) +ikinlo(:) = ilonlen +ALLOCATE (zvartemp3d(ilonlen,ilatlen,ilevlen)) +ALLOCATE (zvartemp3dbis(ilonlen,ilatlen,ilevlen)) +ALLOCATE (zvartemp3dter(ilonlen,ilatlen,ilevlen)) +ALLOCATE (zvartemp3dquater(ilonlen,ilatlen,ilevlen)) +ALLOCATE (ZCHEMMOZ(ilonlen,ilatlen,ilevlen)) +ALLOCATE (ZTMOZ(ilonlen,ilatlen,ilevlen)) +ALLOCATE (ZQMOZ(ilonlen,ilatlen,ilevlen)) +ALLOCATE (ZPSMOZ(ilonlen,ilatlen)) +ALLOCATE (XA_SV_LS(ilevlen)) +ALLOCATE (zhyam(ilevlen)) +ALLOCATE (XB_SV_LS(ilevlen)) +ALLOCATE (zhybm(ilevlen)) +ALLOCATE (XT_SV_LS(IIU,IJU,ilevlen)) +ALLOCATE (XQ_SV_LS(IIU,IJU,ilevlen,1)) ALLOCATE (XPS_SV_LS(IIU,IJU)) ALLOCATE (XZS_SV_LS(IIU,IJU)) ! take the orography from ECMWF @@ -351,40 +351,40 @@ XZS_SV_LS(:,:) = XZS_LS(:,:) ! ! get values of variables ! -status = nf90_get_var(ncid, lat_varid, lats(:)) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, lon_varid, lons(:)) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, lev_varid, levs(:)) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, time_varid, time(:)) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, hyam_varid, hyam) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, hybm_varid, hybm) -if (status /= nf90_noerr) call handle_err(status) -status = nf90_get_var(ncid, p0_varid, p0) -if (status /= nf90_noerr) call handle_err(status) -XP00_SV_LS = p0 +istatus = nf90_get_var(incid, ilat_varid, zlats(:)) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, ilon_varid, zlons(:)) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, ilev_varid, zlevs(:)) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, itime_varid, ztime(:)) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, ihyam_varid, zhyam) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, ihybm_varid, zhybm) +if (istatus /= nf90_noerr) call handle_err(istatus) +istatus = nf90_get_var(incid, ip0_varid, zp0) +if (istatus /= nf90_noerr) call handle_err(istatus) +XP00_SV_LS = zp0 ! ! hyam and hybm coefficients for pressure calculations have to be reversed ! from top-bottom to bottom-up direction -do JJ = 1, levlen - XA_SV_LS(JJ) = hyam(levlen+1-JJ) - XB_SV_LS(JJ) = hybm(levlen+1-JJ) +do JJ = 1, ilevlen + XA_SV_LS(JJ) = zhyam(ilevlen+1-JJ) + XB_SV_LS(JJ) = zhybm(ilevlen+1-JJ) end do ! ! ! Read 1 record of lon*lat*lev values, starting at the ! beginning of the record (the (1, 1, 1, rec) element in the netCDF ! file). - count3d(1) = lonlen - count3d(2) = latlen - count3d(3) = levlen - count3d(4) = 1 - start3d(1) = 1 - start3d(2) = 1 - start3d(3) = 1 + icount3d(1) = ilonlen + icount3d(2) = ilatlen + icount3d(3) = ilevlen + icount3d(4) = 1 + istart3d(1) = 1 + istart3d(2) = 1 + istart3d(3) = 1 ! Choose time index according to the chosen time in namelist ! 1 for 06h - 2 for 12h - 3 for 18h - 4 for 24h IF (CDUMMY1=="06") THEN @@ -396,32 +396,32 @@ ELSEIF (CDUMMY1=="18") THEN ELSEIF ((CDUMMY1=="24").OR.(CDUMMY1=="00")) THEN itimeindex=4 ENDIF - start3d(4) = itimeindex + istart3d(4) = itimeindex ! - status = nf90_get_var(ncid, t_varid, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) + istatus = nf90_get_var(incid, it_varid, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) ! -do JJ=1,levlen +do JJ=1,ilevlen ! lev, lat, lon - TMOZ(:,:,JJ) = vartemp3d(:,:,levlen+1-JJ) + ZTMOZ(:,:,JJ) = zvartemp3d(:,:,ilevlen+1-JJ) enddo ! - status = nf90_get_var(ncid, q_varid, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) + istatus = nf90_get_var(incid, iq_varid, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) ! -do JJ=1,levlen +do JJ=1,ilevlen ! lev, lat, lon - QMOZ(:,:,JJ) = vartemp3d(:,:,levlen+1-JJ) + ZQMOZ(:,:,JJ) = zvartemp3d(:,:,ilevlen+1-JJ) enddo ! - count2d(1) = lonlen - count2d(2) = latlen - count2d(3) = 1 - start2d(1) = 1 - start2d(2) = 1 - start2d(3) = itimeindex - status = nf90_get_var(ncid, ps_varid, PSMOZ(:,:), start=start2d, count=count2d) - if (status /= nf90_noerr) call handle_err(status) + icount2d(1) = ilonlen + icount2d(2) = ilatlen + icount2d(3) = 1 + istart2d(1) = 1 + istart2d(2) = 1 + istart2d(3) = itimeindex + istatus = nf90_get_var(incid, ips_varid, ZPSMOZ(:,:), start=istart2d, count=icount2d) + if (istatus /= nf90_noerr) call handle_err(istatus) !------------------------------------------------------------------------ @@ -439,16 +439,16 @@ enddo ! initialise NSV_* variables CALL INI_NSV(1) DEALLOCATE(XSV_LS) - ALLOCATE (XSV_LS(IIU,IJU,levlen,NSV)) + ALLOCATE (XSV_LS(IIU,IJU,ilevlen,NSV)) XSV_LS(:,:,:,:) = 0. ! WRITE (ILUOUT0,'(A,A4,A)') ' | Reading MOZART species (ppp) from ',HFILE,' file' where (ZLONOUT(:) < 0.) ZLONOUT(:) = ZLONOUT(:) + 360. ! -ALLOCATE(ZVALUE(levlen,KILEN)) -ALLOCATE(ZOUT(levlen,INO)) -ALLOCATE(ZVALUE1D(KILEN)) +ALLOCATE(ZVALUE(ilevlen,IKILEN)) +ALLOCATE(ZOUT(ilevlen,INO)) +ALLOCATE(ZVALUE1D(IKILEN)) ALLOCATE(ZOUT1D(INO)) ! @@ -505,162 +505,162 @@ DO JI = 1,IMOZ !for every MNH species existing in MOZ1.nam DO JNCHEM = NSV_CHEMBEG, NSV_CHEMEND !loop on all MNH species IF (trim(CNAMES(JNCHEM-NSV_CHEMBEG+1))==trim(YSPCMNH(JI))) THEN !MNH mechanism species IF (ISPCMOZ(JI)==1) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==2) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ) + & - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ) + & + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==3) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,3)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dter, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,3)*vartemp3dter(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,3)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dter, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,3)*zvartemp3dter(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==4) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,3)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dter, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,4)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dquater, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,3)*vartemp3dter(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,4)*vartemp3dquater(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,3)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dter, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,4)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dquater, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,3)*zvartemp3dter(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,4)*zvartemp3dquater(:,:,ilevlen+1-JJ) ENDDO ENDIF - DO JK = 1, levlen + DO JK = 1, ilevlen JLOOP1 = 0 - DO JJ = 1, latlen - ZVALUE(JK,JLOOP1+1:JLOOP1+lonlen) = ZCHEMMOZ(1:lonlen,JJ,JK) - JLOOP1 = JLOOP1+lonlen + DO JJ = 1, ilatlen + ZVALUE(JK,JLOOP1+1:JLOOP1+ilonlen) = ZCHEMMOZ(1:ilonlen,JJ,JK) + JLOOP1 = JLOOP1+ilonlen ENDDO - CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - int(latlen,kind=kind(1)),kinlo,KILEN, & + CALL HORIBL(zlats(1),zlons(1),zlats(ilatlen),zlons(ilonlen), & + int(ilatlen,kind=kind(1)),ikinlo,IKILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.) CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & XSV_LS(:,:,JK,JNCHEM) ) - ENDDO ! levlen + ENDDO ! ilevlen ENDIF ENDDO ! JNCHEM DO JNAER = NSV_AERBEG, NSV_AEREND IF (trim(CAERONAMES(JNAER-NSV_AERBEG+1))==trim(YSPCMNH(JI))) THEN !MNH mechanism species IF (ISPCMOZ(JI)==1) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==2) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ) + & - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ) + & + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==3) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,3)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dter, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,3)*vartemp3dter(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,3)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dter, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,3)*zvartemp3dter(:,:,ilevlen+1-JJ) ENDDO ELSE IF (ISPCMOZ(JI)==4) THEN - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,1)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3d, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,2)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dbis, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,3)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dter, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_inq_varid(ncid, trim(YCHANGE(JI,4)), ind_netcdf) - if (status /= nf90_noerr) call handle_err(status) - status = nf90_get_var(ncid, ind_netcdf, vartemp3dquater, start=start3d, count=count3d) - if (status /= nf90_noerr) call handle_err(status) - DO JJ=1,levlen ! lev, lat, lon - ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*vartemp3d(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,2)*vartemp3dbis(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,3)*vartemp3dter(:,:,levlen+1-JJ)+& - ZCOEFMOZART(JI,4)*vartemp3dquater(:,:,levlen+1-JJ) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,1)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3d, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,2)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dbis, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,3)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dter, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_inq_varid(incid, trim(YCHANGE(JI,4)), ind_netcdf) + if (istatus /= nf90_noerr) call handle_err(istatus) + istatus = nf90_get_var(incid, ind_netcdf, zvartemp3dquater, start=istart3d, count=icount3d) + if (istatus /= nf90_noerr) call handle_err(istatus) + DO JJ=1,ilevlen ! lev, lat, lon + ZCHEMMOZ(:,:,JJ)=ZCOEFMOZART(JI,1)*zvartemp3d(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,2)*zvartemp3dbis(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,3)*zvartemp3dter(:,:,ilevlen+1-JJ)+& + ZCOEFMOZART(JI,4)*zvartemp3dquater(:,:,ilevlen+1-JJ) ENDDO ENDIF - DO JK = 1, levlen + DO JK = 1, ilevlen JLOOP1 = 0 - DO JJ = 1, latlen - ZVALUE(JK,JLOOP1+1:JLOOP1+lonlen) = ZCHEMMOZ(1:lonlen,JJ,JK) - JLOOP1 = JLOOP1+lonlen + DO JJ = 1, ilatlen + ZVALUE(JK,JLOOP1+1:JLOOP1+ilonlen) = ZCHEMMOZ(1:ilonlen,JJ,JK) + JLOOP1 = JLOOP1+ilonlen ENDDO - CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - int(latlen,kind=kind(1)),kinlo,KILEN, & + CALL HORIBL(zlats(1),zlons(1),zlats(ilatlen),zlons(ilonlen), & + int(ilatlen,kind=kind(1)),ikinlo,IKILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.) CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & XSV_LS(:,:,JK,JNAER) ) - ENDDO ! levlen + ENDDO ! ilevlen ENDIF ENDDO ! JNAER ENDDO ! JIDO JNCHEM = NSV_CHEMBEG, NSV_CHEMEND !loop on all MNH species @@ -672,14 +672,14 @@ DEALLOCATE(YCHANGE) ! XSV_LS(:,:,:,:) = MAX(XSV_LS(:,:,:,:),0.) ! -DO JK = 1, levlen +DO JK = 1, ilevlen JLOOP1 = 0 - DO JJ = 1, latlen - ZVALUE(JK,JLOOP1+1:JLOOP1+lonlen) = TMOZ(1:lonlen,JJ,JK) - JLOOP1 = JLOOP1 + lonlen + DO JJ = 1, ilatlen + ZVALUE(JK,JLOOP1+1:JLOOP1+ilonlen) = ZTMOZ(1:ilonlen,JJ,JK) + JLOOP1 = JLOOP1 + ilonlen ENDDO - CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - int(latlen,kind=kind(1)),kinlo,KILEN, & + CALL HORIBL(zlats(1),zlons(1),zlats(ilatlen),zlons(ilonlen), & + int(ilatlen,kind=kind(1)),ikinlo,IKILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! @@ -688,14 +688,14 @@ DO JK = 1, levlen ENDDO XT_SV_LS(:,:,:) = MAX(XT_SV_LS(:,:,:),0.) ! -DO JK = 1, levlen +DO JK = 1, ilevlen JLOOP1 = 0 - DO JJ = 1, latlen - ZVALUE(JK,JLOOP1+1:JLOOP1+lonlen) = QMOZ(1:lonlen,JJ,JK) - JLOOP1 = JLOOP1 + lonlen + DO JJ = 1, ilatlen + ZVALUE(JK,JLOOP1+1:JLOOP1+ilonlen) = ZQMOZ(1:ilonlen,JJ,JK) + JLOOP1 = JLOOP1 + ilonlen ENDDO - CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - int(latlen,kind=kind(1)),kinlo,KILEN, & + CALL HORIBL(zlats(1),zlons(1),zlats(ilatlen),zlons(ilonlen), & + int(ilatlen,kind=kind(1)),ikinlo,IKILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! @@ -705,12 +705,12 @@ ENDDO XQ_SV_LS(:,:,:,1) = MAX(XQ_SV_LS(:,:,:,1),0.) ! JLOOP1 = 0 -DO JJ = 1, latlen - ZVALUE1D(JLOOP1+1:JLOOP1+lonlen) = PSMOZ(1:lonlen,JJ) - JLOOP1 = JLOOP1 + lonlen +DO JJ = 1, ilatlen + ZVALUE1D(JLOOP1+1:JLOOP1+ilonlen) = ZPSMOZ(1:ilonlen,JJ) + JLOOP1 = JLOOP1 + ilonlen ENDDO -CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - int(latlen,kind=kind(1)),kinlo,KILEN, & +CALL HORIBL(zlats(1),zlons(1),zlats(ilatlen),zlons(ilonlen), & + int(ilatlen,kind=kind(1)),ikinlo,IKILEN, & ZVALUE1D(:),INO,ZLONOUT,ZLATOUT, & ZOUT1D(:),.FALSE.,PTIME_HORI,.FALSE.) ! @@ -721,8 +721,8 @@ XPS_SV_LS(:,:) = MAX(XPS_SV_LS(:,:),0.) ! ! ! close the netcdf file -status = nf90_close(ncid) -if (status /= nf90_noerr) call handle_err(status) +istatus = nf90_close(incid) +if (istatus /= nf90_noerr) call handle_err(istatus) ! DEALLOCATE (ZVALUE) DEALLOCATE (ZOUT) @@ -752,12 +752,12 @@ CALL READ_VER_GRID(TPPRE_REAL1) ! DEALLOCATE (ZLATOUT) DEALLOCATE (ZLONOUT) -DEALLOCATE (hyam) -DEALLOCATE (hybm) -DEALLOCATE (vartemp3d) -DEALLOCATE (vartemp3dbis) -DEALLOCATE (vartemp3dter) -DEALLOCATE (vartemp3dquater) +DEALLOCATE (zhyam) +DEALLOCATE (zhybm) +DEALLOCATE (zvartemp3d) +DEALLOCATE (zvartemp3dbis) +DEALLOCATE (zvartemp3dter) +DEALLOCATE (zvartemp3dquater) ! WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully' ! @@ -765,14 +765,14 @@ WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successf CONTAINS ! ! ############################# - subroutine handle_err(status) + subroutine handle_err(istatus) ! ############################# use mode_msg - integer(kind=CDFINT) status + integer(kind=CDFINT) istatus - if ( status /= NF90_NOERR ) then - call Print_msg( NVERB_FATAL, 'IO', 'HANDLE_ERR', NF90_STRERROR(status) ) + if ( istatus /= NF90_NOERR ) then + call Print_msg( NVERB_FATAL, 'IO', 'HANDLE_ERR', NF90_STRERROR(istatus) ) end if end subroutine handle_err