=========================================================================================
The Earth Science Box Modeling Toolkit ESBMTK: A Python Library for Research and Teaching
=========================================================================================


.. _ess:

.. image:: ./ess.png
    :width: 600

The Earth Science Box Modeling Toolkit (ESBMTK) is a user-friendly Python library that simplifies the creation of models to study Earth system processes, such as the carbon cycle and ocean chemistry. It enhances learning by emphasizing concepts over programming and is accessible to students and researchers alike. By automating complex calculations and promoting code clarity, ESBMTK accelerates model development while improving reproducibility and the usability of scientific research. ESBMTK used an object oriented approach to describe models in a declarative way so the model definition serves also as the model documentation. 

ESBMTK provides abstractions for a variety of processes, e.g., gas-exchange across the air-sea interface, or marine carbonate chemistry and isotope calculations. It's modular nature allows to easily extend or change existing models.

Originally envisioned as a teaching tool, it is currently being used in several research projects. The library is under constant development, but the basic API is stable. 


Contents
========

.. toctree::
   :maxdepth: 2

   Introduction <manual/manual-1>
   Implementing more complex models <manual/manual-2>
   Isotopes <manual/manual-3>
   Seawater & Carbon Chemistry <manual/manual-4>
   Extending ESBMTK <manual/manual-5>
   Debugging ESBMTK <manual/manual-6>
   Contributions & Help <contributing>
   Authors <authors>
   Changelog <changelog>
   Module Reference <api/modules>
   Source Code  <manual/source>
   Related Software <manual/related>
   License <license>
   Citation <citation>


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

.. _toctree: https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
.. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
.. _references: https://www.sphinx-doc.org/en/stable/markup/inline.html
.. _Python domain syntax: https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-python-domain
.. _Sphinx: https://www.sphinx-doc.org/
.. _Python: https://docs.python.org/
.. _Numpy: https://numpy.org/doc/stable
.. _SciPy: https://docs.scipy.org/doc/scipy/reference/
.. _matplotlib: https://matplotlib.org/contents.html#
.. _Pandas: https://pandas.pydata.org/pandas-docs/stable
.. _Scikit-Learn: https://scikit-learn.org/stable
.. _autodoc: https://www.sphinx-doc.org/en/master/ext/autodoc.html
.. _Google style: https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
.. _NumPy style: https://numpydoc.readthedocs.io/en/latest/format.html
.. _classical style: https://www.sphinx-doc.org/en/master/domains.html#info-field-lists
