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 6625 for branches/UKMO/dev_r5518_v3.4_asm_nemovar_community/NEMOGCM/TOOLS/SIREN/src/variable.f90 – NEMO

Ignore:
Timestamp:
2016-05-26T11:08:07+02:00 (8 years ago)
Author:
kingr
Message:

Rolled back to r6613

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_v3.4_asm_nemovar_community/NEMOGCM/TOOLS/SIREN/src/variable.f90

    r6617 r6625  
    281281!> @date November, 2014  
    282282!> - Fix memory leaks bug 
    283 !> @date June, 2015 
    284 !> - change way to get variable information in namelist 
    285 !> @date July, 2015  
    286 !> - add subroutine var_chg_unit to change unit of output variable 
    287 !> @date Spetember, 2015 
    288 !> - manage useless (dummy) variable 
    289283! 
    290284!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    299293   USE att                             ! attribute manager 
    300294   USE dim                             ! dimension manager 
    301    USE math                            ! mathematical function 
    302295   IMPLICIT NONE 
    303296   ! NOTE_avoid_public_variables_if_possible 
     
    307300 
    308301   PUBLIC :: tg_varextra !< array of variable structure with extra information. 
    309  
    310    PRIVATE :: cm_dumvar  !< dummy variable array 
    311302 
    312303   ! function and subroutine 
     
    327318   PUBLIC :: var_concat        !< concatenate two variables 
    328319   PUBLIC :: var_limit_value   !< forced min and max value 
    329    PUBLIC :: var_chg_unit      !< change variable unit and value 
    330320   PUBLIC :: var_max_dim       !< get array of maximum dimension use 
    331321   PUBLIC :: var_reorder       !< reorder table of value in variable structure 
     
    338328   PUBLIC :: var_chg_extra     !< read variable namelist information, and modify extra information. 
    339329   PUBLIC :: var_check_dim     !< check variable dimension expected 
    340    PUBLIC :: var_get_dummy     !< fill dummy variable array 
    341    PUBLIC :: var_is_dummy      !< check if variable is defined as dummy variable 
    342330 
    343331   PRIVATE :: var__init          ! initialize variable structure without array of value 
     
    394382   PRIVATE :: var__get_max       ! get maximum value from namelist  
    395383   PRIVATE :: var__get_min       ! get minimum value from namelist 
    396    PRIVATE :: var__get_unf       ! get scale factor value from namelist 
    397    PRIVATE :: var__get_unt       ! get unit from namelist 
    398384   PRIVATE :: var__get_interp    ! get interpolation method from namelist 
    399385   PRIVATE :: var__get_extrap    ! get extrapolation method from namelist 
     
    415401      TYPE(TATT), DIMENSION(:), POINTER :: t_att => NULL() !< variable attributes 
    416402      TYPE(TDIM), DIMENSION(ip_maxdim)  :: t_dim           !< variable dimension 
    417   
     403       
    418404      LOGICAL           :: l_file = .FALSE.  !< variable read in a file 
    419405 
     
    428414      REAL(dp)          :: d_min = dp_fill      !< minimum value  
    429415      REAL(dp)          :: d_max = dp_fill      !< maximum value  
    430   
    431       CHARACTER(LEN=lc) :: c_unt = ''           !< new variables units (linked to units factor) 
    432       REAL(dp)          :: d_unf = 1._dp        !< units factor 
    433  
     416       
    434417      !!! netcdf4 
    435418      LOGICAL           :: l_contiguous = .FALSE. !< use contiguous storage or not 
     
    450433   TYPE(TVAR), DIMENSION(:), ALLOCATABLE :: tg_varextra !< array of variable structure with extra information. 
    451434                                                        !< fill when running var_def_extra()  
    452  
    453    CHARACTER(LEN=lc), DIMENSION(ip_maxdum), SAVE :: cm_dumvar !< dummy variable 
    454435 
    455436   INTERFACE var_init 
     
    537518   !> 
    538519   !> @author J.Paul 
    539    !> @date November, 2013 - Initial Version 
     520   !> - November, 2013- Initial Version 
    540521   !> @date November, 2014 
    541522   !> - use function instead of overload assignment operator (to avoid memory leak) 
     
    567548      var__copy_unit%d_min      = td_var%d_min 
    568549      var__copy_unit%d_max      = td_var%d_max 
    569  
    570       var__copy_unit%c_unt      = TRIM(td_var%c_unt) 
    571       var__copy_unit%d_unf      = td_var%d_unf 
    572550 
    573551      var__copy_unit%i_type     = td_var%i_type 
     
    599577      var__copy_unit%c_units    = TRIM(td_var%c_units) 
    600578      var__copy_unit%c_axis     = TRIM(td_var%c_axis) 
    601       var__copy_unit%d_unf      = td_var%d_unf 
    602579      var__copy_unit%d_scf      = td_var%d_scf 
    603580      var__copy_unit%d_ofs      = td_var%d_ofs 
     
    650627   !> 
    651628   !> @author J.Paul 
    652    !> @date November, 2013 - Initial Version 
     629   !> - November, 2013- Initial Version 
    653630   !> @date November, 2014 
    654631   !> - use function instead of overload assignment operator  
     
    679656   !> 
    680657   !> @author J.Paul 
    681    !> @date November, 2013 - Initial Version 
     658   !> - November, 2013- Initial Version 
    682659   !> 
    683660   !> @param[inout] td_var variable strucutre 
     
    718695   ! 
    719696   !> @author J.Paul 
    720    !> @date September, 2014 - Initial Version 
     697   !> - September, 2014- Initial Version 
    721698   ! 
    722699   !> @param[inout] td_var array of variable strucutre 
     
    741718   ! 
    742719   !> @author J.Paul 
    743    !> @date September, 2014 - Initial Version 
     720   !> - September, 2014- Initial Version 
    744721   ! 
    745722   !> @param[inout] td_var array of variable strucutre 
     
    767744   ! 
    768745   !> @author J.Paul 
    769    !> @date September, 2014 - Initial Version 
     746   !> - September, 2014- Initial Version 
    770747   ! 
    771748   !> @param[inout] td_var array of variable strucutre 
     
    811788   !>   - id_id : variable id (read from a file). 
    812789   !>   - id_ew : number of point composing east west wrap band. 
    813    !>   - dd_unf : real(8) value for units factor attribute. 
    814790   !>   - dd_scf : real(8) value for scale factor attribute. 
    815791   !>   - dd_ofs : real(8) value for add offset attribute. 
     
    825801   !>   - cd_extrap  : a array of character defining extrapolation method. 
    826802   !>   - cd_filter  : a array of character defining filtering method. 
    827    !>   - cd_unt : a string character to define output unit 
    828    !>   - dd_unf : real(8) factor applied to change unit 
    829803   !> 
    830804   !>  @note most of these optionals arguments will be inform automatically, 
     
    832806   !> 
    833807   !> @author J.Paul 
    834    !> @date November, 2013 - Initial Version 
    835    !> @date February, 2015  
    836    !> - Bug fix: conversion of the FillValue type (float case) 
    837    !> @date June, 2015  
    838    !> - add unit factor (to change unit) 
     808   !> - November, 2013- Initial Version 
    839809   !> 
    840810   !> @param[in] cd_name         variable name 
     
    863833   !> @param[in] cd_extrap       extrapolation method 
    864834   !> @param[in] cd_filter       filter method 
    865    !> @param[in] cd_unt          new units (linked to units factor) 
    866    !> @param[in] dd_unf          units factor 
    867835   !> @return variable structure 
    868836   !------------------------------------------------------------------- 
     
    875843   &                              ld_contiguous, ld_shuffle,& 
    876844   &                              ld_fletcher32, id_deflvl, id_chunksz, & 
    877    &                              cd_interp, cd_extrap, cd_filter, & 
    878    &                              cd_unt, dd_unf ) 
     845   &                              cd_interp, cd_extrap, cd_filter ) 
    879846      IMPLICIT NONE 
    880847      ! Argument 
     
    904871      CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    905872      CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    906       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    907       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    908873 
    909874 
     
    968933               tl_att=att_init('_FillValue', INT(dd_fill,i4) ) 
    969934            CASE(NF90_FLOAT) 
    970                tl_att=att_init('_FillValue', REAL(dd_fill,sp) ) 
     935               tl_att=att_init('_FillValue', INT(dd_fill,sp) ) 
    971936            CASE DEFAULT ! NF90_DOUBLE 
    972                tl_att=att_init('_FillValue', dd_fill ) 
     937                     tl_att=att_init('_FillValue', dd_fill ) 
    973938         END SELECT 
    974939         CALL var_move_att(var__init, tl_att) 
     
    10731038      ENDIF 
    10741039 
    1075       ! units factor 
    1076       IF( PRESENT(dd_unf) )THEN 
    1077          tl_att=att_init('units_factor',dd_unf) 
    1078          CALL var_move_att(var__init, tl_att) 
    1079       ENDIF 
    1080  
    1081       ! new units (linked to units factor) 
    1082       IF( PRESENT(cd_unt) )THEN 
    1083          tl_att=att_init('new_units',cd_units) 
    1084          CALL var_move_att(var__init, tl_att) 
    1085       ENDIF 
    1086  
    10871040      ! add extra information 
    10881041      CALL var__get_extra(var__init) 
     
    10941047      CALL var_del_att(var__init, 'filter') 
    10951048      CALL var_del_att(var__init, 'src_file') 
    1096       CALL var_del_att(var__init, 'src_i_indices') 
    1097       CALL var_del_att(var__init, 'src_j_indices') 
    10981049      CALL var_del_att(var__init, 'valid_min') 
    10991050      CALL var_del_att(var__init, 'valid_max') 
     
    11211072   ! 
    11221073   !> @author J.Paul 
    1123    !> @date November, 2013 - Initial Version 
    1124    !> @date June, 2015 
    1125    !> - add interp, extrap, and filter argument 
    1126    !> @date July, 2015 
    1127    !> - add unit factor (to change unit) 
    1128    !> 
     1074   !> - November, 2013- Initial Version 
     1075   ! 
    11291076   !> @param[in] cd_name         variable name 
    11301077   !> @param[in] dd_value        1D array of real(8) value 
     
    11531100   !> @param[in] id_deflvl       deflate level from 0 to 9, 0 indicates no deflation is in use 
    11541101   !> @param[in] id_chunksz      chunk size 
    1155    !> @param[in] cd_interp       interpolation method 
    1156    !> @param[in] cd_extrap       extrapolation method 
    1157    !> @param[in] cd_filter       filter method 
    1158    !> @param[in] cd_unt          new units (linked to units factor) 
    1159    !> @param[in] dd_unf          units factor 
    11601102   !> @return variable structure 
    11611103   !------------------------------------------------------------------- 
     
    11681110   &                                    dd_min, dd_max,           & 
    11691111   &                                    ld_contiguous, ld_shuffle,& 
    1170    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    1171    &                                    cd_interp, cd_extrap, cd_filter, & 
    1172    &                                    cd_unt, dd_unf) 
     1112   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    11731113      IMPLICIT NONE 
    11741114      ! Argument 
     
    11981138      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    11991139      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    1200       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    1201       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    1202       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    1203       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    1204       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    12051140 
    12061141      ! local variable 
     
    12581193      &                          ld_fletcher32=ld_fletcher32,        & 
    12591194      &                          id_deflvl=id_deflvl,                & 
    1260       &                          id_chunksz=id_chunksz(:),           & 
    1261       &                          cd_interp=cd_interp(:),             & 
    1262       &                          cd_extrap=cd_extrap(:),             & 
    1263       &                          cd_filter=cd_filter(:),             & 
    1264       &                          cd_unt=cd_unt, dd_unf=dd_unf ) 
     1195      &                          id_chunksz=id_chunksz(:)) 
    12651196    
    12661197      ! add value 
     
    13081239   ! 
    13091240   !> @author J.Paul 
    1310    !> @date November, 2013 - Initial Version 
    1311    !> @date February, 2015  
    1312    !> - bug fix: array initialise with dimension 
    1313    !> array not only one value 
    1314    !> @date June, 2015 
    1315    !> - add interp, extrap, and filter argument 
    1316    !> - Bux fix: dimension array initialise not only one value 
    1317    !> @date July, 2015 
    1318    !> - add unit factor (to change unit) 
     1241   !> - November, 2013- Initial Version 
    13191242   ! 
    13201243   !> @param[in] cd_name         variable name 
     
    13461269   !> no deflation is in use 
    13471270   !> @param[in] id_chunksz      chunk size 
    1348    !> @param[in] cd_interp       interpolation method 
    1349    !> @param[in] cd_extrap       extrapolation method 
    1350    !> @param[in] cd_filter       filter method 
    1351    !> @param[in] cd_unt          new units (linked to units factor) 
    1352    !> @param[in] dd_unf          units factor 
    13531271   !> @return variable structure 
    13541272   !------------------------------------------------------------------- 
     
    13611279   &                                    dd_min, dd_max,           & 
    13621280   &                                    ld_contiguous, ld_shuffle,& 
    1363    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    1364    &                                    cd_interp, cd_extrap, cd_filter, & 
    1365    &                                    cd_unt, dd_unf) 
     1281   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    13661282      IMPLICIT NONE 
    13671283      ! Argument 
     
    13911307      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    13921308      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    1393       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    1394       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    1395       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    1396       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    1397       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    13981309 
    13991310      ! local variable 
     
    14391350      ENDIF 
    14401351 
    1441       il_count(:)=tl_dim(:)%i_len 
     1352      il_count(:)=tl_dim(1)%i_len 
    14421353      IF( PRESENT(id_count) )THEN 
    14431354         IF( SIZE(id_count(:)) /= 2 )THEN 
     
    14701381      &                          ld_fletcher32=ld_fletcher32,        & 
    14711382      &                          id_deflvl=id_deflvl,                & 
    1472       &                          id_chunksz=id_chunksz(:),           & 
    1473       &                          cd_interp=cd_interp(:),             & 
    1474       &                          cd_extrap=cd_extrap(:),             & 
    1475       &                          cd_filter=cd_filter(:),             & 
    1476       &                          cd_unt=cd_unt, dd_unf=dd_unf ) 
     1383      &                          id_chunksz=id_chunksz(:)) 
    14771384    
    14781385      ! add value 
     
    15241431   ! 
    15251432   !> @author J.Paul 
    1526    !> @date November, 2013 - Initial Version 
    1527    !> @date June, 2015 
    1528    !> - add interp, extrap, and filter argument 
    1529    !> @date July, 2015 
    1530    !> - add unit factor (to change unit) 
    1531    !> 
     1433   !> - November, 2013- Initial Version 
     1434   ! 
    15321435   !> @param[in] cd_name         variable name 
    15331436   !> @param[in] dd_value        1D array of real(8) value 
     
    15581461   !> deflation is in use 
    15591462   !> @param[in] id_chunksz      chunk size 
    1560    !> @param[in] cd_interp       interpolation method 
    1561    !> @param[in] cd_extrap       extrapolation method 
    1562    !> @param[in] cd_filter       filter method 
    1563    !> @param[in] cd_unt          new units (linked to units factor) 
    1564    !> @param[in] dd_unf          units factor 
    15651463   !> @return variable structure 
    15661464   !------------------------------------------------------------------- 
     
    15731471   &                                    dd_min, dd_max,           & 
    15741472   &                                    ld_contiguous, ld_shuffle,& 
    1575    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    1576    &                                    cd_interp, cd_extrap, cd_filter, & 
    1577    &                                    cd_unt, dd_unf) 
     1473   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    15781474      IMPLICIT NONE 
    15791475      ! Argument 
     
    16031499      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    16041500      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    1605       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    1606       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    1607       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    1608       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    1609       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    16101501 
    16111502      ! local variable 
     
    16861577      &                          ld_fletcher32=ld_fletcher32,        & 
    16871578      &                          id_deflvl=id_deflvl,                & 
    1688       &                          id_chunksz=id_chunksz(:),           & 
    1689       &                          cd_interp=cd_interp(:),             & 
    1690       &                          cd_extrap=cd_extrap(:),             & 
    1691       &                          cd_filter=cd_filter(:),             & 
    1692       &                          cd_unt=cd_unt, dd_unf=dd_unf ) 
     1579      &                          id_chunksz=id_chunksz(:)) 
    16931580    
    16941581      ! add value 
     
    17361623   ! 
    17371624   !> @author J.Paul 
    1738    !> @date November, 2013 - Initial Version 
    1739    !> @date June, 2015 
    1740    !> - add interp, extrap, and filter argument 
    1741    !> @date July, 2015 
    1742    !> - add unit factor (to change unit) 
    1743    !> 
     1625   !> - November, 2013- Initial Version 
     1626   ! 
    17441627   !> @param[in] cd_name         variable name 
    17451628   !> @param[in] dd_value        4D array of real(8) value 
     
    17701653   !> deflation is in use 
    17711654   !> @param[in] id_chunksz      chunk size 
    1772    !> @param[in] cd_interp       interpolation method 
    1773    !> @param[in] cd_extrap       extrapolation method 
    1774    !> @param[in] cd_filter       filter method 
    1775    !> @param[in] cd_unt          new units (linked to units factor) 
    1776    !> @param[in] dd_unf          units factor 
    17771655   !> @return variable structure 
    17781656   !------------------------------------------------------------------- 
     
    17851663   &                                 dd_min, dd_max,           & 
    17861664   &                                 ld_contiguous, ld_shuffle,& 
    1787    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    1788    &                                 cd_interp, cd_extrap, cd_filter, & 
    1789    &                                 cd_unt, dd_unf ) 
     1665   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    17901666      IMPLICIT NONE 
    17911667      ! Argument 
     
    18151691      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    18161692      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    1817       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    1818       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    1819       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    1820       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    1821       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    18221693 
    18231694      ! local variable 
     
    18521723      &                       ld_fletcher32=ld_fletcher32,        & 
    18531724      &                       id_deflvl=id_deflvl,                & 
    1854       &                       id_chunksz=id_chunksz(:),           & 
    1855       &                       cd_interp=cd_interp(:),             & 
    1856       &                       cd_extrap=cd_extrap(:),             & 
    1857       &                       cd_filter=cd_filter(:),             & 
    1858       &                       cd_unt=cd_unt, dd_unf=dd_unf ) 
     1725      &                       id_chunksz=id_chunksz(:)) 
    18591726  
    18601727      ! add value 
     
    18911758   ! 
    18921759   !> @author J.Paul 
    1893    !> @date November, 2013 - Initial Version 
    1894    !> @date June, 2015 
    1895    !> - add interp, extrap, and filter argument 
    1896    !> @date July, 2015 
    1897    !> - add unit factor (to change unit) 
     1760   !> - November, 2013- Initial Version 
    18981761   ! 
    18991762   !> @param[in] cd_name         variable name 
     
    19251788   !> deflation is in use 
    19261789   !> @param[in] id_chunksz      chunk size 
    1927    !> @param[in] cd_interp       interpolation method 
    1928    !> @param[in] cd_extrap       extrapolation method 
    1929    !> @param[in] cd_filter       filter method 
    1930    !> @param[in] cd_unt          new units (linked to units factor) 
    1931    !> @param[in] dd_unf          units factor 
    19321790   !> @return variable structure 
    19331791   !------------------------------------------------------------------- 
     
    19401798   &                                    dd_min, dd_max,           & 
    19411799   &                                    ld_contiguous, ld_shuffle,& 
    1942    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    1943    &                                    cd_interp, cd_extrap, cd_filter, & 
    1944    &                                    cd_unt, dd_unf) 
     1800   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    19451801 
    19461802      IMPLICIT NONE 
     
    19711827      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    19721828      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    1973       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    1974       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    1975       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    1976       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    1977       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    1978  
    19791829 
    19801830      ! local variable 
     
    20201870      &                         ld_fletcher32=ld_fletcher32,        & 
    20211871      &                         id_deflvl=id_deflvl,                & 
    2022       &                         id_chunksz=id_chunksz(:),           & 
    2023       &                         cd_interp=cd_interp(:),             & 
    2024       &                         cd_extrap=cd_extrap(:),             & 
    2025       &                         cd_filter=cd_filter(:),             & 
    2026       &                         cd_unt=cd_unt, dd_unf=dd_unf ) 
     1872      &                         id_chunksz=id_chunksz(:)) 
    20271873  
    20281874      DEALLOCATE( dl_value ) 
     
    20461892   ! 
    20471893   !> @author J.Paul 
    2048    !> @date November, 2013 - Initial Version 
    2049    !> @date June, 2015 
    2050    !> - add interp, extrap, and filter argument 
    2051    !> @date July, 2015 
    2052    !> - add unit factor (to change unit) 
     1894   !> - November, 2013- Initial Version 
    20531895   ! 
    20541896   !> @param[in] cd_name         : variable name 
     
    20801922   !> deflation is in use 
    20811923   !> @param[in] id_chunksz      : chunk size 
    2082    !> @param[in] cd_interp       interpolation method 
    2083    !> @param[in] cd_extrap       extrapolation method 
    2084    !> @param[in] cd_filter       filter method 
    2085    !> @param[in] cd_unt          new units (linked to units factor) 
    2086    !> @param[in] dd_unf          units factor 
    20871924   !> @return variable structure 
    20881925   !------------------------------------------------------------------- 
     
    20951932   &                                    dd_min, dd_max,           & 
    20961933   &                                    ld_contiguous, ld_shuffle,& 
    2097    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    2098    &                                    cd_interp, cd_extrap, cd_filter, & 
    2099    &                                    cd_unt, dd_unf) 
     1934   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    21001935 
    21011936      IMPLICIT NONE 
     
    21261961      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    21271962      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2128       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2129       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2130       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2131       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2132       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    21331963 
    21341964      ! local variable 
     
    21762006      &                         ld_fletcher32=ld_fletcher32,        & 
    21772007      &                         id_deflvl=id_deflvl,                & 
    2178       &                         id_chunksz=id_chunksz(:),           & 
    2179       &                         cd_interp=cd_interp(:),             & 
    2180       &                         cd_extrap=cd_extrap(:),             & 
    2181       &                         cd_filter=cd_filter(:),             & 
    2182       &                         cd_unt=cd_unt, dd_unf=dd_unf ) 
     2008      &                         id_chunksz=id_chunksz(:)) 
    21832009       
    21842010      DEALLOCATE( dl_value ) 
     
    22022028   ! 
    22032029   !> @author J.Paul 
    2204    !> @date November, 2013 - Initial Version 
    2205    !> @date June, 2015 
    2206    !> - add interp, extrap, and filter argument 
    2207    !> @date July, 2015 
    2208    !> - add unit factor (to change unit) 
     2030   !> - November, 2013- Initial Version 
    22092031   ! 
    22102032   !> @param[in] cd_name         : variable name 
     
    22362058   !> deflation is in use 
    22372059   !> @param[in] id_chunksz      : chunk size 
    2238    !> @param[in] cd_interp       interpolation method 
    2239    !> @param[in] cd_extrap       extrapolation method 
    2240    !> @param[in] cd_filter       filter method 
    2241    !> @param[in] cd_unt          new units (linked to units factor) 
    2242    !> @param[in] dd_unf          units factor 
    22432060   !> @return variable structure 
    22442061   !------------------------------------------------------------------- 
     
    22512068   &                                    dd_min, dd_max,           & 
    22522069   &                                    ld_contiguous, ld_shuffle,& 
    2253    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    2254    &                                    cd_interp, cd_extrap, cd_filter, & 
    2255    &                                    cd_unt, dd_unf) 
     2070   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    22562071 
    22572072      IMPLICIT NONE 
     
    22822097      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    22832098      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2284       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2285       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2286       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2287       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2288       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    22892099 
    22902100      ! local variable 
     
    23332143      &                         ld_fletcher32=ld_fletcher32,        & 
    23342144      &                         id_deflvl=id_deflvl,                & 
    2335       &                         id_chunksz=id_chunksz(:),           & 
    2336       &                         cd_interp=cd_interp(:),             & 
    2337       &                         cd_extrap=cd_extrap(:),             & 
    2338       &                         cd_filter=cd_filter(:),             & 
    2339       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     2145      &                         id_chunksz=id_chunksz(:)) 
    23402146       
    23412147      DEALLOCATE( dl_value ) 
     
    23592165   ! 
    23602166   !> @author J.Paul 
    2361    !> @date November, 2013 - Initial Version 
    2362    !> @date June, 2015 
    2363    !> - add interp, extrap, and filter argument 
    2364    !> @date July, 2015 
    2365    !> - add unit factor (to change unit) 
     2167   !> - November, 2013- Initial Version 
    23662168   ! 
    23672169   !> @param[in] cd_name         variable name 
     
    23932195   !> deflation is in use 
    23942196   !> @param[in] id_chunksz      chunk size 
    2395    !> @param[in] cd_interp       interpolation method 
    2396    !> @param[in] cd_extrap       extrapolation method 
    2397    !> @param[in] cd_filter       filter method 
    2398    !> @param[in] cd_unt          new units (linked to units factor) 
    2399    !> @param[in] dd_unf          units factor 
    24002197   !> @return variable structure 
    24012198   !------------------------------------------------------------------- 
     
    24082205   &                                 dd_min, dd_max,           & 
    24092206   &                                 ld_contiguous, ld_shuffle,& 
    2410    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    2411    &                                 cd_interp, cd_extrap, cd_filter, & 
    2412    &                                 cd_unt, dd_unf) 
     2207   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    24132208 
    24142209      IMPLICIT NONE 
     
    24392234      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    24402235      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2441       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2442       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2443       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2444       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2445       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    24462236 
    24472237      ! local variable 
     
    24912281      &                      ld_fletcher32=ld_fletcher32,        & 
    24922282      &                      id_deflvl=id_deflvl,                & 
    2493       &                      id_chunksz=id_chunksz(:),           & 
    2494       &                      cd_interp=cd_interp(:),             & 
    2495       &                      cd_extrap=cd_extrap(:),             & 
    2496       &                      cd_filter=cd_filter(:),             & 
    2497       &                      cd_unt=cd_unt, dd_unf=dd_unf) 
     2283      &                      id_chunksz=id_chunksz(:)) 
    24982284       
    24992285      DEALLOCATE( dl_value ) 
     
    25172303   ! 
    25182304   !> @author J.Paul 
    2519    !> @date November, 2013 - Initial Version 
    2520    !> @date June, 2015 
    2521    !> - add interp, extrap, and filter argument 
    2522    !> @date July, 2015 
    2523    !> - add unit factor (to change unit) 
     2305   !> - November, 2013- Initial Version 
    25242306   ! 
    25252307   !> @param[in] cd_name         : variable name 
     
    25512333   !> deflation is in use 
    25522334   !> @param[in] id_chunksz      : chunk size 
    2553    !> @param[in] cd_interp       interpolation method 
    2554    !> @param[in] cd_extrap       extrapolation method 
    2555    !> @param[in] cd_filter       filter method 
    2556    !> @param[in] cd_unt          new units (linked to units factor) 
    2557    !> @param[in] dd_unf          units factor 
    25582335   !> @return variable structure 
    25592336   !------------------------------------------------------------------- 
     
    25662343   &                                    dd_min, dd_max,           & 
    25672344   &                                    ld_contiguous, ld_shuffle,& 
    2568    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    2569    &                                    cd_interp, cd_extrap, cd_filter, & 
    2570    &                                    cd_unt, dd_unf) 
     2345   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    25712346 
    25722347      IMPLICIT NONE 
     
    25972372      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    25982373      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2599       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2600       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2601       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2602       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2603       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    26042374 
    26052375      ! local variable 
     
    26452415      &                         ld_fletcher32=ld_fletcher32,        & 
    26462416      &                         id_deflvl=id_deflvl,                & 
    2647       &                         id_chunksz=id_chunksz(:),           & 
    2648       &                         cd_interp=cd_interp(:),             & 
    2649       &                         cd_extrap=cd_extrap(:),             & 
    2650       &                         cd_filter=cd_filter(:),             & 
    2651       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     2417      &                         id_chunksz=id_chunksz(:)) 
    26522418  
    26532419      DEALLOCATE( dl_value ) 
     
    26712437   ! 
    26722438   !> @author J.Paul 
    2673    !> @date November, 2013 - Initial Version 
    2674    !> @date June, 2015 
    2675    !> - add interp, extrap, and filter argument 
    2676    !> @date July, 2015 
    2677    !> - add unit factor (to change unit) 
     2439   !> - November, 2013- Initial Version 
    26782440   ! 
    26792441   !> @param[in] cd_name         variable name 
     
    27032465   !> @param[in] id_deflvl       deflate level from 0 to 9, 0 indicates no deflation is in use 
    27042466   !> @param[in] id_chunksz      chunk size 
    2705    !> @param[in] cd_interp       interpolation method 
    2706    !> @param[in] cd_extrap       extrapolation method 
    2707    !> @param[in] cd_filter       filter method 
    2708    !> @param[in] cd_unt          new units (linked to units factor) 
    2709    !> @param[in] dd_unf          units factor 
    27102467   !> @return variable structure 
    27112468   !------------------------------------------------------------------- 
     
    27182475   &                                    dd_min, dd_max,           & 
    27192476   &                                    ld_contiguous, ld_shuffle,& 
    2720    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    2721    &                                    cd_interp, cd_extrap, cd_filter, & 
    2722    &                                    cd_unt, dd_unf) 
     2477   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    27232478 
    27242479      IMPLICIT NONE 
     
    27492504      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    27502505      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2751       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2752       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2753       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2754       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2755       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    27562506 
    27572507      ! local variable 
     
    27992549      &                         ld_fletcher32=ld_fletcher32,        & 
    28002550      &                         id_deflvl=id_deflvl,                & 
    2801       &                         id_chunksz=id_chunksz(:),           & 
    2802       &                         cd_interp=cd_interp(:),             & 
    2803       &                         cd_extrap=cd_extrap(:),             & 
    2804       &                         cd_filter=cd_filter(:),             & 
    2805       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     2551      &                         id_chunksz=id_chunksz(:)) 
    28062552       
    28072553      DEALLOCATE( dl_value ) 
     
    28252571   ! 
    28262572   !> @author J.Paul 
    2827    !> @date November, 2013 - Initial Version 
    2828    !> @date June, 2015 
    2829    !> - add interp, extrap, and filter argument 
    2830    !> @date July, 2015 
    2831    !> - add unit factor (to change unit) 
     2573   !> - November, 2013- Initial Version 
    28322574   ! 
    28332575   !> @param[in] cd_name         variable name 
     
    28592601   !> deflation is in use 
    28602602   !> @param[in] id_chunksz      chunk size 
    2861    !> @param[in] cd_interp       interpolation method 
    2862    !> @param[in] cd_extrap       extrapolation method 
    2863    !> @param[in] cd_filter       filter method 
    2864    !> @param[in] cd_unt          new units (linked to units factor) 
    2865    !> @param[in] dd_unf          units factor 
    28662603   !> @return variable structure 
    28672604   !------------------------------------------------------------------- 
     
    28742611   &                                    dd_min, dd_max,           & 
    28752612   &                                    ld_contiguous, ld_shuffle,& 
    2876    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    2877    &                                    cd_interp, cd_extrap, cd_filter, & 
    2878    &                                    cd_unt, dd_unf) 
     2613   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    28792614 
    28802615      IMPLICIT NONE 
     
    29052640      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    29062641      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    2907       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    2908       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    2909       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    2910       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    2911       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    29122642 
    29132643      ! local variable 
     
    29562686      &                         ld_fletcher32=ld_fletcher32,        & 
    29572687      &                         id_deflvl=id_deflvl,                & 
    2958       &                         id_chunksz=id_chunksz(:),           & 
    2959       &                         cd_interp=cd_interp(:),             & 
    2960       &                         cd_extrap=cd_extrap(:),             & 
    2961       &                         cd_filter=cd_filter(:),             & 
    2962       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     2688      &                         id_chunksz=id_chunksz(:)) 
    29632689       
    29642690      DEALLOCATE( dl_value ) 
     
    29822708   ! 
    29832709   !> @author J.Paul 
    2984    !> @date November, 2013 - Initial Version 
    2985    !> @date June, 2015 
    2986    !> - add interp, extrap, and filter argument 
    2987    !> @date July, 2015 
    2988    !> - add unit factor (to change unit) 
     2710   !> - November, 2013- Initial Version 
    29892711   ! 
    29902712   !> @param[in] cd_name         variable name 
     
    30162738   !> deflation is in use 
    30172739   !> @param[in] id_chunksz      chunk size 
    3018    !> @param[in] cd_interp       interpolation method 
    3019    !> @param[in] cd_extrap       extrapolation method 
    3020    !> @param[in] cd_filter       filter method 
    3021    !> @param[in] cd_unt          new units (linked to units factor) 
    3022    !> @param[in] dd_unf          units factor 
    30232740   !> @return variable structure 
    30242741   !------------------------------------------------------------------- 
     
    30312748   &                                 dd_min, dd_max,           & 
    30322749   &                                 ld_contiguous, ld_shuffle,& 
    3033    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    3034    &                                 cd_interp, cd_extrap, cd_filter, & 
    3035    &                                 cd_unt, dd_unf) 
     2750   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    30362751 
    30372752      IMPLICIT NONE 
     
    30622777      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    30632778      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3064       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3065       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3066       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3067       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3068       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    3069  
    30702779 
    30712780      ! local variable 
     
    31152824      &                      ld_fletcher32=ld_fletcher32,        & 
    31162825      &                      id_deflvl=id_deflvl,                & 
    3117       &                      id_chunksz=id_chunksz(:),           & 
    3118       &                      cd_interp=cd_interp(:),             & 
    3119       &                      cd_extrap=cd_extrap(:),             & 
    3120       &                      cd_filter=cd_filter(:),             & 
    3121       &                      cd_unt=cd_unt, dd_unf=dd_unf) 
     2826      &                      id_chunksz=id_chunksz(:)) 
    31222827       
    31232828      DEALLOCATE( dl_value ) 
     
    31412846   ! 
    31422847   !> @author J.Paul 
    3143    !> @date November, 2013 - Initial Version 
    3144    !> @date June, 2015 
    3145    !> - add interp, extrap, and filter argument 
    3146    !> @date July, 2015 
    3147    !> - add unit factor (to change unit) 
     2848   !> - November, 2013- Initial Version 
    31482849   ! 
    31492850   !> @param[in] cd_name         variable name 
     
    31752876   !> deflation is in use 
    31762877   !> @param[in] id_chunksz      chunk size 
    3177    !> @param[in] cd_interp       interpolation method 
    3178    !> @param[in] cd_extrap       extrapolation method 
    3179    !> @param[in] cd_filter       filter method 
    3180    !> @param[in] cd_unt          new units (linked to units factor) 
    3181    !> @param[in] dd_unf          units factor 
    31822878   !> @return variable structure 
    31832879   !------------------------------------------------------------------- 
     
    31902886   &                                    dd_min, dd_max,           & 
    31912887   &                                    ld_contiguous, ld_shuffle,& 
    3192    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    3193    &                                    cd_interp, cd_extrap, cd_filter, & 
    3194    &                                    cd_unt, dd_unf) 
     2888   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    31952889 
    31962890      IMPLICIT NONE 
     
    32212915      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    32222916      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3223       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3224       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3225       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3226       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3227       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    32282917 
    32292918      ! local variable 
     
    32692958      &                         ld_fletcher32=ld_fletcher32,        & 
    32702959      &                         id_deflvl=id_deflvl,                & 
    3271       &                         id_chunksz=id_chunksz(:),           & 
    3272       &                         cd_interp=cd_interp(:),             & 
    3273       &                         cd_extrap=cd_extrap(:),             & 
    3274       &                         cd_filter=cd_filter(:),             & 
    3275       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     2960      &                         id_chunksz=id_chunksz(:)) 
    32762961  
    32772962      DEALLOCATE( dl_value ) 
     
    32952980   ! 
    32962981   !> @author J.Paul 
    3297    !> @date November, 2013 - Initial Version 
    3298    !> @date June, 2015 
    3299    !> - add interp, extrap, and filter argument 
    3300    !> @date July, 2015 
    3301    !> - add unit factor (to change unit) 
     2982   !> - November, 2013- Initial Version 
    33022983   ! 
    33032984   !> @param[in] cd_name         variable name 
     
    33293010   !> deflation is in use 
    33303011   !> @param[in] id_chunksz      chunk size 
    3331    !> @param[in] cd_interp       interpolation method 
    3332    !> @param[in] cd_extrap       extrapolation method 
    3333    !> @param[in] cd_filter       filter method 
    3334    !> @param[in] cd_unt          new units (linked to units factor) 
    3335    !> @param[in] dd_unf          units factor 
    33363012   !> @return variable structure 
    33373013   !------------------------------------------------------------------- 
     
    33443020   &                                    dd_min, dd_max,           & 
    33453021   &                                    ld_contiguous, ld_shuffle,& 
    3346    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    3347    &                                    cd_interp, cd_extrap, cd_filter, & 
    3348    &                                    cd_unt, dd_unf) 
     3022   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    33493023 
    33503024      IMPLICIT NONE 
     
    33753049      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    33763050      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3377       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3378       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3379       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3380       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3381       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    33823051 
    33833052      ! local variable 
     
    34253094      &                         ld_fletcher32=ld_fletcher32,        & 
    34263095      &                         id_deflvl=id_deflvl,                & 
    3427       &                         id_chunksz=id_chunksz(:),           & 
    3428       &                         cd_interp=cd_interp(:),             & 
    3429       &                         cd_extrap=cd_extrap(:),             & 
    3430       &                         cd_filter=cd_filter(:),             & 
    3431       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     3096      &                         id_chunksz=id_chunksz(:)) 
    34323097       
    34333098      DEALLOCATE( dl_value ) 
     
    34513116   ! 
    34523117   !> @author J.Paul 
    3453    !> @date November, 2013 - Initial Version 
    3454    !> @date June, 2015 
    3455    !> - add interp, extrap, and filter argument 
    3456    !> @date July, 2015 
    3457    !> - add unit factor (to change unit) 
     3118   !> - November, 2013- Initial Version 
    34583119   ! 
    34593120   !> @param[in] cd_name         variable name 
     
    34853146   !> deflation is in use 
    34863147   !> @param[in] id_chunksz      chunk size 
    3487    !> @param[in] cd_interp       interpolation method 
    3488    !> @param[in] cd_extrap       extrapolation method 
    3489    !> @param[in] cd_filter       filter method 
    3490    !> @param[in] cd_unt          new units (linked to units factor) 
    3491    !> @param[in] dd_unf          units factor 
    34923148   !> @return variable structure 
    34933149   !------------------------------------------------------------------- 
     
    35003156   &                                    dd_min, dd_max,           & 
    35013157   &                                    ld_contiguous, ld_shuffle,& 
    3502    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    3503    &                                    cd_interp, cd_extrap, cd_filter, & 
    3504    &                                    cd_unt, dd_unf) 
     3158   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    35053159 
    35063160      IMPLICIT NONE 
     
    35313185      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    35323186      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3533       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3534       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3535       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3536       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3537       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    35383187 
    35393188      ! local variable 
     
    35823231      &                         ld_fletcher32=ld_fletcher32,        & 
    35833232      &                         id_deflvl=id_deflvl,                & 
    3584       &                         id_chunksz=id_chunksz(:),           & 
    3585       &                         cd_interp=cd_interp(:),             & 
    3586       &                         cd_extrap=cd_extrap(:),             & 
    3587       &                         cd_filter=cd_filter(:),             & 
    3588       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     3233      &                         id_chunksz=id_chunksz(:)) 
    35893234       
    35903235      DEALLOCATE( dl_value ) 
     
    36083253   ! 
    36093254   !> @author J.Paul 
    3610    !> @date November, 2013 - Initial Version 
    3611    !> @date June, 2015 
    3612    !> - add interp, extrap, and filter argument 
    3613    !> @date July, 2015 
    3614    !> - add unit factor (to change unit) 
     3255   !> - November, 2013- Initial Version 
    36153256   ! 
    36163257   !> @param[in] cd_name         variable name 
     
    36423283   !> deflation is in use 
    36433284   !> @param[in] id_chunksz      chunk size 
    3644    !> @param[in] cd_interp       interpolation method 
    3645    !> @param[in] cd_extrap       extrapolation method 
    3646    !> @param[in] cd_filter       filter method 
    3647    !> @param[in] cd_unt          new units (linked to units factor) 
    3648    !> @param[in] dd_unf          units factor 
    3649  
    36503285   !> @return variable structure 
    36513286   !------------------------------------------------------------------- 
     
    36583293   &                                 dd_min, dd_max,           & 
    36593294   &                                 ld_contiguous, ld_shuffle,& 
    3660    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    3661    &                                 cd_interp, cd_extrap, cd_filter, & 
    3662    &                                 cd_unt, dd_unf) 
     3295   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    36633296 
    36643297      IMPLICIT NONE 
     
    36893322      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    36903323      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3691       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3692       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3693       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3694       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3695       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    36963324 
    36973325      ! local variable 
     
    37413369      &                      ld_fletcher32=ld_fletcher32,        & 
    37423370      &                      id_deflvl=id_deflvl,                & 
    3743       &                      id_chunksz=id_chunksz(:),           & 
    3744       &                      cd_interp=cd_interp(:),             & 
    3745       &                      cd_extrap=cd_extrap(:),             & 
    3746       &                      cd_filter=cd_filter(:),             & 
    3747       &                      cd_unt=cd_unt, dd_unf=dd_unf) 
     3371      &                      id_chunksz=id_chunksz(:)) 
    37483372       
    37493373      DEALLOCATE( dl_value ) 
     
    37673391   ! 
    37683392   !> @author J.Paul 
    3769    !> @date November, 2013 - Initial Version 
    3770    !> @date June, 2015 
    3771    !> - add interp, extrap, and filter argument 
    3772    !> @date July, 2015 
    3773    !> - add unit factor (to change unit) 
     3393   !> - November, 2013- Initial Version 
    37743394   ! 
    37753395   !> @param[in] cd_name         variable name 
     
    38013421   !> deflation is in use 
    38023422   !> @param[in] id_chunksz      chunk size 
    3803    !> @param[in] cd_interp       interpolation method 
    3804    !> @param[in] cd_extrap       extrapolation method 
    3805    !> @param[in] cd_filter       filter method 
    3806    !> @param[in] cd_unt          new units (linked to units factor) 
    3807    !> @param[in] dd_unf          units factor 
    38083423   !> @return variable structure 
    38093424   !------------------------------------------------------------------- 
     
    38163431   &                                    dd_min, dd_max,           & 
    38173432   &                                    ld_contiguous, ld_shuffle,& 
    3818    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    3819    &                                    cd_interp, cd_extrap, cd_filter, & 
    3820    &                                    cd_unt, dd_unf) 
     3433   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    38213434 
    38223435      IMPLICIT NONE 
     
    38473460      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    38483461      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    3849       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    3850       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    3851       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    3852       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    3853       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    3854  
    38553462 
    38563463      ! local variable 
     
    38963503      &                         ld_fletcher32=ld_fletcher32,        & 
    38973504      &                         id_deflvl=id_deflvl,                & 
    3898       &                         id_chunksz=id_chunksz(:),           & 
    3899       &                         cd_interp=cd_interp(:),             & 
    3900       &                         cd_extrap=cd_extrap(:),             & 
    3901       &                         cd_filter=cd_filter(:),             & 
    3902       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     3505      &                         id_chunksz=id_chunksz(:)) 
    39033506  
    39043507      DEALLOCATE( dl_value ) 
     
    39223525   ! 
    39233526   !> @author J.Paul 
    3924    !> @date November, 2013 - Initial Version 
    3925    !> @date June, 2015 
    3926    !> - add interp, extrap, and filter argument 
    3927    !> @date July, 2015 
    3928    !> - add unit factor (to change unit) 
     3527   !> - November, 2013- Initial Version 
    39293528   ! 
    39303529   !> @param[in] cd_name         variable name 
     
    39563555   !> deflation is in use 
    39573556   !> @param[in] id_chunksz      chunk size 
    3958    !> @param[in] cd_interp       interpolation method 
    3959    !> @param[in] cd_extrap       extrapolation method 
    3960    !> @param[in] cd_filter       filter method 
    3961    !> @param[in] cd_unt          new units (linked to units factor) 
    3962    !> @param[in] dd_unf          units factor 
    39633557   !> @return variable structure 
    39643558   !------------------------------------------------------------------- 
     
    39713565   &                                    dd_min, dd_max,           & 
    39723566   &                                    ld_contiguous, ld_shuffle,& 
    3973    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    3974    &                                    cd_interp, cd_extrap, cd_filter, & 
    3975    &                                    cd_unt, dd_unf) 
     3567   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    39763568 
    39773569      IMPLICIT NONE 
     
    40023594      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    40033595      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4004       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4005       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4006       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4007       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4008       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    4009  
    40103596 
    40113597      ! local variable 
     
    40533639      &                         ld_fletcher32=ld_fletcher32,        & 
    40543640      &                         id_deflvl=id_deflvl,                & 
    4055       &                         id_chunksz=id_chunksz(:),           & 
    4056       &                         cd_interp=cd_interp(:),             & 
    4057       &                         cd_extrap=cd_extrap(:),             & 
    4058       &                         cd_filter=cd_filter(:),             & 
    4059       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     3641      &                         id_chunksz=id_chunksz(:)) 
    40603642       
    40613643      DEALLOCATE( dl_value ) 
     
    40793661   ! 
    40803662   !> @author J.Paul 
    4081    !> @date November, 2013 - Initial Version 
    4082    !> @date June, 2015 
    4083    !> - add interp, extrap, and filter argument 
    4084    !> @date July, 2015 
    4085    !> - add unit factor (to change unit) 
     3663   !> - November, 2013- Initial Version 
    40863664   ! 
    40873665   !> @param[in] cd_name         variable name 
     
    41133691   !> deflation is in use 
    41143692   !> @param[in] id_chunksz      chunk size 
    4115    !> @param[in] cd_interp       interpolation method 
    4116    !> @param[in] cd_extrap       extrapolation method 
    4117    !> @param[in] cd_filter       filter method 
    4118    !> @param[in] cd_unt          new units (linked to units factor) 
    4119    !> @param[in] dd_unf          units factor 
    41203693   !> @return variable structure 
    41213694   !------------------------------------------------------------------- 
     
    41283701   &                                    dd_min, dd_max,           & 
    41293702   &                                    ld_contiguous, ld_shuffle,& 
    4130    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    4131    &                                    cd_interp, cd_extrap, cd_filter, & 
    4132    &                                    cd_unt, dd_unf) 
     3703   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    41333704 
    41343705      IMPLICIT NONE 
     
    41593730      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    41603731      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4161       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4162       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4163       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4164       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4165       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    41663732 
    41673733      ! local variable 
     
    42103776      &                         ld_fletcher32=ld_fletcher32,        & 
    42113777      &                         id_deflvl=id_deflvl,                & 
    4212       &                         id_chunksz=id_chunksz(:),           & 
    4213       &                         cd_interp=cd_interp(:),             & 
    4214       &                         cd_extrap=cd_extrap(:),             & 
    4215       &                         cd_filter=cd_filter(:),             & 
    4216       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     3778      &                         id_chunksz=id_chunksz(:)) 
    42173779       
    42183780      DEALLOCATE( dl_value ) 
     
    42363798   ! 
    42373799   !> @author J.Paul 
    4238    !> @date November, 2013 - Initial Version 
    4239    !> @date June, 2015 
    4240    !> - add interp, extrap, and filter argument 
    4241    !> @date July, 2015 
    4242    !> - add unit factor (to change unit) 
     3800   !> - November, 2013- Initial Version 
    42433801   ! 
    42443802   !> @param[in] cd_name         variable name 
     
    42703828   !> deflation is in use 
    42713829   !> @param[in] id_chunksz      chunk size 
    4272    !> @param[in] cd_interp       interpolation method 
    4273    !> @param[in] cd_extrap       extrapolation method 
    4274    !> @param[in] cd_filter       filter method 
    4275    !> @param[in] cd_unt          new units (linked to units factor) 
    4276    !> @param[in] dd_unf          units factor 
    42773830   !> @return variable structure 
    42783831   !------------------------------------------------------------------- 
     
    42853838   &                                 dd_min, dd_max,           & 
    42863839   &                                 ld_contiguous, ld_shuffle,& 
    4287    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    4288    &                                 cd_interp, cd_extrap, cd_filter, & 
    4289    &                                 cd_unt, dd_unf) 
     3840   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    42903841 
    42913842      IMPLICIT NONE 
     
    43163867      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    43173868      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4318       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4319       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4320       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4321       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4322       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    43233869 
    43243870      ! local variable 
     
    43683914      &                      ld_fletcher32=ld_fletcher32,        & 
    43693915      &                      id_deflvl=id_deflvl,                & 
    4370       &                      id_chunksz=id_chunksz(:),           & 
    4371       &                      cd_interp=cd_interp(:),             & 
    4372       &                      cd_extrap=cd_extrap(:),             & 
    4373       &                      cd_filter=cd_filter(:),             & 
    4374       &                      cd_unt=cd_unt, dd_unf=dd_unf) 
     3916      &                      id_chunksz=id_chunksz(:)) 
    43753917       
    43763918      DEALLOCATE( dl_value ) 
     
    43943936   ! 
    43953937   !> @author J.Paul 
    4396    !> @date November, 2013 - Initial Version 
    4397    !> @date June, 2015 
    4398    !> - add interp, extrap, and filter argument 
    4399    !> @date July, 2015 
    4400    !> - add unit factor (to change unit) 
     3938   !> - November, 2013- Initial Version 
    44013939   ! 
    44023940   !> @param[in] cd_name         variable name 
     
    44283966   !> deflation is in use 
    44293967   !> @param[in] id_chunksz      chunk size 
    4430    !> @param[in] cd_interp       interpolation method 
    4431    !> @param[in] cd_extrap       extrapolation method 
    4432    !> @param[in] cd_filter       filter method 
    4433    !> @param[in] cd_unt          new units (linked to units factor) 
    4434    !> @param[in] dd_unf          units factor 
    44353968   !> @return variable structure 
    44363969   !------------------------------------------------------------------- 
     
    44433976   &                                    dd_min, dd_max,           & 
    44443977   &                                    ld_contiguous, ld_shuffle,& 
    4445    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    4446    &                                    cd_interp, cd_extrap, cd_filter, & 
    4447    &                                    cd_unt, dd_unf) 
     3978   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    44483979 
    44493980      IMPLICIT NONE 
     
    44744005      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    44754006      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4476       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4477       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4478       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4479       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4480       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    44814007 
    44824008      ! local variable 
     
    45224048      &                         ld_fletcher32=ld_fletcher32,        & 
    45234049      &                         id_deflvl=id_deflvl,                & 
    4524       &                         id_chunksz=id_chunksz(:),           & 
    4525       &                         cd_interp=cd_interp(:),             & 
    4526       &                         cd_extrap=cd_extrap(:),             & 
    4527       &                         cd_filter=cd_filter(:),             & 
    4528       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     4050      &                         id_chunksz=id_chunksz(:)) 
    45294051  
    45304052      DEALLOCATE( dl_value ) 
     
    45484070   ! 
    45494071   !> @author J.Paul 
    4550    !> @date November, 2013 - Initial Version 
    4551    !> @date June, 2015 
    4552    !> - add interp, extrap, and filter argument 
    4553    !> @date July, 2015 
    4554    !> - add unit factor (to change unit) 
     4072   !> - November, 2013- Initial Version 
    45554073   ! 
    45564074   !> @param[in] cd_name         variable name 
     
    45824100   !> deflation is in use 
    45834101   !> @param[in] id_chunksz      chunk size 
    4584    !> @param[in] cd_interp       interpolation method 
    4585    !> @param[in] cd_extrap       extrapolation method 
    4586    !> @param[in] cd_filter       filter method 
    4587    !> @param[in] cd_unt          new units (linked to units factor) 
    4588    !> @param[in] dd_unf          units factor 
    45894102   !> @return variable structure 
    45904103   !------------------------------------------------------------------- 
     
    45974110   &                                    dd_min, dd_max,           & 
    45984111   &                                    ld_contiguous, ld_shuffle,& 
    4599    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    4600    &                                    cd_interp, cd_extrap, cd_filter, & 
    4601    &                                    cd_unt, dd_unf) 
     4112   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    46024113 
    46034114      IMPLICIT NONE 
     
    46284139      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    46294140      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4630       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4631       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4632       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4633       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4634       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    46354141 
    46364142      ! local variable 
     
    46784184      &                         ld_fletcher32=ld_fletcher32,        & 
    46794185      &                         id_deflvl=id_deflvl,                & 
    4680       &                         id_chunksz=id_chunksz(:),           & 
    4681       &                         cd_interp=cd_interp(:),             & 
    4682       &                         cd_extrap=cd_extrap(:),             & 
    4683       &                         cd_filter=cd_filter(:),             & 
    4684       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     4186      &                         id_chunksz=id_chunksz(:)) 
    46854187       
    46864188      DEALLOCATE( dl_value ) 
     
    47044206   ! 
    47054207   !> @author J.Paul 
    4706    !> @date November, 2013 - Initial Version 
    4707    !> @date June, 2015 
    4708    !> - add interp, extrap, and filter argument 
    4709    !> @date July, 2015 
    4710    !> - add unit factor (to change unit) 
     4208   !> - November, 2013- Initial Version 
    47114209   ! 
    47124210   !> @param[in] cd_name         variable name 
     
    47384236   !> deflation is in use 
    47394237   !> @param[in] id_chunksz      chunk size 
    4740    !> @param[in] cd_interp       interpolation method 
    4741    !> @param[in] cd_extrap       extrapolation method 
    4742    !> @param[in] cd_filter       filter method 
    4743    !> @param[in] cd_unt          new units (linked to units factor) 
    4744    !> @param[in] dd_unf          units factor 
    47454238   !> @return variable structure 
    47464239   !------------------------------------------------------------------- 
     
    47534246   &                                    dd_min, dd_max,           & 
    47544247   &                                    ld_contiguous, ld_shuffle,& 
    4755    &                                    ld_fletcher32, id_deflvl, id_chunksz, & 
    4756    &                                    cd_interp, cd_extrap, cd_filter, & 
    4757    &                                    cd_unt, dd_unf) 
     4248   &                                    ld_fletcher32, id_deflvl, id_chunksz) 
    47584249 
    47594250      IMPLICIT NONE 
     
    47844275      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    47854276      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4786       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4787       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4788       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4789       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4790       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    47914277 
    47924278      ! local variable 
     
    48354321      &                         ld_fletcher32=ld_fletcher32,        & 
    48364322      &                         id_deflvl=id_deflvl,                & 
    4837       &                         id_chunksz=id_chunksz(:),           & 
    4838       &                         cd_interp=cd_interp(:),             & 
    4839       &                         cd_extrap=cd_extrap(:),             & 
    4840       &                         cd_filter=cd_filter(:),             & 
    4841       &                         cd_unt=cd_unt, dd_unf=dd_unf) 
     4323      &                         id_chunksz=id_chunksz(:)) 
    48424324       
    48434325      DEALLOCATE( dl_value ) 
     
    48614343   ! 
    48624344   !> @author J.Paul 
    4863    !> @date November, 2013 - Initial Version 
    4864    !> @date June, 2015 
    4865    !> - add interp, extrap, and filter argument 
    4866    !> @date July, 2015 
    4867    !> - add unit factor (to change unit) 
     4345   !> - November, 2013- Initial Version 
    48684346   ! 
    48694347   !> @param[in] cd_name         variable name 
     
    48954373   !> deflation is in use 
    48964374   !> @param[in] id_chunksz      chunk size 
    4897    !> @param[in] cd_interp       interpolation method 
    4898    !> @param[in] cd_extrap       extrapolation method 
    4899    !> @param[in] cd_filter       filter method 
    4900    !> @param[in] cd_unt          new units (linked to units factor) 
    4901    !> @param[in] dd_unf          units factor 
    49024375   !> @return variable structure 
    49034376   !------------------------------------------------------------------- 
     
    49104383   &                                 dd_min, dd_max,           & 
    49114384   &                                 ld_contiguous, ld_shuffle,& 
    4912    &                                 ld_fletcher32, id_deflvl, id_chunksz, & 
    4913    &                                 cd_interp, cd_extrap, cd_filter, & 
    4914    &                                 cd_unt, dd_unf) 
     4385   &                                 ld_fletcher32, id_deflvl, id_chunksz) 
    49154386 
    49164387      IMPLICIT NONE 
     
    49414412      INTEGER(i4)     ,                       INTENT(IN), OPTIONAL :: id_deflvl 
    49424413      INTEGER(i4)     , DIMENSION(ip_maxdim), INTENT(IN), OPTIONAL :: id_chunksz 
    4943       CHARACTER(LEN=*), DIMENSION(2)        , INTENT(IN), OPTIONAL :: cd_interp 
    4944       CHARACTER(LEN=*), DIMENSION(1)        , INTENT(IN), OPTIONAL :: cd_extrap 
    4945       CHARACTER(LEN=*), DIMENSION(5)        , INTENT(IN), OPTIONAL :: cd_filter 
    4946       CHARACTER(LEN=*),                       INTENT(IN), OPTIONAL :: cd_unt 
    4947       REAL(dp)        ,                       INTENT(IN), OPTIONAL :: dd_unf 
    49484414 
    49494415      ! local variable 
     
    49934459      &                      ld_fletcher32=ld_fletcher32,        & 
    49944460      &                      id_deflvl=id_deflvl,                & 
    4995       &                      id_chunksz=id_chunksz(:),           & 
    4996       &                      cd_interp=cd_interp(:),             & 
    4997       &                      cd_extrap=cd_extrap(:),             & 
    4998       &                      cd_filter=cd_filter(:),             & 
    4999       &                      cd_unt=cd_unt, dd_unf=dd_unf) 
     4461      &                      id_chunksz=id_chunksz(:)) 
    50004462       
    50014463      DEALLOCATE( dl_value ) 
     
    50114473   !> 
    50124474   !> @author J.Paul 
    5013    !> @date November, 2013 - Initial Version 
     4475   !> - November, 2013- Initial Version 
    50144476   ! 
    50154477   !> @param[in] td_var1   variable structure 
     
    50614523   !>  
    50624524   !> @author J.Paul 
    5063    !> @date November, 2013 - Initial Version 
     4525   !> - November, 2013- Initial Version 
    50644526   ! 
    50654527   !> @param[in] td_var1   variable structure 
     
    51334595   !>  
    51344596   !> @author J.Paul 
    5135    !> @date November, 2013 - Initial Version 
     4597   !> - November, 2013- Initial Version 
    51364598   ! 
    51374599   !> @param[in] td_var1   variable structure 
     
    52084670   !>  
    52094671   !> @author J.Paul 
    5210    !> @date November, 2013 - Initial Version 
     4672   !> - November, 2013- Initial Version 
    52114673   ! 
    52124674   !> @param[in] td_var1   variable structure 
     
    52834745   !>  
    52844746   !> @author J.Paul 
    5285    !> @date November, 2013 - Initial Version 
     4747   !> - November, 2013- Initial Version 
    52864748   ! 
    52874749   !> @param[in] td_var1   variable structure 
     
    53584820   !> 
    53594821   !> @author J.Paul 
    5360    !> @date November, 2013 - Initial Version 
    5361    !> @date June, 2015  
    5362    !> - add all element of the array in the same time 
     4822   !> - November, 2013- Initial Version 
    53634823   !> 
    53644824   !> @param[inout] td_var variable structure 
     
    53734833      ! local variable 
    53744834      INTEGER(i4) :: il_natt 
    5375       INTEGER(i4) :: il_status 
    5376       INTEGER(i4) :: il_ind 
    5377       TYPE(TATT), DIMENSION(:), ALLOCATABLE :: tl_att 
    53784835 
    53794836      ! loop indices 
     
    53834840      il_natt=SIZE(td_att(:)) 
    53844841 
    5385       IF( td_var%i_natt > 0 )THEN 
    5386       ! already other attribute in variable structure 
    5387          ALLOCATE( tl_att(td_var%i_natt), stat=il_status ) 
    5388          IF(il_status /= 0 )THEN 
    5389  
    5390             CALL logger_error( & 
    5391             &  " VAR ADD ATT: not enough space to put attributes from "//& 
    5392             &  TRIM(td_var%c_name)//" in temporary attribute structure") 
    5393  
    5394          ELSE 
    5395  
    5396             ! save temporary global attribute's variable structure 
    5397             tl_att(:)=att_copy(td_var%t_att(:)) 
    5398  
    5399             CALL att_clean(td_var%t_att(:)) 
    5400             DEALLOCATE( td_var%t_att ) 
    5401             ALLOCATE( td_var%t_att(td_var%i_natt+il_natt), stat=il_status ) 
    5402             IF(il_status /= 0 )THEN 
    5403  
    5404                CALL logger_error( & 
    5405                &  " VAR ADD ATT: not enough space to put attributes "//& 
    5406                &  "in variable structure "//TRIM(td_var%c_name) ) 
    5407  
    5408             ENDIF 
    5409  
    5410             ! copy attribute in variable before 
    5411             td_var%t_att(1:td_var%i_natt)=att_copy(tl_att(:)) 
    5412  
    5413             ! clean 
    5414             CALL att_clean(tl_att(:)) 
    5415             DEALLOCATE(tl_att) 
    5416              
    5417          ENDIF 
    5418       ELSE 
    5419       ! no attribute in variable structure 
    5420          IF( ASSOCIATED(td_var%t_att) )THEN 
    5421             CALL att_clean(td_var%t_att(:)) 
    5422             DEALLOCATE(td_var%t_att) 
    5423          ENDIF 
    5424          ALLOCATE( td_var%t_att(td_var%i_natt+il_natt), stat=il_status ) 
    5425          IF(il_status /= 0 )THEN 
    5426  
    5427             CALL logger_error( & 
    5428             &  " VAR ADD ATT: not enough space to put attributes "//& 
    5429             &  "in variable structure "//TRIM(td_var%c_name) ) 
    5430  
    5431          ENDIF 
    5432       ENDIF 
    5433  
    5434       ALLOCATE( tl_att(il_natt) ) 
    5435       tl_att(:)=att_copy(td_att(:)) 
    5436  
    5437       ! check if attribute already in variable structure 
    54384842      DO ji=1,il_natt 
    5439          il_ind=0 
    5440          il_ind=att_get_index( td_var%t_att(:), tl_att(ji)%c_name ) 
    5441          IF( il_ind /= 0 )THEN 
    5442             CALL logger_error( & 
    5443             &  " VAR ADD ATT: attribute "//TRIM(tl_att(ji)%c_name)//& 
    5444             &  ", already in variable "//TRIM(td_var%c_name) ) 
    5445             CALL att_clean(tl_att(ji)) 
    5446          ENDIF 
     4843         CALL var_add_att(td_var, td_att(ji)) 
    54474844      ENDDO 
    5448  
    5449       ! add new attributes 
    5450       td_var%t_att(td_var%i_natt+1:td_var%i_natt+il_natt)=att_copy(tl_att(:)) 
    5451  
    5452       DEALLOCATE(tl_att) 
    5453  
    5454       DO ji=1,il_natt 
    5455          ! highlight some attribute 
    5456          IF( ASSOCIATED(td_var%t_att(td_var%i_natt+ji)%d_value) .OR. & 
    5457            & td_var%t_att(td_var%i_natt+ji)%c_value /= 'none' )THEN 
    5458             SELECT CASE(TRIM(td_var%t_att(td_var%i_natt+ji)%c_name)) 
    5459  
    5460                CASE("add_offset") 
    5461                   td_var%d_ofs = td_var%t_att(td_var%i_natt+ji)%d_value(1) 
    5462                CASE("scale_factor") 
    5463                   td_var%d_scf = td_var%t_att(td_var%i_natt+ji)%d_value(1) 
    5464                CASE("_FillValue") 
    5465                   td_var%d_fill = td_var%t_att(td_var%i_natt+ji)%d_value(1) 
    5466                CASE("ew_overlap") 
    5467                   td_var%i_ew = INT(td_var%t_att(td_var%i_natt+ji)%d_value(1),i4)  
    5468                CASE("standard_name") 
    5469                   td_var%c_stdname = TRIM(td_var%t_att(td_var%i_natt+ji)%c_value) 
    5470                CASE("long_name") 
    5471                   td_var%c_longname = TRIM(td_var%t_att(td_var%i_natt+ji)%c_value) 
    5472                CASE("units") 
    5473                   td_var%c_units = TRIM(td_var%t_att(td_var%i_natt+ji)%c_value) 
    5474                CASE("grid_point") 
    5475                   td_var%c_point = TRIM(td_var%t_att(td_var%i_natt+ji)%c_value) 
    5476  
    5477             END SELECT 
    5478          ENDIF 
    5479       ENDDO 
    5480  
    5481       ! update number of attribute 
    5482       td_var%i_natt=td_var%i_natt+il_natt 
    5483  
    54844845 
    54854846   END SUBROUTINE var__add_att_arr 
     
    54894850   ! 
    54904851   !> @author J.Paul 
    5491    !> @date November, 2013 - Initial Version 
    5492    !> @date June, 2015  
    5493    !> - use var__add_att_arr subroutine 
     4852   !> - November, 2013- Initial Version 
    54944853   ! 
    54954854   !> @param[inout] td_var variable structure 
     
    55034862 
    55044863      ! local variable 
    5505       TYPE(TATT), DIMENSION(1) :: tl_att 
     4864      INTEGER(i4) :: il_status 
     4865      INTEGER(i4) :: il_ind 
     4866      TYPE(TATT), DIMENSION(:), ALLOCATABLE :: tl_att 
    55064867 
    55074868      ! loop indices 
     4869      INTEGER(i4) :: ji 
    55084870      !---------------------------------------------------------------- 
    55094871 
    5510       ! copy structure in an array 
    5511       tl_att(1)=att_copy(td_att) 
    5512  
    5513       !  
    5514       CALL var_add_att( td_var, tl_att(:) ) 
     4872      ! check if attribute already in variable structure 
     4873      il_ind=0 
     4874      IF( ASSOCIATED(td_var%t_att) )THEN 
     4875         il_ind=att_get_index( td_var%t_att(:), td_att%c_name ) 
     4876      ENDIF 
     4877 
     4878      IF( il_ind /= 0 )THEN 
     4879 
     4880         CALL logger_error( & 
     4881         &  " VAR ADD ATT: attribute "//TRIM(td_att%c_name)//& 
     4882         &  ", already in variable "//TRIM(td_var%c_name) ) 
     4883 
     4884         DO ji=1,td_var%i_natt 
     4885            CALL logger_debug( & 
     4886            &  " VAR ADD ATT: in variable "//TRIM(td_var%t_att(ji)%c_name) ) 
     4887         ENDDO 
     4888 
     4889      ELSE 
     4890          
     4891         CALL logger_trace( & 
     4892         &  " VAR ADD ATT: add attribute "//TRIM(td_att%c_name)//& 
     4893         &  ", in variable "//TRIM(td_var%c_name) ) 
     4894 
     4895         IF( td_var%i_natt > 0 )THEN 
     4896         ! already other attribute in variable structure 
     4897            ALLOCATE( tl_att(td_var%i_natt), stat=il_status ) 
     4898            IF(il_status /= 0 )THEN 
     4899 
     4900               CALL logger_error( & 
     4901               &  " VAR ADD ATT: not enough space to put attributes from "//& 
     4902               &  TRIM(td_var%c_name)//" in temporary attribute structure") 
     4903 
     4904            ELSE 
     4905 
     4906               ! save temporary global attribute's variable structure 
     4907               tl_att(:)=att_copy(td_var%t_att(:)) 
     4908 
     4909               CALL att_clean(td_var%t_att(:)) 
     4910               DEALLOCATE( td_var%t_att ) 
     4911               ALLOCATE( td_var%t_att(td_var%i_natt+1), stat=il_status ) 
     4912               IF(il_status /= 0 )THEN 
     4913 
     4914                  CALL logger_error( & 
     4915                  &  " VAR ADD ATT: not enough space to put attributes "//& 
     4916                  &  "in variable structure "//TRIM(td_var%c_name) ) 
     4917 
     4918               ENDIF 
     4919 
     4920               ! copy attribute in variable before 
     4921               td_var%t_att(1:td_var%i_natt)=att_copy(tl_att(:)) 
     4922 
     4923               ! clean 
     4924               CALL att_clean(tl_att(:)) 
     4925               DEALLOCATE(tl_att) 
     4926                
     4927            ENDIF 
     4928         ELSE 
     4929         ! no attribute in variable structure 
     4930            IF( ASSOCIATED(td_var%t_att) )THEN 
     4931               CALL att_clean(td_var%t_att(:)) 
     4932               DEALLOCATE(td_var%t_att) 
     4933            ENDIF 
     4934            ALLOCATE( td_var%t_att(td_var%i_natt+1), stat=il_status ) 
     4935            IF(il_status /= 0 )THEN 
     4936 
     4937               CALL logger_error( & 
     4938               &  " VAR ADD ATT: not enough space to put attributes "//& 
     4939               &  "in variable structure "//TRIM(td_var%c_name) ) 
     4940 
     4941            ENDIF 
     4942         ENDIF 
     4943         ! update number of attribute 
     4944         td_var%i_natt=td_var%i_natt+1 
     4945 
     4946         ! add new attribute 
     4947         td_var%t_att(td_var%i_natt)=att_copy(td_att) 
     4948 
     4949         !! add new attribute id 
     4950         !td_var%t_att(td_var%i_natt)%i_id=att_get_unit(td_var%t_att(:)) 
     4951 
     4952         ! highlight some attribute 
     4953         IF( ASSOCIATED(td_var%t_att(td_var%i_natt)%d_value) .OR. & 
     4954           & td_var%t_att(td_var%i_natt)%c_value /= "none" )THEN 
     4955            SELECT CASE(TRIM(td_var%t_att(td_var%i_natt)%c_name)) 
     4956 
     4957               CASE("add_offset") 
     4958                  td_var%d_ofs = td_var%t_att(td_var%i_natt)%d_value(1) 
     4959               CASE("scale_factor") 
     4960                  td_var%d_scf = td_var%t_att(td_var%i_natt)%d_value(1) 
     4961               CASE("_FillValue") 
     4962                  td_var%d_fill = td_var%t_att(td_var%i_natt)%d_value(1) 
     4963               CASE("ew_overlap") 
     4964                  td_var%i_ew = INT(td_var%t_att(td_var%i_natt)%d_value(1),i4)  
     4965               CASE("standard_name") 
     4966                  td_var%c_stdname = TRIM(td_var%t_att(td_var%i_natt)%c_value) 
     4967               CASE("long_name") 
     4968                  td_var%c_longname = TRIM(td_var%t_att(td_var%i_natt)%c_value) 
     4969               CASE("units") 
     4970                  td_var%c_units = TRIM(td_var%t_att(td_var%i_natt)%c_value) 
     4971               CASE("grid_point") 
     4972                  td_var%c_point = TRIM(td_var%t_att(td_var%i_natt)%c_value) 
     4973 
     4974            END SELECT 
     4975         ENDIF 
     4976      ENDIF 
    55154977 
    55164978   END SUBROUTINE var__add_att_unit 
     
    55204982   ! 
    55214983   !> @author J.Paul 
    5522    !> @date November, 2013 - Initial Version 
    5523    !> @date February, 2015  
    5524    !> - define local attribute structure to avoid mistake  
    5525    !> with pointer 
     4984   !> - November, 2013- Initial Version 
    55264985   ! 
    55274986   !> @param[inout] td_var variable structure 
     
    55374996      INTEGER(i4) :: il_ind 
    55384997 
    5539       TYPE(TATT)  :: tl_att 
    55404998      ! loop indices 
    55414999      !---------------------------------------------------------------- 
     
    55495007      IF( il_ind == 0 )THEN 
    55505008 
    5551          CALL logger_debug( & 
     5009         CALL logger_warn( & 
    55525010         &  " VAR DEL ATT: no attribute "//TRIM(cd_name)//& 
    55535011         &  ", in variable "//TRIM(td_var%c_name) ) 
     
    55555013      ELSE 
    55565014          
    5557          tl_att=att_copy(td_var%t_att(il_ind)) 
    5558          CALL var_del_att(td_var, tl_att) 
     5015         CALL var_del_att(td_var, td_var%t_att(il_ind)) 
    55595016 
    55605017      ENDIF 
     
    55665023   ! 
    55675024   !> @author J.Paul 
    5568    !> @date November, 2013- Initial Version 
    5569    !> @date February, 2015  
    5570    !> - delete highlight attribute too, when attribute  
    5571    !> is deleted 
     5025   !> - November, 2013- Initial Version 
    55725026   ! 
    55735027   !> @param[inout] td_var variable structure 
     
    55865040 
    55875041      ! loop indices 
     5042      !INTEGER(i4) :: ji 
    55885043      !---------------------------------------------------------------- 
    55895044 
     
    55965051      IF( il_ind == 0 )THEN 
    55975052 
    5598          CALL logger_debug( & 
     5053         CALL logger_warn( & 
    55995054         &  " VAR DEL ATT: no attribute "//TRIM(td_att%c_name)//& 
    56005055         &  ", in variable "//TRIM(td_var%c_name) ) 
     
    56485103               td_var%t_att(1:td_var%i_natt)=att_copy(tl_att(:)) 
    56495104 
     5105               !! change attribute id 
     5106               !DO ji=1,td_var%i_natt 
     5107               !   td_var%t_att(ji)%i_id=ji 
     5108               !ENDDO 
     5109 
    56505110               ! clean 
    56515111               CALL att_clean(tl_att(:)) 
     
    56535113            ENDIF  
    56545114         ENDIF 
    5655  
    5656          ! highlight attribute 
    5657          SELECT CASE( TRIM(td_att%c_name) ) 
    5658  
    5659             CASE("add_offset") 
    5660                td_var%d_ofs = 0._dp 
    5661             CASE("scale_factor") 
    5662                td_var%d_scf = 1._dp 
    5663             CASE("_FillValue") 
    5664                td_var%d_fill = 0._dp 
    5665             CASE("ew_overlap") 
    5666                td_var%i_ew = -1  
    5667             CASE("standard_name") 
    5668                td_var%c_stdname = '' 
    5669             CASE("long_name") 
    5670                td_var%c_longname = '' 
    5671             CASE("units") 
    5672                td_var%c_units = '' 
    5673             CASE("grid_point") 
    5674                td_var%c_point = '' 
    5675  
    5676          END SELECT 
    5677  
    56785115      ENDIF 
    56795116 
     
    56845121   ! 
    56855122   !> @author J.Paul 
    5686    !> @date November, 2013 - Initial Version 
     5123   !> - November, 2013- Initial Version 
    56875124   ! 
    56885125   !> @param[inout] td_var variable structure 
     
    57195156   ! 
    57205157   !> @author J.Paul 
    5721    !> @date November, 2013 - Initial Version 
     5158   !> - November, 2013- Initial Version 
    57225159   ! 
    57235160   !> @param[inout] td_var variable structure 
     
    57585195   ! 
    57595196   !> @author J.Paul 
    5760    !> @date November, 2013 - Initial Version 
     5197   !> - November, 2013- Initial Version 
    57615198   ! 
    57625199   !> @param[inout] td_var variable structure 
     
    57745211      !---------------------------------------------------------------- 
    57755212 
    5776       IF( td_var%i_ndim <= ip_maxdim )THEN 
     5213      IF( td_var%i_ndim <= 4 )THEN 
    57775214 
    57785215         ! check if dimension already used in variable structure 
     
    57905227         ELSE 
    57915228 
    5792             ! back to disorder dimension array  
    5793             CALL dim_disorder(td_var%t_dim(:)) 
    5794  
     5229         ! back to unorder dimension array  
     5230         CALL dim_unorder(td_var%t_dim(:)) 
    57955231            ! add new dimension 
    57965232            td_var%t_dim(td_var%i_ndim+1)=dim_copy(td_dim) 
     
    58175253   ! 
    58185254   !> @author J.Paul 
    5819    !> @date November, 2013 - Initial Version 
     5255   !> - November, 2013- Initial Version 
    58205256   ! 
    58215257   !> @param[inout] td_var variable structure 
     
    58365272      !---------------------------------------------------------------- 
    58375273 
    5838       IF( td_var%i_ndim <= ip_maxdim )THEN 
     5274      IF( td_var%i_ndim <= 4 )THEN 
    58395275 
    58405276         CALL logger_trace( & 
     
    58815317   ! 
    58825318   !> @author J.Paul 
    5883    !> @date November, 2013 - Initial Version 
     5319   !> - November, 2013- Initial Version 
    58845320   ! 
    58855321   !> @param[inout] td_var variable structure 
     
    59245360   !> 
    59255361   !> @author J.Paul 
    5926    !> @date June, 2014 - Initial Version 
     5362   !> - June, 2014- Initial Version 
    59275363   ! 
    59285364   !> @param[in] td_var array of variables structure 
     
    59505386   !> 
    59515387   !> @author J.Paul 
    5952    !> @date November, 2013 - Initial Version 
     5388   !> - November, 2013- Initial Version 
    59535389   ! 
    59545390   !> @param[in] td_var    variable structure 
     
    60575493   !> 
    60585494   !> @author J.Paul 
    6059    !> @date November, 2013 - Initial Version 
     5495   !> - November, 2013- Initial Version 
    60605496   !> 
    60615497   !> @param[inout] td_var variable structure 
     
    61955631   !> 
    61965632   !> @author J.Paul 
    6197    !> @date November, 2013 - Initial Version 
     5633   !> - November, 2013- Initial Version 
    61985634   !> 
    61995635   !> @param[inout] td_var variable structure 
     
    62495685   !> 
    62505686   !> @author J.Paul 
    6251    !> @date November, 2013 - Initial Version 
     5687   !> - November, 2013- Initial Version 
    62525688   ! 
    62535689   !> @param[inout] td_var variable structure 
     
    63255761   ! 
    63265762   !> @author J.Paul 
    6327    !> @date November, 2013 - Initial Version 
     5763   !> - November, 2013- Initial Version 
    63285764   ! 
    63295765   !> @param[inout] td_var variabele structure 
     
    64015837   ! 
    64025838   !> @author J.Paul 
    6403    !> @date November, 2013 - Initial Version 
     5839   !> - November, 2013- Initial Version 
    64045840   ! 
    64055841   !> @param[inout] td_var variabele structure 
     
    64775913   ! 
    64785914   !> @author J.Paul 
    6479    !> @date November, 2013 - Initial Version 
     5915   !> - November, 2013- Initial Version 
    64805916   ! 
    64815917   !> @param[inout] td_var variabele structure 
     
    65515987   !> 
    65525988   !> @author J.Paul 
    6553    !> @date November, 2013 - Initial Version 
     5989   !> - November, 2013- Initial Version 
    65545990   ! 
    65555991   !> @param[inout] td_var variable structure 
     
    66216057   !> 
    66226058   !> @author J.Paul 
    6623    !> @date November, 2013 - Initial Version 
     6059   !> - November, 2013- Initial Version 
    66246060   !> 
    66256061   !> @param[inout] td_var variable structure 
     
    66446080   !> 
    66456081   !> @author J.Paul 
    6646    !> @date September, 2014 - Initial Version 
     6082   !> - September, 2014- Initial Version 
    66476083   !> 
    66486084   !> @param[in] td_var       array of variable structure 
     
    67066142   !> given variable name or standard name.  
    67076143   !> 
     6144   !> @warning only variable read from file, have an id. 
     6145   !> 
    67086146   !> @author J.Paul 
    6709    !> @date November, 2013 - Initial Version 
    6710    !> @date July, 2015 
    6711    !> - check long name 
     6147   !> - November, 2013- Initial Version 
    67126148   ! 
    67136149   !> @param[in] td_var       array of variable structure 
     
    67436179         ELSE IF( fct_lower(td_var(ji)%c_stdname) == fct_lower(cd_name) .AND.& 
    67446180         &    TRIM(fct_lower(td_var(ji)%c_stdname)) /= '' )THEN 
    6745              
    6746             var_get_id=td_var(ji)%i_id 
    6747             EXIT 
    6748  
    6749          ! look for variable long name 
    6750          ELSE IF( fct_lower(td_var(ji)%c_longname) == fct_lower(cd_name) .AND.& 
    6751          &    TRIM(fct_lower(td_var(ji)%c_longname)) /= '' )THEN 
    67526181             
    67536182            var_get_id=td_var(ji)%i_id 
     
    67716200   !> 
    67726201   !> @author J.Paul 
    6773    !> @date November, 2013 - Initial Version 
     6202   !> - November, 2013- Initial Version 
    67746203   ! 
    67756204   !> @param[in] td_var array of variable structure 
     
    67906219      IF( ASSOCIATED(td_var%d_value) )THEN 
    67916220 
    6792          CALL logger_debug( "VAR GET MASK: create mask from variable "//& 
    6793          &               TRIM(td_var%c_name)//", FillValue ="//& 
    6794          &               TRIM(fct_str(td_var%d_fill))) 
     6221         CALL logger_trace( "VAR GET MASK: create mask from variable "//& 
     6222         &               TRIM(td_var%c_name) ) 
    67956223         var_get_mask(:,:,:)=1 
    67966224         WHERE( td_var%d_value(:,:,:,1) == td_var%d_fill ) 
     
    68116239   !>  
    68126240   !> @author J.Paul 
    6813    !> @date November, 2013 - Initial Version 
     6241   !> - November, 2013- Initial Version 
    68146242   ! 
    68156243   !> @param[inout] td_var array of variable structure 
     
    68946322   !>  
    68956323   !> @author J.Paul 
    6896    !> @date November, 2013 - Initial Version 
    6897    !> @date June, 2015  
    6898    !> - new namelist format to get extra information (interpolation,...) 
     6324   !> - November, 2013- Initial Version 
    68996325   ! 
    69006326   !> @param[in] cd_file   configuration file of variable 
     
    69316357 
    69326358         il_fileid=fct_getunit() 
     6359         CALL logger_trace("VAR DEF EXTRA: open "//TRIM(cd_file)) 
    69336360         OPEN( il_fileid, FILE=TRIM(cd_file), & 
    69346361         &                FORM='FORMATTED',   & 
     
    69396366         CALL fct_err(il_status) 
    69406367         IF( il_status /= 0 )THEN 
    6941             CALL logger_fatal("VAR DEF EXTRA: can not open file "//& 
    6942             &                 TRIM(cd_file)) 
     6368            CALL logger_error("VAR DEF EXTRA: opening file "//TRIM(cd_file)) 
    69436369         ENDIF 
    69446370 
     
    69496375         DO WHILE( il_status == 0 ) 
    69506376 
    6951          ! search line not beginning with comment character 
     6377         ! search line do not beginning with comment character 
    69526378            IF( SCAN( TRIM(fct_concat(cp_com(:))) ,cl_line(1:1)) == 0 )THEN 
    69536379               il_nvar=il_nvar+1 
     
    69936419                  tg_varextra(ji)%c_axis    =TRIM(fct_split(cl_line,3)) 
    69946420                  tg_varextra(ji)%c_point   =TRIM(fct_split(cl_line,4)) 
    6995  
    6996                   cl_interp='int='//TRIM(fct_split(cl_line,5)) 
     6421                  tg_varextra(ji)%c_stdname =TRIM(fct_split(cl_line,5)) 
     6422                  tg_varextra(ji)%c_longname=TRIM(fct_split(cl_line,6)) 
     6423 
     6424                  cl_interp=TRIM(fct_split(cl_line,7)) 
    69976425                  tg_varextra(ji)%c_interp(:) = & 
    69986426                  &  var__get_interp(TRIM(tg_varextra(ji)%c_name), cl_interp) 
    69996427                  CALL logger_debug("VAR DEF EXTRA: "//& 
    70006428                  &  TRIM(tg_varextra(ji)%c_name)//& 
    7001                   &  " "//TRIM(tg_varextra(ji)%c_interp(1))) 
    7002  
    7003                   tg_varextra(ji)%c_longname=TRIM(fct_split(cl_line,6)) 
    7004                   tg_varextra(ji)%c_stdname =TRIM(fct_split(cl_line,7)) 
     6429                  &  " "//TRIM(cl_interp)) 
    70056430               ELSE 
    70066431                  ji=ji-1 
     
    70336458   !> @details  
    70346459   !> string character format must be : <br/> 
    7035    !> "varname:int=interp; flt=filter; ext=extrap; min=min; max=max"<br/> 
     6460   !> "varname:interp; filter; extrap; > min; < max"<br/> 
    70366461   !> you could specify only interpolation, filter or extrapolation method,  
    70376462   !> whatever the order. you could find more 
     
    70396464   !> \ref extrap module.<br/> 
    70406465   !> Examples:  
    7041    !> cn_varinfo='Bathymetry:flt=2*hamming(2,3); min=10.' 
    7042    !> cn_varinfo='votemper:int=cubic; ext=dist_weight; max=40.' 
    7043    !> 
    7044    !> 
    7045    !> @warning variable should be define in tg_varextra (ie in configuration 
    7046    !> file, to be able to add information from namelist 
     6466   !> cn_varinfo='Bathymetry:2*hamming(2,3); > 10.' 
     6467   !> cn_varinfo='votemper:cubic; dist_weight; <40.' 
    70476468   !> 
    70486469   !> @note If you do not specify a method which is required, default one is 
     
    70506471   !> 
    70516472   !> @author J.Paul 
    7052    !> @date November, 2013 - Initial Version 
    7053    !> @date July, 2015  
    7054    !> - get unit and unit factor (to change unit)  
     6473   !> - November, 2013- Initial Version 
    70556474   ! 
    70566475   !> @param[in] cd_varinfo   variable information from namelist 
     
    70676486      CHARACTER(LEN=lc), DIMENSION(1)              :: cl_extrap 
    70686487      CHARACTER(LEN=lc), DIMENSION(5)              :: cl_filter 
    7069       CHARACTER(LEN=lc)                            :: cl_unt 
    70706488 
    70716489      INTEGER(i4)                                  :: il_ind 
     
    70746492      REAL(dp)                                     :: dl_min 
    70756493      REAL(dp)                                     :: dl_max 
    7076       REAL(dp)                                     :: dl_unf 
    70776494 
    70786495      TYPE(TVAR)       , DIMENSION(:), ALLOCATABLE :: tl_varextra 
     
    70916508            dl_min=var__get_min(cl_name, cl_method) 
    70926509            dl_max=var__get_max(cl_name, cl_method) 
    7093             dl_unf=var__get_unf(cl_name, cl_method) 
    70946510            cl_interp(:)=var__get_interp(cl_name, cl_method) 
    70956511            cl_extrap(:)=var__get_extrap(cl_name, cl_method) 
    70966512            cl_filter(:)=var__get_filter(cl_name, cl_method) 
    7097             cl_unt=var__get_unt(cl_name, cl_method) 
    7098  
    70996513 
    71006514            il_ind=var_get_index(tg_varextra(:), TRIM(cl_name)) 
     
    71026516               IF( dl_min /= dp_fill ) tg_varextra(il_ind)%d_min=dl_min 
    71036517               IF( dl_max /= dp_fill ) tg_varextra(il_ind)%d_max=dl_max 
    7104                IF( dl_unf /= dp_fill ) tg_varextra(il_ind)%d_unf=dl_unf 
    7105                IF(cl_unt      /='') tg_varextra(il_ind)%c_unt      =cl_unt 
    71066518               IF(cl_interp(1)/='') tg_varextra(il_ind)%c_interp(:)=cl_interp(:) 
    71076519               IF(cl_extrap(1)/='') tg_varextra(il_ind)%c_extrap(:)=cl_extrap(:) 
     
    71396551               &                               cd_filter=cl_filter(:), & 
    71406552               &                               dd_min = dl_min, & 
    7141                &                               dd_max = dl_max, & 
    7142                &                               cd_unt = cl_unt, & 
    7143                &                               dd_unf = dl_unf ) 
     6553               &                               dd_max = dl_max ) 
    71446554 
    71456555            ENDIF 
    71466556 
    71476557            ji=ji+1 
    7148             CALL logger_debug( "VAR CHG EXTRA: name       "//& 
     6558            CALL logger_trace( "VAR CHG EXTRA: name       "//& 
    71496559            &                  TRIM(tg_varextra(il_ind)%c_name) ) 
    7150             CALL logger_debug( "VAR CHG EXTRA: interp     "//& 
     6560            CALL logger_trace( "VAR CHG EXTRA: interp     "//& 
    71516561            &                  TRIM(tg_varextra(il_ind)%c_interp(1)) )          
    7152             CALL logger_debug( "VAR CHG EXTRA: filter     "//& 
     6562            CALL logger_trace( "VAR CHG EXTRA: filter     "//& 
    71536563            &                  TRIM(tg_varextra(il_ind)%c_filter(1)) )          
    7154             CALL logger_debug( "VAR CHG EXTRA: extrap     "//& 
     6564            CALL logger_trace( "VAR CHG EXTRA: extrap     "//& 
    71556565            &                  TRIM(tg_varextra(il_ind)%c_extrap(1)) ) 
    71566566            IF( tg_varextra(il_ind)%d_min /= dp_fill )THEN 
    7157                CALL logger_debug( "VAR CHG EXTRA: min value  "//& 
     6567               CALL logger_trace( "VAR CHG EXTRA: min value  "//& 
    71586568               &                  TRIM(fct_str(tg_varextra(il_ind)%d_min)) ) 
    71596569            ENDIF 
    71606570            IF( tg_varextra(il_ind)%d_max /= dp_fill )THEN 
    7161                CALL logger_debug( "VAR CHG EXTRA: max value  "//& 
     6571               CALL logger_trace( "VAR CHG EXTRA: max value  "//& 
    71626572               &                  TRIM(fct_str(tg_varextra(il_ind)%d_max)) ) 
    7163             ENDIF 
    7164             IF( TRIM(tg_varextra(il_ind)%c_unt) /= '' )THEN 
    7165                CALL logger_debug( "VAR CHG EXTRA: new unit  "//& 
    7166                &                  TRIM(tg_varextra(il_ind)%c_unt) ) 
    7167             ENDIF 
    7168             IF( tg_varextra(il_ind)%d_unf /= 1. )THEN 
    7169                CALL logger_debug( "VAR CHG EXTRA: new unit factor  "//& 
    7170                &                  TRIM(fct_str(tg_varextra(il_ind)%d_unf)) ) 
    71716573            ENDIF 
    71726574         ENDDO 
     
    71916593   !> 
    71926594   !> @author J.Paul 
    7193    !> @date November, 2013 - Initial Version 
     6595   !> - November, 2013- Initial Version 
    71946596   ! 
    71956597   !> @param[inout] td_var variable structure 
     
    72856687   !>  
    72866688   !> @author J.Paul 
    7287    !> @date November, 2013 - Initial Version 
     6689   !> - November, 2013- Initial Version 
    72886690   !> 
    72896691   !> @param[inout] td_var variable structure 
     
    72956697 
    72966698      ! local variable 
    7297       CHARACTER(LEN=lc) :: cl_tmp 
    7298  
    72996699      INTEGER(i4)       :: il_ind 
    7300        
    73016700      TYPE(TATT)        :: tl_att 
    73026701 
    73036702      ! loop indices 
    7304       INTEGER(i4)       :: ji 
    73056703      !---------------------------------------------------------------- 
    73066704 
     
    73556753               td_var%c_axis=TRIM(tg_varextra(il_ind)%c_axis) 
    73566754               ! create attibute 
    7357                IF( TRIM(fct_upper(td_var%c_name)) == TRIM(td_var%c_axis) )THEN 
    7358                   tl_att=att_init('axis',TRIM(td_var%c_axis)) 
    7359                ELSE 
    7360                   cl_tmp="" 
    7361                   DO ji=LEN(TRIM(td_var%c_axis)),1,-1 
    7362                      cl_tmp=TRIM(cl_tmp)//" "//TRIM(td_var%c_axis(ji:ji)) 
    7363                   ENDDO 
    7364                   tl_att=att_init('associate',TRIM(ADJUSTL(cl_tmp))) 
    7365                ENDIF 
    7366                CALL var_move_att(td_var, tl_att) 
     6755               tl_att=att_init('axis',TRIM(td_var%c_axis)) 
     6756               CALL var_move_att(td_var, tl_att)                
    73676757            ENDIF 
    73686758 
     
    74186808            ENDIF 
    74196809 
    7420             ! unt 
    7421             IF( TRIM(td_var%c_unt) == '' .AND. & 
    7422             &   TRIM(tg_varextra(il_ind)%c_unt) /= '' )THEN 
    7423                td_var%c_unt=TRIM(tg_varextra(il_ind)%c_unt) 
    7424             ENDIF 
    7425  
    7426             ! units factor 
    7427             IF( td_var%d_unf == 1._dp .AND. & 
    7428             &   tg_varextra(il_ind)%d_unf /= 1._dp )THEN 
    7429                td_var%d_unf=tg_varextra(il_ind)%d_unf 
    7430             ENDIF 
    7431  
    7432          ELSE 
    7433             CALL logger_warn("VAR GET EXTRA: no extra information on "//& 
    7434                &  "variable "//TRIM(td_var%c_name)//". you should define it"//& 
    7435                &  " (see variable.cfg).") 
     6810         CALL logger_trace("VAR GET EXTRA: name       "//TRIM(td_var%c_name)) 
     6811         CALL logger_trace("VAR GET EXTRA: stdname    "//TRIM(td_var%c_stdname)) 
     6812         CALL logger_trace("VAR GET EXTRA: longname   "//TRIM(td_var%c_longname)) 
     6813         CALL logger_trace("VAR GET EXTRA: units      "//TRIM(td_var%c_units)) 
     6814         CALL logger_trace("VAR GET EXTRA: point      "//TRIM(td_var%c_point)) 
     6815         CALL logger_trace("VAR GET EXTRA: interp     "//TRIM(td_var%c_interp(1))) 
     6816         CALL logger_trace("VAR GET EXTRA: filter     "//TRIM(td_var%c_filter(1))) 
     6817         CALL logger_trace("VAR GET EXTRA: min value  "//TRIM(fct_str(td_var%d_min))) 
     6818         CALL logger_trace("VAR GET EXTRA: max value  "//TRIM(fct_str(td_var%d_max))) 
    74366819         ENDIF 
    74376820 
     
    74506833   !>  
    74516834   !> @details 
    7452    !> minimum value is assume to follow string "min =" 
     6835   !> minimum value is assume to follow sign '>' 
    74536836   !> 
    74546837   !> @author J.Paul 
    7455    !> @date November, 2013 - Initial Version 
    7456    !> @date June, 2015  
    7457    !> - change way to get information in namelist,  
    7458    !> value follows string "min =" 
    7459    !> @date Feb, 2016 
    7460    !> - check character just after keyword 
     6838   !> - November, 2013- Initial Version 
    74616839   ! 
    74626840   !> @param[in] cd_name      variable name 
     
    74816859      ! loop indices 
    74826860      INTEGER(i4) :: ji 
    7483       INTEGER(i4) :: jj 
    74846861      !---------------------------------------------------------------- 
    74856862      ! init 
     
    74906867      cl_tmp=fct_split(cd_varinfo,ji,';') 
    74916868      DO WHILE( TRIM(cl_tmp) /= '' ) 
    7492          il_ind=INDEX(TRIM(cl_tmp),'min') 
     6869         il_ind=SCAN(TRIM(cl_tmp),'>') 
    74936870         IF( il_ind /= 0 )THEN 
    7494             ! check character just after 
    7495             jj=il_ind+LEN('min') 
    7496             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7497             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7498                cl_min=fct_split(cl_tmp,2,'=') 
    7499                EXIT 
    7500             ENDIF 
     6871            cl_min=TRIM(ADJUSTL(cl_tmp(il_ind+1:))) 
     6872            EXIT 
    75016873         ENDIF 
    75026874         ji=ji+1 
     
    75056877 
    75066878      IF( TRIM(cl_min) /= '' )THEN 
    7507          IF( fct_is_real(cl_min) )THEN 
     6879         IF( fct_is_num(cl_min) )THEN 
    75086880            READ(cl_min,*) var__get_min 
    75096881            CALL logger_debug("VAR GET MIN: will use minimum value of "//& 
    75106882            &  TRIM(fct_str(var__get_min))//" for variable "//TRIM(cd_name) ) 
    75116883         ELSE 
    7512             CALL logger_error("VAR GET MIN: invalid minimum value ("//& 
    7513                & TRIM(cl_min)//") for variable "//TRIM(cd_name)//& 
    7514                & ". check namelist." ) 
     6884            CALL logger_error("VAR GET MIN: invalid minimum value for "//& 
     6885            &  "variable "//TRIM(cd_name)//". check namelist." ) 
    75156886         ENDIF 
    75166887      ENDIF 
     
    75236894   !>  
    75246895   !> @details 
    7525    !> maximum value is assume to follow string "max =" 
     6896   !> maximum value is assume to follow sign '<' 
    75266897   !> 
    75276898   !> @author J.Paul 
    7528    !> @date November, 2013 - Initial Version 
    7529    !> @date June, 2015  
    7530    !> - change way to get information in namelist,  
    7531    !> value follows string "max =" 
    7532    !> @date Feb, 2016 
    7533    !> - check character just after keyword 
     6899   !> - November, 2013- Initial Version 
    75346900   ! 
    75356901   !> @param[in] cd_name      variable name 
     
    75546920      ! loop indices 
    75556921      INTEGER(i4) :: ji 
    7556       INTEGER(i4) :: jj 
    75576922      !---------------------------------------------------------------- 
    75586923      ! init 
     
    75636928      cl_tmp=fct_split(cd_varinfo,ji,';') 
    75646929      DO WHILE( TRIM(cl_tmp) /= '' ) 
    7565          il_ind=INDEX(TRIM(cl_tmp),'max') 
     6930         il_ind=SCAN(TRIM(cl_tmp),'<') 
    75666931         IF( il_ind /= 0 )THEN 
    7567             ! check character just after 
    7568             jj=il_ind+LEN('max') 
    7569             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7570             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7571                cl_max=fct_split(cl_tmp,2,'=') 
    7572                EXIT 
    7573             ENDIF 
     6932            cl_max=TRIM(ADJUSTL(cl_tmp(il_ind+1:))) 
     6933            EXIT 
    75746934         ENDIF 
    75756935         ji=ji+1 
     
    75786938 
    75796939      IF( TRIM(cl_max) /= '' )THEN 
    7580          IF( fct_is_real(cl_max) )THEN 
     6940         IF( fct_is_num(cl_max) )THEN 
    75816941            READ(cl_max,*) var__get_max 
    75826942            CALL logger_debug("VAR GET MAX: will use maximum value of "//& 
     
    75926952   !> @brief 
    75936953   !> This function check if variable information read in namelist contains  
    7594    !> units factor value and return it if true.  
    7595    !>  
    7596    !> @details 
    7597    !> units factor value is assume to follow string "unf =" 
    7598    !> 
    7599    !> @author J.Paul 
    7600    !> @date June, 2015 - Initial Version 
    7601    !> @date Feb, 2016 
    7602    !> - check character just after keyword 
    7603    ! 
    7604    !> @param[in] cd_name      variable name 
    7605    !> @param[in] cd_varinfo   variable information read in namelist  
    7606    !> @return untis factor value to be used (FillValue if none) 
    7607    !------------------------------------------------------------------- 
    7608    FUNCTION var__get_unf( cd_name, cd_varinfo ) 
    7609       IMPLICIT NONE 
    7610       ! Argument 
    7611       CHARACTER(LEN=*), INTENT(IN   ) :: cd_name 
    7612       CHARACTER(LEN=*), INTENT(IN   ) :: cd_varinfo 
    7613  
    7614       ! function 
    7615       REAL(dp) :: var__get_unf 
    7616  
    7617       ! local variable 
    7618       CHARACTER(LEN=lc) :: cl_tmp 
    7619       CHARACTER(LEN=lc) :: cl_unf 
    7620        
    7621       INTEGER(i4)       :: il_ind 
    7622  
    7623       REAL(dp)          :: rl_unf 
    7624  
    7625       ! loop indices 
    7626       INTEGER(i4) :: ji 
    7627       INTEGER(i4) :: jj 
    7628       !---------------------------------------------------------------- 
    7629       ! init 
    7630       cl_unf='' 
    7631       var__get_unf=dp_fill 
    7632  
    7633       ji=1 
    7634       cl_tmp=fct_split(cd_varinfo,ji,';') 
    7635       DO WHILE( TRIM(cl_tmp) /= '' ) 
    7636          il_ind=INDEX(TRIM(cl_tmp),'unf') 
    7637          IF( il_ind /= 0 )THEN 
    7638             ! check character just after 
    7639             jj=il_ind+LEN('unf') 
    7640             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7641             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7642                cl_unf=fct_split(cl_tmp,2,'=') 
    7643                EXIT 
    7644             ENDIF 
    7645          ENDIF 
    7646          ji=ji+1 
    7647          cl_tmp=fct_split(cd_varinfo,ji,';')          
    7648       ENDDO 
    7649  
    7650       IF( TRIM(cl_unf) /= '' )THEN 
    7651          rl_unf=math_compute(cl_unf) 
    7652          IF( rl_unf /= dp_fill )THEN 
    7653             var__get_unf = rl_unf 
    7654             CALL logger_debug("VAR GET UNITS FACTOR: will use units factor "//& 
    7655                &  "value of "//TRIM(fct_str(var__get_unf))//" for variable "//& 
    7656                &   TRIM(cd_name) ) 
    7657          ELSE 
    7658             CALL logger_error("VAR GET UNITS FACTOR: invalid units factor "//& 
    7659                &  "value for variable "//TRIM(cd_name)//". check namelist." ) 
    7660          ENDIF 
    7661       ENDIF 
    7662  
    7663    END FUNCTION var__get_unf 
    7664    !------------------------------------------------------------------- 
    7665    !> @brief 
    7666    !> This function check if variable information read in namelist contains  
    76676954   !> interpolation method and return it if true.  
    76686955   !>  
    76696956   !> @details  
    7670    !> interpolation method is assume to follow string "int =" 
    7671    !> 
     6957   !> split namelist information, using ';' as separator. 
    76726958   !> compare method name with the list of interpolation method available (see 
    76736959   !> module global). 
    76746960   !> check if factor (*rhoi, /rhoj..) are present.<br/> 
    76756961   !> Example:<br/>  
    7676    !> - int=cubic/rhoi ; ext=dist_weight 
    7677    !> - int=bilin 
     6962   !> - cubic/rhoi ; dist_weight 
     6963   !> - bilin 
    76786964   !> see @ref interp module for more information. 
    76796965   !> 
    76806966   !> @author J.Paul 
    7681    !> @date November, 2013 - Initial Version 
    7682    !> @date June, 2015  
    7683    !> - change way to get information in namelist,  
    7684    !> value follows string "int =" 
    7685    !> @date Feb, 2016 
    7686    !> - check character just after keyword 
     6967   !> - November, 2013- Initial Version 
    76876968   ! 
    76886969   !> @param[in] cd_name      variable name 
     
    77016982      ! local variable 
    77026983      CHARACTER(LEN=lc) :: cl_tmp 
    7703       CHARACTER(LEN=lc) :: cl_int 
    77046984      CHARACTER(LEN=lc) :: cl_factor 
    77056985       
     
    77207000      cl_tmp=fct_split(cd_varinfo,ji,';') 
    77217001      DO WHILE( TRIM(cl_tmp) /= '' ) 
    7722          il_ind=INDEX(TRIM(cl_tmp),'int') 
    7723          IF( il_ind /= 0 )THEN 
    7724             ! check character just after 
    7725             jj=il_ind+LEN('int') 
    7726             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7727             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7728                cl_int=fct_split(cl_tmp,2,'=') 
    7729                EXIT 
    7730             ENDIF 
    7731          ENDIF 
    7732          ji=ji+1 
    7733          cl_tmp=fct_split(cd_varinfo,ji,';')          
    7734       ENDDO 
    7735  
    7736       IF( TRIM(cl_int) /= '' )THEN 
    77377002         DO jj=1,ip_ninterp 
    7738             il_ind= INDEX(fct_lower(cl_int),TRIM(cp_interp_list(jj))) 
     7003            il_ind= INDEX(fct_lower(cl_tmp),TRIM(cp_interp_list(jj))) 
    77397004            IF( il_ind /= 0 )THEN 
    77407005 
     
    77447009               ! look for factor 
    77457010               IF( il_ind==1 )THEN 
    7746                   cl_factor=cl_int(il_len+1:) 
     7011                  cl_factor=cl_tmp(il_len+1:) 
    77477012               ELSE 
    7748                   cl_factor=cl_int(1:il_ind-1) 
     7013                  cl_factor=cl_tmp(1:il_ind-1) 
    77497014               ENDIF 
    77507015               il_mul=SCAN(TRIM(cl_factor),'*') 
     
    77877052            ENDIF 
    77887053         ENDDO 
    7789       ENDIF 
     7054         IF( jj /= ip_ninterp + 1 ) EXIT 
     7055         ji=ji+1 
     7056         cl_tmp=fct_split(cd_varinfo,ji,';')          
     7057      ENDDO 
    77907058 
    77917059   END FUNCTION var__get_interp 
     
    77967064   !>  
    77977065   !> @details  
    7798    !> extrapolation method is assume to follow string "ext =" 
    7799    !>  
     7066   !> split namelist information, using ';' as separator. 
    78007067   !> compare method name with the list of extrapolation method available (see 
    78017068   !> module global).<br/> 
    78027069   !> Example:<br/> 
    7803    !> - int=cubic ; ext=dist_weight 
    7804    !> - ext=min_error 
     7070   !> - cubic ; dist_weight 
     7071   !> - min_error 
    78057072   !> see @ref extrap module for more information. 
    78067073   !> 
    78077074   !> @author J.Paul 
    7808    !> @date November, 2013 - Initial Version 
    7809    !> @date June, 2015  
    7810    !> - change way to get information in namelist,  
    7811    !> value follows string "ext =" 
    7812    !> @date Feb, 2016 
    7813    !> - check character just after keyword 
     7075   !> - November, 2013- Initial Version 
    78147076   ! 
    78157077   !> @param[in] cd_name      variable name 
     
    78287090      ! local variable 
    78297091      CHARACTER(LEN=lc) :: cl_tmp 
    7830       CHARACTER(LEN=lc) :: cl_ext 
    7831  
    7832       INTEGER(i4)       :: il_ind 
    78337092 
    78347093      ! loop indices 
     
    78427101      cl_tmp=fct_split(cd_varinfo,ji,';') 
    78437102      DO WHILE( TRIM(cl_tmp) /= '' ) 
    7844          il_ind=INDEX(TRIM(cl_tmp),'ext') 
    7845          IF( il_ind /= 0 )THEN 
    7846             ! check character just after 
    7847             jj=il_ind+LEN('ext') 
    7848             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7849             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7850                cl_ext=fct_split(cl_tmp,2,'=') 
     7103         DO jj=1,ip_nextrap 
     7104            IF( TRIM(fct_lower(cl_tmp)) == TRIM(cp_extrap_list(jj)) )THEN 
     7105               var__get_extrap(1)=TRIM(cp_extrap_list(jj)) 
     7106 
     7107               CALL logger_trace("VAR GET EXTRAP: variable "//TRIM(cd_name)//& 
     7108               &  " will use extrapolation method "//TRIM(var__get_extrap(1)) ) 
     7109 
    78517110               EXIT 
    78527111            ENDIF 
    7853          ENDIF 
     7112         ENDDO 
     7113         IF( jj /= ip_nextrap + 1 ) EXIT 
    78547114         ji=ji+1 
    78557115         cl_tmp=fct_split(cd_varinfo,ji,';')          
    78567116      ENDDO 
    7857  
    7858       IF( TRIM(cl_ext) /= '' )THEN 
    7859          DO jj=1,ip_nextrap 
    7860             IF( TRIM(fct_lower(cl_ext)) == TRIM(cp_extrap_list(jj)) )THEN 
    7861                var__get_extrap(1)=TRIM(cp_extrap_list(jj)) 
    7862  
    7863                CALL logger_trace("VAR GET EXTRAP: variable "//TRIM(cd_name)//& 
    7864                &  " will use extrapolation method "//TRIM(var__get_extrap(1)) ) 
    7865  
    7866                EXIT 
    7867             ENDIF 
    7868          ENDDO 
    7869       ENDIF 
    78707117 
    78717118 
     
    78777124   !>  
    78787125   !> @details  
    7879    !> filter method is assume to follow string "flt =" 
    7880    !> 
     7126   !> split namelist information, using ';' as separator. 
    78817127   !> compare method name with the list of filter method available (see 
    78827128   !> module global). 
    7883    !> look for the number of run, using '*' separator, and method parameters inside 
     7129   !> look for the number of turn, using '*' separator, and method parameters inside 
    78847130   !> bracket.<br/> 
    78857131   !> Example:<br/> 
    7886    !> - int=cubic ; flt=2*hamming(2,3) 
    7887    !> - flt=hann 
     7132   !> - cubic ; 2*hamming(2,3) 
     7133   !> - hann 
    78887134   !> see @ref filter module for more information. 
    78897135   !> 
    78907136   !> @author J.Paul 
    7891    !> @date November, 2013 - Initial Version 
    7892    !> @date June, 2015  
    7893    !> - change way to get information in namelist,  
    7894    !> value follows string "flt =" 
    7895    !> @date Feb, 2016 
    7896    !> - check character just after keyword 
    7897    !> 
     7137   !> - November, 2013- Initial Version 
     7138   ! 
    78987139   !> @param[in] cd_name      variable name 
    78997140   !> @param[in] cd_varinfo   variable information read in namelist  
     
    79107151      ! local variable 
    79117152      CHARACTER(LEN=lc) :: cl_tmp 
    7912       CHARACTER(LEN=lc) :: cl_flt 
    79137153      INTEGER(i4)       :: il_ind 
    79147154 
     
    79237163      cl_tmp=fct_split(cd_varinfo,ji,';') 
    79247164      DO WHILE( TRIM(cl_tmp) /= '' ) 
    7925          il_ind=INDEX(TRIM(cl_tmp),'flt') 
    7926          IF( il_ind /= 0 )THEN 
    7927             ! check character just after 
    7928             jj=il_ind+LEN('flt') 
    7929             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    7930             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    7931                cl_flt=fct_split(cl_tmp,2,'=') 
    7932                EXIT 
    7933             ENDIF 
    7934          ENDIF 
    7935          ji=ji+1 
    7936          cl_tmp=fct_split(cd_varinfo,ji,';')          
    7937       ENDDO 
    7938        
    7939       IF( TRIM(cl_flt) /= '' )THEN 
    79407165         DO jj=1,ip_nfilter 
    7941             il_ind=INDEX(fct_lower(cl_flt),TRIM(cp_filter_list(jj))) 
     7166            il_ind=INDEX(fct_lower(cl_tmp),TRIM(cp_filter_list(jj))) 
    79427167            IF( il_ind /= 0 )THEN 
    79437168               var__get_filter(1)=TRIM(cp_filter_list(jj)) 
    79447169 
    7945                ! look for number of run 
    7946                il_ind=SCAN(fct_lower(cl_flt),'*') 
     7170               ! look for number of turn 
     7171               il_ind=SCAN(fct_lower(cl_tmp),'*') 
    79477172               IF( il_ind /=0 )THEN 
    7948                   IF( fct_is_num(cl_flt(1:il_ind-1)) )THEN 
    7949                      var__get_filter(2)=TRIM(cl_flt(1:il_ind-1)) 
    7950                   ELSE IF( fct_is_num(cl_flt(il_ind+1:)) )THEN 
    7951                      var__get_filter(2)=TRIM(cl_flt(il_ind+1:)) 
     7173                  IF( fct_is_num(cl_tmp(1:il_ind-1)) )THEN 
     7174                     var__get_filter(2)=TRIM(cl_tmp(1:il_ind-1)) 
     7175                  ELSE IF( fct_is_num(cl_tmp(il_ind+1:)) )THEN 
     7176                     var__get_filter(2)=TRIM(cl_tmp(il_ind+1:)) 
    79527177                  ELSE 
    79537178                     var__get_filter(2)='1' 
     
    79587183 
    79597184               ! look for filter parameter 
    7960                il_ind=SCAN(fct_lower(cl_flt),'(') 
     7185               il_ind=SCAN(fct_lower(cl_tmp),'(') 
    79617186               IF( il_ind /=0 )THEN 
    7962                   cl_flt=TRIM(cl_flt(il_ind+1:)) 
    7963                   il_ind=SCAN(fct_lower(cl_flt),')') 
     7187                  cl_tmp=TRIM(cl_tmp(il_ind+1:)) 
     7188                  il_ind=SCAN(fct_lower(cl_tmp),')') 
    79647189                  IF( il_ind /=0 )THEN 
    7965                      cl_flt=TRIM(cl_flt(1:il_ind-1)) 
     7190                     cl_tmp=TRIM(cl_tmp(1:il_ind-1)) 
    79667191                     ! look for cut-off frequency 
    7967                      var__get_filter(3)=fct_split(cl_flt,1,',') 
     7192                     var__get_filter(3)=fct_split(cl_tmp,1,',') 
    79687193                     ! look for halo size 
    7969                      var__get_filter(4)=fct_split(cl_flt,2,',') 
     7194                     var__get_filter(4)=fct_split(cl_tmp,2,',') 
    79707195                     ! look for alpha parameter 
    7971                      var__get_filter(5)=fct_split(cl_flt,3,',') 
     7196                     var__get_filter(5)=fct_split(cl_tmp,3,',') 
    79727197                  ELSE 
    79737198                     CALL logger_error("VAR GET FILTER: variable "//& 
     
    79907215            ENDIF 
    79917216         ENDDO 
    7992       ENDIF 
    7993  
    7994    END FUNCTION var__get_filter 
    7995    !------------------------------------------------------------------- 
    7996    !> @brief 
    7997    !> This function check if variable information read in namelist contains  
    7998    !> unit and return it if true.  
    7999    !>  
    8000    !> @details  
    8001    !> unit is assume to follow string "unt =" 
    8002    !> 
    8003    !> @author J.Paul 
    8004    !> @date June, 2015 - Initial Version 
    8005    !> @date Feb, 2016 
    8006    !> - check character just after keyword 
    8007    ! 
    8008    !> @param[in] cd_name      variable name 
    8009    !> @param[in] cd_varinfo   variable information read in namelist 
    8010    !> @return unit string character  
    8011    !------------------------------------------------------------------- 
    8012    FUNCTION var__get_unt( cd_name, cd_varinfo ) 
    8013       IMPLICIT NONE 
    8014       ! Argument 
    8015       CHARACTER(LEN=*), INTENT(IN   ) :: cd_name 
    8016       CHARACTER(LEN=*), INTENT(IN   ) :: cd_varinfo 
    8017  
    8018       ! function 
    8019       CHARACTER(LEN=lc)               :: var__get_unt 
    8020  
    8021       ! local variable 
    8022       CHARACTER(LEN=lc) :: cl_tmp 
    8023        
    8024       INTEGER(i4)       :: il_ind 
    8025  
    8026       ! loop indices 
    8027       INTEGER(i4) :: ji 
    8028       INTEGER(i4) :: jj 
    8029       !---------------------------------------------------------------- 
    8030  
    8031       var__get_unt='' 
    8032  
    8033       ji=1 
    8034       cl_tmp=fct_split(cd_varinfo,ji,';') 
    8035       DO WHILE( TRIM(cl_tmp) /= '' ) 
    8036          il_ind=INDEX(TRIM(cl_tmp),'unt') 
    8037          IF( il_ind /= 0 )THEN 
    8038             ! check character just after 
    8039             jj=il_ind+LEN('unt') 
    8040             IF(  TRIM(cl_tmp(jj:jj)) == ' ' .OR. & 
    8041             &    TRIM(cl_tmp(jj:jj)) == '=' )THEN 
    8042                var__get_unt=fct_split(cl_tmp,2,'=') 
    8043                EXIT 
    8044             ENDIF 
    8045          ENDIF 
     7217         IF( jj /= ip_nfilter + 1 ) EXIT 
    80467218         ji=ji+1 
    80477219         cl_tmp=fct_split(cd_varinfo,ji,';')          
    80487220      ENDDO 
    80497221 
    8050       IF( TRIM(var__get_unt) /= '' )THEN 
    8051          CALL logger_debug("VAR GET UNIT: will use units "//& 
    8052             &  TRIM(var__get_unt)//" for variable "//& 
    8053             &  TRIM(cd_name) ) 
    8054       ENDIF 
    8055  
    8056    END FUNCTION var__get_unt 
     7222   END FUNCTION var__get_filter 
    80577223   !------------------------------------------------------------------- 
    80587224   !> @brief  
     
    80617227   !> 
    80627228   !> @author J.Paul 
    8063    !> @date November, 2013 - Initial Version 
     7229   !> - November, 2013- Initial Version 
    80647230   ! 
    80657231   !> @param[in] td_var array of variable structure 
     
    81197285   !>  
    81207286   !> @author J.Paul 
    8121    !> @date November, 2013 - Initial Version 
     7287   !> - November, 2013- Initial Version 
    81227288   ! 
    81237289   !> @param[inout] td_var variable structure 
     
    81557321   !------------------------------------------------------------------- 
    81567322   !> @brief 
    8157    !> This subroutine replace unit name of the variable, 
    8158    !> and apply unit factor to the value of this variable. 
    8159    !>  
    8160    !> @details 
    8161    !> new unit name (unt) and unit factor (unf) are read from the namelist. 
    8162    !> 
    8163    !> @note the variable value should be already read. 
    8164    !> 
    8165    !> @author J.Paul 
    8166    !> @date June, 2015 - Initial Version 
    8167    ! 
    8168    !> @param[inout] td_var variable structure 
    8169    !------------------------------------------------------------------- 
    8170    SUBROUTINE var_chg_unit( td_var ) 
    8171       IMPLICIT NONE 
    8172       ! Argument 
    8173       TYPE(TVAR), INTENT(INOUT) :: td_var 
    8174  
    8175       ! local variable 
    8176       TYPE(TATT)                :: tl_att 
    8177  
    8178       ! loop indices 
    8179       !---------------------------------------------------------------- 
    8180  
    8181       IF( ASSOCIATED(td_var%d_value) )THEN 
    8182          !- change value 
    8183          IF( td_var%d_unf /= 1._dp )THEN 
    8184             WHERE( td_var%d_value(:,:,:,:) /= td_var%d_fill ) 
    8185                td_var%d_value(:,:,:,:)=td_var%d_value(:,:,:,:)*td_var%d_unf 
    8186             END WHERE 
    8187  
    8188             !- change scale factor and offset to avoid mistake 
    8189             tl_att=att_init('scale_factor',1._dp) 
    8190             CALL var_move_att(td_var, tl_att) 
    8191  
    8192             tl_att=att_init('add_offset',0._dp) 
    8193             CALL var_move_att(td_var, tl_att) 
    8194          ENDIF 
    8195  
    8196          !- change unit name  
    8197          IF( TRIM(td_var%c_unt) /= TRIM(td_var%c_units) .AND. & 
    8198          &   TRIM(td_var%c_unt) /= '' )THEN 
    8199             tl_att=att_init('units',TRIM(td_var%c_unt)) 
    8200             CALL var_move_att(td_var,tl_att) 
    8201          ENDIF 
    8202  
    8203       ENDIF 
    8204  
    8205    END SUBROUTINE var_chg_unit 
    8206    !------------------------------------------------------------------- 
    8207    !> @brief 
    82087323   !> This subroutine check variable dimension expected, as defined in 
    82097324   !> file 'variable.cfg'. 
     
    82147329   !> 
    82157330   !> @author J.Paul 
    8216    !> @date November, 2013 - Initial Version 
     7331   !> - November, 2013- Initial Version 
    82177332   ! 
    82187333   !> @param[inout] td_var    variable structure 
     
    82997414   !>  
    83007415   !> @author J.Paul 
    8301    !> @date August, 2014 - Initial Version 
    8302    !> @date July 2015  
    8303    !> - do not use dim_disorder anymore 
     7416   !> - August, 2014- Initial Version 
    83047417   ! 
    83057418   !> @param[inout] td_var       variable structure 
     
    83257438      IF( PRESENT(cd_dimorder) ) cl_dimorder=TRIM(ADJUSTL(cd_dimorder)) 
    83267439 
    8327       CALL logger_debug("VAR REORDER: work on "//TRIM(td_var%c_name)//& 
    8328          &  " new dimension order "//TRIM(cl_dimorder)) 
    8329  
    83307440      tl_dim(:)=dim_copy(td_var%t_dim(:)) 
    83317441 
     7442      CALL dim_unorder(tl_dim(:)) 
    83327443      CALL dim_reorder(tl_dim(:),TRIM(cl_dimorder)) 
    83337444 
     
    83567467   !>  
    83577468   !> @author J.Paul 
    8358    !> @date September, 2014 - Initial Version 
     7469   !> - September, 2014- Initial Version 
    83597470   ! 
    83607471   !> @param[in] td_var array of variable structure  
     
    83817492   !>  
    83827493   !> @author J.Paul 
    8383    !> @date November, 2014 - Initial Version 
     7494   !> - November, 2014- Initial Version 
    83847495   ! 
    83857496   !> @param[in] td_var time variable structure  
     
    84427553 
    84437554   END FUNCTION var_to_date 
    8444    !------------------------------------------------------------------- 
    8445    !> @brief This subroutine fill dummy variable array 
    8446    ! 
    8447    !> @author J.Paul 
    8448    !> @date September, 2015 - Initial Version 
    8449    ! 
    8450    !> @param[in] cd_dummy dummy configuration file 
    8451    !------------------------------------------------------------------- 
    8452    SUBROUTINE var_get_dummy( cd_dummy ) 
    8453       IMPLICIT NONE 
    8454       ! Argument 
    8455       CHARACTER(LEN=*), INTENT(IN) :: cd_dummy 
    8456  
    8457       ! local variable 
    8458       INTEGER(i4)   :: il_fileid 
    8459       INTEGER(i4)   :: il_status 
    8460  
    8461       LOGICAL       :: ll_exist 
    8462  
    8463       ! loop indices 
    8464       ! namelist 
    8465       CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumvar 
    8466       CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumdim 
    8467       CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumatt 
    8468  
    8469       !---------------------------------------------------------------- 
    8470       NAMELIST /namdum/ &   !< dummy namelist 
    8471       &  cn_dumvar, &       !< variable  name 
    8472       &  cn_dumdim, &       !< dimension name 
    8473       &  cn_dumatt          !< attribute name 
    8474       !---------------------------------------------------------------- 
    8475  
    8476       ! init 
    8477       cm_dumvar(:)='' 
    8478  
    8479       ! read namelist 
    8480       INQUIRE(FILE=TRIM(cd_dummy), EXIST=ll_exist) 
    8481       IF( ll_exist )THEN 
    8482      
    8483          il_fileid=fct_getunit() 
    8484     
    8485          OPEN( il_fileid, FILE=TRIM(cd_dummy), & 
    8486          &                FORM='FORMATTED',       & 
    8487          &                ACCESS='SEQUENTIAL',    & 
    8488          &                STATUS='OLD',           & 
    8489          &                ACTION='READ',          & 
    8490          &                IOSTAT=il_status) 
    8491          CALL fct_err(il_status) 
    8492          IF( il_status /= 0 )THEN 
    8493             CALL logger_fatal("DIM GET DUMMY: opening "//TRIM(cd_dummy)) 
    8494          ENDIF 
    8495     
    8496          READ( il_fileid, NML = namdum ) 
    8497          cm_dumvar(:)=cn_dumvar(:) 
    8498  
    8499          CLOSE( il_fileid ) 
    8500  
    8501       ENDIF 
    8502     
    8503    END SUBROUTINE var_get_dummy 
    8504    !------------------------------------------------------------------- 
    8505    !> @brief This function check if variable is defined as dummy variable 
    8506    !> in configuraton file 
    8507    !> 
    8508    !> @author J.Paul 
    8509    !> @date September, 2015 - Initial Version 
    8510    ! 
    8511    !> @param[in] td_var variable structure 
    8512    !> @return true if variable is dummy variable  
    8513    !------------------------------------------------------------------- 
    8514    FUNCTION var_is_dummy(td_var) 
    8515       IMPLICIT NONE 
    8516  
    8517       ! Argument       
    8518       TYPE(TVAR), INTENT(IN) :: td_var 
    8519        
    8520       ! function 
    8521       LOGICAL :: var_is_dummy 
    8522        
    8523       ! loop indices 
    8524       INTEGER(i4) :: ji 
    8525       !---------------------------------------------------------------- 
    8526  
    8527       var_is_dummy=.FALSE. 
    8528       DO ji=1,ip_maxdum 
    8529          IF( fct_lower(td_var%c_name) == fct_lower(cm_dumvar(ji)) )THEN 
    8530             var_is_dummy=.TRUE. 
    8531             EXIT 
    8532          ENDIF 
    8533       ENDDO 
    8534  
    8535    END FUNCTION var_is_dummy 
    85367555END MODULE var 
    85377556 
Note: See TracChangeset for help on using the changeset viewer.