Skip to content

thermalogic/SEUIF97

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SEUIF97

DOI

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.

The Fast Methods

  • the shortest addition chain algorithm computes the integer power of a number quickly
  • apply Horner's rule to compute a set of powers and avoid calculate the power of the same exponential once again
  • the recursive method computes the value of multiple polynomials to avoid calculate the same item once again

In addition to the source code, the repository provides

  • the compiled shared libraries using GCC: /shared_lib/

  • the interfaces and examples of multiple programming languages: /demo/

    • C/C++, Python, C#, Java, Excel VBA, MATLAB, Rust, Fortran, Pascal, Modelica

Building the shared library

  • make
make
  • cmake
cmake -B ./build/   
cmake --build ./build/ --config Release

The compiled shared libraries using GCC

Functions of the SEUIF97 Shared Library

Functions of water and steam propertiesand the thermodynamic process of steam turbine are provided in the SEUIF97

Water and Steam Properties

Using the 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)  

The type of propertry functions are provided in the package

  ??(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
  • the return: the calculated property value of o_id

Thermodynamic Process of Steam Turbine

  • Isentropic Enthalpy Drop:ishd(pi,ti,pe)

      pi - inlet pressure(MPa); ti -inlet temperature(°C)
      pe - outlet pressure(MPa)
  • Isentropic Efficiency(0~100): ief(pi,ti,pe,te) (superheated steam zone)

        pi - inlet pressure(MPa);  ti - inlet temperature(°C)
        pe - outlet pressure(MPa); te - outlet temperature(°C)

The Function Prototype in C

// Functions of Properties
double pt(double p, double t, int o_id);
double ph(double p, double h, int o_id);
double ps(double p, double s, int o_id);
double pv(double p, double v, int o_id);

double th(double t, double h, int o_id);
double ts(double t, double s, int o_id);
double tv(double t, double v,  int o_id);

double hs(double h, double s,  int o_id);

double px(double p, double x,  int o_id);
double tx(double t, double x,  int o_id);
double hx(double h, double x,  int o_id);
double sx(double s, double x,  int o_id);

//The Functions for Thermodynamic Process of Steam Turbine
double ishd(double pi, double ti, double pe);
double ief(double pi, double ti, double pe, double te);

Install SEUIF97

Use the shared library from one programming language, you may

  1. Put the shared library in the default Lib path of OS or the programming language

    • Windows(x86/64)

      • copy libseuif97.dll in the Windows/x86 or Windows/x64 folder to a default path of Windows32/64's DLL: C:\Windows\System
    • Linux(x64)

      • copy libseuif97.so in the Linux/x64 folder to a default path of Linux shared lib : /usr/lib/
  2. Add the API file of the programming language to its API path

    • The API paths of different programming languages are different,please refer to the Examples of different programming languages

Interfaces and Examples

Language Interface
C/C++ seuif97.h
Python seuif97.py
C# seuif97.cs
Excel VBA seuif97.bas
Java seuif97.java
MATLAB64 seuif97.m
Rust seuif97.rs
Fortran seuif97.f08
Pascal seuif97.pas
Modelica seuif97.mo

You can modify these interfaces provided in the repository to your own APIs.

The Selected Examples

Python

C++

Properties

Propertry Unit Symbol o_id
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

Publications

  • 王培红,贾俊颖,程懋华. 水和水蒸汽热力性质IAPWS-IF97公式的通用计算模型[J]. 动力工程,2001,21(6):1564-1567 [ pdf ]

  • 芮嘉敏,孙振业,程懋华. 基于最短加法链状态空间树的IAPWS-IF97快速计算方法[J]. 汽轮机技术,2017,59(4):245-247 [ pdf ]

Cite as