ThermoCodegen

ThermoCodegen: a python/C++ package for the generation of custom thermodynamic models - Published in JOSS (2023)

https://gitlab.com/ENKI-portal/ThermoCodegen

Science Score: 89.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
    10 of 13 committers (76.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Mathematics Computer Science - 92% confidence
Economics Social Sciences - 85% confidence
Engineering Computer Science - 60% confidence
Last synced: 4 months ago · JSON representation

Repository

ThermoCodegen: a python/C++ package for the generation of custom thermodynamic models

Basic Info
  • Host: gitlab.com
  • Owner: ENKI-portal
  • License: mit
  • Default Branch: main
Statistics
  • Stars: 1
  • Forks: 2
  • Open Issues: 4
  • Releases: 0
Created over 3 years ago

https://gitlab.com/ENKI-portal/ThermoCodegen/blob/main/

# ThermoCodegen

ThermoCodegen  is part  of the larger [ENKI](http://enki-portal.org/) project for Thermodynamic modeling

It is designed to provide reproducible, code-generation tools for developing and exploring custom thermodynamic models and reaction kinetics libraries for use in a wide range of applications.

At its heart, ThermoCodegen, shares the same code-generation module `coder.py` from [ThermoEngine](https://gitlab.com/ENKI-portal/ThermoEngine) that generates high-performance C code from sympy expressions for the Gibbs Free Energy of custom  endmembers and phases.  Currently ThermoCodegen supports most models supported by ThermoEngine.

ThermoCodegen also adds the following features

* Model generation is described in Jupyter notebooks, but stored in structured xml files that contain all the information required to describe and auto-generate code for thermodynamic databases of endmembers and phases.
* ThermoCodegen also allows code generation of custom kinetic reaction models built on the phase databases.
* Generates C++ libraries for inclusion in other modeling systems such as  [TerraFERMA](https://terraferma.github.io) or [ASPECT](https://aspect.geodynamics.org)
* Generates python bindings of the C++ classes for direct import into python applications
* These python modules can also be dropped back into ThermoEngine as a custom database for use in equilibration or calibration calculations (requires a separate branch of ThermoEngine)

## Documentation

Extensive documentation for ThermoCodegen is available through [gitlab.io/ThermoCodegen](https://enki-portal.gitlab.io/ThermoCodegen) including multiple examples and workflows.   Here we provide a minimal description to get started.

## Quickstart:  docker or singularity containers

The easiest way to get started with ThermoCodegen is to install docker, or singularity and install one of our pre-compiled containers
which also includes a full implementation of TerraFERMA v2.0.  To run properly you should allow X11 access to the container.
For linux machines, we suggest using the Singularity container as it is self-contained and handles the X11 dependencies and local directories transparently.  
Full documentation and pointers to the most recent containers can be found at [ThermoCodegen/quickstart.html](https://enki-portal.gitlab.io/ThermoCodegen/quickstart.html)

## Dependencies and Installation 

Dependencies and installation directions for native MacOS and linux (Ubuntu 20.04) can be found at [ThermoCodegen/install.html](https://enki-portal.gitlab.io/ThermoCodegen/install.html)

### Docker/Singularity

really...just use the containers...it's much easier (and you get TerraFERMA v.2 for free ;^)



JOSS Publication

ThermoCodegen: a python/C++ package for the generation of custom thermodynamic models
Published
June 30, 2023
Volume 8, Issue 86, Page 4874
Authors
Marc Spiegelman ORCID
Dept. of Applied Physics and Applied Math, Columbia University, Dept. of Earth and Environmental Science, Columbia University
Owen Evans
Dept. of Applied Physics and Applied Math, Columbia University, Now at Google
Mark Ghiorso ORCID
OFM Research
Lucy Tweed ORCID
Dept. of Earth and Environmental Science, Columbia University
Cian Wilson ORCID
Earth and Planets Laboratory, Carnegie Institution for Science
Editor
Kyle Niemeyer ORCID
Tags
Python/C++ computational thermodynamics geodynamics geochemistry

Committers

Last synced: 4 months ago

All Time
  • Total Commits: 894
  • Total Committers: 13
  • Avg Commits per committer: 68.769
  • Development Distribution Score (DDS): 0.308
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Marc Spiegelman m****g@l****u 619
Owen Evans o****4@g****m 119
Owen Evans o****0@c****u 50
Owen Evans o****s@O****l 50
Cian Wilson c****n@c****u 31
Owen Evans o****s@d****u 6
Owen Evans o****s@d****u 5
Owen Evans o****s@d****u 4
Owen Evans o****s@d****u 3
Owen Evans o****s@d****u 3
Owen Evans o****s@O****1 2
Owen Evans o****s@d****u 1
Owen Evans o****s@d****u 1

Issues and Pull Requests

Last synced: 4 months ago


Dependencies

ThermoEngine/Documentation/requirements.txt pypi
  • Cython >=0.29.15
  • deprecation >=2.0.6
  • ipykernel *
  • nbsphinx *
  • numdifftools >=0.9.20
  • numpy >=1.18.1
  • numpydoc *
  • openpyxl >=3.0.3
  • pandas >=1.0.2
  • pytest >=5.3.5
  • recommonmark *
  • scipy >=1.3.1
  • sphinx >=1.6.5
  • statsmodels >=0.11.1
  • sympy >=1.5.1
ThermoEngine/thermoengine/environment.yml pypi
  • cmake >=3.14.0
  • deprecation *
  • earthchem *
  • elasticsearch *
  • elasticsearch_dsl *
  • nbval *
  • numdifftools *
  • pytest-cov *
  • rubicon_objc ==0.2.10
  • sulfliq ==1.0.0
ThermoEngine/thermoengine/requirements.txt pypi
  • Cython >=0.29.15
  • SulfLiq >=1.0.0
  • cmake >=3.14.0
  • deprecation >=2.0.6
  • elasticsearch *
  • elasticsearch-dsl *
  • numdifftools >=0.9.20
  • numpy >=1.21.2
  • openpyxl >=3.0.3
  • pandas >=1.0.2
  • pytest >=5.3.5
  • rubicon_objc ==0.2.10
  • rubicon_objc >=0.4.2
  • scipy >=1.7.1
  • statsmodels >=0.11.1
  • sympy >=1.7.1
ThermoEngine/thermoengine/setup.py pypi
  • SulfLiq *
  • cmake >=3.14.0
  • coverage *
  • cython *
  • deprecation *
  • elasticsearch *
  • elasticsearch-dsl *
  • ipykernel *
  • jupyter *
  • jupyterlab *
  • matplotlib *
  • nbval *
  • numdifftools *
  • numpy >=1.21.2
  • openpyxl *
  • pandas *
  • pytest *
  • pytest-cov *
  • scipy *
  • seaborn *
  • statsmodels *
  • sympy *
docs/requirements.txt pypi
  • breathe *
  • cmake *
  • lxml *
  • pandas *
  • pybind11 *
  • sphinx-argparse *