Skip to content
Snippets Groups Projects
Commit 73b6c225 authored by Juan Escobar's avatar Juan Escobar
Browse files

Juan 30/06/2017: J.Escobar 30/06/2017 : Add activation of ZLIB compression in...

Juan 30/06/2017: J.Escobar 30/06/2017 : Add activation of ZLIB compression in X2/X3 fields , if MNH_IOCDF4 == 2
parent 4717fc09
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
! $Name$ ! $Name$
! $Revision$ ! $Revision$
! $Date$ ! $Date$
! J.Escobar 30/06/2017 : Add activation of ZLIB compression if MNH_IOCDF4 == 2
!----------------------------------------------------------------- !-----------------------------------------------------------------
!----------------------------------------------------------------- !-----------------------------------------------------------------
...@@ -34,5 +35,9 @@ LOGICAL, SAVE :: LPACK = .FALSE. ! TRUE if FM compression occurs in 1D or 2D mod ...@@ -34,5 +35,9 @@ LOGICAL, SAVE :: LPACK = .FALSE. ! TRUE if FM compression occurs in 1D or 2D mod
LOGICAL, SAVE :: LIOCDF4 = .FALSE. ! TRUE will enable full NetCDF4 (HDF5) I/O support LOGICAL, SAVE :: LIOCDF4 = .FALSE. ! TRUE will enable full NetCDF4 (HDF5) I/O support
LOGICAL, SAVE :: LLFIOUT = .FALSE. ! TRUE will also force LFI output when LIOCDF4 is on (debug only) LOGICAL, SAVE :: LLFIOUT = .FALSE. ! TRUE will also force LFI output when LIOCDF4 is on (debug only)
LOGICAL, SAVE :: LLFIREAD = .FALSE. ! TRUE will force LFI read (instead of NetCDF) when LIOCDF4 is on (debug only) LOGICAL, SAVE :: LLFIREAD = .FALSE. ! TRUE will force LFI read (instead of NetCDF) when LIOCDF4 is on (debug only)
LOGICAL, SAVE :: LDEFLATEX2 = .FALSE. ! TRUE to enable Zlib deflate compression on X2 fields #if MNH_IOCDF4 == 2
LOGICAL, SAVE :: LDEFLATEX2 = .TRUE. ! TRUE to enable Zlib deflate compression on X2/X3 fields
#else
LOGICAL, SAVE :: LDEFLATEX2 = .FALSE. ! TRUE to enable Zlib deflate compression on X2/X3 fields
#endif
END MODULE MODD_IO_ll END MODULE MODD_IO_ll
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
MODULE MODE_NETCDF MODULE MODE_NETCDF
!! !!
!! Original 14/04/2015 D. Gazen !! Original 14/04/2015 D. Gazen
!! D.Gazen & J.Escobar 24/03/2107 : Correction for compilation of netcdf4IO in REAL*4 <=> MNH_REAL=R4 !! D.Gazen & J.Escobar 24/03/2107 : Correction for compilation of netcdf4IO in REAL*4 <=> MNH_REAL=R4
!! J.Escobar 30/06/2017 : Add activation of ZLIB compression in NCWRITX3
!! !!
USE MODD_NETCDF USE MODD_NETCDF
...@@ -477,6 +478,7 @@ KRESP = IRESP ...@@ -477,6 +478,7 @@ KRESP = IRESP
END SUBROUTINE NCWRITX2 END SUBROUTINE NCWRITX2
SUBROUTINE NCWRITX3(PZCDF, HVARNAME, HDIR, PFIELD, TPFMH, KRESP) SUBROUTINE NCWRITX3(PZCDF, HVARNAME, HDIR, PFIELD, TPFMH, KRESP)
USE MODD_IO_ll, ONLY : LDEFLATEX2
USE MODD_FM, ONLY : FMHEADER USE MODD_FM, ONLY : FMHEADER
TYPE(IOCDF), POINTER :: PZCDF TYPE(IOCDF), POINTER :: PZCDF
CHARACTER(LEN=*), INTENT(IN) :: HVARNAME CHARACTER(LEN=*), INTENT(IN) :: HVARNAME
...@@ -485,6 +487,10 @@ REAL, DIMENSION(:,:,:),INTENT(IN) :: PFIELD ...@@ -485,6 +487,10 @@ REAL, DIMENSION(:,:,:),INTENT(IN) :: PFIELD
TYPE(FMHEADER), INTENT(IN) :: TPFMH TYPE(FMHEADER), INTENT(IN) :: TPFMH
INTEGER, INTENT(OUT):: KRESP INTEGER, INTENT(OUT):: KRESP
INTEGER(KIND=IDCDF_KIND),PARAMETER :: SHUFFLE = 0
INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE = 1
INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE_LEVEL = 2
INTEGER(KIND=IDCDF_KIND) :: STATUS INTEGER(KIND=IDCDF_KIND) :: STATUS
INTEGER(KIND=IDCDF_KIND) :: INCID INTEGER(KIND=IDCDF_KIND) :: INCID
CHARACTER(LEN=30) :: YVARNAME CHARACTER(LEN=30) :: YVARNAME
...@@ -506,10 +512,14 @@ STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID) ...@@ -506,10 +512,14 @@ STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
IF (STATUS /= NF_NOERR) THEN IF (STATUS /= NF_NOERR) THEN
! Get the netcdf dimensions ! Get the netcdf dimensions
CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS) CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
! Define the variable ! Define the variable
STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID) STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR]') IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR]')
IF (LDEFLATEX2) THEN
! Compress the variable with deflate level 2
STATUS = NF_DEF_VAR_DEFLATE(INCID, IVARID, SHUFFLE, DEFLATE, DEFLATE_LEVEL)
IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR_DEFLATE]')
END IF
CALL WRITATTR(INCID, IVARID, TPFMH) CALL WRITATTR(INCID, IVARID, TPFMH)
ELSE ELSE
PRINT *,'NCWRITX3 : ', TRIM(YVARNAME), ' already defined !' PRINT *,'NCWRITX3 : ', TRIM(YVARNAME), ' already defined !'
......
...@@ -340,9 +340,16 @@ ifeq "$(VER_CDF)" "CDFAUTO" ...@@ -340,9 +340,16 @@ ifeq "$(VER_CDF)" "CDFAUTO"
HDF_OPT = ${OPT_BASE_I4:-$OPT_BASE} HDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE} NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
# #
# if MNH_IOCDF4=2 use libz
ifeq "$(MNH_IOCDF4)" "2"
LZLIB=yes
else
LZLIB=no
endif
#
cdf : $(CDF_INC) cdf : $(CDF_INC)
$(CDF_INC) : $(CDF_INC) :
cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=no \ cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=$(LZLIB) \
FC="$(FC)" FCFLAGS="$(HDF_OPT)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean FC="$(FC)" FCFLAGS="$(HDF_OPT)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean
cd ${DIR_CDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-cxx --enable-f90 --disable-dap \ cd ${DIR_CDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-cxx --enable-f90 --disable-dap \
FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
......
...@@ -427,7 +427,7 @@ endif ...@@ -427,7 +427,7 @@ endif
########################################################## ##########################################################
# NETCDF4 INPUT/OUTPUT in MesoNH # NETCDF4 INPUT/OUTPUT in MesoNH
ifdef MNH_IOCDF4 ifdef MNH_IOCDF4
CPPFLAGS_MNH += -DMNH_IOCDF4 CPPFLAGS_MNH += -DMNH_IOCDF4=$(MNH_IOCDF4)
endif endif
# #
# NetCDF : AUTO install of netcdf-4.X.X on PC linux to avoid problem with compiler # NetCDF : AUTO install of netcdf-4.X.X on PC linux to avoid problem with compiler
...@@ -437,9 +437,13 @@ ifeq "$(VER_CDF)" "CDFAUTO" ...@@ -437,9 +437,13 @@ ifeq "$(VER_CDF)" "CDFAUTO"
DIR_CDF?=${SRC_MESONH}/src/LIB/netcdf-${VERSION_CDF} DIR_CDF?=${SRC_MESONH}/src/LIB/netcdf-${VERSION_CDF}
CDF_PATH?=${DIR_CDF}-${ARCH}I${MNH_INT} CDF_PATH?=${DIR_CDF}-${ARCH}I${MNH_INT}
CDF_INC?=${CDF_PATH}/include/netcdf.inc CDF_INC?=${CDF_PATH}/include/netcdf.inc
# if MNH_IOCDF4=2 use libz
ifeq "$(MNH_IOCDF4)" "2"
ZLIB=-lz
endif
# #
INC_NETCDF ?= -I${CDF_PATH}/include INC_NETCDF ?= -I${CDF_PATH}/include
LIB_NETCDF ?= -L${CDF_PATH}/lib -L${CDF_PATH}/lib64 -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 LIB_NETCDF ?= -L${CDF_PATH}/lib -L${CDF_PATH}/lib64 -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 $(ZLIB)
INC += $(INC_NETCDF) INC += $(INC_NETCDF)
LIBS += $(LIB_NETCDF) LIBS += $(LIB_NETCDF)
# #
......
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