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.5.tar.gz (425.0 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: pyequion-0.0.5.5.tar.gz
  • Upload date:
  • Size: 425.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/0.18 pkginfo/1.6.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.7.3

File hashes

Hashes for pyequion-0.0.5.5.tar.gz
Algorithm Hash digest
SHA256 ab4fa22de00d73b68993b9f1c9d672ba5fec7c731a5c0bd98e1a23b68cc6fa20
MD5 4670822eb7373280eff126a1febb0048
BLAKE2b-256 569b33a51603614c06c141477efa5c524beb4d56302161e8dd94960463c659d6

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