Skip to main content

Chemical equilibrium for electrolytes in pure python

Project description

pyequion

Aqueous equilibrium calculation.

Documentation Status PyPi Version PyPI pyversions Coverage Status Build Status

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 details)

Uploaded Source

File details

Details for the file pyequion-0.0.5.4.tar.gz.

File metadata

  • Download URL: pyequion-0.0.5.4.tar.gz
  • Upload date:
  • Size: 391.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.3

File hashes

Hashes for pyequion-0.0.5.4.tar.gz
Algorithm Hash digest
SHA256 1018b201da9f86880135fe46519fd9a7e87ff7efa7e956d5bcf4e1b82bb1bc47
MD5 5ce459c8ffaea77caba76c263ce926ca
BLAKE2b-256 1bdfc5285a9826f2e89862b3d7cd3e0485dcd80d15f3d7ff837b754c1aed33c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page