New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4170 for branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM – NEMO

Ignore:
Timestamp:
2013-11-08T18:20:28+01:00 (11 years ago)
Author:
rfurner
Message:

merging changes from 3987:4144 dev_r3987_UKMO6_C1D

Location:
branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r3983 r4170  
    463463   !!                   INTERFACE iom_get 
    464464   !!---------------------------------------------------------------------- 
    465    SUBROUTINE iom_g0d( kiomid, cdvar, pvar ) 
     465   SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 
    466466      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    467467      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
    468468      REAL(wp)        , INTENT(  out)                 ::   pvar      ! read field 
    469       ! 
    470       INTEGER               :: idvar   ! variable id 
     469      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
     470      ! 
     471      INTEGER                                         ::   idvar     ! variable id 
     472      INTEGER                                         ::   idmspc    ! number of spatial dimensions 
     473      INTEGER         , DIMENSION(1)                  ::   itime     ! record number 
     474      CHARACTER(LEN=100)                              ::   clinfo    ! info character 
     475      CHARACTER(LEN=100)                              ::   clname    ! file name 
     476      CHARACTER(LEN=1)                                ::   cldmspc   ! 
     477      ! 
     478      itime = 1 
     479      IF( PRESENT(ktime) ) itime = ktime 
     480      ! 
     481      clname = iom_file(kiomid)%name 
     482      clinfo = '          iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 
    471483      ! 
    472484      IF( kiomid > 0 ) THEN 
    473485         idvar = iom_varid( kiomid, cdvar ) 
    474486         IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 
     487            idmspc = iom_file ( kiomid )%ndims( idvar ) 
     488            IF( iom_file(kiomid)%luld(idvar) )  idmspc = idmspc - 1 
     489            WRITE(cldmspc , fmt='(i1)') idmspc 
     490            IF( idmspc > 0 )  CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 
     491                                 &                         'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 
     492                                 &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    475493            SELECT CASE (iom_file(kiomid)%iolib) 
    476             CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar ) 
    477             CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar ) 
     494            CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar, itime ) 
     495            CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar, itime ) 
    478496            CASE (jprstdimg)   ;   CALL iom_rstdimg_get( kiomid, idvar, pvar ) 
    479497            CASE DEFAULT     
     
    640658               ELSE 
    641659                  CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,'         ,   & 
    642                      &                         'we do not accept data with more than '//cldmspc//' spatial dimension',   & 
     660                     &                         'we do not accept data with '//cldmspc//' spatial dimensions',   & 
    643661                     &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    644662               ENDIF 
     
    752770 
    753771         IF( istop == nstop ) THEN   ! no additional errors until this point... 
    754             IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i4,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
     772            IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
    755773           
    756774            !--- overlap areas and extra hallows (mpp) 
  • branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r2715 r4170  
    170170            iom_file(kiomid)%cn_var(kiv) = TRIM(cdvar) 
    171171            iom_file(kiomid)%ndims(kiv)  = i_nvd 
     172            iom_file(kiomid)%dimsz(:,kiv) = 0   ! reset dimsz in case previously used 
    172173            CALL flioinqv( ioipslid, cdvar, ll_fnd,   & 
    173174                  &           len_dims = iom_file(kiomid)%dimsz(1:i_nvd,kiv), &   ! dimensions size 
     
    210211 
    211212 
    212    SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar ) 
     213   SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar, kstart ) 
    213214      !!----------------------------------------------------------------------- 
    214215      !!                  ***  ROUTINE  iom_ioipsl_g0d  *** 
     
    216217      !! ** Purpose : read a scalar with IOIPSL (only fliocom module) 
    217218      !!----------------------------------------------------------------------- 
    218       INTEGER , INTENT(in   ) ::   kiomid    ! Identifier of the file 
    219       INTEGER , INTENT(in   ) ::   kvid      ! variable id 
    220       REAL(wp), INTENT(  out) ::   pvar      ! read field 
    221       ! 
    222       CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar ) 
     219      INTEGER ,               INTENT(in   )            ::   kiomid    ! Identifier of the file 
     220      INTEGER ,               INTENT(in   )            ::   kvid      ! variable id 
     221      REAL(wp),               INTENT(  out)            ::   pvar      ! read field 
     222      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart    ! start position of the reading in each axis 
     223      ! 
     224      CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar, kstart ) 
    223225      !  
    224226   END SUBROUTINE iom_ioipsl_g0d 
  • branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r2715 r4170  
    216216         CALL iom_nf90_check(NF90_Inquire_Variable(if90id, ivarid, dimids = idimid(1:i_nvd)), clinfo)   ! dimensions ids 
    217217         iom_file(kiomid)%luld(kiv) = .FALSE.   ! default value 
     218         iom_file(kiomid)%dimsz(:,kiv) = 0   ! reset dimsz in case previously used 
    218219         DO ji = 1, i_nvd                       ! dimensions size 
    219220            CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, idimid(ji), len = iom_file(kiomid)%dimsz(ji,kiv)), clinfo)    
     
    249250 
    250251 
    251    SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar ) 
     252   SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 
    252253      !!----------------------------------------------------------------------- 
    253254      !!                  ***  ROUTINE  iom_nf90_g0d  *** 
     
    255256      !! ** Purpose : read a scalar with NF90 
    256257      !!----------------------------------------------------------------------- 
    257       INTEGER , INTENT(in   ) ::   kiomid   ! Identifier of the file 
    258       INTEGER , INTENT(in   ) ::   kvid     ! variable id 
    259       REAL(wp), INTENT(  out) ::   pvar     ! read field 
     258      INTEGER ,               INTENT(in   )            ::   kiomid   ! Identifier of the file 
     259      INTEGER ,               INTENT(in   )            ::   kvid     ! variable id 
     260      REAL(wp),               INTENT(  out)            ::   pvar     ! read field 
     261      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart   ! start position of the reading in each axis 
    260262      ! 
    261263      CHARACTER(LEN=100)      ::   clinfo   ! info character 
    262264      !--------------------------------------------------------------------- 
    263265      clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 
    264       CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar), clinfo ) 
     266      CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 
    265267      !  
    266268   END SUBROUTINE iom_nf90_g0d 
Note: See TracChangeset for help on using the changeset viewer.