Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
scrollbar

h2. Architecture outline

The architecture outline of Delta Shell is shown in the figure below. As can be seen from the figure, Delta Shell consists of a set of common class libraries, mainly representing different domains and software standards such as:
* geospatial libraries (geometries, features, coverages);
* hydrographic libraries (hydro regions, hydro networks, drainage basins, hydro areas, hydraulic structures and other hydrographic features);
* scientific libraries (units, multi-dimensional arrays, variables);
* storage libraries (NetCDF, SQLite and support for many file formats such as CSV, WaterML2, Shapefile, file formats supported by GDAL);
* workflow libraries (simple and composite workflow activities, support for parallel and sequential run modes);
* scripting support (based on IronPython);
* general application framework libraries (Application, Gui).

These general framework class libraries define on a very high level how a typical console or graphical user interface application is constructed. They also define how different parts of the environment can be extended by means of plugins. This includes both:

* non-gui plugins providing new data types or computational models to the system, and;
* graphical user interface components used to visualize different data.

Delta Shell is a flexible framework and can be easily extended by means of plugins or scripts.  
\\
\\  !delta_shell_architecture.png|width=800!\\
\\
\\h2.  {color:#000000}{*}Background readings on Delta Shell *{color}

Unfortunately there currently is no complete set of documentation available for the Delta Shell components and interfaces and, additionally, the documentation that is available quickly becomes obsolete as development of Delta Shell progresses further.

Nevertheless, some background papers are available that are recommended for new Delta Shell developers to read before proceeding with any tutorials or exercises:
- [Delta Shell, an open modelling environment|https://www.researchgate.net/publication/232274505_DeltaShell-an_open_modelling_environment?ev=prf_pub] 
G. V. Donchyts, B. Jagers, (iEMSs 2010)

- [Functional Coverages|https://www.researchgate.net/publication/232274419_Functional_Coverages?ev=prf_pub]
G. V. Donchyts, F. Baart, H.R.A Jagers, A van Dam (OSGeo Journal 10, 2011)

- [DeltaShell Technical Reference Manual Architecture|http://publicwiki/display/DSM/DeltaShell]

h2. Links to used open-source libraries 

Additional information that might be useful, concerns the open source libraries that are used by Delta Shell. These background readings can be found at their repositories on the internet:
- NetCDF ([http://www.unidata.ucar.edu/software/netcdf/])
- GeoAPI.NET ([http://geoapi.codeplex.com/])
- NetTopologySuite ([https://code.google.com/p/nettopologysuite/])
- SharpMap ([http://sharpmap.codeplex.com])
- NHibernate ([http://nhforge.org/|http://nhforge.org/])
- SQLite ([http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki|http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki])
- Mono.Addins ([https://monoaddins.codeplex.com/|https://monoaddins.codeplex.com/])
- PostSharp ([http://www.postsharp.net/|http://www.postsharp.net/])
- protobuf-net ([https://code.google.com/p/protobuf-net/|https://code.google.com/p/protobuf-net/])
- QuickGraph ([https://quickgraph.codeplex.com/|https://quickgraph.codeplex.com/])

GeoAPI.NET and NetTopologySuite are used closely together and have each been extended by Deltares to develop support for geospatial Features and Coverages.

SharpMap is the Map UI component used by Delta Shell which has been extended by Deltares in a separate branch that can be found at the SharpMap repository ([http://sharpmap.codeplex.com/SourceControl/latest#Branches/0.9.5-DeltaShell]).

For NetCDF, the plain C API is used for optimal performance by integrating a .NET 'wrapper' in the DelfTools.Utils.NetCDF library. The C# wrapper classes are quite similar to but not exactly modelled after the NetCDF Java API.
\\
\\
\\