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

Philippe 16/01/2018: IO: provide FIELD structure to FILLVDIMS

parent 86277113
No related branches found
No related tags found
No related merge requests found
......@@ -590,13 +590,14 @@ GETSTRDIMID = TMP%ID
END FUNCTION GETSTRDIMID
SUBROUTINE FILLVDIMS(TPFILE, KSHAPE, HDIR, KVDIMS)
TYPE(TFILEDATA), INTENT(IN) :: TPFILE
INTEGER(KIND=IDCDF_KIND), DIMENSION(:), INTENT(IN) :: KSHAPE
CHARACTER(LEN=*), INTENT(IN) :: HDIR
INTEGER(KIND=IDCDF_KIND),DIMENSION(:), INTENT(OUT) :: KVDIMS
SUBROUTINE FILLVDIMS(TPFILE, TPFIELD, KSHAPE, KVDIMS)
TYPE(TFILEDATA), INTENT(IN) :: TPFILE
TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD
INTEGER(KIND=IDCDF_KIND),DIMENSION(:),INTENT(IN) :: KSHAPE
INTEGER(KIND=IDCDF_KIND),DIMENSION(:),INTENT(OUT) :: KVDIMS
INTEGER :: II
CHARACTER(LEN=2) :: YDIR
TYPE(DIMCDF), POINTER :: PTDIM
TYPE(IOCDF), POINTER :: PIOCDF
......@@ -604,18 +605,19 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','FILLVDIMS','called')
IF (SIZE(KSHAPE) < 1) CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','empty KSHAPE')
YDIR = TPFIELD%CDIR
PIOCDF => TPFILE%TNCDIMS
DO II=1, SIZE(KSHAPE)
IF (II == 1) THEN
IF (HDIR == 'XX' .OR. HDIR == 'XY') THEN
IF (YDIR == 'XX' .OR. YDIR == 'XY') THEN
IF (KSHAPE(II) == PIOCDF%DIM_NI%LEN) THEN
PTDIM => PIOCDF%DIM_NI
ELSE
PTDIM => GETDIMCDF(TPFILE, KSHAPE(II))
END IF
ELSE IF (HDIR == 'YY') THEN
ELSE IF (YDIR == 'YY') THEN
IF (KSHAPE(II) == PIOCDF%DIM_NJ%LEN) THEN
PTDIM => PIOCDF%DIM_NJ
ELSE
......@@ -626,7 +628,7 @@ DO II=1, SIZE(KSHAPE)
KVDIMS(II) = PTDIM%ID
END IF
ELSE IF (II == 2) THEN
IF (HDIR == 'XY') THEN
IF (YDIR == 'XY') THEN
IF (KSHAPE(II) == PIOCDF%DIM_NJ%LEN) THEN
PTDIM => PIOCDF%DIM_NJ
ELSE
......@@ -636,7 +638,7 @@ DO II=1, SIZE(KSHAPE)
PTDIM => GETDIMCDF(TPFILE, KSHAPE(II))
END IF
ELSE IF (II == 3) THEN
IF (HDIR == 'XY') THEN
IF (YDIR == 'XY') THEN
IF (KSHAPE(II) == PIOCDF%DIM_LEVEL%LEN) THEN
PTDIM => PIOCDF%DIM_LEVEL
ELSE
......@@ -729,7 +731,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -808,7 +810,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TZFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TZFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -869,7 +871,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -930,7 +932,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -991,7 +993,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -1052,7 +1054,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
IF (TPFILE%LNCREDUCE_FLOAT_PRECISION) THEN
......@@ -1186,7 +1188,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
#ifndef MNH_INT8
......@@ -1242,7 +1244,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
#ifndef MNH_INT8
......@@ -1302,7 +1304,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
#ifndef MNH_INT8
......@@ -1415,7 +1417,7 @@ IF (STATUS /= NF90_NOERR) THEN
END IF
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(OFIELD),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(OFIELD),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
! Use of NF90_INT1 datatype (=NF90_BYTE) that is enough to store a boolean
......@@ -1533,7 +1535,7 @@ STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
IF (STATUS /= NF90_NOERR) THEN
! Get the netcdf string dimensions id
IVDIMS(1) = GETSTRDIMID(TPFILE,ILEN)
CALL FILLVDIMS(TPFILE, (/ISIZE/), TPFIELD%CDIR, IVDIMS(2:2))
CALL FILLVDIMS(TPFILE, TPFIELD, (/ISIZE/), IVDIMS(2:2))
! Define the variable
STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_CHAR, IVDIMS, IVARID)
IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_C1[NF90_DEF_VAR]')
......@@ -1625,7 +1627,7 @@ TZFIELD%CCOMMENT = 'YYYYMMDD'
STATUS = NF90_INQ_VARID(INCID, TZFIELD%CMNHNAME, IVARID)
IF (STATUS /= NF90_NOERR) THEN
! Get the netcdf dimensions
CALL FILLVDIMS(TPFILE, INT(SHAPE(ITDATE),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(ITDATE),KIND=IDCDF_KIND), IVDIMS)
! Define the variable
STATUS = NF90_DEF_VAR(INCID, TZFIELD%CMNHNAME, NF90_INT, IVDIMS, IVARID)
......
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