Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Coupled physical-biogeochemical models are a key tool in aquatic biogeochemistry: they allow us to test our understanding of the system, and to exploit this to perform forecast and hindcast simulations. As coupled models describe many physical, chemical, biological and geological processes, they tend to be interdisciplinary efforts in which individual scientists bring in submodels specifically related to their expertise. Accordingly, we find ubiquitous separation of hydrodynamic and biogeochemical model development. Further division of tasks is common in larger biogeochemical models, where topics such as carbonate chemistry, plankton dynamics, and fish are dealt with by different individuals or research groups. Consequently, a typical coupled physical-biogeochemical model is built by combining several disjoint, often-incompatible model codes: a procedure that is time-consuming, error-prone, and highly demanding in terms of scientific and programming expertise. A key challenge, therefore, lies in facilitation of the combination of distinct model codes into a functional and consistent coupled model (Trolle et al., 2012).
The coupling of hydrodynamic and biogeochemical models is still unnecessarily complex. Most hydrodynamic models can couple to biogeochemistry through specific application programming interfaces (APIs), but these fall short in their ease of use. While a biogeochemical modeller might summarize the behaviour of his system in terms of a local ecosystem responding to local forcing, using few concepts and equations, the actual coupling of such a model to hydrodynamics tends to be complex: more often than not, it requires detailed management of biogeochemical and physical variables across the full spatial model domain, along with its specifics (e.g., land/water masks) and relevant physical processes (advection, diffusion). As a result, much of the complexity associated with coding biogeochemical models stems from issues (hydrodynamics, programming) that are at best peripheral to biogeochemistry: issues that a good coupling framework would not require the modeller to know in detail.
The complexities of physical-biogeochemical coupling would be tolerable if different hydrodynamic models used similar interfaces to couple to biogeochemistry. However, the coupling APIs provided by different hydrodynamic models are wholly incompatible, necessitating the development of a custom coupling layer whenever a biogeochemical model is ported to a new hydrodynamic host. Such porting is common, as scientists regularly explore and tune model behaviour in a variety of spatial environments, ranging from well-mixed chemostats, one-dimensional water columns, to three-dimensional basins. In a few cases, a single coupling API is used by different hydrodynamic models. For instance, the 1D General Ocean Turbulence Model and 3D General Estuarine Transport Model share a single “bio” API (Burchard et al., 2006), and the Modular Ocean Model (Griffies et al., 2005) and Generalized Ocean Layer Dynamics model share a single “generic tracer” API. However, these are the exception rather than the rule, and their individual APIs still differ greatly. There is an urgent need for a unified coupler that can interface to a greater range of hydrodynamic models.
Coupling to hydrodynamics is only part of the problem; the combination of disjoint, process-specific biogeochemical submodels can be every bit as challenging. Comprehensive biogeochemical models tend to be developed by consortia, their members responsible for specific functional groups, trophic levels, or processes (e.g., carbonate chemistry, phytoplankton, zooplankton, benthic communities). The final coupling of the resulting collection of submodels requires the merging of different, potentially incompatible model codes, in a step that requires complete knowledge of all modelled biogeochemical processes. This would be greatly facilitated if biogeochemical submodels adhered to a standard set of APIs for communication. At present, however, no coupling software provides this.
The Framework for Aquatic Biogeochemical Models (FABM) addresses these issues by providing a generic, easy to use, high performance coupling layer that connects a hydrodynamic model (e.g., 1D water column, 3D world ocean) with multiple biogeochemical submodels. Its primary role is to specify in detail how physical and biogeochemical models communicate. Accordingly, it consists of a thin layer of code for communication and data exchange, enveloped by an extensive set of application programming interfaces (APIs) through which models pass information.
Hydrodynamic and biogeochemical models only need to be developed once to interface with the general framework. After that, arbitrary combinations of physical and biogeochemical models can be made without requiring any source code change. Furthermore, the framework allows multiple biogeochemical models to be combined at run-time into a comprehensive coupled model. Thus, the selection of biogeochemical models, and the links between them, can be made by the end user – it does not require programming expertise.