Changeset 745


Ignore:
Timestamp:
2007-12-06T18:02:32+01:00 (14 years ago)
Author:
smasson
Message:

by default stop if variable doesn't exist, see ticket:21

Location:
trunk/NEMO/OPA_SRC/IOM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/IOM/iom.F90

    r742 r745  
    247247 
    248248 
    249    FUNCTION iom_varid ( kiomid, cdvar, kdimsz 
     249   FUNCTION iom_varid ( kiomid, cdvar, kdimsz, ldstop 
    250250      !!----------------------------------------------------------------------- 
    251251      !!                  ***  FUNCTION  iom_varid  *** 
     
    256256      CHARACTER(len=*)     , INTENT(in   )           ::   cdvar    ! name of the variable 
    257257      INTEGER, DIMENSION(:), INTENT(  out), OPTIONAL ::   kdimsz   ! size of the dimensions 
     258      LOGICAL              , INTENT(in   ), OPTIONAL ::   ldstop   ! stop if looking for non-existing variable (default = .TRUE.) 
    258259      ! 
    259260      INTEGER                        ::   iom_varid, iiv, i_nvd 
    260261      LOGICAL                        ::   ll_fnd 
    261262      CHARACTER(LEN=100)             ::   clinfo                   ! info character 
     263      LOGICAL                        ::   llstop                   ! local definition of ldstop 
    262264      !!----------------------------------------------------------------------- 
    263265      iom_varid = 0                         ! default definition 
     266      ! do we call ctl_stop if we look for non-existing variable? 
     267      IF( PRESENT(ldstop) ) THEN   ;   llstop = ldstop 
     268      ELSE                         ;   llstop = .TRUE. 
     269      ENDIF 
    264270      ! 
    265271      IF( kiomid > 0 ) THEN 
     
    281287                  SELECT CASE (iom_file(kiomid)%iolib) 
    282288                  CASE (jpioipsl )   ;   iom_varid = iom_ioipsl_varid( kiomid, cdvar, iiv, kdimsz ) 
    283                   CASE (jpnf90   )   ;   iom_varid = iom_nf90_varid kiomid, cdvar, iiv, kdimsz ) 
    284                   CASE (jprstdimg)   ;   iom_varid = 0   ! all variables are listed in iom_file 
     289                  CASE (jpnf90   )   ;   iom_varid = iom_nf90_varid  ( kiomid, cdvar, iiv, kdimsz ) 
     290                  CASE (jprstdimg)   ;   iom_varid = -1   ! all variables are listed in iom_file 
    285291                  CASE DEFAULT    
    286292                     CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     
    290296                        &                         'increase the parameter jpmax_vars') 
    291297               ENDIF 
     298               IF( llstop .AND. iom_varid == -1 )   CALL ctl_stop( TRIM(clinfo)//' not found' )  
    292299            ELSE 
    293300               iom_varid = iiv 
     
    697704      IF( kiomid > 0 ) THEN 
    698705         IF( iom_file(kiomid)%nfid > 0 ) THEN 
    699             ivid = iom_varid(kiomid, cdvar) 
     706            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    700707            SELECT CASE (iom_file(kiomid)%iolib) 
    701708            CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
     
    719726      IF( kiomid > 0 ) THEN 
    720727         IF( iom_file(kiomid)%nfid > 0 ) THEN 
    721             ivid = iom_varid(kiomid, cdvar) 
     728            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    722729            SELECT CASE (iom_file(kiomid)%iolib) 
    723730            CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
     
    741748      IF( kiomid > 0 ) THEN 
    742749         IF( iom_file(kiomid)%nfid > 0 ) THEN 
    743             ivid = iom_varid(kiomid, cdvar) 
     750            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    744751            SELECT CASE (iom_file(kiomid)%iolib) 
    745752            CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
     
    763770      IF( kiomid > 0 ) THEN 
    764771         IF( iom_file(kiomid)%nfid > 0 ) THEN 
    765             ivid = iom_varid(kiomid, cdvar) 
     772            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    766773            SELECT CASE (iom_file(kiomid)%iolib) 
    767774            CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
  • trunk/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r719 r745  
    195195                  &                       'increase the parameter jpmax_vars') 
    196196         ENDIF 
    197 !!$                  ELSE   
    198 !!$                     CALL ctl_warn( trim(clinfo), 'Variable '//trim(cdvar)// & 
    199 !!$                        &                         ' is not found in the file '//trim(iom_file(kiomid)%name) ) 
     197      ELSE   
     198         iom_ioipsl_varid = -1   !   variable not found, return error code: -1 
    200199      ENDIF 
    201200      ! 
  • trunk/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r719 r745  
    206206            ENDIF 
    207207         ENDIF 
    208 !!$                  ELSE   
    209 !!$                     CALL ctl_warn( trim(clinfo), 'Variable '//trim(cdvar)// & 
    210 !!$                        &                         ' is not found in the file '//trim(iom_file(kiomid)%name) ) 
     208      ELSE   
     209         iom_nf90_varid = -1   !   variable not found, return error code: -1 
    211210      ENDIF 
    212211      ! 
Note: See TracChangeset for help on using the changeset viewer.