PyThermoDB is a lightweight and user-friendly Python package designed to provide quick access to essential thermodynamic data.
Project description
Python Thermodynamics Databook
PyThermoDB is a lightweight and user-friendly Python package designed to provide quick access to essential thermodynamic data. Whether you're a student, researcher, or engineer, this package serves as a valuable resource for retrieving thermodynamic properties, equations, and constants from your custom thermodynamic database
(csv files).
Key Features:
-
Handbook Data: The package sources its data from well-established thermodynamics handbooks, ensuring accuracy and reliability (updated regularly).
-
Custom Thermodynamic Database: It is possible to builtin your own thermodynamic databook for your project.
-
Minimal Dependencies: Built with simplicity in mind, the package has minimal external dependencies, making it easy to integrate into your projects.
-
Open Source: Feel free to explore, contribute, and customize the package according to your needs.
Check ThermoDB Files
You can check the thermoDB files in the following link:
Google Colab
You can use the following code to run PyThermoDB
in Google Colab:
| Version | Scripts |
|---------|---------|
Examples on Google Colab
| Example | Scripts |
|---------|---------|
Installation
Install PyThermoDB with pip
import pyThermoDB as ptdb
# check version
print(ptdb.__version__)
Usage Example
- databook reference initialization:
# databook reference initialization
tdb = ptdb.init()
- DATABOOK LIST:
# databook
db_list = tdb.list_databooks()
print(db_list)
- TABLE LIST:
# table list
tb_lists = tdb.list_tables(1)
print(tb_lists)
- TABLE INFO:
# display a table
tb_info = tdb.table_info(1, 2)
print(tb_info)
- LOAD TABLES (before building):
# load equation to check
vapor_pressure_tb = tdb.equation_load(1, 4)
pp(vapor_pressure_tb.eq_structure(1))
# load data to check
data_table = tdb.data_load(1, 2)
pp(data_table.data_structure())
- CHECK COMPONENT AVAILABILITY IN A TABLE:
# check component availability in the databook and table
comp1 = "carbon Dioxide"
# CO2_check_availability = tdb.check_component(comp1, 1, 2)
# load comp data
# comp_data = tdb.get_component_data(comp1, 1, 2, dataframe=True)
# pp(comp_data)
- BUILD DATA OBJECT:
# build data
CO2_data = tdb.build_data(comp1, 1, 2)
pp(CO2_data.data_structure())
pp(CO2_data.get_property(4))
- BUILD EQUATION OBJECT:
# build an equation
eq = tdb.build_equation(comp1, 1, 4)
pp(eq.args)
res = eq.cal(T=298.15)
pp(res*1e-5)
Build ThermoDB for Components
DataTable & EquationTable saved as an object in Carbon Dioxide.pkl
- BUILD THERMODB:
# build a thermodb
thermo_db = ptdb.build_thermodb()
pp(type(thermo_db))
# * add TableData
thermo_db.add_data('general', comp1_data)
# * add TableEquation
thermo_db.add_data('heat-capacity', comp1_eq)
thermo_db.add_data('vapor-pressure', vapor_pressure_eq)
# add string
# thermo_db.add_data('dHf', {'dHf_IG': 152})
# file name
# thermodb_file_path = os.path.join(os.getcwd(), f'{comp1}')
# save
thermo_db.save(
f'{comp1}', file_path='E:\\Python Projects\\pyThermoDB\\tests')
- CHECK THERMODB:
# check all properties and functions registered
pp(thermo_db.check_properties())
pp(thermo_db.check_functions())
Load a ThermoDB
Carbon Dioxide.pkl
can be loaded as:
- LOAD THERMODB
# ref
thermodb_file = 'Carbon Dioxide.pkl'
thermodb_path = os.path.join(os.getcwd(), thermodb_file)
pp(thermodb_path)
- LOAD THERMODB
# load thermodb
CO2_thermodb = ptdb.load_thermodb(thermodb_path)
pp(type(CO2_thermodb))
- CHECK THERMODB
# check all properties and functions registered
pp(CO2_thermodb.check())
Custom Integral
- Step 1:
Modify yml file
by adding CUSTOM-INTEGRAL
.
- Step 2:
Add a name for the new integral body.
- Step 3:
Add a list containing the integral body.
CUSTOM-INTEGRAL:
Cp/R:
- A1 = parms['a0']*args['T1']
- B1 = (parms['a1']/2)*(args['T1']**2)
- C1 = (parms['a2']/3)*(args['T1']**3)
- D1 = (parms['a3']/4)*(args['T1']**4)
- E1 = (parms['a4']/5)*(args['T1']**5)
- res1 = A1 + B1 + C1 + D1 + E1
- A2 = parms['a0']*args['T2']
- B2 = (parms['a1']/2)*(args['T2']**2)
- C2 = (parms['a2']/3)*(args['T2']**3)
- D2 = (parms['a3']/4)*(args['T2']**4)
- E2 = (parms['a4']/5)*(args['T2']**5)
- res2 = A2 + B2 + C2 + D2 + E2
- res = res2 - res1
- CHECK AS:
# check custom integral
pp(comp1_eq.custom_integral)
# check body
pp(comp1_eq.check_custom_integral_equation_body('Cp/R'))
# Cp/R
Cp_cal_custom_integral_Cp__R = comp1_eq.cal_custom_integral(
'Cp/R', T1=298.15, T2=320)
pp(Cp_cal_custom_integral_Cp__R)
FAQ
For any question, contact me on LinkedIn
Authors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pythermodb-1.6.6.tar.gz
.
File metadata
- Download URL: pythermodb-1.6.6.tar.gz
- Upload date:
- Size: 91.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39d0d7cff8d61db2cf4ec356a6f08e3f90a3521684026d0a8aed305667bc12d0 |
|
MD5 | 8fc4df24c487d5c97dd4748071928ac3 |
|
BLAKE2b-256 | 3d897fd8dd9196e470a4a07dcfc8849d07cbdf9a8c4acc38290b04941417aaec |
File details
Details for the file PyThermoDB-1.6.6-py3-none-any.whl
.
File metadata
- Download URL: PyThermoDB-1.6.6-py3-none-any.whl
- Upload date:
- Size: 103.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abc4ab9ac56b8b4e8a9e3bac2ae3034d805e1d74e41608143c99d7d365eb6d48 |
|
MD5 | 834bd471190ece6e5f0a1b49dac581de |
|
BLAKE2b-256 | 1f81fdf966bb6b5947a59e4ab71efe631722bf0f12acea3e96953895c8640e6b |