MOHID Water Modelling System
Encyclopedia
MOHID is short for Modelo Hidrodinâmico which is Hydrodynamic Model in Portuguese. MOHID Water Modelling System is a modular (see Modular programming
) finite volumes (Finite volume method
)water modelling system written in ANSI-Fortran
95 using an Object-oriented programming
philosophy, integrating diverse mathematical model
s and supporting graphical user interface
s 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.
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 wave
s (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).
structure being, at the present time, constituted by over 60 modules
which complete around 300000 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);
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:
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.
Modular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
) finite volumes (Finite volume method
Finite volume method
The finite volume method is a method for representing and evaluating partial differential equations in the form of algebraic equations [LeVeque, 2002; Toro, 1999]....
)water modelling system written in ANSI-Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
95 using an Object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
philosophy, integrating diverse mathematical model
Mathematical model
A mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used not only in the natural sciences and engineering disciplines A mathematical model is a...
s and supporting graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
s 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.
Overview
Initially, MOHID was a two-dimensional tidal modelTheory of tides
The theory of tides is the application of continuum mechanics to interpret and predict the tidal deformations of planetary and satellite bodies and their atmospheres and oceans, under the gravitational loading of another astronomical body or bodies...
written in Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
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
Finite difference
A finite difference is a mathematical expression of the form f − f. If a finite difference is divided by b − a, one gets a difference quotient...
approach.
In the subsequent years, two-dimensional eulerian and lagrangian
Lagrangian
The Lagrangian, L, of a dynamical system is a function that summarizes the dynamics of the system. It is named after Joseph Louis Lagrange. The concept of a Lagrangian was originally introduced in a reformulation of classical mechanics by Irish mathematician William Rowan Hamilton known as...
transport modules were included in this model, as well as a Boussinesq model (Boussinesq approximation
Boussinesq approximation (water waves)
In fluid dynamics, the Boussinesq approximation for water waves is an approximation valid for weakly non-linear and fairly long waves. The approximation is named after Joseph Boussinesq, who first derived them in response to the observation by John Scott Russell of the wave of translation...
) for non-hydrostatic gravity wave
Gravity wave
In fluid dynamics, gravity waves are waves generated in a fluid medium or at the interface between two media which has the restoring force of gravity or buoyancy....
s (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
Coordinate system
In geometry, a coordinate system is a system which uses one or more numbers, or coordinates, to uniquely determine the position of a point or other geometric element. The order of the coordinates is significant and they are sometimes identified by their position in an ordered tuple and sometimes by...
, depending on the main processes in the study area. This necessity led to the introduction of the concept of the Finite volume method
Finite volume method
The finite volume method is a method for representing and evaluating partial differential equations in the form of algebraic equations [LeVeque, 2002; Toro, 1999]....
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
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
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
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
95, profiting from all its new features, including the ability to produce Object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
with it, although it is not an object-oriented programming language
Object-oriented programming language
This is a list of object-oriented programming programming languages.-Languages with object-oriented features:*ABAP*Ada 95*AmigaE*BETA*Blue*Boo*C++*C#*COBOL*Cobra*ColdFusion*Common Lisp*COOL*CorbaScript*Clarion*CLU*Curl*D*Dylan*E*Eiffel...
. 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
Object-Oriented Modeling
Object-oriented modeling , also called object-oriented programming is a modeling paradigm mainly used in computer programming. Prior to the rise of OOM, the dominant paradigm was procedural programming, which emphasized the use of discrete reusable code blocks that could stand on their own, take...
for surface water bodies which integrates scales and processes (Leitão, 2003).
Actual state
Mohid Water Modelling System is organized in a hierarchical modularModular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
structure being, at the present time, constituted by over 60 modules
Modular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
which complete around 300000 source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
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
Natural environment
The natural environment encompasses all living and non-living things occurring naturally on Earth or some region thereof. It is an environment that encompasses the interaction of all living species....
into a mathematical model
Mathematical model
A mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used not only in the natural sciences and engineering disciplines A mathematical model is a...
, 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
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
data files, Module HDF5 – reads and writes matricial data into HDF5 format (Hierarchical Data Format
Hierarchical Data Format
Hierarchical Data Format is the name of a set of file formats and libraries designed to store and organize large amounts of numerical data...
), 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 FormatHierarchical Data FormatHierarchical Data Format is the name of a set of file formats and libraries designed to store and organize large amounts of numerical data...
, 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 modelMathematical modelA mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used not only in the natural sciences and engineering disciplines A mathematical model is a...
to simulate surface water bodies. - MOHID LandMOHID LandMOHID Land is the hydrology module within the three-dimensional MOHID Water Modelling System. MOHID is an integrated system for water flow, consisting of three main modules: Water for three-dimensional fluid dynamics, Land for hydrology and Soil for groundwater flow...
- Watershed mathematical modelMathematical modelA mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used not only in the natural sciences and engineering disciplines A mathematical model is a...
or Hydrological transport modelHydrological transport modelAn hydrological transport model is a mathematical model used to simulate river or stream flow and calculate water quality parameters. These models generally came into use in the 1960s and 1970s when demand for numerical forecasting of water quality was driven by environmental legislation, and at...
designed to simulate Drainage basinDrainage basinA drainage basin is an extent or an area of land where surface water from rain and melting snow or ice converges to a single point, usually the exit of the basin, where the waters join another waterbody, such as a river, lake, reservoir, estuary, wetland, sea, or ocean...
and aquiferAquiferAn aquifer is a wet underground layer of water-bearing permeable rock or unconsolidated materials from which groundwater can be usefully extracted using a water well. The study of water flow in aquifers and the characterization of aquifers is called hydrogeology...
;
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
Water cycle
The water cycle, also known as the hydrologic cycle or H2O cycle, describes the continuous movement of water on, above and below the surface of the Earth. Water can change states among liquid, vapor, and solid at various places in the water cycle...
and its associated processes in an integrated approach.