DelftIO Library

Purpose

The purpose of the Delft IO library is to:

  1. Provide an easy to use library for reading and writing data
  2. Let applications read/write data without having knowledge about the type of storage
  3. Provide extra features like process to process communication and synchronisation (so called synchronized streams)

Functionality

The Delft IO library consists of two basic type of elements, Streams and Datasets.

A Stream contains data, and usually corresponds with a file or database. However, it may also be a process to process stream, i.e. a non-persistent stream that takes care of data exchange and synchronisation between two processes. A calling application may open and close a stream for reading or writing, after which it can Put or Get one or more Datasets to or from the stream.
However, for stream types that can only contain one dataset (for example Delwaq HIS and MAP files), the application can directly start to write/read datasets, without having to bother about opening a Stream first.

There are several types of datasets, each with their own type of information. Depending on the type of dataset there are different ways for the calling application to read or write the data. Currently, three data types have been implemented:

  1. The ParLocTime type (PLT), which stands for Parameter/Location/Time. It is used for time step wise putting and/or getting values of one or more parameters (variables) on a set of locations (on a 1D network or on a 2D grid).
  2. The 2D-Fields, for time step wise putting and/or getting values contained in a 2D-array.
  3. The Constant (only available for Nefis files), for storing a constant value.

DelftIO Library Interfaces

The core of the DelftIO library is written in Fortran90, and therefore offers a comprehensive

On top of this library, their is a small Fortran 77 layer. This layer offers the

The Fortran77 layer is currently mainly focussing on writing/reading PLT datasets to/from (Delwaq) HIS and MAP files. This layer is also exported as a DLL. However: it is strongly recommended not to use this DLL directly, but to use one of the following layers that are provided on top of it: