Online course and simulator for engineering thermodynamics

Class structure for heat exchanger off-design calculations


Volumes 3 and 4 of the Thermoptim reference manual present the main lines of the extension mechanism of the software package in the form of so-called external Java classes, the last volume focusing more particularly on control and calculations in off-design conditions.

The overall structure is explained in section 3.2.2 of Volume 4. As noted, the instantiation of these external classes is done through a driver, which can be generic or specific.

Guided exploration (DTNN-1) explains how to set up a simple heat exchanger. It deals with the calculation of the surface of an air-water tube and fin heat exchanger. It is recommended to start by referring to it before going further.

Calculation process

The general principle of the calculations is as follows:

  • in sizing mode, once the geometric parameters have been set and the operating conditions of the device have been chosen, a calculation makes it possible to determine the total surface of the exchanger and its possible distribution between different zones if it is a steam generator or a condenser. For example, for a SG, these are the zones corresponding to the economizer, vaporizer and superheater

  • in off-design mode, the inlet conditions being known, the driver seeks a solution such that the total area is the same as that determined during the sizing, but the internal distribution of the surfaces can generally be different. The outlet conditions of the hot and cold fluids are then recalculated.

Organization of calculations

The class used to calculate a single heat exchanger in off-design mode is of the TechnoDesign type, and more particularly TechnoHx, a generic class for heat exchangers.

Each of the two fluids it couples is represented by a TechnoExch class, and each of these defines a flow configuration defined in a FlowConfig class.

The figure below shows a simplified UML class diagram for TechnoSteamGenerator. It illustrates the links between the different classes that are used for calculations.

At the top left appears the TechnoHx. The two classes below are TechnoEvaporator, intended to calculate evaporators, but without taking into account pressure drops, and TechnoSteamGenerator, presented later in this page, which performs the calculations more accurately.

UML class diagram for TechnoSteamGenerator

To the right of TechnoHx is the TechnoExch class. Each TechnoHx instantiates two, one for the hot fluid and the other for the cold fluid. As noted above, each of these defines a flow configuration defined in a Flowconfig class.

In the TechnoExch class we specify the geometric characteristics relating to each fluid, such as the fluid flow area, the hydraulic diameter...

In the FlowConfig the correlations for heat exchange coefficients and pressure drops are specified.

In this class diagram, the FlowConfig associated with the TechnoSteamGenerator class is called TechnoSteamGeneratorConfig. Others are depicted in the figure.

About fifteen FlowConfig classes are available. They are presented in this page of the portal. You can create others simply according to your needs.

Depending on the case, the calculations are carried out directly in the TechnoHx, in the TechnoExch or in the FlowConfig. You have to refer to the code of each class to see how they are chained.

As we recalled above, it is necessary to use a driver to instantiate a TechnoHx and the classes related to it. It may be a generic driver as explained in Guided Exploration (DTNN-1), but it is usually preferable to create a specific driver, of the type shown in the examples relating to the off-design operation of a steam plant or refrigerator.

Example of the TechnoSteamGenerator class

The TechnoEvaporator class is specific to evaporators designed as two- or three-zone exchangers calculated globally.

It makes it possible to calculate the triple exchanger by distinguishing the zones corresponding to the economizer, the vaporizer and the superheater, but has a number of limitations. Although it allows pressure drop to be calculated, it assumes that the pressure is uniform in each of the fluids. It also does not allow to take into account a possible nucleate boiling in the economizer part.

The TechnoSteamGenerator class was developed to address these limitations.

To do this, it implements:

  • a specific calculation of pressure drops that makes it possible to modify the pressures inside the steam generator, the calculations of the Nüsselt number being carried out in the usual way, via the FlowConfig

  • a generic method taking into account nucleate boiling.

The figure below shows the screen of the TechnoSteamGenerator class with a setting adapted to the PWR reactor driver proposed in this portal.

TechnoSteamGenerator screen

At the top appear the choice of correlations (here Saitoh & al. for the exchange coefficient and Sun and Mishima for the pressure drops), as well as the calculation results.

The number of iterations appearing at the top of the screen is a parameter that allows to refine the accuracy of the nucleate boiling calculations, at the cost of the execution time all the greater the higher it is.

In the central and lower part are located the two screens of the TechnoExch, "primary circuit" for hot fluid and "SG" for cold fluid. The two associated FlowConfig are identified by the names of their correlations, "sp_plate | Single phase... " and "Boiling| TechnoSteam... ». Correlation parameters can be viewed and changed.

TechnoSteamGenerator Class presentation note


If you would like additional information, please send an email to

The implementation that has been made of the various correlations of the TechnoSteamGenerator class corresponds to turbulent flow regimes. If you want to study laminar flows, they will need to be completed appropriately.

Since some correlations use surface tension (Friedel, Zhang, Saitoh, Kim & Mudawar, Forster & Zuber), Thermoptim's core condensable vapors have been modified to allow this calculation. If you use some external substances, you will have to complete them either directly by adding the corresponding methods to them, or by modifying the TechnoExch class by incorporating the appropriate methods, coupled with the initLambdaMu() method of the latter.

Also pay attention to the fact that the backups and restores of the parameters are partly from the TechnoHx, and partly from the driver.

copyright R. Gicquel v2022.2

Created with Scenari (new window)