Ignore:
Timestamp:
01/21/14 10:25:14 (10 years ago)
Author:
ymipsl
Message:

Enhancement :
Add valid_min and valid_max attribute for field, wrote as field metadata in the ouput netcdf file, following the CF convention

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran_attr/ifieldgroup_attr.F90

    r432 r463  
    1313  SUBROUTINE xios(set_fieldgroup_attr)  & 
    1414    ( fieldgroup_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    15     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     15    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     16    , valid_min ) 
    1617     
    1718    IMPLICIT NONE 
     
    3536      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
    3637      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit 
     38      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max 
     39      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_min 
    3740       
    3841      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl) 
    3942      CALL xios(set_fieldgroup_attr_hdl_)   & 
    4043      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    41       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     44      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     45      , valid_min ) 
    4246     
    4347  END SUBROUTINE xios(set_fieldgroup_attr) 
     
    4549  SUBROUTINE xios(set_fieldgroup_attr_hdl)  & 
    4650    ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    47     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     51    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     52    , valid_min ) 
    4853     
    4954    IMPLICIT NONE 
     
    6671      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 
    6772      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit 
     73      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max 
     74      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_min 
    6875       
    6976      CALL xios(set_fieldgroup_attr_hdl_)  & 
    7077      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    71       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     78      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     79      , valid_min ) 
    7280     
    7381  END SUBROUTINE xios(set_fieldgroup_attr_hdl) 
     
    7684    ( fieldgroup_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_  & 
    7785    , freq_op_, grid_ref_, group_ref_, level_, long_name_, name_, operation_, prec_, standard_name_  & 
    78     , unit_ ) 
     86    , unit_, valid_max_, valid_min_ ) 
    7987     
    8088    IMPLICIT NONE 
     
    97105      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 
    98106      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: unit_ 
     107      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_max_ 
     108      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: valid_min_ 
    99109       
    100110      IF (PRESENT(axis_ref_)) THEN 
     
    163173      ENDIF 
    164174       
     175      IF (PRESENT(valid_max_)) THEN 
     176        CALL cxios_set_fieldgroup_valid_max(fieldgroup_hdl%daddr, valid_max_) 
     177      ENDIF 
     178       
     179      IF (PRESENT(valid_min_)) THEN 
     180        CALL cxios_set_fieldgroup_valid_min(fieldgroup_hdl%daddr, valid_min_) 
     181      ENDIF 
     182       
    165183       
    166184     
     
    169187  SUBROUTINE xios(get_fieldgroup_attr)  & 
    170188    ( fieldgroup_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    171     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     189    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     190    , valid_min ) 
    172191     
    173192    IMPLICIT NONE 
     
    191210      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
    192211      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit 
     212      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max 
     213      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_min 
    193214       
    194215      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl) 
    195216      CALL xios(get_fieldgroup_attr_hdl_)   & 
    196217      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    197       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     218      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     219      , valid_min ) 
    198220     
    199221  END SUBROUTINE xios(get_fieldgroup_attr) 
     
    201223  SUBROUTINE xios(get_fieldgroup_attr_hdl)  & 
    202224    ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    203     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     225    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     226    , valid_min ) 
    204227     
    205228    IMPLICIT NONE 
     
    222245      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 
    223246      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit 
     247      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max 
     248      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_min 
    224249       
    225250      CALL xios(get_fieldgroup_attr_hdl_)  & 
    226251      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    227       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     252      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     253      , valid_min ) 
    228254     
    229255  END SUBROUTINE xios(get_fieldgroup_attr_hdl) 
     
    232258    ( fieldgroup_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_  & 
    233259    , freq_op_, grid_ref_, group_ref_, level_, long_name_, name_, operation_, prec_, standard_name_  & 
    234     , unit_ ) 
     260    , unit_, valid_max_, valid_min_ ) 
    235261     
    236262    IMPLICIT NONE 
     
    253279      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 
    254280      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: unit_ 
     281      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_max_ 
     282      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: valid_min_ 
    255283       
    256284      IF (PRESENT(axis_ref_)) THEN 
     
    319347      ENDIF 
    320348       
     349      IF (PRESENT(valid_max_)) THEN 
     350        CALL cxios_get_fieldgroup_valid_max(fieldgroup_hdl%daddr, valid_max_) 
     351      ENDIF 
     352       
     353      IF (PRESENT(valid_min_)) THEN 
     354        CALL cxios_get_fieldgroup_valid_min(fieldgroup_hdl%daddr, valid_min_) 
     355      ENDIF 
     356       
    321357       
    322358     
     
    325361  SUBROUTINE xios(is_defined_fieldgroup_attr)  & 
    326362    ( fieldgroup_id, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    327     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     363    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     364    , valid_min ) 
    328365     
    329366    IMPLICIT NONE 
     
    362399      LOGICAL, OPTIONAL, INTENT(OUT) :: unit 
    363400      LOGICAL(KIND=C_BOOL) :: unit_tmp 
     401      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_max 
     402      LOGICAL(KIND=C_BOOL) :: valid_max_tmp 
     403      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_min 
     404      LOGICAL(KIND=C_BOOL) :: valid_min_tmp 
    364405       
    365406      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl) 
    366407      CALL xios(is_defined_fieldgroup_attr_hdl_)   & 
    367408      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    368       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     409      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     410      , valid_min ) 
    369411     
    370412  END SUBROUTINE xios(is_defined_fieldgroup_attr) 
     
    372414  SUBROUTINE xios(is_defined_fieldgroup_attr_hdl)  & 
    373415    ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    374     , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     416    , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     417    , valid_min ) 
    375418     
    376419    IMPLICIT NONE 
     
    408451      LOGICAL, OPTIONAL, INTENT(OUT) :: unit 
    409452      LOGICAL(KIND=C_BOOL) :: unit_tmp 
     453      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_max 
     454      LOGICAL(KIND=C_BOOL) :: valid_max_tmp 
     455      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_min 
     456      LOGICAL(KIND=C_BOOL) :: valid_min_tmp 
    410457       
    411458      CALL xios(is_defined_fieldgroup_attr_hdl_)  & 
    412459      ( fieldgroup_hdl, axis_ref, default_value, domain_ref, enabled, field_ref, freq_offset, freq_op  & 
    413       , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit ) 
     460      , grid_ref, group_ref, level, long_name, name, operation, prec, standard_name, unit, valid_max  & 
     461      , valid_min ) 
    414462     
    415463  END SUBROUTINE xios(is_defined_fieldgroup_attr_hdl) 
     
    418466    ( fieldgroup_hdl, axis_ref_, default_value_, domain_ref_, enabled_, field_ref_, freq_offset_  & 
    419467    , freq_op_, grid_ref_, group_ref_, level_, long_name_, name_, operation_, prec_, standard_name_  & 
    420     , unit_ ) 
     468    , unit_, valid_max_, valid_min_ ) 
    421469     
    422470    IMPLICIT NONE 
     
    454502      LOGICAL, OPTIONAL, INTENT(OUT) :: unit_ 
    455503      LOGICAL(KIND=C_BOOL) :: unit__tmp 
     504      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_max_ 
     505      LOGICAL(KIND=C_BOOL) :: valid_max__tmp 
     506      LOGICAL, OPTIONAL, INTENT(OUT) :: valid_min_ 
     507      LOGICAL(KIND=C_BOOL) :: valid_min__tmp 
    456508       
    457509      IF (PRESENT(axis_ref_)) THEN 
     
    535587      ENDIF 
    536588       
     589      IF (PRESENT(valid_max_)) THEN 
     590        valid_max__tmp=cxios_is_defined_fieldgroup_valid_max(fieldgroup_hdl%daddr) 
     591        valid_max_=valid_max__tmp 
     592      ENDIF 
     593       
     594      IF (PRESENT(valid_min_)) THEN 
     595        valid_min__tmp=cxios_is_defined_fieldgroup_valid_min(fieldgroup_hdl%daddr) 
     596        valid_min_=valid_min__tmp 
     597      ENDIF 
     598       
    537599       
    538600     
Note: See TracChangeset for help on using the changeset viewer.