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 4245 for branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM – NEMO

Ignore:
Timestamp:
2013-11-19T12:19:21+01:00 (10 years ago)
Author:
cetlod
Message:

dev_locean_cmcc_ingv_ukmo_merc : merge in the MERC_UKMO dev branch with trunk rev 4119

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

Legend:

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

    r4205 r4245  
    479479   !!                   INTERFACE iom_get 
    480480   !!---------------------------------------------------------------------- 
    481    SUBROUTINE iom_g0d( kiomid, cdvar, pvar ) 
     481   SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 
    482482      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    483483      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
    484484      REAL(wp)        , INTENT(  out)                 ::   pvar      ! read field 
    485       ! 
    486       INTEGER               :: idvar   ! variable id 
     485      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
     486      ! 
     487      INTEGER                                         ::   idvar     ! variable id 
     488      INTEGER                                         ::   idmspc    ! number of spatial dimensions 
     489      INTEGER         , DIMENSION(1)                  ::   itime     ! record number 
     490      CHARACTER(LEN=100)                              ::   clinfo    ! info character 
     491      CHARACTER(LEN=100)                              ::   clname    ! file name 
     492      CHARACTER(LEN=1)                                ::   cldmspc   ! 
     493      ! 
     494      itime = 1 
     495      IF( PRESENT(ktime) ) itime = ktime 
     496      ! 
     497      clname = iom_file(kiomid)%name 
     498      clinfo = '          iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 
    487499      ! 
    488500      IF( kiomid > 0 ) THEN 
    489501         idvar = iom_varid( kiomid, cdvar ) 
    490502         IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 
     503            idmspc = iom_file ( kiomid )%ndims( idvar ) 
     504            IF( iom_file(kiomid)%luld(idvar) )  idmspc = idmspc - 1 
     505            WRITE(cldmspc , fmt='(i1)') idmspc 
     506            IF( idmspc > 0 )  CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 
     507                                 &                         'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 
     508                                 &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    491509            SELECT CASE (iom_file(kiomid)%iolib) 
    492             CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar ) 
    493             CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar ) 
     510            CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar, itime ) 
     511            CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar, itime ) 
    494512            CASE (jprstdimg)   ;   CALL iom_rstdimg_get( kiomid, idvar, pvar ) 
    495513            CASE DEFAULT     
     
    656674               ELSE 
    657675                  CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,'         ,   & 
    658                      &                         'we do not accept data with more than '//cldmspc//' spatial dimension',   & 
     676                     &                         'we do not accept data with '//cldmspc//' spatial dimensions',   & 
    659677                     &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    660678               ENDIF 
     
    768786 
    769787         IF( istop == nstop ) THEN   ! no additional errors until this point... 
    770             IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i4,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
     788            IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
    771789           
    772790            !--- overlap areas and extra hallows (mpp) 
  • branches/2013/dev_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r2715 r4245  
    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_LOCEAN_CMCC_INGV_MERC_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r4161 r4245  
    217217         CALL iom_nf90_check(NF90_Inquire_Variable(if90id, ivarid, dimids = idimid(1:i_nvd)), clinfo)   ! dimensions ids 
    218218         iom_file(kiomid)%luld(kiv) = .FALSE.   ! default value 
     219         iom_file(kiomid)%dimsz(:,kiv) = 0   ! reset dimsz in case previously used 
    219220         DO ji = 1, i_nvd                       ! dimensions size 
    220221            CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, idimid(ji), len = iom_file(kiomid)%dimsz(ji,kiv)), clinfo)    
     
    251252 
    252253 
    253    SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar ) 
     254   SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 
    254255      !!----------------------------------------------------------------------- 
    255256      !!                  ***  ROUTINE  iom_nf90_g0d  *** 
     
    257258      !! ** Purpose : read a scalar with NF90 
    258259      !!----------------------------------------------------------------------- 
    259       INTEGER , INTENT(in   ) ::   kiomid   ! Identifier of the file 
    260       INTEGER , INTENT(in   ) ::   kvid     ! variable id 
    261       REAL(wp), INTENT(  out) ::   pvar     ! read field 
     260      INTEGER ,               INTENT(in   )            ::   kiomid   ! Identifier of the file 
     261      INTEGER ,               INTENT(in   )            ::   kvid     ! variable id 
     262      REAL(wp),               INTENT(  out)            ::   pvar     ! read field 
     263      INTEGER , DIMENSION(1), INTENT(in   ), OPTIONAL  ::   kstart   ! start position of the reading in each axis 
    262264      ! 
    263265      CHARACTER(LEN=100)      ::   clinfo   ! info character 
    264266      !--------------------------------------------------------------------- 
    265267      clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 
    266       CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar), clinfo ) 
     268      CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 
    267269      !  
    268270   END SUBROUTINE iom_nf90_g0d 
Note: See TracChangeset for help on using the changeset viewer.