Chemical equilibrium for electrolytes in pure python
Project description
Aqueous equilibrium calculation.
PyEquIon
A pure python implementation for electrolytes chemical equilibrium.
A simplified version is provided with a web based user interface: https://caiofcm.github.io/pyequion-onl/
Repository: https://github.com/caiofcm/pyequion
Features
- Pure python package: hence it is easy to install in any platform
- Calculation of equilibrium of inorganic salts in water solution with precipitation
- Automatic determination of reactions
- Provides information as: Ionic Strength, pH, Electric Conductivity and the concentrations of each species as well their activity coefficient
- A modular approach for the activity coefficient calculation allows the usage of new thermodynamic models
- Just in time compilation capabilities with
numba
- Automatic differentiation with
sympy
- Code generation for exporting the residual function for a giving system to other environments: suitable for kinetic simulations (e.g python or C)
- Automatic determination of the mean activity coefficient (often used in comparison with experiments)
Installation
The package can be installed with pip install pyequion
or pip install <folder>
Basic Usage
import pyequion
sol = pyequion.solve_solution({'NaHCO3': 50, 'CaCl2': 10})
pyequion.print_solution(sol)
>> Solution Results:
>> pH = 7.86640
>> sc = 6602.68061 uS/cm
>> I = 73.74077 mmol/L
>> DIC = 50.00000 mmol/L
>> Saturation Index:
>> Halite: -4.77905928064043
>> Calcite: 2.083610139715626
>> Aragonite: 1.9398402923233906
>> Vaterite: 1.5171786455013265
Documentation
https://pyequion.readthedocs.io/en/latest/
Running Tests
To run unit tests:
pytest ./tests
To create the test report:
pytest --cov=pyequion ./tests/test_reactions_species_builder.py --cov-report=html
Contributing
The code is formatted with black following flack8 specifications. Run black .
to format the code.
Helpers
- Code can be JIT compiled with
numba
calling the function:pyequion.jit_compile_functions()
- When using JIT, running the code in
jupyter
becomes unstable, prefer regular python script.
Contributors
- Caio Curitiba Marcellos
- Gerson Francisco da Silva Junior
- Elvis do Amaral Soares
- Fabio Ramos
- Amaro G. Barreto Jr
- Danilo Naiff
Folder Structure
.
├── api # Application Programming Interface for web service
├── data # Parameters database file (was replaced by python dictionaries in pyequion/data)
├── docs # Documentation generation (sphinx)
├── LICENSE.md #License file
├── pyequion
│ ├── activity_coefficients.py # Built-in thermodynamic models
│ ├── conductivity.py # Conductivity function
│ ├── core.py # Core functionalities
│ ├── data # Parameters database as python files
│ │ ├── __init__.py
│ │ ├── reactions_solids.py
│ │ ├── reactions_solutions.py
│ │ └── species.py
│ ├── __init__.py # Auxiliary
│ ├── jit_helper.py # Auxiliary
│ ├── PengRobinson.py # EOS for pure gas
│ ├── pitzer.py # Pitzer model
│ ├── properties_utils.py # Auxiliary
│ ├── pyequion.py # Application Programming Interface for python call
│ ├── reactions_species_builder.py # Creation of equilibrium system
│ ├── read_from_phreeqc_db.py # Auxiliary
│ ├── symbolic_computations.py # Symbolic Computation with sympy
│ ├── utils_api.py # Auxiliary
│ ├── utils_for_numba.py # Auxiliary
│ ├── utils.py # Auxiliary
│ └── wateractivity.py # Auxiliary for water activity in pitzer
├── pyproject.toml #Linting configuration
├── README.md # General guide
├── requirements-dev.txt # Development Requirements
├── requirements.txt # Main Requirements
├── samples #Some samples using pyequion
├── setup.py #Installation file
└── tests # Automatic Unit tests folder (pytest based)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyequion-0.0.5.4.tar.gz
(391.7 kB
view hashes)