next up previous contents
Next: zio_init Up: Routine/Function Prologues Previous: zio_strerror

Module zio_data (Source File: zio_data.F90)

Module for ZioLib data and utility functions

REVISION HISTORY:

       2003-Jan-31 -- first prototype
       2003-Jul-14 -- allowed multiple rectangular blocks per task
       2003-Aug-14 -- added fill component to file descriptor object
                      for partial support of prefilling netCDF dataset
       2003-Aug-16 -- support single task mode: ZIO_SPMD undefined
INTERFACE:
       module zio_data
USES:
         implicit none
DEFINED PARAMETERS:
         integer, parameter :: zio_i4  = selected_int_kind ( 6) ! 4 byte integer
         integer, parameter :: zio_r4  = selected_real_kind( 6) ! 4 byte real
         integer, parameter :: zio_r8  = selected_real_kind(12) ! 8 byte real
 
  ...    Maximum sizes
 
         integer, parameter :: zio_maxdims   = 100   ! Max dimensions
         integer, parameter :: zio_maxcomms  = 100   ! Max I/O staging comms
         integer, parameter :: zio_maxdata   = 1000  ! Max distributed array objs
         integer, parameter :: zio_maxblks   = 500   ! Max rectangular blocks
         integer, parameter :: zio_maxfiles  = 100   ! Max file descriptors
         integer, parameter :: zio_maxdecomp = 100   ! Max parallel decomps
         integer, parameter :: zio_maxlist   = 1000  ! Max list entries
         integer, parameter :: zio_maxchars  = 128   ! Max character length
 
  ...    I/O methods
 
         integer, parameter :: zio_maxmethods    = 3 ! Supported I/O methods
         integer, parameter :: zio_netcdf_io     = 1 ! For netCDF I/O
         integer, parameter :: zio_direct_io     = 2 ! For direct-access I/O
         integer, parameter :: zio_sequential_io = 3 ! For sequential-access I/O
 
  ...    Flag for I/O by root process only in case of replicated global array
 
         integer, parameter :: zio_replicated = -1
 
  ...    Flag for undefined entity
 
         integer, parameter :: zio_undefined = -99
 
  ...    Error codes
  ...      no error: zio_noerr = nf_noerr = mpi_success = 0, iostat = 0
 
         integer, parameter :: zio_noerr                = 0
 
         integer, parameter :: zio_emax                 = -101 ! Code range max
         integer, parameter :: zio_emin                 = -150 ! Code range min
 
         integer, parameter :: zio_error_allocate       = zio_emin + 0
         integer, parameter :: zio_error_argument       = zio_emin + 1
         integer, parameter :: zio_error_arraysection   = zio_emin + 2
         integer, parameter :: zio_error_deallocate     = zio_emin + 3
         integer, parameter :: zio_error_decomp         = zio_emin + 4
         integer, parameter :: zio_error_distarray      = zio_emin + 5
         integer, parameter :: zio_error_filedesc       = zio_emin + 6
         integer, parameter :: zio_error_global_values  = zio_emin + 7
         integer, parameter :: zio_error_imap           = zio_emin + 8
         integer, parameter :: zio_error_index_order    = zio_emin + 9
         integer, parameter :: zio_error_init           = zio_emin + 10
         integer, parameter :: zio_error_initialized    = zio_emin + 11
         integer, parameter :: zio_error_iocomm         = zio_emin + 12
         integer, parameter :: zio_error_listentry      = zio_emin + 13
         integer, parameter :: zio_error_mpi_uninit     = zio_emin + 14
         integer, parameter :: zio_error_ndims          = zio_emin + 15
         integer, parameter :: zio_error_new_decomp     = zio_emin + 16
         integer, parameter :: zio_error_new_distarray  = zio_emin + 17
         integer, parameter :: zio_error_new_filedesc   = zio_emin + 18
         integer, parameter :: zio_error_new_iocomm     = zio_emin + 19
         integer, parameter :: zio_error_new_listentry  = zio_emin + 20
         integer, parameter :: zio_error_record         = zio_emin + 21
         integer, parameter :: zio_error_unlisted       = zio_emin + 22
 
         integer, parameter :: zio_errtype_zio    = 1  ! ZioLib objs error
         integer, parameter :: zio_errtype_mpi    = 2  ! MPI error (disabled)
         integer, parameter :: zio_errtype_binary = 3  ! Binary I/O error
         integer, parameter :: zio_errtype_netcdf = 4  ! Netcdf I/O error
 
  ...    Parallel decomposition descriptor
 
         type zio_decomp_obj
           integer :: ndims                   ! Number of dimensions
           integer, pointer :: npes(:)        ! Number of PEs for axes
           integer, pointer :: coords(:)      ! PE coords
         end type zio_decomp_obj
 
  ...    I/O staging communicator object
 
         type zio_iocomm_obj
           integer :: comm                    ! I/O staging communicator
           integer :: niopes                  ! Number of staging processes
           integer :: me                      ! Rank in comm
           integer, pointer :: ranks_cmp(:)   ! Rank in comm to rank in zio_comm
           logical, pointer :: is_iope(:)     ! Array showing whether a process
                                              ! is an I/O staging process
         end type zio_iocomm_obj
 
  ...    Distributed array descriptor
 
         type zio_distarray_obj
           integer :: ndims                   ! Number of dimensions
           integer, pointer :: nblks(:)       ! Number of rectangular blocks
           integer, pointer :: loff(:,:,:)    ! Offset of local array
           integer, pointer :: lsize(:,:,:)   ! Size of local array
           integer, pointer :: gsize(:)       ! Global size
           integer, pointer :: ghstl(:)       ! Number of LHS ghost nodes
           integer, pointer :: ghstr(:)       ! Number of RHS ghost nodes
           integer, pointer :: index_order(:) ! Local array index order
         end type zio_distarray_obj
 
  ...    File descriptor
 
         type zio_filedesc_obj
           integer :: fileid                  ! File ID
           integer :: method                  ! I/O method
           integer :: iocomm                  ! I/O comm obj ID
           integer :: ndims_par               ! Min # of dims for parallel I/O
           integer :: reclen                  ! Record length (for unformatted
                                              ! I/O)
           logical :: fill                    ! netCDF fill mode (default: true)
         end type zio_filedesc_obj
 
  ...    Distributed array list
 
         type zio_list_entry
           character(len=zio_maxchars) :: name    ! Variable name
           integer :: distarray                   ! Array distribution ID
         end type zio_list_entry

\





Yun (Helen) He
Tue Dec 9 16:16:02 PST 2003