Ignore:
Timestamp:
2020-06-19T17:37:47+02:00 (6 months ago)
Author:
orioltp
Message:

dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation: merge with trunk@13134, see #2364

Location:
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@12931        sette 
  • NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/OCE/IOM/in_out_manager.F90

    r12377 r13135  
    100100   !!---------------------------------------------------------------------- 
    101101   TYPE :: sn_ctl                !: structure for control over output selection 
    102       LOGICAL :: l_glochk  = .FALSE.  !: range sanity checks are local (F) or global (T) 
    103                                       !  Use global setting for debugging only; 
    104                                       !  local breaches will still be reported 
    105                                       !  and stop the code in most cases. 
    106       LOGICAL :: l_allon   = .FALSE.  !: overall control; activate all following output options 
    107       LOGICAL :: l_config  = .FALSE.  !: activate/deactivate finer control 
    108                                       !  Note if l_config is True then sn_cfctl%l_allon is ignored. 
    109                                       !  Otherwise setting sn_cfctl%l_allon T/F is equivalent to  
    110                                       !  setting all the following logicals in this structure T/F 
    111                                       !  and disabling subsetting of processors 
    112102      LOGICAL :: l_runstat = .FALSE.  !: Produce/do not produce run.stat file (T/F) 
    113103      LOGICAL :: l_trcstat = .FALSE.  !: Produce/do not produce tracer.stat file (T/F) 
     
    169159   INTEGER       ::   no_print = 0          !: optional argument of fld_fill (if present, suppress some control print) 
    170160   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run) 
     161!$AGRIF_DO_NOT_TREAT 
     162   INTEGER       ::   ngrdstop = -1         !: grid number having nstop > 1 
     163!$AGRIF_END_DO_NOT_TREAT 
    171164   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run) 
    172165   CHARACTER(lc) ::   ctmp1, ctmp2, ctmp3   !: temporary characters 1 to 3 
  • NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/OCE/IOM/iom.F90

    r12603 r13135  
    118118      CHARACTER(len=lc) :: clname 
    119119      INTEGER             :: irefyear, irefmonth, irefday 
    120       INTEGER           :: ji, jkmin 
     120      INTEGER           :: ji 
    121121      LOGICAL :: llrst_context              ! is context related to restart 
    122122      ! 
     
    227227           
    228228          ! Add vertical grid bounds 
    229           jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
    230           zt_bnds(2,:        ) = gdept_1d(:) 
    231           zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 
    232           zt_bnds(1,1        ) = gdept_1d(1) - e3w_1d(1) 
    233           zw_bnds(1,:        ) = gdepw_1d(:) 
    234           zw_bnds(2,1:jpkm1  ) = gdepw_1d(jkmin:jpk) 
    235           zw_bnds(2,jpk:     ) = gdepw_1d(jpk) + e3t_1d(jpk) 
     229          zt_bnds(2,:      ) = gdept_1d(:) 
     230          zt_bnds(1,2:jpk  ) = gdept_1d(1:jpkm1) 
     231          zt_bnds(1,1      ) = gdept_1d(1) - e3w_1d(1) 
     232          zw_bnds(1,:      ) = gdepw_1d(:) 
     233          zw_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 
     234          zw_bnds(2,jpk:   ) = gdepw_1d(jpk) + e3t_1d(jpk) 
    236235          CALL iom_set_axis_attr(  "deptht", bounds=zw_bnds ) 
    237236          CALL iom_set_axis_attr(  "depthu", bounds=zw_bnds ) 
     
    672671 
    673672 
    674    SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, ldstop, ldiof, kdlev ) 
     673   SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, ldstop, ldiof, kdlev, cdcomp ) 
    675674      !!--------------------------------------------------------------------- 
    676675      !!                   ***  SUBROUTINE  iom_open  *** 
     
    685684      LOGICAL         , INTENT(in   ), OPTIONAL ::   ldiof    ! Interp On the Fly, needed for AGRIF (default = .FALSE.) 
    686685      INTEGER         , INTENT(in   ), OPTIONAL ::   kdlev    ! number of vertical levels 
     686      CHARACTER(len=3), INTENT(in   ), OPTIONAL ::   cdcomp   ! name of component calling iom_nf90_open 
    687687      ! 
    688688      CHARACTER(LEN=256)    ::   clname    ! the name of the file based on cdname [[+clcpu]+clcpu] 
     
    830830      ENDIF 
    831831      IF( istop == nstop ) THEN   ! no error within this routine 
    832          CALL iom_nf90_open( clname, kiomid, llwrt, llok, idompar, kdlev = kdlev ) 
     832         CALL iom_nf90_open( clname, kiomid, llwrt, llok, idompar, kdlev = kdlev, cdcomp = cdcomp ) 
    833833      ENDIF 
    834834      ! 
  • NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/OCE/IOM/iom_def.F90

    r12377 r13135  
    3333   INTEGER, PARAMETER, PUBLIC ::   jpmax_vars   = 1200 !: maximum number of variables in one file 
    3434   INTEGER, PARAMETER, PUBLIC ::   jpmax_dims   =  4   !: maximum number of dimensions for one variable 
    35    INTEGER, PARAMETER, PUBLIC ::   jpmax_digits =  5   !: maximum number of digits for the cpu number in the file name 
     35   INTEGER, PARAMETER, PUBLIC ::   jpmax_digits =  9   !: maximum number of digits for the cpu number in the file name 
    3636 
    3737 
     
    5050   TYPE, PUBLIC ::   file_descriptor 
    5151      CHARACTER(LEN=240)                        ::   name     !: name of the file 
     52      CHARACTER(LEN=3  )                        ::   comp     !: name of component opening the file ('OCE', 'ICE'...) 
    5253      INTEGER                                   ::   nfid     !: identifier of the file (0 if closed) 
    5354                                                              !: jpioipsl option has been removed) 
     
    6465      REAL(kind=wp), DIMENSION(jpmax_vars)      ::   scf      !: scale_factor of the variables 
    6566      REAL(kind=wp), DIMENSION(jpmax_vars)      ::   ofs      !: add_offset of the variables 
    66       INTEGER                                   ::   nlev     ! number of vertical levels 
    6767   END TYPE file_descriptor 
    6868   TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC ::   iom_file !: array containing the info for all opened files 
  • NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/OCE/IOM/iom_nf90.F90

    r12603 r13135  
    1919   !!---------------------------------------------------------------------- 
    2020   USE dom_oce         ! ocean space and time domain 
    21    USE sbc_oce, ONLY: jpka, ght_abl ! abl vertical level number and height 
     21   USE sbc_oce, ONLY: ght_abl ! abl vertical level number and height 
    2222   USE lbclnk          ! lateal boundary condition / mpp exchanges 
    2323   USE iom_def         ! iom variables definitions 
     
    4747CONTAINS 
    4848 
    49    SUBROUTINE iom_nf90_open( cdname, kiomid, ldwrt, ldok, kdompar, kdlev ) 
     49   SUBROUTINE iom_nf90_open( cdname, kiomid, ldwrt, ldok, kdompar, kdlev, cdcomp ) 
    5050      !!--------------------------------------------------------------------- 
    5151      !!                   ***  SUBROUTINE  iom_open  *** 
     
    5959      INTEGER, DIMENSION(2,5), INTENT(in   ), OPTIONAL ::   kdompar     ! domain parameters:  
    6060      INTEGER                , INTENT(in   ), OPTIONAL ::   kdlev       ! size of the ice/abl third dimension 
     61      CHARACTER(len=3)       , INTENT(in   ), OPTIONAL ::   cdcomp      ! name of component calling iom_nf90_open 
    6162 
    6263      CHARACTER(LEN=256) ::   clinfo           ! info character 
    6364      CHARACTER(LEN=256) ::   cltmp            ! temporary character 
     65      CHARACTER(LEN=12 ) ::   clfmt            ! writing format 
     66      CHARACTER(LEN=3  ) ::   clcomp           ! name of component calling iom_nf90_open 
     67      INTEGER            ::   idg              ! number of digits 
    6468      INTEGER            ::   iln              ! lengths of character 
    6569      INTEGER            ::   istop            ! temporary storage of nstop 
     
    7175      INTEGER            ::   ihdf5            ! local variable for retrieval of value for NF90_HDF5 
    7276      LOGICAL            ::   llclobber        ! local definition of ln_clobber 
    73       INTEGER            ::   ilevels          ! vertical levels 
    7477      !--------------------------------------------------------------------- 
    7578      ! 
     
    7881      ! 
    7982      !                 !number of vertical levels 
    80       IF( PRESENT(kdlev) )   THEN   ;   ilevels = kdlev    ! use input value (useful for sea-ice and abl) 
    81       ELSE                          ;   ilevels = jpk      ! by default jpk 
     83      IF( PRESENT(cdcomp) )   THEN 
     84         IF( .NOT. PRESENT(kdlev) ) CALL ctl_stop( 'iom_nf90_open: cdcomp and kdlev must both be present' ) 
     85         clcomp = cdcomp    ! use input value 
     86      ELSE 
     87         clcomp = 'OCE'     ! by default  
    8288      ENDIF 
    8389      ! 
     
    106112         IF( ldwrt ) THEN              !* the file should be open in write mode so we create it... 
    107113            IF( jpnij > 1 ) THEN 
    108                WRITE(cltmp,'(a,a,i4.4,a)') cdname(1:iln-1), '_', narea-1, '.nc' 
     114               idg = MAX( INT(LOG10(REAL(MAX(1,jpnij-1),wp))) + 1, 4 )          ! how many digits to we need to write? min=4, max=9 
     115               WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg          ! '(a,a,ix.x,a)' 
     116               WRITE(cltmp,clfmt) cdname(1:iln-1), '_', narea-1, '.nc' 
    109117               cdname = TRIM(cltmp) 
    110118            ENDIF 
     
    126134            CALL iom_nf90_check(NF90_SET_FILL( if90id, NF90_NOFILL,                   idmy ), clinfo) 
    127135            ! define dimensions 
    128             CALL iom_nf90_check(NF90_DEF_DIM( if90id,            'x',   kdompar(1,1), idmy ), clinfo) 
    129             CALL iom_nf90_check(NF90_DEF_DIM( if90id,            'y',   kdompar(2,1), idmy ), clinfo) 
    130             IF( PRESENT(kdlev) ) THEN 
    131               IF( kdlev == jpka ) THEN 
    132                  CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'nav_lev',          kdlev, idmy ), clinfo) 
    133                  CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'time_counter', NF90_UNLIMITED, idmy ), clinfo) 
    134               ELSE 
    135                  CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'nav_lev',            jpk, idmy ), clinfo) 
    136                  CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'time_counter', NF90_UNLIMITED, idmy ), clinfo) 
    137                  CALL iom_nf90_check(NF90_DEF_DIM( if90id,  'numcat',          kdlev, idmy ), clinfo) 
    138               ENDIF 
    139             ELSE 
    140                CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'nav_lev',            jpk, idmy ), clinfo) 
    141                CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'time_counter', NF90_UNLIMITED, idmy ), clinfo) 
    142             ENDIF 
     136                               CALL iom_nf90_check(NF90_DEF_DIM( if90id,            'x',   kdompar(1,1), idmy ), clinfo) 
     137                               CALL iom_nf90_check(NF90_DEF_DIM( if90id,            'y',   kdompar(2,1), idmy ), clinfo) 
     138            SELECT CASE (clcomp) 
     139            CASE ('OCE')   ;   CALL iom_nf90_check(NF90_DEF_DIM( if90id,      'nav_lev',            jpk, idmy ), clinfo) 
     140            CASE ('ICE')   ;   CALL iom_nf90_check(NF90_DEF_DIM( if90id,       'numcat',          kdlev, idmy ), clinfo) 
     141            CASE ('ABL')   ;   CALL iom_nf90_check(NF90_DEF_DIM( if90id,      'nav_lev',          kdlev, idmy ), clinfo) 
     142            CASE ('SED')   ;   CALL iom_nf90_check(NF90_DEF_DIM( if90id,       'numsed',          kdlev, idmy ), clinfo) 
     143            CASE DEFAULT   ;   CALL ctl_stop( 'iom_nf90_open unknown component type' ) 
     144            END SELECT 
     145                               CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'time_counter', NF90_UNLIMITED, idmy ), clinfo) 
    143146            ! global attributes 
    144147            CALL iom_nf90_check(NF90_PUT_ATT( if90id, NF90_GLOBAL, 'DOMAIN_number_total'   , jpnij              ), clinfo) 
     
    166169         ENDDO 
    167170         iom_file(kiomid)%name   = TRIM(cdname) 
     171         iom_file(kiomid)%comp   = clcomp 
    168172         iom_file(kiomid)%nfid   = if90id 
    169173         iom_file(kiomid)%nvars  = 0 
    170174         iom_file(kiomid)%irec   = -1   ! useless for NetCDF files, used to know if the file is in define mode  
    171          iom_file(kiomid)%nlev   = ilevels 
    172175         CALL iom_nf90_check(NF90_Inquire(if90id, unlimitedDimId = iom_file(kiomid)%iduld), clinfo) 
    173176         IF( iom_file(kiomid)%iduld .GE. 0 ) THEN 
     
    546549      INTEGER, DIMENSION(4) :: idimid               ! dimensions id 
    547550      CHARACTER(LEN=256)    :: clinfo               ! info character 
    548       CHARACTER(LEN= 12), DIMENSION(5) :: cltmp     ! temporary character 
    549551      INTEGER               :: if90id               ! nf90 file identifier 
    550       INTEGER               :: idmy                 ! dummy variable 
    551552      INTEGER               :: itype                ! variable type 
    552553      INTEGER, DIMENSION(4) :: ichunksz             ! NetCDF4 chunk sizes. Will be computed using 
     
    557558      !                                             ! when appropriate (currently chunking is applied to 4d fields only) 
    558559      INTEGER               :: idlv                 ! local variable 
    559       INTEGER               :: idim3                ! id of the third dimension 
    560560      !--------------------------------------------------------------------- 
    561561      ! 
     
    571571         ENDIF 
    572572         ! define the dimension variables if it is not already done 
    573          ! Warning: we must use the same character length in an array constructor (at least for gcc compiler) 
    574          cltmp = (/ 'nav_lon     ', 'nav_lat     ', 'nav_lev     ', 'time_counter', 'numcat      ' /)    
    575          CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(1)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(1) ), clinfo) 
    576          CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(2)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(2) ), clinfo) 
    577          CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(3)), NF90_FLOAT , (/ 3    /), iom_file(kiomid)%nvid(3) ), clinfo) 
    578          CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(4)), NF90_DOUBLE, (/ 4    /), iom_file(kiomid)%nvid(4) ), clinfo) 
     573         DO jd = 1, 2 
     574            CALL iom_nf90_check(NF90_INQUIRE_DIMENSION(if90id,jd,iom_file(kiomid)%cn_var(jd),iom_file(kiomid)%dimsz(jd,jd)),clinfo) 
     575            CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(iom_file(kiomid)%cn_var(jd)), NF90_FLOAT , (/ 1, 2 /),   & 
     576               &                              iom_file(kiomid)%nvid(jd) ), clinfo) 
     577         END DO 
     578         iom_file(kiomid)%dimsz(2,1) = iom_file(kiomid)%dimsz(2,2)   ! second dim of first  variable 
     579         iom_file(kiomid)%dimsz(1,2) = iom_file(kiomid)%dimsz(1,1)   ! first  dim of second variable 
     580         DO jd = 3, 4 
     581            CALL iom_nf90_check(NF90_INQUIRE_DIMENSION(if90id,jd,iom_file(kiomid)%cn_var(jd),iom_file(kiomid)%dimsz(1,jd)), clinfo) 
     582            CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(iom_file(kiomid)%cn_var(jd)), NF90_FLOAT , (/ jd   /),   & 
     583               &                              iom_file(kiomid)%nvid(jd) ), clinfo) 
     584         END DO 
    579585         ! update informations structure related the dimension variable we just added... 
    580586         iom_file(kiomid)%nvars       = 4 
    581587         iom_file(kiomid)%luld(1:4)   = (/ .FALSE., .FALSE., .FALSE., .TRUE. /) 
    582          iom_file(kiomid)%cn_var(1:4) = cltmp(1:4) 
    583588         iom_file(kiomid)%ndims(1:4)  = (/ 2, 2, 1, 1 /) 
    584          IF( NF90_INQ_DIMID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN   ! add a 5th variable corresponding to the 5th dimension 
    585             CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(5)), NF90_FLOAT , (/ 5 /), iom_file(kiomid)%nvid(5) ), clinfo) 
    586             iom_file(kiomid)%nvars     = 5 
    587             iom_file(kiomid)%luld(5)   = .FALSE. 
    588             iom_file(kiomid)%cn_var(5) = cltmp(5) 
    589             iom_file(kiomid)%ndims(5)  = 1 
    590          ENDIF 
    591          ! trick: defined to 0 to say that dimension variables are defined but not yet written 
    592          iom_file(kiomid)%dimsz(1, 1)  = 0    
    593589         IF(lwp) WRITE(numout,*) TRIM(clinfo)//' define dimension variables done' 
    594590      ENDIF 
     
    611607         IF(     PRESENT(pv_r0d) ) THEN   ;   idims = 0 
    612608         ELSEIF( PRESENT(pv_r1d) ) THEN 
    613             IF(( SIZE(pv_r1d,1) == jpk ).OR.( SIZE(pv_r1d,1) == jpka )) THEN   ;   idim3 = 3 
    614             ELSE                                                               ;   idim3 = 5 
    615             ENDIF 
    616                                               idims = 2   ;   idimid(1:idims) = (/idim3,4/) 
    617          ELSEIF( PRESENT(pv_r2d) ) THEN   ;   idims = 3   ;   idimid(1:idims) = (/1,2  ,4/) 
     609                                              idims = 2   ;   idimid(1:idims) = (/3,4/) 
     610         ELSEIF( PRESENT(pv_r2d) ) THEN   ;   idims = 3   ;   idimid(1:idims) = (/1,2,4/) 
    618611         ELSEIF( PRESENT(pv_r3d) ) THEN 
    619             IF(( SIZE(pv_r3d,3) == jpk ).OR.( SIZE(pv_r3d,3) == jpka )) THEN   ;   idim3 = 3 
    620             ELSE                                                               ;   idim3 = 5 
    621             ENDIF 
    622                                               idims = 4   ;   idimid(1:idims) = (/1,2,idim3,4/) 
     612                                              idims = 4   ;   idimid(1:idims) = (/1,2,3,4/) 
    623613         ENDIF 
    624614         IF( PRESENT(ktype) ) THEN   ! variable external type 
     
    695685            ! ============= 
    696686            ! trick: is defined to 0 => dimension variable are defined but not yet written 
    697             IF( iom_file(kiomid)%dimsz(1, 1) == 0 ) THEN 
    698                CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lon'     , idmy )         , clinfo ) 
    699                CALL iom_nf90_check( NF90_PUT_VAR  ( if90id, idmy, glamt(ix1:ix2, iy1:iy2) ), clinfo ) 
    700                CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lat'     , idmy )         , clinfo ) 
    701                CALL iom_nf90_check( NF90_PUT_VAR  ( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo ) 
    702                CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lev'     , idmy ), clinfo ) 
    703                IF (iom_file(kiomid)%nlev == jpka) THEN   ;   CALL iom_nf90_check( NF90_PUT_VAR  ( if90id, idmy,  ght_abl), clinfo ) 
    704                ELSE                                      ;   CALL iom_nf90_check( NF90_PUT_VAR  ( if90id, idmy, gdept_1d), clinfo ) 
    705                ENDIF 
    706                IF( NF90_INQ_VARID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN 
    707                   CALL iom_nf90_check( NF90_PUT_VAR  ( if90id, idmy, (/ (idlv, idlv = 1,iom_file(kiomid)%nlev) /)), clinfo ) 
    708                ENDIF 
    709                ! +++ WRONG VALUE: to be improved but not really useful... 
    710                CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'time_counter', idmy ), clinfo ) 
    711                CALL iom_nf90_check( NF90_PUT_VAR( if90id, idmy, kt                      ), clinfo )    
    712                ! update the values of the variables dimensions size 
    713                CALL iom_nf90_check( NF90_INQUIRE_DIMENSION( if90id, 1, len = iom_file(kiomid)%dimsz(1,1) ), clinfo ) 
    714                CALL iom_nf90_check( NF90_INQUIRE_DIMENSION( if90id, 2, len = iom_file(kiomid)%dimsz(2,1) ), clinfo ) 
    715                iom_file(kiomid)%dimsz(1:2, 2) = iom_file(kiomid)%dimsz(1:2, 1) 
    716                CALL iom_nf90_check( NF90_INQUIRE_DIMENSION( if90id, 3, len = iom_file(kiomid)%dimsz(1,3) ), clinfo ) 
    717                iom_file(kiomid)%dimsz(1  , 4) = 1   ! unlimited dimension 
     687            IF( iom_file(kiomid)%dimsz(1, 4) == 0 ) THEN   ! time_counter = 0 
     688               CALL iom_nf90_check(    NF90_PUT_VAR( if90id, 1,                            glamt(ix1:ix2, iy1:iy2) ), clinfo ) 
     689               CALL iom_nf90_check(    NF90_PUT_VAR( if90id, 2,                            gphit(ix1:ix2, iy1:iy2) ), clinfo ) 
     690               SELECT CASE (iom_file(kiomid)%comp) 
     691               CASE ('OCE')   
     692                  CALL iom_nf90_check( NF90_PUT_VAR( if90id, 3,                                           gdept_1d ), clinfo ) 
     693               CASE ('ABL') 
     694                  CALL iom_nf90_check( NF90_PUT_VAR( if90id, 3,                                            ght_abl ), clinfo ) 
     695               CASE DEFAULT 
     696                  CALL iom_nf90_check( NF90_PUT_VAR( if90id, 3, (/ (idlv, idlv = 1,iom_file(kiomid)%dimsz(1,3)) /) ), clinfo ) 
     697               END SELECT 
     698               ! "wrong" value: to be improved but not really useful... 
     699               CALL iom_nf90_check(   NF90_PUT_VAR( if90id, 4,                                                  kt ), clinfo )    
     700               ! update the size of the variable corresponding to the unlimited dimension 
     701               iom_file(kiomid)%dimsz(1, 4) = 1   ! so we don't enter this IF case any more... 
    718702               IF(lwp) WRITE(numout,*) TRIM(clinfo)//' write dimension variables done' 
    719703            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.