# IF97
The **if97** is the Python API of the high-speed IAPWS-IF97 package in Rust. It is suitable for computation-intensive calculations, such as heat cycle calculations, simulations of non-stationary processes, real-time process monitoring and optimizations.
Through the high-speed package, the results of the IAPWS-IF97 are accurately produced at about 5-20x speed-up compared to using the `powi()` of the Rust standard library in the `for`loop directly when computing the basic equations of Region 1,2,3.
**The Fast Methods**
1. The multi-step method unleashes the full power of the compiler optimizations while using `powi()` with the `for` loop
2. The recursive method computes the polynomial values of the base variable and its derivatives
In if97, [36 thermodynamic, transport and further properties](#properties) can be calculated.
The following 12 input pairs are implemented:
```txt
(p,t) (p,h) (p,s) (p,v)
(p,x) (t,x) (h,x) (s,x)
(t,h) (t,s) (t,v)
(h,s)
```
## The functions
The type of functions are provided in the if97 package:
```python
??(in1,in2,o_id)
```
* the first,second input parameters : the input propertry pairs
* the third input parametes: the property ID of the calculated property - [o_id](#properties)
* the return: the calculated property value of o_id
```python
pt(p,t,o_id)
ph(p,h,o_id)
ps(p,s,o_id)
pv(p,v,o_id)
th(t,h,o_id)
ts(t,s,o_id)
tv(t,v,o_id)
hs(h,s,o_id)
px(p,x,o_id)
tx(p,x,o_id)
hx(h,x,o_id)
sx(s,x,o_id)
```
## Examples
```python
from if97 import *
OH=4
OS=5
p=16.0
t=535.1
h=pt(p,t,OH)
s=pt(p,t,OS)
print(f"p={p}, t={t} h={h:.3f} s={s:.3f}")
```
## Properties
| Propertry | Unit | Symbol | o_id | o_id(i32)|
| ------------------------------------- | :---------: |:------:|------:|:--------:|
| Pressure | MPa | p | OP | 0 |
| Temperature | °C | t | OT | 1 |
| Density | kg/m³ | ρ | OD | 2 |
| Specific Volume | m³/kg | v | OV | 3 |
| Specific enthalpy | kJ/kg | h | OH | 4 |
| Specific entropy | kJ/(kg·K) | s | OS | 5 |
| Specific exergy | kJ/kg | e | OE | 6 |
| Specific internal energy | kJ/kg | u | OU | 7 |
| Specific isobaric heat capacity | kJ/(kg·K) | cp | OCP | 8 |
| Specific isochoric heat capacity | kJ/(kg·K) | cv | OCV | 9 |
| Speed of sound | m/s | w | OW | 10 |
| Isentropic exponent | | k | OKS | 11 |
| Specific Helmholtz free energy | kJ/kg | f | OF | 12 |
| Specific Gibbs free energy | kJ/kg | g | OG | 13 |
| Compressibility factor | | z | OZ | 14 |
| Steam quality | | x | OX | 15 |
| Region | | r | OR | 16 |
| Isobari cubic expansion coefficient | 1/K | ɑv | OEC | 17 |
| Isothermal compressibility | 1/MPa | kT | OKT | 18 |
| Partial derivative (∂V/∂T)p | m³/(kg·K) |(∂V/∂T)p| ODVDT | 19 |
| Partial derivative (∂V/∂p)T | m³/(kg·MPa) |(∂v/∂p)t| ODVDP | 20 |
| Partial derivative (∂P/∂T)v | MPa/K |(∂p/∂t)v| ODPDT | 21 |
| Isothermal throttling coefficient | kJ/(kg·MPa) | δt | OIJTC | 22 |
| Joule-Thomson coefficient | K/MPa | μ | OJTC | 23 |
| Dynamic viscosity | Pa·s | η | ODV | 24 |
| Kinematic viscosity | m²/s | ν | OKV | 25 |
| Thermal conductivity | W/(m.K) | λ | OTC | 26 |
| Thermal diffusivity | m²/s | a | OTD | 27 |
| Prandtl number | | Pr | OPR | 28 |
| Surface tension | N/m | σ | OST | 29 |
| Static Dielectric Constant | | ε | OSDC | 30 |
| Isochoric pressure coefficient | 1/K | β | OPC | 31 |
| Isothermal stress coefficient | kg/m³ | βp | OBETAP| 32 |
| Fugacity coefficient | | fi | OFI | 33 |
| Fugacity | MPa | f* | OFU | 34 |
| Relative pressure coefficient | 1/K | αp | OAFLAP| 35|
Raw data
{
"_id": null,
"home_page": "https://github.com/thermalogic/IF97",
"name": "if97",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.0",
"maintainer_email": "",
"keywords": "IAPWS-IF97,IF97",
"author": "Cheng Maohua",
"author_email": "cmh@seu.edu.cn",
"download_url": "https://files.pythonhosted.org/packages/5d/d4/d11ed4a08bd669e3e4757878d6d8cd3d1e532a92a702590d4ff61d0e4faf/if97-1.0.3.tar.gz",
"platform": null,
"description": "# IF97\r\n\r\nThe **if97** is the Python API of the high-speed IAPWS-IF97 package in Rust. It is suitable for computation-intensive calculations, such as heat cycle calculations, simulations of non-stationary processes, real-time process monitoring and optimizations. \r\n \r\nThrough the high-speed package, the results of the IAPWS-IF97 are accurately produced at about 5-20x speed-up compared to using the `powi()` of the Rust standard library in the `for`loop directly when computing the basic equations of Region 1,2,3.\r\n\r\n**The Fast Methods**\r\n\r\n1. The multi-step method unleashes the full power of the compiler optimizations while using `powi()` with the `for` loop\r\n2. The recursive method computes the polynomial values of the base variable and its derivatives\r\n\r\nIn if97, [36 thermodynamic, transport and further properties](#properties) can be calculated. \r\n\r\nThe following 12 input pairs are implemented:\r\n\r\n```txt\r\n (p,t) (p,h) (p,s) (p,v) \r\n \r\n (p,x) (t,x) (h,x) (s,x) \r\n\r\n (t,h) (t,s) (t,v) \r\n\r\n (h,s)\r\n```\r\n\r\n## The functions \r\n\r\nThe type of functions are provided in the if97 package:\r\n\r\n```python \r\n ??(in1,in2,o_id)\r\n```\r\n* the first,second input parameters : the input propertry pairs\r\n* the third input parametes: the property ID of the calculated property - [o_id](#properties)\r\n* the return: the calculated property value of o_id\r\n\r\n```python\r\npt(p,t,o_id)\r\nph(p,h,o_id)\r\nps(p,s,o_id)\r\npv(p,v,o_id)\r\n\r\nth(t,h,o_id)\r\nts(t,s,o_id)\r\ntv(t,v,o_id)\r\n\r\nhs(h,s,o_id)\r\n\r\npx(p,x,o_id)\r\ntx(p,x,o_id)\r\nhx(h,x,o_id)\r\nsx(s,x,o_id)\r\n```\r\n\r\n## Examples\r\n\r\n```python\r\nfrom if97 import *\r\n\r\nOH=4\r\nOS=5\r\n\r\np=16.0\r\nt=535.1\r\nh=pt(p,t,OH)\r\ns=pt(p,t,OS)\r\nprint(f\"p={p}, t={t} h={h:.3f} s={s:.3f}\")\r\n```\r\n \r\n## Properties\r\n\r\n| Propertry | Unit | Symbol | o_id | o_id(i32)|\r\n| ------------------------------------- | :---------: |:------:|------:|:--------:|\r\n| Pressure | MPa | p | OP | 0 |\r\n| Temperature | \u00b0C | t | OT | 1 |\r\n| Density | kg/m\u00b3 | \u03c1 | OD | 2 |\r\n| Specific Volume | m\u00b3/kg | v | OV | 3 |\r\n| Specific enthalpy | kJ/kg | h | OH | 4 |\r\n| Specific entropy | kJ/(kg\u00b7K) | s | OS | 5 |\r\n| Specific exergy | kJ/kg | e | OE | 6 |\r\n| Specific internal energy | kJ/kg | u | OU | 7 |\r\n| Specific isobaric heat capacity | kJ/(kg\u00b7K) | cp | OCP | 8 |\r\n| Specific isochoric heat capacity | kJ/(kg\u00b7K) | cv | OCV | 9 |\r\n| Speed of sound | m/s | w | OW | 10 |\r\n| Isentropic exponent | | k | OKS | 11 |\r\n| Specific Helmholtz free energy | kJ/kg | f | OF | 12 |\r\n| Specific Gibbs free energy | kJ/kg | g | OG | 13 |\r\n| Compressibility factor | | z | OZ | 14 |\r\n| Steam quality | | x | OX | 15 |\r\n| Region | | r | OR | 16 |\r\n| Isobari cubic expansion coefficient | 1/K | \u0251v | OEC | 17 |\r\n| Isothermal compressibility | 1/MPa | kT | OKT | 18 |\r\n| Partial derivative (\u2202V/\u2202T)p | m\u00b3/(kg\u00b7K) |(\u2202V/\u2202T)p| ODVDT | 19 |\r\n| Partial derivative (\u2202V/\u2202p)T | m\u00b3/(kg\u00b7MPa) |(\u2202v/\u2202p)t| ODVDP | 20 |\r\n| Partial derivative (\u2202P/\u2202T)v | MPa/K |(\u2202p/\u2202t)v| ODPDT | 21 |\r\n| Isothermal throttling coefficient | kJ/(kg\u00b7MPa) | \u03b4t | OIJTC | 22 |\r\n| Joule-Thomson coefficient | K/MPa | \u03bc | OJTC | 23 |\r\n| Dynamic viscosity | Pa\u00b7s | \u03b7 | ODV | 24 |\r\n| Kinematic viscosity | m\u00b2/s | \u03bd | OKV | 25 |\r\n| Thermal conductivity | W/(m.K) | \u03bb | OTC | 26 |\r\n| Thermal diffusivity | m\u00b2/s | a | OTD | 27 |\r\n| Prandtl number | | Pr | OPR | 28 |\r\n| Surface tension | N/m | \u03c3 | OST | 29 |\r\n| Static Dielectric Constant | | \u03b5 | OSDC | 30 |\r\n| Isochoric pressure coefficient | 1/K | \u03b2 | OPC | 31 |\r\n| Isothermal stress coefficient | kg/m\u00b3 | \u03b2p | OBETAP| 32 |\r\n| Fugacity coefficient | | fi | OFI | 33 |\r\n| Fugacity | MPa | f* | OFU | 34 |\r\n| Relative pressure coefficient | 1/K | \u03b1p | OAFLAP| 35|\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "The Python API of the high-speed IAPWS-IF97 package in Rust",
"version": "1.0.3",
"project_urls": {
"Homepage": "https://github.com/thermalogic/IF97"
},
"split_keywords": [
"iapws-if97",
"if97"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5dd4d11ed4a08bd669e3e4757878d6d8cd3d1e532a92a702590d4ff61d0e4faf",
"md5": "c598d05ebd78a49d25dbd241b834b523",
"sha256": "fd44b10e3bd5f8c76eaa32e866491edd8a6febb811e013e6de08fe8fe21a57a6"
},
"downloads": -1,
"filename": "if97-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "c598d05ebd78a49d25dbd241b834b523",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 77113,
"upload_time": "2023-08-10T18:05:02",
"upload_time_iso_8601": "2023-08-10T18:05:02.045666Z",
"url": "https://files.pythonhosted.org/packages/5d/d4/d11ed4a08bd669e3e4757878d6d8cd3d1e532a92a702590d4ff61d0e4faf/if97-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-10 18:05:02",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "thermalogic",
"github_project": "IF97",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "if97"
}