Components evaluation (new)
The new (2025) basic approach to calculate heat exchangers, compressores (and expanders) as well as throttles, with a unified syntax.
Components
Heat exchangers, flow devices (compressors, expanders and pumps), throttles and start, the latter is the fixed initial point of a heat pump or an organic Rankine cycle, are implemented. For simple heat exchangers, only thermodynamic balances are calculated (no UA), and by varying the mass flow rate and one state-point (temperature), a minimum approach temperature is satisfied, but only if the given restrictions allow it.
A jupyter-notebook (there may be installation errors shown, if Refprop and Trend are not installed):
Configuration File
A yaml file is used to control the actual configuration of the different components, fluids and structure. Generally, all fixed parameters are taken from this file. As an example check src/carbatpy/data/io-hp-data.yaml. The content will be read as a dictionary and is available from each component as comp.config. Along the optimization parts of the values, e.g. the mole fractions of the working fluid can be overwritten.
Start
The starting point will be selected differently, whether a heat pump or an ORC is analyzed. For the heat pump typically a superheating is given, the mixture composition and the minimum temperature difference to the cold storage. Then, there is no further degree of freedom: the low working fluid pressure cannot be selected.
Storage Volumes
The volumes of the storages are calculated assuming that two tanks are coupled to each heat exchanger. The storage time is either fixed via the yaml script (-process -time) or can be passed explicizly via a dictionary. Alternatively, the stored thermal energy can be given/fixed in the dictionary. If both are given (E and t), time is used. The correlation for the tank cost calculations can be chosen using the keyword cost_name, ‘cone roof’ or ‘fixed roof storage tank Morandin’ should work.
Costs
A cost evaluation using the Towler method is implemented (based on a script by Mina Anton and Majid Zarif from 2024). The method is just \(cost = A + B \cdot X^C\). The costs are evaluated for each component. The storages are actually coupled to the heat exchangers and are calculated by the way, when storage volumes are calculated. Actually, costs are calculated for throttles, compressors, turbines, pumps, and heat exchangers. For parts where no data are available, costs of 0 will be returned. If there are limits in the cost correlation (minimum/maximum capacity), this will be checked. A warning is returned when the value is outside the range, but extrapolated values are returned; one should be careful with this! The cost correlations are mainly old, the CEPCI data are used to estimate the prices for a given year (until 2024). The implementation is not flexible, may be changed in near future.
Exergy destruction
The entropy production and exergy destruction is calculated as default every time calculate() is called for a given component. The results are in the output dictionary.
Entry point
You may check the final part (__name__ ==’__main__’) of the comp.py script in modelscomponents and the three scripts in modelscoupled with ‘comp’ in the script names. There most functions are used. Another example for a heat pump is used here: src/carbatpy/examples/comp_example_heat_pump.py
BA 2025-07-29