Changeset 4170 for branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM
- Timestamp:
- 2013-11-08T18:20:28+01:00 (11 years ago)
- 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 463 463 !! INTERFACE iom_get 464 464 !!---------------------------------------------------------------------- 465 SUBROUTINE iom_g0d( kiomid, cdvar, pvar )465 SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 466 466 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 467 467 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 468 468 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) 471 483 ! 472 484 IF( kiomid > 0 ) THEN 473 485 idvar = iom_varid( kiomid, cdvar ) 474 486 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' ) 475 493 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 ) 478 496 CASE (jprstdimg) ; CALL iom_rstdimg_get( kiomid, idvar, pvar ) 479 497 CASE DEFAULT … … 640 658 ELSE 641 659 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', & 643 661 & 'Use ncwa -a to suppress the unnecessary dimensions' ) 644 662 ENDIF … … 752 770 753 771 IF( istop == nstop ) THEN ! no additional errors until this point... 754 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i 4,') 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) 755 773 756 774 !--- overlap areas and extra hallows (mpp) -
branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90
r2715 r4170 170 170 iom_file(kiomid)%cn_var(kiv) = TRIM(cdvar) 171 171 iom_file(kiomid)%ndims(kiv) = i_nvd 172 iom_file(kiomid)%dimsz(:,kiv) = 0 ! reset dimsz in case previously used 172 173 CALL flioinqv( ioipslid, cdvar, ll_fnd, & 173 174 & len_dims = iom_file(kiomid)%dimsz(1:i_nvd,kiv), & ! dimensions size … … 210 211 211 212 212 SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar )213 SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar, kstart ) 213 214 !!----------------------------------------------------------------------- 214 215 !! *** ROUTINE iom_ioipsl_g0d *** … … 216 217 !! ** Purpose : read a scalar with IOIPSL (only fliocom module) 217 218 !!----------------------------------------------------------------------- 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 ) 223 225 ! 224 226 END SUBROUTINE iom_ioipsl_g0d -
branches/2013/dev_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90
r2715 r4170 216 216 CALL iom_nf90_check(NF90_Inquire_Variable(if90id, ivarid, dimids = idimid(1:i_nvd)), clinfo) ! dimensions ids 217 217 iom_file(kiomid)%luld(kiv) = .FALSE. ! default value 218 iom_file(kiomid)%dimsz(:,kiv) = 0 ! reset dimsz in case previously used 218 219 DO ji = 1, i_nvd ! dimensions size 219 220 CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, idimid(ji), len = iom_file(kiomid)%dimsz(ji,kiv)), clinfo) … … 249 250 250 251 251 SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar )252 SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 252 253 !!----------------------------------------------------------------------- 253 254 !! *** ROUTINE iom_nf90_g0d *** … … 255 256 !! ** Purpose : read a scalar with NF90 256 257 !!----------------------------------------------------------------------- 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 260 262 ! 261 263 CHARACTER(LEN=100) :: clinfo ! info character 262 264 !--------------------------------------------------------------------- 263 265 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 ) 265 267 ! 266 268 END SUBROUTINE iom_nf90_g0d
Note: See TracChangeset
for help on using the changeset viewer.