Ignore:
Timestamp:
11/26/14 12:06:21 (9 years ago)
Author:
rlacroix
Message:

Add a new attribute to the file definition so that the output format can be controlled.

Currently the supported formats are "netcdf4" and "netcdf4_classic". The "format" attribute is optional. The "netcdf4" format will be used when no format is explicitly defined. Since "netcdf4" is the format which was previously used by XIOS, existing configuration files will not be affected by this change.

If "netcdf4_classic" is used, the output file(s) will be created using the classic NetCDF format. This format can be used with the attribute "type" set to "one_file" if the NetCDF4 library was compiled with Parallel NetCDF support (--enable-pnetcdf).

File:
1 edited

Legend:

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

    r501 r517  
    1212   
    1313  SUBROUTINE xios(set_filegroup_attr)  & 
    14     ( filegroup_id, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     14    ( filegroup_id, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    1515    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    1616     
     
    2121      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled 
    2222      LOGICAL (KIND=C_BOOL) :: enabled_tmp 
     23      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: format 
    2324      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    2425      INTEGER  , OPTIONAL, INTENT(IN) :: min_digits 
     
    3536      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 
    3637      CALL xios(set_filegroup_attr_hdl_)   & 
    37       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     38      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    3839      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    3940     
     
    4142   
    4243  SUBROUTINE xios(set_filegroup_attr_hdl)  & 
    43     ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     44    ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    4445    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    4546     
     
    4950      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled 
    5051      LOGICAL (KIND=C_BOOL) :: enabled_tmp 
     52      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: format 
    5153      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 
    5254      INTEGER  , OPTIONAL, INTENT(IN) :: min_digits 
     
    6264       
    6365      CALL xios(set_filegroup_attr_hdl_)  & 
    64       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     66      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    6567      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    6668     
     
    6870   
    6971  SUBROUTINE xios(set_filegroup_attr_hdl_)   & 
    70     ( filegroup_hdl, description_, enabled_, group_ref_, min_digits_, name_, name_suffix_, output_freq_  & 
    71     , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
     72    ( filegroup_hdl, description_, enabled_, format_, group_ref_, min_digits_, name_, name_suffix_  & 
     73    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_  & 
     74     ) 
    7275     
    7376    IMPLICIT NONE 
     
    7679      LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_ 
    7780      LOGICAL (KIND=C_BOOL) :: enabled__tmp 
     81      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: format_ 
    7882      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_ 
    7983      INTEGER  , OPTIONAL, INTENT(IN) :: min_digits_ 
     
    97101      ENDIF 
    98102       
     103      IF (PRESENT(format_)) THEN 
     104        CALL cxios_set_filegroup_format(filegroup_hdl%daddr, format_, len(format_)) 
     105      ENDIF 
     106       
    99107      IF (PRESENT(group_ref_)) THEN 
    100108        CALL cxios_set_filegroup_group_ref(filegroup_hdl%daddr, group_ref_, len(group_ref_)) 
     
    146154   
    147155  SUBROUTINE xios(get_filegroup_attr)  & 
    148     ( filegroup_id, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     156    ( filegroup_id, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    149157    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    150158     
     
    155163      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled 
    156164      LOGICAL (KIND=C_BOOL) :: enabled_tmp 
     165      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: format 
    157166      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    158167      INTEGER  , OPTIONAL, INTENT(OUT) :: min_digits 
     
    169178      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 
    170179      CALL xios(get_filegroup_attr_hdl_)   & 
    171       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     180      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    172181      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    173182     
     
    175184   
    176185  SUBROUTINE xios(get_filegroup_attr_hdl)  & 
    177     ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     186    ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    178187    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    179188     
     
    183192      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled 
    184193      LOGICAL (KIND=C_BOOL) :: enabled_tmp 
     194      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: format 
    185195      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 
    186196      INTEGER  , OPTIONAL, INTENT(OUT) :: min_digits 
     
    196206       
    197207      CALL xios(get_filegroup_attr_hdl_)  & 
    198       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     208      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    199209      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    200210     
     
    202212   
    203213  SUBROUTINE xios(get_filegroup_attr_hdl_)   & 
    204     ( filegroup_hdl, description_, enabled_, group_ref_, min_digits_, name_, name_suffix_, output_freq_  & 
    205     , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
     214    ( filegroup_hdl, description_, enabled_, format_, group_ref_, min_digits_, name_, name_suffix_  & 
     215    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_  & 
     216     ) 
    206217     
    207218    IMPLICIT NONE 
     
    210221      LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_ 
    211222      LOGICAL (KIND=C_BOOL) :: enabled__tmp 
     223      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: format_ 
    212224      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_ 
    213225      INTEGER  , OPTIONAL, INTENT(OUT) :: min_digits_ 
     
    231243      ENDIF 
    232244       
     245      IF (PRESENT(format_)) THEN 
     246        CALL cxios_get_filegroup_format(filegroup_hdl%daddr, format_, len(format_)) 
     247      ENDIF 
     248       
    233249      IF (PRESENT(group_ref_)) THEN 
    234250        CALL cxios_get_filegroup_group_ref(filegroup_hdl%daddr, group_ref_, len(group_ref_)) 
     
    280296   
    281297  SUBROUTINE xios(is_defined_filegroup_attr)  & 
    282     ( filegroup_id, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     298    ( filegroup_id, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    283299    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    284300     
     
    290306      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled 
    291307      LOGICAL(KIND=C_BOOL) :: enabled_tmp 
     308      LOGICAL, OPTIONAL, INTENT(OUT) :: format 
     309      LOGICAL(KIND=C_BOOL) :: format_tmp 
    292310      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    293311      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
     
    315333      CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl) 
    316334      CALL xios(is_defined_filegroup_attr_hdl_)   & 
    317       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     335      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    318336      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    319337     
     
    321339   
    322340  SUBROUTINE xios(is_defined_filegroup_attr_hdl)  & 
    323     ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     341    ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    324342    , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    325343     
     
    330348      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled 
    331349      LOGICAL(KIND=C_BOOL) :: enabled_tmp 
     350      LOGICAL, OPTIONAL, INTENT(OUT) :: format 
     351      LOGICAL(KIND=C_BOOL) :: format_tmp 
    332352      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 
    333353      LOGICAL(KIND=C_BOOL) :: group_ref_tmp 
     
    354374       
    355375      CALL xios(is_defined_filegroup_attr_hdl_)  & 
    356       ( filegroup_hdl, description, enabled, group_ref, min_digits, name, name_suffix, output_freq  & 
     376      ( filegroup_hdl, description, enabled, format, group_ref, min_digits, name, name_suffix, output_freq  & 
    357377      , output_level, par_access, split_freq, split_freq_format, sync_freq, type ) 
    358378     
     
    360380   
    361381  SUBROUTINE xios(is_defined_filegroup_attr_hdl_)   & 
    362     ( filegroup_hdl, description_, enabled_, group_ref_, min_digits_, name_, name_suffix_, output_freq_  & 
    363     , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
     382    ( filegroup_hdl, description_, enabled_, format_, group_ref_, min_digits_, name_, name_suffix_  & 
     383    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, type_  & 
     384     ) 
    364385     
    365386    IMPLICIT NONE 
     
    369390      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled_ 
    370391      LOGICAL(KIND=C_BOOL) :: enabled__tmp 
     392      LOGICAL, OPTIONAL, INTENT(OUT) :: format_ 
     393      LOGICAL(KIND=C_BOOL) :: format__tmp 
    371394      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_ 
    372395      LOGICAL(KIND=C_BOOL) :: group_ref__tmp 
     
    402425      ENDIF 
    403426       
     427      IF (PRESENT(format_)) THEN 
     428        format__tmp=cxios_is_defined_filegroup_format(filegroup_hdl%daddr) 
     429        format_=format__tmp 
     430      ENDIF 
     431       
    404432      IF (PRESENT(group_ref_)) THEN 
    405433        group_ref__tmp=cxios_is_defined_filegroup_group_ref(filegroup_hdl%daddr) 
Note: See TracChangeset for help on using the changeset viewer.