Skip to content
Snippets Groups Projects
Commit d14b099b authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 15/01/2018: IO: write horizontal dimensions in NC4 files:...

Philippe 15/01/2018: IO: write horizontal dimensions in NC4 files: improvements + problem corrections
parent 546df2d7
No related branches found
No related tags found
No related merge requests found
...@@ -69,6 +69,8 @@ TYPE(IOCDF), POINTER :: NEWIOCDF ...@@ -69,6 +69,8 @@ TYPE(IOCDF), POINTER :: NEWIOCDF
TYPE(IOCDF), POINTER :: TZIOCDF TYPE(IOCDF), POINTER :: TZIOCDF
INTEGER :: IRESP INTEGER :: IRESP
CALL PRINT_MSG(NVERB_DEBUG,'IO','NEWIOCDF','called')
ALLOCATE(TZIOCDF, STAT=IRESP) ALLOCATE(TZIOCDF, STAT=IRESP)
IF (IRESP > 0) THEN IF (IRESP > 0) THEN
CALL PRINT_MSG(NVERB_FATAL,'IO','NEWIOCDF','memory allocation error') CALL PRINT_MSG(NVERB_FATAL,'IO','NEWIOCDF','memory allocation error')
...@@ -111,7 +113,7 @@ END SUBROUTINE CLEANIOCDF ...@@ -111,7 +113,7 @@ END SUBROUTINE CLEANIOCDF
SUBROUTINE IO_SET_KNOWNDIMS_NC4(TPFILE) SUBROUTINE IO_SET_KNOWNDIMS_NC4(TPFILE)
USE MODD_DIM_ll, ONLY: NIMAX_ll, NJMAX_ll, NKMAX_ll USE MODD_DIM_n, ONLY: NIMAX_ll, NJMAX_ll, NKMAX
USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
TYPE(TFILEDATA),INTENT(IN) :: TPFILE TYPE(TFILEDATA),INTENT(IN) :: TPFILE
...@@ -119,13 +121,13 @@ TYPE(TFILEDATA),INTENT(IN) :: TPFILE ...@@ -119,13 +121,13 @@ TYPE(TFILEDATA),INTENT(IN) :: TPFILE
INTEGER :: IIU_ll, IJU_ll, IKU INTEGER :: IIU_ll, IJU_ll, IKU
TYPE(IOCDF), POINTER :: PIOCDF TYPE(IOCDF), POINTER :: PIOCDF
CALL PRINT_MSG(NVERB_DEBUG,'IO','SET_KNOWN_NC_DIMS','called') CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_SET_KNOWNDIMS_NC4','called')
PIOCDF => TPFILE%TNCDIMS PIOCDF => TPFILE%TNCDIMS
IIU_ll = NIMAX_ll + 2*JPHEXT IIU_ll = NIMAX_ll + 2*JPHEXT
IJU_ll = NJMAX_ll + 2*JPHEXT IJU_ll = NJMAX_ll + 2*JPHEXT
IKU = NKMAX_ll + 2*JPVEXT IKU = NKMAX + 2*JPVEXT
IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI)) PIOCDF%DIM_NI => GETDIMCDF(TPFILE, IIU_ll, 'ni') IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI)) PIOCDF%DIM_NI => GETDIMCDF(TPFILE, IIU_ll, 'ni')
IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ)) PIOCDF%DIM_NJ => GETDIMCDF(TPFILE, IJU_ll, 'nj') IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ)) PIOCDF%DIM_NJ => GETDIMCDF(TPFILE, IJU_ll, 'nj')
...@@ -157,16 +159,16 @@ PIOCDF => TPFILE%TNCDIMS ...@@ -157,16 +159,16 @@ PIOCDF => TPFILE%TNCDIMS
INCID = TPFILE%NNCID INCID = TPFILE%NNCID
IF (TPFILE%LMASTER) THEN IF (TPFILE%LMASTER) THEN
CALL WRITE_COORD(PIOCDF%DIM_NI,'x-dimension of the grid','x_grid_index','X',0.,JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NI,'x-dimension of the grid','x_grid_index','X',0.,JPHEXT)
CALL WRITE_COORD(PIOCDF%DIM_NJ,'y-dimension of the grid','y_grid_index','Y',0.,JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ,'y-dimension of the grid','y_grid_index','Y',0.,JPHEXT)
CALL WRITE_COORD(PIOCDF%DIM_NI_U,'x-dimension of the grid at u location','x_grid_index_at_u_location','X',-0.5,JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NI_U,'x-dimension of the grid at u location','x_grid_index_at_u_location','X',-0.5,JPHEXT)
CALL WRITE_COORD(PIOCDF%DIM_NJ_U,'y-dimension of the grid at u location','y_grid_index_at_u_location','Y', 0., JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ_U,'y-dimension of the grid at u location','y_grid_index_at_u_location','Y', 0., JPHEXT)
CALL WRITE_COORD(PIOCDF%DIM_NI_V,'x-dimension of the grid at v location','x_grid_index_at_v_location','X', 0., JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NI_V,'x-dimension of the grid at v location','x_grid_index_at_v_location','X', 0., JPHEXT)
CALL WRITE_COORD(PIOCDF%DIM_NJ_V,'y-dimension of the grid at v location','y_grid_index_at_v_location','Y',-0.5,JPHEXT) CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ_V,'y-dimension of the grid at v location','y_grid_index_at_v_location','Y',-0.5,JPHEXT)
ENDIF ENDIF
CONTAINS CONTAINS
SUBROUTINE WRITE_COORD(TDIM,HLONGNAME,HSTDNAME,HAXIS,PSHIFT,KBOUND) SUBROUTINE WRITE_HOR_COORD(TDIM,HLONGNAME,HSTDNAME,HAXIS,PSHIFT,KBOUND)
TYPE(DIMCDF), POINTER, INTENT(IN) :: TDIM TYPE(DIMCDF), POINTER, INTENT(IN) :: TDIM
CHARACTER(LEN=*), INTENT(IN) :: HLONGNAME CHARACTER(LEN=*), INTENT(IN) :: HLONGNAME
CHARACTER(LEN=*), INTENT(IN) :: HSTDNAME CHARACTER(LEN=*), INTENT(IN) :: HSTDNAME
...@@ -221,7 +223,7 @@ SUBROUTINE WRITE_COORD(TDIM,HLONGNAME,HSTDNAME,HAXIS,PSHIFT,KBOUND) ...@@ -221,7 +223,7 @@ SUBROUTINE WRITE_COORD(TDIM,HLONGNAME,HSTDNAME,HAXIS,PSHIFT,KBOUND)
DEALLOCATE(ZTAB) DEALLOCATE(ZTAB)
END SUBROUTINE WRITE_COORD END SUBROUTINE WRITE_HOR_COORD
END SUBROUTINE IO_WRITE_COORDVAR_NC4 END SUBROUTINE IO_WRITE_COORDVAR_NC4
...@@ -234,7 +236,7 @@ INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ...@@ -234,7 +236,7 @@ INTEGER, OPTIONAL, INTENT(OUT) :: KRESP
CHARACTER(LEN=6) :: YLINE CHARACTER(LEN=6) :: YLINE
WRITE(YLINE,*) LINE WRITE(YLINE,'( I6 )') LINE
! Don't stop (by default) the code when KRESP is present ! Don't stop (by default) the code when KRESP is present
! and ensure KRESP is a negative integer ! and ensure KRESP is a negative integer
...@@ -383,6 +385,8 @@ INTEGER(KIND=IDCDF_KIND) :: STATUS ...@@ -383,6 +385,8 @@ INTEGER(KIND=IDCDF_KIND) :: STATUS
LOGICAL :: GCHKLEN !Check if KLEN is valid LOGICAL :: GCHKLEN !Check if KLEN is valid
TYPE(IOCDF), POINTER :: PIOCDF TYPE(IOCDF), POINTER :: PIOCDF
CALL PRINT_MSG(NVERB_DEBUG,'IO','GETDIMCDF','called')
PIOCDF => TPFILE%TNCDIMS PIOCDF => TPFILE%TNCDIMS
GCHKLEN = .TRUE. GCHKLEN = .TRUE.
...@@ -424,6 +428,7 @@ IF (.NOT. ASSOCIATED(TMP)) THEN ...@@ -424,6 +428,7 @@ IF (.NOT. ASSOCIATED(TMP)) THEN
NULLIFY(TMP%NEXT) NULLIFY(TMP%NEXT)
TMP%NEXT => PIOCDF%DIMLIST TMP%NEXT => PIOCDF%DIMLIST
PIOCDF%DIMLIST => TMP PIOCDF%DIMLIST => TMP
CALL PRINT_MSG(NVERB_DEBUG,'IO','GETDIMCDF','new dimension: '//TRIM(TMP%NAME))
END IF END IF
GETDIMCDF => TMP GETDIMCDF => TMP
...@@ -441,6 +446,8 @@ CHARACTER(LEN=8) :: YDIMNAME ...@@ -441,6 +446,8 @@ CHARACTER(LEN=8) :: YDIMNAME
CHARACTER(LEN=20) :: YLEN CHARACTER(LEN=20) :: YLEN
INTEGER(KIND=IDCDF_KIND) :: STATUS INTEGER(KIND=IDCDF_KIND) :: STATUS
CALL PRINT_MSG(NVERB_DEBUG,'IO','GETSTRDIMID','called')
IF (KLEN < 1) THEN IF (KLEN < 1) THEN
WRITE(YLEN,*) KLEN WRITE(YLEN,*) KLEN
CALL PRINT_MSG(NVERB_FATAL,'IO','GETSTRDIMID','KLEN='//TRIM(YLEN)) CALL PRINT_MSG(NVERB_FATAL,'IO','GETSTRDIMID','KLEN='//TRIM(YLEN))
...@@ -481,6 +488,8 @@ INTEGER :: II ...@@ -481,6 +488,8 @@ INTEGER :: II
TYPE(DIMCDF), POINTER :: PTDIM TYPE(DIMCDF), POINTER :: PTDIM
TYPE(IOCDF), POINTER :: PIOCDF TYPE(IOCDF), POINTER :: PIOCDF
CALL PRINT_MSG(NVERB_DEBUG,'IO','FILLVDIMS','called')
IF (SIZE(KSHAPE) < 1) CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','empty KSHAPE') IF (SIZE(KSHAPE) < 1) CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','empty KSHAPE')
PIOCDF => TPFILE%TNCDIMS PIOCDF => TPFILE%TNCDIMS
......
...@@ -434,8 +434,6 @@ INPRAR = 24 +2*(4+NRR+NSV) ...@@ -434,8 +434,6 @@ INPRAR = 24 +2*(4+NRR+NSV)
! !
CALL IO_FILE_ADD2LIST(TOUTDATAFILE,TRIM(CINIFILE)//YSUFFIX,'DIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB) CALL IO_FILE_ADD2LIST(TOUTDATAFILE,TRIM(CINIFILE)//YSUFFIX,'DIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB)
! !
CALL IO_FILE_OPEN_ll(TOUTDATAFILE)
!
CALL SECOND_MNH2(ZTIME2) CALL SECOND_MNH2(ZTIME2)
ZSTART=ZTIME2-ZTIME1 ZSTART=ZTIME2-ZTIME1
ZTIME1=ZTIME2 ZTIME1=ZTIME2
...@@ -480,6 +478,8 @@ ENDIF ...@@ -480,6 +478,8 @@ ENDIF
! !
!* 4.0 Stores the fields in MESONH files if necessary !* 4.0 Stores the fields in MESONH files if necessary
! !
CALL IO_FILE_OPEN_ll(TOUTDATAFILE)
!
CALL WRITE_LFIFM1_FOR_DIAG(TOUTDATAFILE,CDAD_NAME(1)) CALL WRITE_LFIFM1_FOR_DIAG(TOUTDATAFILE,CDAD_NAME(1))
! !
WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) ' '
......
...@@ -319,12 +319,13 @@ END DO ...@@ -319,12 +319,13 @@ END DO
CALL IO_FILE_CLOSE_ll(TZPRE_NEST_PGD) CALL IO_FILE_CLOSE_ll(TZPRE_NEST_PGD)
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* 7. OPENING OF INPUT AND OUTPUT PGD FILES !* 7. OPENING OF INPUT PGD FILES
! ------------------------------------- ! --------------------------
!
!Remark: output PGD files are opened later when the mesh dimensions are known
! !
DO JPGD=1,NMODEL DO JPGD=1,NMODEL
CALL IO_FILE_OPEN_ll(TPFILEPGD(JPGD) %TZFILE,OPARALLELIO=.FALSE.) CALL IO_FILE_OPEN_ll(TPFILEPGD(JPGD) %TZFILE,OPARALLELIO=.FALSE.)
CALL IO_FILE_OPEN_ll(TPFILENESTPGD(JPGD)%TZFILE,OPARALLELIO=.FALSE.)
END DO END DO
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
......
...@@ -143,6 +143,7 @@ USE MODE_ll ...@@ -143,6 +143,7 @@ USE MODE_ll
USE MODE_FM USE MODE_FM
USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT, JPMODELMAX USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT, JPMODELMAX
USE MODD_CONF, ONLY : CPROGRAM, L1D, L2D, LPACK USE MODD_CONF, ONLY : CPROGRAM, L1D, L2D, LPACK
USE MODD_DIM_n, ONLY : NIMAX_ll, NJMAX_ll, NKMAX
! !
!JUANZ !JUANZ
USE MODE_SPLITTINGZ_ll USE MODE_SPLITTINGZ_ll
...@@ -225,6 +226,9 @@ LPACK=L1D.OR.L2D ...@@ -225,6 +226,9 @@ LPACK=L1D.OR.L2D
CALL SET_FMPACK_ll(L1D,L2D,LPACK) CALL SET_FMPACK_ll(L1D,L2D,LPACK)
CALL SET_JP_ll(JPMODELMAX,JPHEXT,JPVEXT,JPHEXT) CALL SET_JP_ll(JPMODELMAX,JPHEXT,JPVEXT,JPHEXT)
CALL SET_DAD0_ll() CALL SET_DAD0_ll()
NIMAX_ll = IIMAX
NJMAX_ll = IJMAX
NKMAX = 1
CALL SET_DIM_ll(IIMAX, IJMAX, 1) CALL SET_DIM_ll(IIMAX, IJMAX, 1)
CALL SET_LBX_ll('OPEN',1) CALL SET_LBX_ll('OPEN',1)
CALL SET_LBY_ll('OPEN', 1) CALL SET_LBY_ll('OPEN', 1)
......
...@@ -336,6 +336,8 @@ DO JPGD=1,NMODEL ...@@ -336,6 +336,8 @@ DO JPGD=1,NMODEL
TPGDFILE => TZFILEPGD(JPGD)%TZFILE TPGDFILE => TZFILEPGD(JPGD)%TZFILE
TOUTDATAFILE => TZFILENESTPGD(JPGD)%TZFILE TOUTDATAFILE => TZFILENESTPGD(JPGD)%TZFILE
CALL GOTO_MODEL(JPGD) CALL GOTO_MODEL(JPGD)
!Open done here because grid dimensions have to be known
CALL IO_FILE_OPEN_ll(TZFILENESTPGD(JPGD)%TZFILE,OPARALLELIO=.FALSE.)
CALL GOTO_SURFEX(JPGD) CALL GOTO_SURFEX(JPGD)
TFILE_SURFEX => TZFILENESTPGD(JPGD)%TZFILE TFILE_SURFEX => TZFILENESTPGD(JPGD)%TZFILE
CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH') CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH')
......
...@@ -580,10 +580,6 @@ TLUOUT => TLUOUT0 ...@@ -580,10 +580,6 @@ TLUOUT => TLUOUT0
! !
TPGDFILE => TZPGDFILE TPGDFILE => TZPGDFILE
! !
CALL IO_FILE_ADD2LIST(TINIFILE,CINIFILE,'PREPREALCASE','WRITE',KLFITYPE=1,KLFIVERB=NVERB)
!
CALL IO_FILE_OPEN_ll(TINIFILE)
!
IF (YATMFILETYPE=='MESONH') THEN IF (YATMFILETYPE=='MESONH') THEN
LSHIFT = .FALSE. LSHIFT = .FALSE.
ELSE IF (YATMFILETYPE=='GRIBEX') THEN ELSE IF (YATMFILETYPE=='GRIBEX') THEN
...@@ -757,6 +753,9 @@ CALL SECOND_MNH(ZTIME2) ...@@ -757,6 +753,9 @@ CALL SECOND_MNH(ZTIME2)
ZREAD = ZTIME2 - ZTIME1 - ZHORI ZREAD = ZTIME2 - ZTIME1 - ZHORI
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
CALL IO_FILE_ADD2LIST(TINIFILE,CINIFILE,'PREPREALCASE','WRITE',KLFITYPE=1,KLFIVERB=NVERB)
CALL IO_FILE_OPEN_ll(TINIFILE)
!
ZTIME1=ZTIME2 ZTIME1=ZTIME2
! !
!* 6. CONFIGURATION VARIABLES !* 6. CONFIGURATION VARIABLES
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment