Skip to content

Research-Grade Petroleum Refinery Optimization Platform. From Excel to Exascale: A complete toolkit for refinery blending, planning, and optimization via JAX.

License

Notifications You must be signed in to change notification settings

thookham/RefineryOpt

Repository files navigation

RefineryOpt

🛢️ Research-Grade Petroleum Refinery Optimization Platform

Python 3.10+ License: MIT Tests

From Excel to Exascale: A complete toolkit for refinery blending, planning, and optimization.

Quick StartFeaturesInstallationDocumentation


🎯 Overview

RefineryOpt is an open-source Python framework for petroleum refinery optimization combining:

  • Scientifically Accurate Blending — Non-linear correlations per ASTM/API standards
  • Process Unit Modeling — CDU, FCC, Reformer, Hydrotreater yield models
  • Environmental Compliance — EPA Tier 3, IMO 2020, RFS2 constraints
  • Carbon Footprint Tracking — Scope 1, 2, 3 emissions per GHG Protocol
  • Differentiable Simulation — GPU-accelerated optimization via JAX

🚀 Quick Start

# Clone and install
git clone https://github.com/thookham/RefineryOpt.git
cd RefineryOpt
pip install -e .

# Run simple blending optimization
python refinery_opt.py examples/gasoline.json --solver scipy

Output:

Status: optimal
Cost: $831,332.14

✨ Features

Core Engine (Phases 1-3)

Module Description
Blending RVP, viscosity, flash point, octane correlations
Process Units CDU, FCC, Reformer, Hydrotreater models
Environmental EPA Tier 3, IMO 2020, RFS2 constraints
Economics Crack spreads, gross margin optimization

Advanced (Phases 4-5)

Feature Description
Octane Modeling Interaction matrix, Ethyl method, blending values
Carbon Tracking Scope 1/2/3 emissions per GHG Protocol
JAX Integration Differentiable blending with GPU acceleration

Future (Phases 6-7)

Feature Description
Streamlit Dashboard Web-based GUI for non-programmers
Chance-Constrained Programming Probabilistic constraints
ML Surrogates PyTorch neural network approximations
Decomposition Benders, Lagrangean Relaxation

📦 Installation

Basic

pip install -e .

With GPU (Intel)

pip install jax==0.5.0 jaxlib==0.5.0 intel-extension-for-openxla==0.7.0

Dependencies

Package Purpose
pyomo Optimization modeling
pydantic Data validation
numpy, scipy, pandas Numerical computing
jax Differentiable programming (optional)

📁 Project Structure

RefineryOpt/
├── refinery_opt.py           # CLI entry point
├── src/
│   ├── blending/             # RVP, viscosity, octane
│   ├── constraints/          # EPA, IMO, carbon
│   ├── crude/                # Assay handling
│   ├── units/                # CDU, FCC, Reformer
│   ├── economics/            # Margins, crack spreads
│   ├── uncertainty/          # Monte Carlo, CVaR, CCP
│   ├── models/               # Pyomo LP/NLP/MILP
│   ├── solvers/              # CBC, GLPK, Gurobi, SciPy
│   └── ml/                   # JAX, PyTorch surrogates
├── dashboard/                # Streamlit GUI
├── examples/                 # Sample configs
├── benchmarks/               # Li, Haverly, Pinto
└── tests/                    # Unit tests

🔬 Technical Details

Blending Correlations

Property Model
RVP (Σ xᵢ·RVPᵢ^1.25)^0.8 (Chevron Index)
Viscosity Refutas Index
Flash Point Inverse blending
Octane Ethyl/Interaction matrix

Carbon Accounting

Scope Source
1 Direct combustion (process units)
2 Purchased electricity
3 Upstream crude extraction

Solver Priority

  1. CBC (open-source MILP)
  2. GLPK
  3. Gurobi (commercial)
  4. IPOPT (NLP)
  5. SciPy (fallback)

🧪 Testing

python -m pytest tests/ -v

📖 References

  • Gary, Handwerk, KaiserPetroleum Refining, 5th Ed.
  • RiaziPetroleum Fraction Characterization
  • Li et al. (2016) — Nonlinear blending optimization
  • GHG Protocol — Scope 3 Standard

🤝 Contributing

See CONTRIBUTING.md for guidelines.


📜 License

MIT License — see LICENSE.


Built with ❤️ for the refinery optimization research community

About

Research-Grade Petroleum Refinery Optimization Platform. From Excel to Exascale: A complete toolkit for refinery blending, planning, and optimization via JAX.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages