diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index eb032d9aff601e0e879d7989a067b29460e289d3..c6837768f8c8e20763f10cdd41653fb59626d604 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -10,6 +10,7 @@ ! P. Wautelet : 13/12/2018 : split of mode_netcdf into multiple modules/files ! Philippe Wautelet: 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages ! P. Wautelet : 11/01/2019 : NVERB_INFO->NVERB_WARNING for zero size fields +! P. Wautelet : 01/02/2019 : IO_WRITE_COORDVAR_NC4: bug: use of non-associated pointers (PIOCDF%DIM_Nx_y) !----------------------------------------------------------------- #if defined(MNH_IOCDF4) module mode_io_write_nc4 @@ -1475,6 +1476,7 @@ USE MODD_CONF, ONLY: CPROGRAM, LCARTESIAN USE MODD_CONF_n, ONLY: CSTORAGE_TYPE USE MODD_GRID, ONLY: XLATORI, XLONORI USE MODD_GRID_n, ONLY: LSLEVE, XXHAT, XYHAT, XZHAT +use modd_netcdf, only: dimcdf USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT USE MODE_FIELD, ONLY: TFIELDLIST,FIND_FIELD_ID_FROM_MNHNAME @@ -1495,7 +1497,8 @@ LOGICAL,POINTER :: GSLEVE REAL,DIMENSION(:),POINTER :: ZXHAT, ZYHAT, ZZHAT REAL,DIMENSION(:),ALLOCATABLE :: ZXHATM, ZYHATM,ZZHATM !Coordinates at mass points in the transformed space REAL,DIMENSION(:,:),POINTER :: ZLAT, ZLON -TYPE(IOCDF), POINTER :: PIOCDF +type(dimcdf), pointer :: tzdim_ni, tzdim_nj, tzdim_ni_u, tzdim_nj_u, tzdim_ni_v, tzdim_nj_v +TYPE(IOCDF), POINTER :: PIOCDF CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_COORDVAR_NC4','called for '//TRIM(TPFILE%CNAME)) @@ -1554,17 +1557,34 @@ IF (LCARTESIAN) THEN ELSE YSTDNAMEPREFIX = 'projection' ENDIF -CALL WRITE_HOR_COORD(PIOCDF%DIM_NI,'x-dimension of the grid',TRIM(YSTDNAMEPREFIX)//'_x_coordinate','X',0.,JPHEXT,JPHEXT,ZXHATM) -CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ,'y-dimension of the grid',TRIM(YSTDNAMEPREFIX)//'_y_coordinate','Y',0.,JPHEXT,JPHEXT,ZYHATM) -CALL WRITE_HOR_COORD(PIOCDF%DIM_NI_U,'x-dimension of the grid at u location', & + +if(associated(piocdf)) then +tzdim_ni => piocdf%dim_ni +tzdim_nj => piocdf%dim_nj +tzdim_ni_u => piocdf%dim_ni_u +tzdim_nj_u => piocdf%dim_nj_u +tzdim_ni_v => piocdf%dim_ni_v +tzdim_nj_v => piocdf%dim_nj_v +else +tzdim_ni => null() +tzdim_nj => null() +tzdim_ni_u => null() +tzdim_nj_u => null() +tzdim_ni_v => null() +tzdim_nj_v => null() +end if + +CALL WRITE_HOR_COORD(tzdim_ni,'x-dimension of the grid',TRIM(YSTDNAMEPREFIX)//'_x_coordinate','X',0.,JPHEXT,JPHEXT,ZXHATM) +CALL WRITE_HOR_COORD(tzdim_nj,'y-dimension of the grid',TRIM(YSTDNAMEPREFIX)//'_y_coordinate','Y',0.,JPHEXT,JPHEXT,ZYHATM) +CALL WRITE_HOR_COORD(tzdim_ni_u,'x-dimension of the grid at u location', & TRIM(YSTDNAMEPREFIX)//'_x_coordinate_at_u_location','X',-0.5,JPHEXT,0, ZXHAT) -CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ_U,'y-dimension of the grid at u location', & +CALL WRITE_HOR_COORD(tzdim_nj_u,'y-dimension of the grid at u location', & TRIM(YSTDNAMEPREFIX)//'_y_coordinate_at_u_location','Y', 0., JPHEXT,JPHEXT,ZYHATM) -CALL WRITE_HOR_COORD(PIOCDF%DIM_NI_V,'x-dimension of the grid at v location', & +CALL WRITE_HOR_COORD(tzdim_ni_v,'x-dimension of the grid at v location', & TRIM(YSTDNAMEPREFIX)//'_x_coordinate_at_v_location','X', 0., JPHEXT,JPHEXT,ZXHATM) -CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ_V,'y-dimension of the grid at v location', & +CALL WRITE_HOR_COORD(tzdim_nj_v,'y-dimension of the grid at v location', & TRIM(YSTDNAMEPREFIX)//'_y_coordinate_at_v_location','Y',-0.5,JPHEXT,0, ZYHAT) -! + IF (.NOT.LCARTESIAN) THEN ALLOCATE(ZLAT(IIU,IJU),ZLON(IIU,IJU)) !