Skip to main content

PyThermoDB is a lightweight and user-friendly Python package designed to provide quick access to essential thermodynamic data.

Project description

PyThermoDB

Downloads PyPI Python Version License Read the Docs

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 |

|---------|---------|

| 1.6.0 | Open In Colab |

| 1.5.0 | Open In Colab |

Examples on Google Colab

| Example | Scripts |

|---------|---------|

| CO₂ Thermodynamic Data | Open In Colab |

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythermodb-1.6.6.tar.gz (91.8 kB view details)

Uploaded Source

Built Distribution

PyThermoDB-1.6.6-py3-none-any.whl (103.6 kB view details)

Uploaded Python 3

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

Hashes for pythermodb-1.6.6.tar.gz
Algorithm Hash digest
SHA256 39d0d7cff8d61db2cf4ec356a6f08e3f90a3521684026d0a8aed305667bc12d0
MD5 8fc4df24c487d5c97dd4748071928ac3
BLAKE2b-256 3d897fd8dd9196e470a4a07dcfc8849d07cbdf9a8c4acc38290b04941417aaec

See more details on using hashes here.

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

Hashes for PyThermoDB-1.6.6-py3-none-any.whl
Algorithm Hash digest
SHA256 abc4ab9ac56b8b4e8a9e3bac2ae3034d805e1d74e41608143c99d7d365eb6d48
MD5 834bd471190ece6e5f0a1b49dac581de
BLAKE2b-256 1f81fdf966bb6b5947a59e4ab71efe631722bf0f12acea3e96953895c8640e6b

See more details on using hashes here.

Supported by

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