1. Overview

Thermosteam is an extensive object oriented package for the estimation of thermodynamic equilibrium, mixture properties, and mass and energy balances. The Stream object is the main interface for performing these calculations. Before creating streams, a thermodynamic property package must be defined through a Thermo object, which compiles the working chemicals, mixing rules, and the equlibrium estimation methods. Each Chemical object contains model handles that manages the thermodynamic models and makes sure to use a valid model at given temperatures and pressures whenever estimating properties. The functional algorithms for estimating pure component properties are presented as functors which implicitly store and use fitted coefficients for the estimation of temperature and pressure dependent properties.

_images/class_diagram.png

A functor-oriented class diagram describes the relationship between the core classes of Thermosteam. Overall, the diagram follows the Universal Modeling Language (UML) guidelines except for a few modifications. In particular, the function signature of callable objects is presented after their name. For example: an ActivityCoefficients object returns an array of activity coefficients when called with the liquid molar composition (x) and temperature (T); and a TPFunctor object returns the value of a chemical property when called with the temperature (T), and pressure (P). This is in contrast to traditional UML class diagrams where the name of parent class should come after the class name (e.g. TPFunctor(Functor) instead of TPFunctor(T, P)). Similar to UML class diagrams, however, the italized classes are abstract, meaning that child classes must implement the abstract attributes and methods (italized as well) to become functional. Function signatures with a “…” are abstract signatures so that a child class may implement a variety of signatures.