MOHID water modelling system
MOHID is short for Modelo Hidrodinâmico which is hydrodynamic model in Portuguese. The MOHID water-modelling system is a modular (see Modular programming) finite volumes (Finite-volume method) water-modelling system written in ANSI-Fortran95 using an Object-oriented programming philosophy, integrating diverse mathematical models and supporting graphical user interfaces that manage all the pre- and post-processing. It is an integrated modelling tool able to simulate physical and biogeochemical processes in the water column as well as in the sediments, and is also able to simulate the coupling between these two domains and the latter with the atmosphere.
The development of MOHID started back in 1985. Since that time a continuous development effort of new features has been maintained. Model updates and improvements were made available in a regular basis were used in the framework of many research and engineering projects.
Initially, MOHID was a two-dimensional tidal model written in Fortran 77 (Neves, 1985). This version also gave the present name to model, which derives from the Portuguese abbreviation of MOdelo HIDrodinâmico (hydrodynamic model) and was used to study estuaries and coastal areas using a classic finite-differences approach.
In the subsequent years, two-dimensional eulerian and Lagrangian transport modules were included in this model, as well as a Boussinesq model (Boussinesq approximation) for non-hydrostatic gravity waves (Silva, 1991). The first three-dimensional version of the model was introduced with the version MOHID 3D which used a vertical double Sigma coordinate (Santos, 1995). The limitations of the double Sigma coordinate revealed the necessity to develop a new version which could use a generic vertical coordinate, allowing the user to choose from several coordinate system, depending on the main processes in the study area. This necessity led to the introduction of the concept of the Finite volume method which was introduced in the version MESH 3D (Martins, 1999). In MESH 3D model, a 3D eulerian transport model, a 3D lagrangian transport model (Leitão, 1996) and a zero-dimensional water-quality model (Miranda, 1999) were included. This version revealed that the use of an integrated model based on a generic vertical coordinate is a very powerful tool.
However it was clear that the model was difficult to maintain and to extend due to the Fortran 77 language limitations and due to the increasing number of users and programmers and the interdisciplinary character of the modelled processes. Thus, it was necessary to establish a methodology which permitted to reuse the code more often and improve its robustness related to programming errors (Leitão, 2003). It was decided to reorganize the model, writing it in ANSI Fortran 95, profiting from all its new features, including the ability to produce object-oriented programming with it, although it is not an object-oriented programming language. This migration began in 1998, implementing object oriented features like those described in Decyk (Decyk, et al., 1997) with significant changes in code organization (Miranda, et al., 2000). This migration resulted in An object-oriented model for surface water bodies which integrates scales and processes (Leitão, 2003).
Mohid Water Modelling System is organized in a hierarchical modular structure being, at the present time, constituted by over 60 modules which complete around 300,000 source code lines. Each module is responsible to manage a certain kind of information handling a specific function or process. The information flux between modules is made in a client/server basis, assuring the information encapsulation in each module. Each module manages his associated memory, which is dynamically allocated.
In order to convert, programmatically, environmental systems into a mathematical model, an analysis of processes included in the model and the environmental compartments in which they take place, had to be conducted. Environmental systems are assumed to be divided into three compartments or media: air, water and land. This was the approach followed to reach the actual structure of Mohid, leading to six functional groups of modules:
Global parameters modules – modules which handle global parameters like recognized property lists, time handling and functions, etc. (e.g. module globaldata, module time); Independent functions modules – modules that handle specific operations (e.g. module functions – various mathematical or scientific functions, module triangulation – performs advanced triangulation, Module LUD – equations systems solver); Structural modules – modules that handle geometry domain discretization, transformation and referentials, using variables like distances, areas, volumes, compute points, etc. (e.g. Module HorizontalGrid – handles the horizontal discretization, module horizontalmap – handles 2D horizontal mapping of grid cells like covered and uncovered cells, module map – handles 3D mapping of grid cells, Module Geometry – handles the vertical discretization and volumes); Data handling modules – modules that perform I/O operations (e.g. Module EnterData – reads and writes ASCII data files, Module HDF5 – reads and writes matricial data into HDF5 format (Hierarchical Data Format), Module TimeSerie – reads and writes formatted time series ASCII files);
- Global parameters modules – modules which handle global parameters like recognized property lists, time handling and functions, etc. (e.g. Module GlobalData, Module Time);
- Independent functions modules – modules that handle specific operations (e.g. Module Functions – various mathematical or scientific functions, module triangulation – performs advanced triangulation, Module LUD – equations systems solver);
- Structural modules – modules that handle geometry domain discretization, transformation and referentials, using variables like distances, areas, volumes, compute points, etc. (e.g. Module * HorizontalGrid – handles the horizontal discretization, Module HorizontalMap – handles 2D horizontal mapping of grid cells like covered and uncovered cells, Module Map – handles 3D mapping of grid cells, Module Geometry – handles the vertical discretization and volumes);
- Data handling modules – modules that perform I/O operations (e.g. Module EnterData – reads and writes ASCII data files, Module HDF5 – reads and writes matricial data into HDF5 format Hierarchical Data Format, Module TimeSerie – reads and writes formatted time series ASCII files);
- Specific functions modules – modules that perform specific operations that can only be used in MOHID (e.g. Module BoxDif – divides 2D and 3D domains into boxes and computes exchanges between boxes, total mass inside a box or process rates within a box, Module Statistics – computes basic statistic operations over space and time, module interface – interface between 3D and 0D models, Module WaterQuality – pelagic biochemical module);
- Processes modules – modules that correspond to the different processes taking place in the different environmental compartments (Module Hydrodynamic, Module WaterProperties, Module Turbulence, Module Lagrangian, Module InterfaceSedimentWater, Module InterfaceWaterAir, Module Atmosphere);
All programs included in MOHID Water Modelling System are built on the top of one or more base libraries and the two core executables files can be found at the top of the pyramid:
- MOHID Water – Three-dimensional mathematical model to simulate surface water bodies.
- MOHID Land – Watershed mathematical model or Hydrological transport model designed to simulate Drainage basin and aquifer;
Smaller utility programs are easily built on the top of the libraries, which are usually designed for pre or post-processing results of the models. This support tools are normally managed by graphical user interfaces which allow management of input data, control of program execution, and output results analysis, along with other pre- and post-processing operations.
The integration of MOHID’s different tools can be easily achieved since these tools are based on the same framework. This coupling can thus be used to study the water cycle and its associated processes in an integrated approach.
- Miranda, Ricardo (2000) MOHID 2000-A coastal integrated object oriented model . Hydrosoft 2000. Retrieved October 11, 2007.
- TRANCOSO A. R.; SARAIVA S.; FERNANDES L.; PINA P.; LEITAO P.; NEVES R. (2005) Modelling macroalgae using a 3D hydrodynamic-ecological model in a shallow, temperate estuary . Ecological modelling. Retrieved September 17, 2008.
- Chambel-Leitão P., F. Braunschweig, L. Fernandes, R. Neves, P. Galvão. (2007) Integration of MOHID model and tools with SWAT model. . submitted to the Proceedings of the, 4th International SWAT Conference, July 2–6, 2007. Retrieved September 17, 2008.
- Sofia Saraiva, P. Pina, F. Martins, M. Santos, F. Braunschweig and R. Neves (2007) Modelling the influence of nutrient loads on Portuguese estuaries. .Hydrobiologia.Retrieved September 17, 2008.