History
0.6.6.post4 (2026-05-21), P.Dreis
Optimization documentation added and changed
Utilities.rst added to toctree
Largely resolved sphinx doc build warnings
get_cost_instance moved from init file to utils cost_calculations
0.6.6.post3 (2026-04-21), P.Dreis
Deleted tox.ini and travis.yaml (They were using setup.py and seemed outdated. Everything can be replaced by .gitlab-ci.yaml)
Cleaned up __init__.py files from obsolete comments
Changed expander Liege add-on path
0.6.6.post2 (2026-04-01), P.Dreis
Deleted psutil imports from the optimization scripts and added it to the helpers
Added tests for pymoo DE and NSGA2 optimization
Deleted pyfluids import (was used by SPP compressor in prior versions)
Added psutil and pymoo to the pyproject.toml
0.6.6.post1 (2026-03-24), P.Dreis
Deleted one optimization script, which was only used for the masters thesis
Added docstrings to optimization functions and classes
Added type annotations
0.6.6 (2026-03-23), A.Welp
feat: correlations for zeotropic fluid condensation (pressure loss and heat transfer)
feat: new structure for correlations, extendable
feat: new geometry (monoblock) for heat exchanger available
fix: removed not-maintained and not used HeatExchanger functionalities
test: edited class_he tests
0.6.5 (2026-03-03), A.Welp
feat: implement custom fluid additionally to REFPROP and TREND
example: jupyter notebook with examples for custom fluid
0.6.4 (2026-03-02), A.Welp
feat: liquid/vapour phase composition calculation now implemented via TREND
fix: TREND now returns Q_mass, until now the value was erroneous for zeotropic mixtures
test: added test case for liq_x, vap_v, q_mass for TREND
0.6.3 (2026-03-02), P.Dreis
feat: added optimization scripts (author: P. Dreis) for carnot battery optimizations with NSGA2 (multi-objective) and with differential evolution (opti_de, single objective). All in the new ‘optimizations’ folder.
0.6.2 (2026-02-05)
feat: internal users can install three optional machine-model add-ons * bundle:
poetry install --with machines* selective: e.g.poetry install --with processmapsdocs: clarify that machine-model repos are private; wheels are provided internally as fallback
chore: harmonise Python version support to
>=3.10,<3.14chore: (if true) update CoolProp constraint to allow v7
refactor: faster fluid-property calls in machine models (batched calls / cb_fluid support)
0.6.1.post1 (2026-01-26)
feat: Added expander Liege (LaboThapPy) and process maps (from UDE and TU Dortmund)
docs: add citation / third-party notices for process maps and Liege model.
feat: Added tests for the machine models
refactor: flowmachine class from comp.py in flowmachine_comp.py
0.6.1 (2026-01-19), Dreis
Be careful: comp.py fluid parameters actually work only with Refprop,
TODO: io_utils and yaml file must be changed for accepting and using TREND parameters!
Creates a fluid register which is searched before initializing a new fluid
Fixed issue with main comp.py
Added expander Morandin for CAPEX excel sheet from the same publication as the other morandin correlations
0.6.0 (2026-01-19), Welp
BREAKING: old TREND dictionary not accepted anymore due to ambiguous fluid and comp usage
feat: TREND now callable via init_fluid
refactor: DEFAULT structure in fluid_props
test: added test for fluid_props and TREND
chore: added TREND to Jupyter notebook
0.5.7 (2026-01-16)
feat: added option of using REFPROPFunctionLibrary
test: added test for fluid_props incl. REFPROPFunctionLibrary
chore: added example Jupyter notebook
0.5.6.post4 (2026-01-12)
fix: Expander boolean was not correct
0.5.6.post3 (2026-01-09)
fix: slight change in comp needed to run without spp_machines
0.5.6.post2 (2026-01-09)
doc: improved documentation with respect to optional features
refactor: removed all folders with code on turbo machines, also in the history (e.g.0.6.0.devXX) Removed machine model components due to licensing; optional external package spp-machines supported.
refactor: new folder optional with spp_machines. If installed they can be used as before.
refactor: Mass flow in comp.py of the RadialCompressor is now from the Design Tool
refactor: Deleted coupled/work_in_progress
refactor: Deleted optimization in heat_pump_comp as preparation for integration of pymoo optimizations
feat: Added verbose parameter to the components on heat_pump_comp.py and orc_comp.py.
feat: Added verbose as a parameter to all_costs function in orc_comp.py and Start.calculate
refactor: Iteration for the compressor now uses power from config for convergence
fix: removed toml import from conf.py for readTheDocs (it failed)
fix: added further deepcopy to isolate states and warnings
fix: start-subcooling was not checked properly, corrected now.
CI/refactor: removed poetry lock from CI
feat: Machine models from S.Folkers/Prof. D.Brillert (Univ. Duisburg-Essen) included.
refactor: removed pressure check for throttle
fix: in cb_comp, the copying is changed to deepcopy, because the results were influenced by the run before. The same for hp_comp and orc_comp.
0.5.5 (2026-01-04)
fix: in cb_comp, the copying is changed to deepcopy, because the results were influenced by the run before. The same for hp_comp and orc_comp.
0.5.4.post2 (2026-01-02)
fix: key error for orc and heat_pump pressure ratios corrected.
0.5.4.post1 (2025-12-27)
fix: throttle pressures were not checked correctly, added some print-outs
feature: orc and heat_pump pressure ratios are checked and a warning is added if wrong.
0.5.4 (2025-11-29)
refactor: direct power input to heat_pump (comp) function removed; this is read in via the input dictionary
refactor: unified cost calculation and results output (for costst) for heat_pump and ORC.
0.5.3.post4 (2025-11-27)
fix: TREND viscosity units corrected
0.5.3.post3 (2025-11-18)
fix: costs for turbine were calculated with negative power
fix: Output value in heat exchanger, when crossing corrected
fix: expander output for orc_comp was not stored
0.5.3.post2 (2025-10-14)
feat: costs are also calculated in orc_comp; but the turbine cost function in the yaml file is not correct, it is one for compressors..
0.5.3.post1 (2025-10-14)
fix: several function calls for the heat_pump_comp and orc_comp corrected.
0.5.3 (2025-08-19)
refactor: BREAKING for comp.output the ‘m_dot’ was either a float (FlowDevice, Start) or a dictionary (heat exchanger), now it is always a dictionary with the fluid name as key.
feat: function entropy_production calculates the entropy production rate and the exergy destruction rate of each component. At the moment it is called at the end of calculate() and writes the results to the self.output dictionary.
0.5.2 (2025-08-16)
feat: investment cost estimations for heat exchanger, throttle, pump, and compressor/expander included for comp (estimate_costs()) using the Towler approach (a + b*x**c).
feat: Storage volumes and cost estimations are included (calculate_volume()). The storage time (time) must be fixed and can be prescribed via the configuration yaml file (process/time). Alternatively the thermal energy can be fixed. For the costs only one fixed tank geometry is implemented. It can be varied using cost_name as an argument.
feat: An Excel file with the cost parameters is included are used for the instance cost_inst of CAP_methods() which can be used globally. So the Excel file is only read once, when the package is loaded.
doc: The usage of the cost estimations and the volume calculations is seen at the end of the comp.py script. Further documentation will follow.
0.5.1.post3 and post4 (2025-08-13)
fix: the correction of orc-start points was wrong.
feature: heat pumpump optimization results are all stored in a directory. The name begins with datetime.
0.5.1.post1 and post2 (2025-08-12)
feature: added shgo (from scipy.optimize) to the methods for cycle optimization. Does not work too well.
0.5.1 (2025-08-12)
refactored: cycle outputs are dictionaries now (not lists)
0.5.0 (2025-08-11)
doc: added some documentation. As starting point check cb_comp.
feat: the carnot battery optimization results are stored in a specified directory with date-time at the beginning. src/carbatpy/examples/opti_cb_comp.py
feat: added a script for reading the CB-optimization results from added directory. src/carbatpy/utils/read_cb_opti.py
0.5.0.dev0 (2025-08-07)
feature: Optimization for orc, heat pump and carnot battery included. They are found in the folder ‘examples’(e.g.:src/carbatpy/examples/opti_hp_comp.py).
0.4.2 (2025-08-01)
feature: example scripts for orc and heat pump cycles in folder modelscoupledwork_in_progress, which use the component implementation in comp.py and which can be the basis for pressure and composition optimizations. (names ending on _comp) The configuration, meaning most fixed values, fluids, components etc., are defined in a yaml file.
0.4.2.pre1 (2025-07-30)
feature: new comp script for components with unified class for all components. Includes two scripts for orc (unfinished) and heat pump using comp.
0.4.1.post2 (2025-07-15, corrected)
fix: corrected orc-script due to changed return values of the pump
0.4.1.post2 (2025-07-15)
feature, Trend: a dictionary entry for TREND named ‘TREND_SUB_PATH’ included. if it is not None, this sub-path defining a specific species model will be appended to the base path.
refactor: renamed models/fluids to models/cb_fluids to avoid problems with the namespace of the package ht
0.4.1.post1 (2025-04-07)
fix, Trend: set_moles needs to be called each time before ALLPROPS or TREND_EOS is used. (A.Welp)
0.4.1 (2025-03-26)
fix: TREND conversion from mole fractions to mass fractions was inconsistent when called more than once.
TREND: (nearly) all properties of the dictionary are now passed to TREND, including the path with subdirectory.
0.4.0 (2025-03-14)
TREND transport properties included, the default model for mixtures is ECS
in CB_DEFAULTS: TRANS_TREND_MIX is set, but other models can be set by hand
0.3.12 (2025-03-14)
Feature: BREAKING TREND 6_beta implemented, will not work with TREND5
0.3.11 (2025-01-24)
Feature: specific exergy destruction calculated also for throttle, compressor etv. written in the output dictionary.
Feature: For the heat pump cycle device specific exergy losses are evaluated and written into the evaluation dictionary (.evaluation[‘exergy_destruct_device’])
In the heat pump calculations the temperature of the lowest storage is sometimes changed, to meet the other constraints (this was already before). Now a warning is written into .warning, this can be checked by the user.
The heat pump optimization script “carbatpysrccarbatpyutilsopt_hp_px_dtsh_test.py” was updated to show the updates.
0.3.8.post5 (2025-01-03):
Fix: th evaporator output state of the simple heat pump was set wrongly
0.3.8 (2024-08-19):
Feature: New class Surrogate for surrogate model calls with scikit-learn
Feature: heat transfer coefficients calculated using ht
Feature: heat_exchanger class can calculate heat exchangers e.g. with the NTU method and by solving the ODE.
Feature: ((helpers create parameter set with SALib and call model incl. multiprocessing)
0.3.7b1 (2024-07-30)
Feature: set_state can return an instance of FluidState, when setting the option output=”FluidState”. The default return value is the state (a list with values).
0.3.7b ( 2024-07-29)
Doc: New examples folder with notebooks and example script(s).
Doc: Some examples are copied to docs/examples, because redthedocs did not show them otherwise.
0.3.7a (2024-07-29)
Feature: Added Pr again to the Transport properties (only implemented for Refprop at the moment)
Refactor: If a fluid property is not implemented (as conductivity for a two phase fluid) a NotImplemetedError is thrown.
0.3.6a (2024-07-28)
fixing installation problems on other computers.
Fixing: json and yaml files in data are now included in the distribution.
Removing non-general file names.
0.3.4a-c (2024-07-28)
A class for getting and storing all variables of a class as json or yaml imlpemented.
Heat Pump Class restructured. Can be run with all inputs from a file.
Script for optimization of working fluid composition and pressures included.
fix,refactor: evaluated fluid properties refactored, depends on values in cb_config.pyoptimization
optimization of heat pump refactored
heat pump tests rewritten
CARBATPY_DIR must no longer be set (but you can use it for customization)
0.3.3 (2024-07-22)
Feature: if q is given for set_state of Fluid, the full REFPROPdll is used automatically, so that q is ALLWAYS in (kg/kg):
import carbatpy as cb
FLUID = "Propane * Pentane"
comp = [.5, .5]
myFluid = cb.init_fluid(FLUID, comp)
quality = 0.5 # is interpreted by carbatpy as mol/mol to calculate state
# but given back in string as kg/kg
st0 = myFluid.set_state([300., quality], "TQ")
myFluid.print_state()
print (myFluid.val_dict)
0.3.2 (2024-07-21)
feature: the molar composition of both phases (x/y/z) can be calulated and stored with REFPROP. Example:
import carbatpy as cb
FLUID = "Propane * Pentane"
comp = [.5, .5]
myFluid = cb.init_fluid(FLUID, comp)
quality = 0.5 # is interpreted by carbatpy as mol/mol to calculate state
# but given back in string as kg/kg
st0 = myFluid.set_state([300., quality], "TQ", dll_select="dll")
myFluid.print_state()
print (myFluid.val_dict)
feature: new attribute var_dict for Fluid with the dictionary of all calculated properties.
0.3.1 (2024-07-19)
Feature: with refprop the input mixtures can also be set in mass frections, setting the Flag iMass = 1.
0.3.0 (2024-07-18)
Refactor: New Class FlowDevice replaces compressor, throttle and pump
0.2.0 (2024-07-11)
TREND included for thermodynamic property evaluations (licence & copy needed!)
Installation now with poetry
- A simple Carnot battery with two double-tank storages can be calculated
without property/mixture optimization
0.1.1 (2024-02-04)
ORC and HP is working
Fluid screening included for mixtures
everything only with REFPROP (licence & copy needed!)
0.1.0 (2023-10-14)
we started.