ETSF_IO library - documentation pages

### TABLE OF CONTENTS

- ERROR_MODE
- ERROR_TYPE
- ETSF_IO_LOW_CONSTANTS
- etsf_io_low_error
- etsf_io_low_error_len
- etsf_io_low_var_double
- etsf_io_low_var_infos

- etsf_io_low_free_all_var_infos
- etsf_io_low_free_var_infos
- etsf_io_low_read_all_var_infos
- etsf_io_low_read_var_infos

- etsf_io_low_var_integer

## ERROR_MODE

[ Top ] [ etsf_io_low_error_group ] [ Definitions ]

NAME

ERROR_MODE

FUNCTION

These values are used to index the action done when an error occurs. We found the following values:

       * ERROR_MODE_DEF  = error when defining a variable or a dimension.
       * ERROR_MODE_GET  = error when read a value for a valid dimension,
                           attribute or variable.
       * ERROR_MODE_IO   = error when accessing one file (opening or closing).
       * ERROR_MODE_INQ  = error when looking in the NetCDF file for informations.
       * ERROR_MODE_PUT  = error when writing a value to a valid target.
       * ERROR_MODE_SPEC = error of match between read value and awaited type or shape.
       * ERROR_MODE_COPY = error when copying a value.

SOURCE

      integer, parameter :: ERROR_MODE_DEF = 1, ERROR_MODE_GET = 2, ERROR_MODE_IO   = 3, &
                          & ERROR_MODE_INQ = 4, ERROR_MODE_PUT = 5, ERROR_MODE_SPEC = 6, &
                          & ERROR_MODE_COPY = 7

## ERROR_TYPE

[ Top ] [ etsf_io_low_error_group ] [ Definitions ]

NAME

ERROR_TYPE

FUNCTION

These values are used to index the type of target when an error occurs. We found the following values:

       * ERROR_TYPE_ATT = error on attributes.
       * ERROR_TYPE_DID = error on dimension ids.
       * ERROR_TYPE_DIM = error on dimensions.
       * ERROR_TYPE_END = error on ending define mode.
       * ERROR_TYPE_DEF = error on switching to define mode.
       * ERROR_TYPE_OCR = .
       * ERROR_TYPE_ORD = error on opening for read access.
       * ERROR_TYPE_OWR = error on opening for write access.
       * ERROR_TYPE_VAR = error on variables.
       * ERROR_TYPE_VID = error on variable ids.
       * ERROR_TYPE_CLO = error on closing.
       * ERROR_TYPE_ARG = error on routine argument.

SOURCE

      integer, parameter :: ERROR_TYPE_ATT =  1, ERROR_TYPE_DID =  2, ERROR_TYPE_DIM =  3, &
                          & ERROR_TYPE_END =  4, ERROR_TYPE_DEF =  5, ERROR_TYPE_OCR =  6, &
                          & ERROR_TYPE_ORD =  7, ERROR_TYPE_OWR =  8, ERROR_TYPE_VAR =  9, &
                          & ERROR_TYPE_VID = 10, ERROR_TYPE_CLO = 11, ERROR_TYPE_ARG = 12

## ETSF_IO_LOW_CONSTANTS

[ Top ] [ etsf_io_low_level ] [ Definitions ]

NAME

ETSF_IO_LOW_CONSTANTS

FUNCTION

These values are identical to the ones defined in NetCDF. They are defined to be able to use "implicit none" without linking with NetCDF library.

SOURCE

      integer, parameter :: etsf_io_low_global_att = NF90_GLOBAL
      integer, parameter :: etsf_io_low_integer    = NF90_INT
      integer, parameter :: etsf_io_low_real       = NF90_FLOAT
      integer, parameter :: etsf_io_low_double     = NF90_DOUBLE
      integer, parameter :: etsf_io_low_character  = NF90_CHAR

## etsf_io_low_error

[ Top ] [ etsf_io_low_error_group ] [ Structures ]

NAME

etsf_io_low_error

FUNCTION

