The C implementation of the high-speed IAPWS-IF97 package: SEUIF97
Authors/Creators
Description
SEUIF97
This is the C implementation of the high-speed IAPWS-IF97 package seuif97. 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 library, the results of the IAPWS-IF97 are accurately produced several times faster than repeated squaring method and math.pow() of the C standard library.
In addition to the source code, the repository provides the compiled shared libraries using GCC and the interfaces to multiple programming languages.
-
The shared libraries
-
Windows(x86/64):
libseuif97.dll -
Linux(x64):
libseuif97.so
-
-
The API for the programming languages
- Python, C/C++, Excel VBA, C#, Java,MATLAB,Fortran, Rust, Modelica, Pascal
Publications
-
王培红,贾俊颖,程懋华. 水和水蒸汽热力性质IAPWS-IF97公式的通用计算模型[J]. 动力工程,2001,21(6):1564-1567 [ pdf ]
-
芮嘉敏,孙振业,程懋华. 基于最短加法链状态空间树的IAPWS-IF97快速计算方法[J]. 汽轮机技术,2017,59(4):245-247 [ pdf ]
Functions of the SEUIF97 Shared Library
Functions of water and steam propertiesand the thermodynamic process of steam turbine are provided in SEUIF97
Water and Steam Properties
Using SEUIF97, you can set the state of steam using various pairs of know properties to get any output properties you wish to know, including in the 30 properties in libseuif97.
The following 12 input pairs are implemented:
(p,t) (p,h) (p,s) (p,v)
(t,h) (t,s) (t,v)
(p,x) (t,x) (h,x) (s,x)
(h,s)
Thermodynamic Process of Steam Turbine
-
1 Isentropic Enthalpy Drop:seuishd(pi,ti,pe)
pi - double, inlet pressure(MPa); ti - double, inlet temperature(°C) pe - double, outlet pressure(MPa) -
2 Isentropic Efficiency(0~100): seuief(pi,ti,pe,te) (superheated steam zone)
pi - double, inlet pressure(MPa); ti - double, inlet temperature(°C) pe - double, outlet pressure(MPa); te - double, outlet temperature(°C)
The API
-
C/C++: seuif97.h
-
Python: seuif97.py
-
Excel VBA: seuif97.bas
-
C#: seuif97.cs
-
Java: seuif97.java
-
MATLAB: seuif97.m
-
Rust: seuif97.rs
-
Fortran: seuif97.f08
-
Modelica: seuif97.mo
-
Pascal: seuif97.pas
Install SEUIF97
Use the shared library from one programming language, you may
-
Put the shared library in the default
Libpath of OS or the programming language-
Windows(x86/64)
- copy
libseuif97.dllin the Windows/x86 or Windows/x64 folder to a default path of Windows32/64's DLL:C:\Windows\System
- copy
-
Linux(x64)
- copy
libseuif97.soin the Linux/x64 folder to a default path of Linux shared lib :/usr/lib/
- copy
-
-
Add the API file of the programming language to its
APIpath- The API paths of different programming languages are different,please refer to the Examples of different programming languages
Examples
The examples using the shared library
The Function Prototypes in C
If you need to modify the APIs provided in the repository or program your own APIs, you can refer to the library's header file: seuif97.h.
// Functions of Properties
double seupt(double p, double t, int propertyID);
double seuph(double p, double h, int propertyID);
double seups(double p, double s, int propertyID);
double seupv(double p, double v, int propertyID);
double seuth(double t, double h, int propertyID);
double seuts(double t, double s, int propertyID);
double seutv(double t, double v, int propertyID);
double seuhs(double h, double s, int propertyID);
double seupx(double p, double x, int propertyID);
double seutx(double t, double x, int propertyID);
double seuhx(double h, double x, int propertyID);
double seusx(double s, double x, int propertyID);
//The Functions for Thermodynamic Process of Steam Turbine
double seuishd(double pi, double ti, double pe);
double seuief(double pi, double ti, double pe, double te);
Properties
| Propertry | Unit | Symbol | propertryID |
|---|---|---|---|
| Pressure | MPa | p | 0 |
| Temperature | °C | t | 1 |
| Density | kg/m^3 | ρ | 2 |
| Specific Volume | m^3/kg | v | 3 |
| Specific enthalpy | kJ/kg | h | 4 |
| Specific entropy | kJ/(kg·K) | s | 5 |
| Specific exergy | kJ/kg | e | 6 |
| Specific internal energy | kJ/kg | u | 7 |
| Specific isobaric heat capacity | kJ/(kg·K) | cp | 8 |
| Specific isochoric heat capacity | kJ/(kg·K) | cv | 9 |
| Speed of sound | m/s | w | 10 |
| Isentropic exponent | k | 11 | |
| Specific Helmholtz free energy | kJ/kg | f | 12 |
| Specific Gibbs free energy | kJ/kg | g | 13 |
| Compressibility factor | z | 14 | |
| Steam quality | x | 15 | |
| Region | r | 16 | |
| Isobaric cubic expansion coefficient | 1/K | ɑv | 17 |
| Isothermal compressibility | 1/MPa | kT | 18 |
| Partial derivative (∂V/∂T)p | m3/(kg·K) | (∂V/∂T)p | 19 |
| Partial derivative (∂V/∂P)T | m3/(kg·MPa) | (∂V/∂P)T | 20 |
| Partial derivative (∂p/∂t)v | MPa/K | (∂p/∂t)v | 21 |
| Isothermal throttling coefficient | kJ/(kg·MPa) | δt | 22 |
| Joule-Thomson coefficient | K/MPa | μ | 23 |
| Dynamic viscosity | kg/(m·s) | η | 24 |
| Kinematic viscosity | m^2/s | ν | 25 |
| Thermal conductivity | W/(m.K) | λ | 26 |
| Thermal diffusivity | um^2/s | a | 27 |
| Prandtl number | Pr | 28 | |
| Surface tension | mN/m | σ | 29 |
Files
thermalogic/SEUIF97-1.2.0.zip
Files
(3.0 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:f84898a124bc03a0f74ac896d48f5074
|
3.0 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/thermalogic/SEUIF97/tree/1.2.0 (URL)