Skip to content
The ideal tool for exploring global marine biogeochemical cycles.
Julia TeX
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
src
test
unused
.appveyor.yml
.gitignore
.travis.yml
CITATION.bib
LICENSE.md
Project.toml
ReadMe.md

ReadMe.md

logo

AIBECS.jl

The ideal tool for exploring global marine biogeochemical cycles.

DOI License: MIT

Build Status Build Status

Coverage Status

AIBECS (for Algebraic Implicit Biogeochemical Elemental Cycling System, pronounced like the cool ibex) is a Julia package that provides ocean biogeochemistry modelers with an easy-to-use interface for creating and running models of the ocean system.

AIBECS is a system because it allows you to chose some biogeochemical tracers, define their interactions, select an ocean circulation and Voilà! — your model is ready to run.

Getting started

Head over to the documentation and find your way to some simple examples (also available as Jupyter notebooks) to get you started!

The Maths

AIBECS represents global biogeochemical cycles with a discretized system of nonlinear partial differential equations that takes the generic form

∂x/∂t = F(x,p)

where x is a column vector of the model state variables (i.e., the tracers) and p is a vector of model parameters. (For now, AIBECS only handles steady-state models, for which F does not depend on time.)

This package was developed for models to exploit techniques from linear algebra. A typical example is if the model is linear (affine), i.e., if

F(x,p) = A * x + b

In that case, the model's steady state solution can be computed in a single use of "backslash", via s = A \ -b.

However, AIBECS also works for nonlinear problems, i.e., when F(x,p) is nonlinear, covering a much larger range of models! In this case, AIBECS uses a state-of-the-art Newton-type solver to find the steady-state solution for you, which is much faster than time-stepping the system until it reaches equilibrium. (See, e.g., the work of C.T. Kelley.)

Motivation

The idea for this package came about in part from the AWESOME OCIM by Seth John and others. The idea behind the AWESOME OCIM is that modeling simple global steady-state marine biogeochemical tracers should be an easy task. The AWSEOME OCIM provides a MATLAB GUI to model biogeochemical tracers embedded in a sparse "transport" matrix circulation, AKA the Ocean Circulation Inverse Model (OCIM) by Tim DeVries. (OCIM matrices and references can be found on Tim's website here.) However awesome it is, the AWESOME OCIM lacks some important features, which motivated this package. A non-exhaustive list of some of the features that we were looking for:

  • Use something else than MATLAB, which is not available to everyone. Julia provides the perfect free alternative, with better performance and better syntax.
  • Allow for nonlinear systems. OCIM users regularly model nonlinear mechanisms, and use Newton-type solvers to run simulations. The AIBECS makes it easy to model nonlinear mechanisms by providing solvers under the hood, so that you don't have to worry about them. Additionally, having these solvers in an open package that is thoroughly tested greatly reduces the chance of bugs!
  • Allow for coupling of tracers, which is fundamental to our understanding of global marine biogeochmical cycles. The AIBECS aims to provide the easiest possible interface for you to create multi-tracer models. In the tests (and soon in the documentation), should be some examples of multiple and nonlinear tracer model implementations.
  • Allow optimizations of model parameters. Arguably, using the fast simulations that are afforded by steady-state circulations should standardize objective optimization of model parameters constrained by available observational data (see, e.g., Pasquier and Holzer, 2017). With AIBECS, we developed a state-of-the-art autodifferentation tool, the F-1 method (see Pasquier et al., in preparation). It was developed specifically for this type of optimizations to run as fast as possible, i.e., it allows you to compute gradient and Hessians of an objective function as fast as if you had gone through the trouble of deriving each second-order derivative by hand! (In the future, monthly circulation matrices, see, e.g., the CYCLOCIM project, should be available from AIBECS)
  • Use other circulations than the output of the OCIM. AIBECS aims to provide a simple API for you to load any transport matrix for the ocean circulation, as long as the matrix creator made it publicly available.
  • Plotting publication-quality figures. Every modeler has reinvented the wheel when it comes to plotting. But it should not be this way. Eventually, AIBECS will provide users with a plotting interface that can be used to directly produce flawless vectorized figures for your publications.

We emphasize that this package is under active development, so that not all the features advertized above are implemented. (Plotting publication-quality figures will likely be a feature that takes time, considering the current state of plotting in Julia!)

References

Please cite us of you use this package. The references under bibtex format are available in the CITATION.bib file.

Also, if you want to do research using the AIBECS, and you think I could help, do not hesitate to contact me directly (contacts on my website), I would be happy to contribute and collaborate!

NSF

The authors acknowledge funding from the Department of Energy grant DE-SC0016539 and from the National Science Foundation grant 1658380

You can’t perform that action at this time.