next up previous contents index
Next: 4.5.2 Use of UIO Up: 4.5 Fortran90 Previous: 4.5 Fortran90   Contents   Index

4.5.1 Files

The Fortran UIO package is a collection of Fortran90 modules and programs described in Table 7.

Table 7: UIO Fortran90 files
File contents
uio_base_module.f90 Collection of basic modules
uio_mac_module.F90 Machine-dependent routines for all machines, current
uio_mac_module.f90 (Possibly) machine-dependent routines
  Minimal version (all machines)
uio_mac_ieee_module.f90 Machine-dependent routines: IEEE format
uio_mac_sun_module.f90 Machine-dependent routines: Sun, SGI, Linux, HP
uio_mac_aix_module.f90 Machine-dependent routines: IBM
uio_mac_crayts_module.f90 Machine-dependent routines: CRAY
uio_mac_crayxmp_module.f90 Machine-dependent routines: CRAY
uio_mac_decalpha_module.f90 Machine-dependent routines: alpha
uio_mac_hitachi_module.f90 Machine-dependent routines: Hitachi
uio_mac_intel_module.f90 Machine-dependent routines: old Linux Intel (little_endian)
uio_mac_nec_module.f90 Machine-dependent routines: NEC
uio_bulk_module.f90 Main part of UIO routines
uio_filedef_module.f90 Standard file descriptors and labels
uio_table_module.f90 Table manipulation routines
uio_var_module.f90 definition and handling of UIO flexible variable
uio_varfile_module.f90 definition and handling of file structure of
  UIO flexible variables
uiocop.f90 Program to copy and transform UIO files
uiolok.f90 Program to look into UIO files
uioinf.f90 Program to give information about conversion types
uiotst.f90 Program to produce test UIO file

The file uio_base_module.f90 contains the basic set of modules (see Table 8).

Table 8: Contents of uio_base_module.f90
module contents
uio_cst_module channel status information
uio_cvl_module convert type list of current machine
uio_inf_module information about environment
uio_nam_module definition of names
uio_siz_module string length, table size
uio_base_module basic set of UIO-routines: string processing,
  header handling, I/O channel management

The files uio_mac*_module.[fF]90 (Tab. 7) contain machine-dependent routines collected in the module uio_mac_module (see Tab. 9).

Table 9: Contents of uio_mac_module
routine purpose
uio_getenv Get information about environment
uio_mkcvls Make list with possible conversion types
uio_uopen Open file with special handling for conversion type
uio_uclose Close file with special handling for conversion type

It comes in various flavors. In the current version of CO5BOLD, there is only one file uio_mac_module.F90 - with a capital F90 - that can be changed during the compilation by preprocessor switches, see 3.6.

In older version there was a list of files appropriate for different (groups of) machines: The machine-independent version is uio_mac_module.f90 which can be used for first tests but does not provide all possible features. Therefore, it should be discarded afterwards and replaced by a version more suitable for the platform in use. The file uio_mac_ieee_module.f90 is appropriate for all machines with IEEE big_endian binary format. Additionally there exist files containing calls of machine library routines
uio_mac_crayts_module.f90, uio_mac_crayxmp_module.f90, uio_mac_sun_module.f90. These make it possible to write information about the platform in use into the file header. The CRAY versions allow unformatted I/O in the CRAY specific format and additionally (via the FFIO ASSIGN logic) in IEEE format. The file uio_mac_intel_module.f90 is appropriate for all machines with IEEE little_endian binary format (and no mechanism for automatic conversion). In additions, there is an uio_mac_aix_module.f90, an uio_mac_decalpha_module.f90, and an uio_mac_nec_module.f90.

The main set of routines is contained in uio_bulk_module.f90 in the module uio_bulk_module.

The three files uio_base_module.f90, uio_mac_module.F90, and uio_bulk_module.f90 comprise the standard set of UIO routines.

Additionally there exists a file uio_table_module.f90 with the single module uio_table_module which permits the I/O and manipulation of a certain table format (see the example in section 4.2).

The latest extension comes within the modules uio_var_module.f90 and uio_varfile_module.f90. The module uio_var_module.f90 contains a type definition for a variable (``uio flexible variable'') of general type (i.e. it may be a scalar integer value or a 1D character array or a 3D real array...) together with some routines for the basic handling of the variables (I/O in UIO format, construction and modification of variables...). The module uio_varfile_module.f90 contains a type definition for a file built of UIO flexible variables together with routines for the handling of these files.

next up previous contents index
Next: 4.5.2 Use of UIO Up: 4.5 Fortran90 Previous: 4.5 Fortran90   Contents   Index