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 10115 for NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/TOOLS/SIREN/src/iom_cdf.f90 – NEMO

Ignore:
Timestamp:
2018-09-12T15:59:13+02:00 (6 years ago)
Author:
cbricaud
Message:

phase 3.6 coarsening branch with nemo_3.6_rev9192

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r5003_MERCATOR6_CRS/NEMOGCM/TOOLS/SIREN/src/iom_cdf.f90

    r7261 r10115  
    316316   !> @author J.Paul 
    317317   !> @date November, 2013 - Initial Version 
     318   !> @date October, 2016 
     319   !> - define cdf4 as cdf. 
    318320   ! 
    319321   !> @param[inout] td_file   file structure 
     
    340342            td_file%c_type='cdf' 
    341343         CASE(nf90_format_netcdf4, nf90_format_netcdf4_classic) 
    342             td_file%c_type='cdf4' 
     344            !td_file%c_type='cdf4' 
     345            td_file%c_type='cdf' 
    343346      END SELECT 
     347      CALL logger_debug("IOM CDF GET INFO: type "//TRIM(td_file%c_type))  
    344348 
    345349      ! record header infos 
     
    351355   !> reorder dimension to ('x', 'y', 'z', 't'). 
    352356   !> The dimension structure inside file structure is then completed. 
    353    ! 
    354    !> @author J.Paul 
    355    !> @date November, 2013 - Initial Version 
    356    ! 
     357   !> 
     358   !> @author J.Paul 
     359   !> @date November, 2013 - Initial Version 
     360   !> @date October, 2016 
     361   !> - check unknown dimension 
     362   !> 
    357363   !> @param[inout] td_file   file structure 
    358364   !------------------------------------------------------------------- 
     
    375381 
    376382      IF( td_file%i_ndim > 0 )THEN 
     383 
    377384         ii=1 
    378385         DO ji = 1, td_file%i_ndim 
    379386            ! read dimension information 
    380387            tl_dim=iom_cdf_read_dim( td_file, ji) 
    381             IF( .NOT. dim_is_dummy(tl_dim) )THEN 
     388            ! sname == 'u' if dimension is unknown (not to be used) 
     389            IF( TRIM(tl_dim%c_sname) /= 'u' )THEN 
    382390               IF( ii > ip_maxdim )THEN 
    383391                  CALL logger_fatal("IOM CDF OPEN: too much dimension "//& 
    384                   & "to be read. you should remove dummy dimension using "//& 
     392                  & "to be read. you could choose dimension to be used. see "//& 
    385393                  & " configuration file") 
    386394               ENDIF 
     
    395403            &  " IOM CDF GET FILE DIM: there is no unlimited dimension in file "//& 
    396404            &  TRIM(td_file%c_name)) 
    397          ELSE 
    398             td_file%t_dim( td_file%i_uldid )%l_uld=.TRUE. 
     405         !ELSE 
     406         !   td_file%t_dim( td_file%i_uldid )%l_uld=.TRUE. 
    399407         ENDIF 
    400408 
     
    466474   !> The variable structure inside file structure is then completed. 
    467475   !> @note variable value are not read ! 
    468    ! 
     476   !> 
    469477   !> @author J.Paul 
    470478   !> @date November, 2013 - Initial Version 
     
    473481   !> @date January, 2016 
    474482   !> - increment n3d for 4D variable 
    475    ! 
     483   !> @date October, 2016 
     484   !> - check variable to be used (variable's dimension allowed and variable 
     485   !> not "dummy") 
     486   !> 
    476487   !> @param[inout] td_file   file structure 
    477488   !------------------------------------------------------------------- 
     
    501512         il_nvar=td_file%i_nvar 
    502513         ALLOCATE(tl_var(il_nvar)) 
    503          ii=0 
    504514         DO ji = 1, il_nvar 
    505515           ! read variable information 
    506516           tl_var(ji)=iom_cdf__read_var_meta( td_file, ji)  
    507            IF( .NOT. var_is_dummy(tl_var(ji)) )THEN 
    508               ii=ii+1 
    509            ENDIF 
    510517         ENDDO 
    511518 
    512519         ! update number of variable used 
    513          td_file%i_nvar=ii 
     520         td_file%i_nvar=COUNT(tl_var(:)%l_use) 
    514521 
    515522         ALLOCATE(td_file%t_var(td_file%i_nvar)) 
     
    517524         ii=0 
    518525         DO ji = 1, il_nvar 
    519             IF( .NOT. var_is_dummy(tl_var(ji)) )THEN 
     526            IF( tl_var(ji)%l_use )THEN 
    520527               ii=ii+1 
    521528               td_file%t_var(ii)=var_copy(tl_var(ji)) 
     
    552559                     td_file%i_timeid=ji 
    553560                  ELSE 
     561                     IF( td_file%i_timeid /= ji )THEN 
     562                        CALL logger_warn("IOM CDF GET FILE VAR: find more "//& 
     563                        &                 "than one time variable in file "//& 
     564                        &                 TRIM(td_file%c_name)//". see "//& 
     565                        &                 "dummy.cfg configuration file to"//& 
     566                        &                 " not used dummy variables.") 
     567                     ENDIF 
    554568                     il_attid=0 
    555569                     IF( ASSOCIATED(td_file%t_var(ii)%t_att) )THEN 
     
    558572                     IF( il_attid /= 0 )THEN 
    559573                        td_file%i_timeid=ji 
    560                      !ELSE 
    561                      !   CALL logger_error("IOM CDF GET FILE VAR: find more "//& 
    562                      !   &                 "than one time variable in file "//& 
    563                      !   &                 TRIM(td_file%c_name) ) 
    564574                     ENDIF 
    565575                  ENDIF 
     
    652662         &  " IOM CDF READ DIM: no id associated to file "//TRIM(td_file%c_name)) 
    653663 
    654       ELSE       
     664      ELSE 
    655665 
    656666         CALL logger_trace( & 
     
    723733   !> @author J.Paul 
    724734   !> @date November, 2013 - Initial Version 
     735   !> @date November 2017 
     736   !> - check if cl_value is not bug  
    725737   ! 
    726738   !> @param[in] td_file   file structure 
     
    793805 
    794806            CASE(NF90_CHAR) 
     807               CALL logger_debug( " IOM CDF READ ATT: get NF90_CHAR ") 
    795808 
    796809               ! check string lengths 
     
    809822                  CALL iom_cdf__check(il_status,"IOM CDF READ ATT: ") 
    810823 
     824                  ! check cl_value 
     825                  IF( LLT(cl_value,'') ) cl_value = '' 
    811826                  iom_cdf__read_att_name=att_init(cl_name, cl_value) 
    812827 
     
    814829          
    815830            CASE(NF90_BYTE) 
     831               CALL logger_debug( " IOM CDF READ ATT: get NF90_BYTE ") 
    816832 
    817833               ALLOCATE( bl_value( il_len), & 
     
    837853 
    838854            CASE(NF90_SHORT) 
     855               CALL logger_debug( " IOM CDF READ ATT: get NF90_SHORT ") 
    839856 
    840857               ALLOCATE( sl_value( il_len), & 
     
    861878 
    862879            CASE(NF90_INT) 
     880               CALL logger_debug( " IOM CDF READ ATT: get NF90_INT ") 
    863881 
    864882               ALLOCATE( il_value( il_len), & 
     
    884902 
    885903            CASE(NF90_FLOAT) 
     904               CALL logger_debug( " IOM CDF READ ATT: get NF90_FLOAT ") 
    886905 
    887906               ALLOCATE( fl_value( il_len), & 
     
    908927 
    909928            CASE(NF90_DOUBLE) 
     929               CALL logger_debug( " IOM CDF READ ATT: get NF90_DOUBLE ") 
    910930 
    911931               ALLOCATE( dl_value( il_len), & 
     
    14131433         ENDDO 
    14141434 
     1435         !! check if variable is dummy 
     1436         IF( var_is_dummy(iom_cdf__read_var_meta) )THEN 
     1437            iom_cdf__read_var_meta%l_use=.FALSE. 
     1438         ENDIF 
     1439 
     1440         !! check if all dimensions are allowed 
     1441         DO ji=1,il_ndim 
     1442            IF( ALL(td_file%t_dim(:)%i_id /= il_dimid(ji)) )THEN 
     1443               iom_cdf__read_var_meta%l_use=.FALSE. 
     1444            ENDIF 
     1445         ENDDO 
     1446 
    14151447         ! clean 
    14161448         CALL dim_clean(tl_dim(:)) 
     
    14841516      ELSE IF( id_ndim > 0 )THEN 
    14851517 
    1486  
    14871518         ii=1 
    14881519         DO ji = 1, id_ndim 
    14891520 
    1490             !!! check no dummy dimension to be used 
     1521            ! check if dimension to be used, is allowed 
    14911522            IF( ANY(td_file%t_dim(:)%i_id == id_dimid(ji)) )THEN 
    14921523               IF( ii > ip_maxdim )THEN 
     
    15041535               tl_dim(ii) = dim_init( td_file%t_dim(il_xyzt2(ii))%c_name, & 
    15051536               &                      td_file%t_dim(il_xyzt2(ii))%i_len ) 
    1506              
     1537 
    15071538               ii=ii+1 
    15081539            ELSE 
     
    20802111                  & 'gcost','gcosu','gcosv','gcosf', & 
    20812112                  & 'gsint','gsinu','gsinv','gsinf', & 
    2082                   & 'mbathy','misf','isf_draft',     & 
     2113                  & 'mbathy','misf','isf_draft','isfdraft',     & 
    20832114                  & 'hbatt','hbatu','hbatv','hbatf', & 
    20842115                  & 'gsigt','gsigu','gsigv','gsigf', & 
     
    21892220         CALL iom_cdf__check(il_status,"IOM CDF WRITE VAR DEF: ") 
    21902221      ENDIF 
     2222      CALL logger_debug("IOM CDF WRITE VAR DEF: type = "//TRIM(fct_str(tl_var%i_type))) 
    21912223 
    21922224      ! remove unuseful attribute 
Note: See TracChangeset for help on using the changeset viewer.