Changeset 911 for trunk/NEMO/OPA_SRC/IOM
- Timestamp:
- 2008-04-28T11:31:32+02:00 (16 years ago)
- Location:
- trunk/NEMO/OPA_SRC/IOM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/IOM/iom.F90
r752 r911 6 6 !! History : 9.0 ! 05 12 (J. Belier) Original code 7 7 !! 9.0 ! 06 02 (S. Masson) Adaptation to NEMO 8 !! " ! 07 07 (D. Storkey) Changes to iom_gettime 8 9 !!-------------------------------------------------------------------- 9 10 !!gm caution add !DIR nec: improved performance to be checked as well as no result changes … … 646 647 647 648 648 SUBROUTINE iom_gettime( kiomid, cdvar, ptime)649 SUBROUTINE iom_gettime( kiomid, ptime, cdvar, kntime, cdunits, cdcalendar ) 649 650 !!-------------------------------------------------------------------- 650 651 !! *** SUBROUTINE iom_gettime *** … … 652 653 !! ** Purpose : read the time axis cdvar in the file 653 654 !!-------------------------------------------------------------------- 654 INTEGER , INTENT(in ) :: kiomid ! file Identifier 655 CHARACTER(len=*) , INTENT(in ) :: cdvar ! time axis name 656 REAL(wp), DIMENSION(:), INTENT( out) :: ptime ! the time axis 657 ! 655 INTEGER , INTENT(in ) :: kiomid ! file Identifier 656 REAL(wp), DIMENSION(:) , INTENT( out) :: ptime ! the time axis 657 CHARACTER(len=*), OPTIONAL , INTENT(in ) :: cdvar ! time axis name 658 INTEGER , OPTIONAL , INTENT( out) :: kntime ! number of times in file 659 CHARACTER(len=*), OPTIONAL , INTENT( out) :: cdunits ! units attribute of time coordinate 660 CHARACTER(len=*), OPTIONAL , INTENT( out) :: cdcalendar ! calendar attribute of 661 ! 662 INTEGER, DIMENSION(1) :: kdimsz 658 663 INTEGER :: idvar ! id of the variable 664 CHARACTER(LEN=32) :: tname ! local name of time coordinate 659 665 CHARACTER(LEN=100) :: clinfo ! info character 660 666 !--------------------------------------------------------------------- 661 667 ! 662 IF( kiomid > 0 ) THEN 663 clinfo = 'iom_gettime, file: '//trim(iom_file(kiomid)%name)//', var: '//trim(cdvar) 664 idvar = iom_varid( kiomid, cdvar ) 668 IF ( PRESENT(cdvar) ) THEN 669 tname = cdvar 670 ELSE 671 tname = iom_file(kiomid)%uldname 672 ENDIF 673 IF( kiomid > 0 ) THEN 674 clinfo = 'iom_gettime, file: '//trim(iom_file(kiomid)%name)//', var: '//trim(tname) 675 IF ( PRESENT(kntime) ) THEN 676 idvar = iom_varid( kiomid, tname, kdimsz = kdimsz ) 677 kntime = kdimsz(1) 678 ELSE 679 idvar = iom_varid( kiomid, tname ) 680 ENDIF 665 681 ! 666 682 ptime(:) = 0. ! default definition … … 670 686 IF( iom_file(kiomid)%dimsz(1,idvar) == size(ptime) ) THEN 671 687 SELECT CASE (iom_file(kiomid)%iolib) 672 CASE (jpioipsl ) ; CALL iom_ioipsl_gettime( kiomid, idvar, ptime )673 CASE (jpnf90 ) ; CALL iom_nf90_gettime( kiomid, idvar, ptime )688 CASE (jpioipsl ) ; CALL iom_ioipsl_gettime( kiomid, idvar, ptime, cdunits, cdcalendar ) 689 CASE (jpnf90 ) ; CALL iom_nf90_gettime( kiomid, idvar, ptime, cdunits, cdcalendar ) 674 690 CASE (jprstdimg) ; CALL ctl_stop( TRIM(clinfo)//' case IO library == jprstdimg not coded...' ) 675 691 CASE DEFAULT -
trunk/NEMO/OPA_SRC/IOM/iom_def.F90
r839 r911 5 5 !!==================================================================== 6 6 !! History : 9.0 ! 06 09 (S. Masson) Original code 7 !! " ! 07 07 (D. Storkey) Add uldname 7 8 !!-------------------------------------------------------------------- 8 9 !!--------------------------------------------------------------------------------- … … 57 58 INTEGER :: iduld !: id of the unlimited dimension 58 59 INTEGER :: irec !: writing record position 60 CHARACTER(LEN=32) :: uldname !: name of the unlimited dimension 59 61 CHARACTER(LEN=32), DIMENSION(jpmax_vars) :: cn_var !: names of the variables 60 62 INTEGER, DIMENSION(jpmax_vars) :: nvid !: id of the variables -
trunk/NEMO/OPA_SRC/IOM/iom_ioipsl.F90
r745 r911 6 6 !! History : 9.0 ! 05 12 (J. Belier) Original code 7 7 !! 9.0 ! 06 02 (S. Masson) Adaptation to NEMO 8 !! " ! 07 07 (D. Storkey) Changes to iom_ioipsl_gettime 8 9 !!-------------------------------------------------------------------- 9 10 !!gm caution add !DIR nec: improved performance to be checked as well as no result changes … … 254 255 255 256 256 SUBROUTINE iom_ioipsl_gettime( kiomid, kvid, ptime )257 SUBROUTINE iom_ioipsl_gettime( kiomid, kvid, ptime, cdunits, cdcalendar ) 257 258 !!-------------------------------------------------------------------- 258 259 !! *** SUBROUTINE iom_gettime *** … … 260 261 !! ** Purpose : read the time axis kvid in the file with IOIPSL (only fliocom module) 261 262 !!-------------------------------------------------------------------- 262 INTEGER , INTENT(in ) :: kiomid ! file Identifier 263 INTEGER , INTENT(in ) :: kvid ! variable id 264 REAL(wp), DIMENSION(:), INTENT( out) :: ptime ! the time axis 263 INTEGER , INTENT(in ) :: kiomid ! file Identifier 264 INTEGER , INTENT(in ) :: kvid ! variable id 265 REAL(wp), DIMENSION(:) , INTENT( out) :: ptime ! the time axis 266 CHARACTER(len=*), OPTIONAL, INTENT( out) :: cdunits ! units attribute 267 CHARACTER(len=*), OPTIONAL, INTENT( out) :: cdcalendar ! calendar attribute 265 268 !--------------------------------------------------------------------- 266 269 ! 267 270 CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), ptime(:), & 268 271 & start=(/ 1 /), count=(/ iom_file(kiomid)%dimsz(1, kvid) /) ) 272 IF ( PRESENT(cdunits) ) THEN 273 CALL fliogeta( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), "units", cdunits ) 274 ENDIF 275 IF ( PRESENT(cdcalendar) ) THEN 276 CALL fliogeta( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), "calendar", cdcalendar ) 277 ENDIF 269 278 ! 270 279 END SUBROUTINE iom_ioipsl_gettime -
trunk/NEMO/OPA_SRC/IOM/iom_nf90.F90
r745 r911 6 6 !! History : 9.0 ! 05 12 (J. Belier) Original code 7 7 !! 9.0 ! 06 02 (S. Masson) Adaptation to NEMO 8 !! " ! 07 07 (D. Storkey) Changes to iom_nf90_gettime 8 9 !!-------------------------------------------------------------------- 9 10 !!gm caution add !DIR nec: improved performance to be checked as well as no result changes … … 121 122 iom_file(kiomid)%irec = -1 ! useless for NetCDF files, used to know if the file is in define mode 122 123 CALL iom_nf90_check(NF90_Inquire(if90id, unlimitedDimId = iom_file(kiomid)%iduld), clinfo) 124 IF ( iom_file(kiomid)%iduld .GE. 0 ) THEN 125 CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, iom_file(kiomid)%iduld, & 126 & name = iom_file(kiomid)%uldname), clinfo) 127 ENDIF 123 128 IF(lwp) WRITE(numout,*) ' ---> '//TRIM(cdname)//' OK' 124 129 ELSE … … 272 277 273 278 274 SUBROUTINE iom_nf90_gettime( kiomid, kvid, ptime )279 SUBROUTINE iom_nf90_gettime( kiomid, kvid, ptime, cdunits, cdcalendar ) 275 280 !!-------------------------------------------------------------------- 276 281 !! *** SUBROUTINE iom_gettime *** … … 278 283 !! ** Purpose : read the time axis kvid in the file with NF90 279 284 !!-------------------------------------------------------------------- 280 INTEGER , INTENT(in ) :: kiomid ! file Identifier 281 INTEGER , INTENT(in ) :: kvid ! variable id 282 REAL(wp), DIMENSION(:), INTENT( out) :: ptime ! the time axis 285 INTEGER , INTENT(in ) :: kiomid ! file Identifier 286 INTEGER , INTENT(in ) :: kvid ! variable id 287 REAL(wp), DIMENSION(:) , INTENT( out) :: ptime ! the time axis 288 CHARACTER(len=*), OPTIONAL, INTENT( out) :: cdunits ! units attribute 289 CHARACTER(len=*), OPTIONAL, INTENT( out) :: cdcalendar ! calendar attribute 283 290 ! 284 291 CHARACTER(LEN=100) :: clinfo ! info character … … 287 294 CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), ptime(:), & 288 295 & start=(/ 1 /), count=(/ iom_file(kiomid)%dimsz(1, kvid) /)), clinfo) 296 IF ( PRESENT(cdunits) ) THEN 297 CALL iom_nf90_check(NF90_GET_ATT(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), "units", & 298 & values=cdunits), clinfo) 299 ENDIF 300 IF ( PRESENT(cdcalendar) ) THEN 301 CALL iom_nf90_check(NF90_GET_ATT(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), "calendar", & 302 & values=cdcalendar), clinfo) 303 ENDIF 289 304 ! 290 305 END SUBROUTINE iom_nf90_gettime
Note: See TracChangeset
for help on using the changeset viewer.