AuChimiste Toolbox
From elements to plain gold (and kinetics), all in plain Julia.
AuChimiste is an alchimiste wordplay meaning to the chemist in French.
Please check the Getting Started (and the whole suit) in the sidebar if it is your first time here.
If this module was useful in your work, please consider citing us [1].
Project goals and status
One toolbox, all chemistry.
Provide chemical elements with symbolic support and built-in data; utilities are expected to allow users to define their own elements (e.g. isotopes) and retrieve data.
By making use of chemical elements we provide chemical components. We call them this way because it is intended to include anything from species, compounds, solids, etc., so no other name suited its ends. Components include:
Provide creation of arbitrary compounds from mass or molar composition (try to understand this term in the broader sense) with the other composition being computed, i.e. if mass fractions were provided, the compound can access its molar composition, and molecular mass.
Arithmetic of compounds to create complex compositions and manipulation of amounts of matter. This sort of functionality is aimed at computing mixtures for experiments, validation of chemical reactions mass balance, or simply creating new compounds expressed in terms of components, as is often the case in intermetallics or complex oxide systems.
WIP: Putting chemical components together one can express reactions; with reactions we open the gates to chemical kinetics. This introduces the expression of symbolic kinetics for ease of integration in reactor models. It provides parsing of Cantera mechanism and reusable code generation for simulating mechanisms.
WIP: Chemical kinetics provides the basis for the construction of reactor models in chemical reactors. They are built upon ModelingToolkit blocks and allows for chains of reactors, plug-flow reactors,...
WIP: Supporting the above one needs basic physical-chemistry definitions, which provides the required closure models for the different models, and combustion-chemistry a specialized set of functionalities for the analysis and simulation of combustion systems.
WIP: Going one step further, we implement chemical thermodynamics utilities that make use of some of the above to provide chemical thermodynamics computations, with focus in phase equilibria and CALPHAD approaches.
WIP: For all types for which it applies, provide recipes for $\LaTeX$ representation of entities, so that report generation can be automated.
Related tools
Searching for chemistry, kinetics, or thermodynamics in Julia Packages does not lead to any convincing package or ecosystem in competition with what is aimed here, justifying its existence.
Some clarifications regarding the design choices of this package:
It does not intend to replace Cantera, but to provide similar functionality in a algorithmic-differentiable way for some of its applications. The main difference here is the focus at supporting user-defined models.
It also does not compete with pyJac as all code generation is aimed to be plain Julia. While
pyJac
uses analytically derived formulas for jacobian matrix evaluation, our intent here is to let the user chose how the AD code will be employed in their simulations.Regarding Catalyst.jl, our goal is not to analyse kinetics in the same sense, but to use mechanisms (with thermochemistry integrated, what lacks there) in larger simulations.