This structure is used to store error informations. Three fields are mandatory and can always be read:

       * backtrace, which is a list of strings with the name of the methods where
         the error occurs and come from (the number of relevent names is given
         by @backtraceId) ;
       * access_mode_id, which is a #ERROR_MODE value ;
       * target_type_id, which is a #ERROR_TYPE value.

All other fields may be filled depending on the calling method. When a field is irrelevant, if an id, it is null or negative, and when a string it is void string (trim(string) == "").

SOURCE

      type etsf_io_low_error
         character(len = 80), dimension(100) :: backtrace
         integer :: backtraceId = 0

         integer :: access_mode_id
         character(len = 80) :: access_mode_str
         integer :: target_type_id
         character(len = 80) :: target_type_str

         integer :: target_id
         character(len = 80) :: target_name

         integer :: error_id
         character(len = 256) :: error_message
      end type etsf_io_low_error

## etsf_io_low_error_len

[ Top ] [ etsf_io_low_error_group ] [ Definitions ]

NAME

etsf_io_low_error_len

FUNCTION

This value is the length of the strings used to represent errors, see etsf_io_low_error_to_str().

SOURCE

      integer, parameter :: etsf_io_low_error_len  = 4096

## etsf_io_low_var_double

[ Top ] [ etsf_io_low_var ] [ Structures ]

NAME

etsf_io_low_var_double

FUNCTION

This structure is used as an abstraction on a storage for a variable. Only one pointer can be associated at a time. The shape of the stored data is then defined by the associated pointer. This structure is used to read or write data when the storage area in memory can have different shapes.

SOURCE

      type etsf_io_low_var_double
        double precision, pointer :: data1D(:) => null()
        double precision, pointer :: data2D(:, :) => null()
        double precision, pointer :: data3D(:, :, :) => null()
        double precision, pointer :: data4D(:, :, :, :) => null()
        double precision, pointer :: data5D(:, :, :, :, :) => null()
        double precision, pointer :: data6D(:, :, :, :, :, :) => null()
        double precision, pointer :: data7D(:, :, :, :, :, :, :) => null()
      end type etsf_io_low_var_double

## etsf_io_low_var_infos

[ Top ] [ etsf_io_low_level ] [ Structures ]

NAME

etsf_io_low_var_infos

FUNCTION

This structure is used to store variable informations, such as name, NetCDF id, type, shape and dimensions. It contains the following elements:

- nctype: the type of the variable, see #ETSF_IO_LOW_CONSTANTS.
- ncid: the id used by NetCDF to access this variable.
- name: the variable name.
- ncshape: the number of dimensions (0 for scalar variable).
- ncdims: the size for each dimension (only (1:ncshape) are relevent).
- ncdimnames: the name corresponding to such dimensions (may be unset ; if set, use etsf_io_low_free_var_infos()).
- ncattnames: the name corresponding to all associated attributes (may be unset ; if set, use etsf_io_low_free_var_infos()).

SOURCE

      type etsf_io_low_var_infos
        character(len = 80) :: name
        integer :: nctype
        integer :: ncid
        integer :: ncshape
        integer :: ncdims(1:16)
        character(len = 80), pointer :: ncdimnames(:) => null()
        character(len = 80), pointer :: ncattnames(:) => null()
      end type etsf_io_low_var_infos

## etsf_io_low_var_integer

[ Top ] [ etsf_io_low_var ] [ Structures ]

NAME

etsf_io_low_var_integer

FUNCTION

This structure is used as an abstraction on a storage for a variable. Only one pointer can be associated at a time. The shape of the stored data is then defined by the associated pointer. This structure is used to read or write data when the storage area in memory can have different shapes.

SOURCE

      type etsf_io_low_var_integer
        integer, pointer :: data1D(:) => null()
        integer, pointer :: data2D(:, :) => null()
        integer, pointer :: data3D(:, :, :) => null()
        integer, pointer :: data4D(:, :, :, :) => null()
        integer, pointer :: data5D(:, :, :, :, :) => null()
        integer, pointer :: data6D(:, :, :, :, :, :) => null()
        integer, pointer :: data7D(:, :, :, :, :, :, :) => null()
      end type etsf_io_low_var_integer