tespy 0.8.0.post4__tar.gz → 0.8.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. {tespy-0.8.0.post4 → tespy-0.8.2}/PKG-INFO +1 -1
  2. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/components.rst +16 -8
  3. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/components.rst +43 -35
  4. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/connections.rst +1 -1
  5. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/networks.rst +21 -5
  6. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-8-0-001.rst +1 -1
  7. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-8-0.rst +1 -0
  8. tespy-0.8.2/docs/whats_new/v0-8-1.rst +31 -0
  9. tespy-0.8.2/docs/whats_new/v0-8-2.rst +50 -0
  10. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new.rst +2 -0
  11. {tespy-0.8.0.post4 → tespy-0.8.2}/pyproject.toml +1 -1
  12. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/__init__.py +10 -1
  13. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/base.py +17 -15
  14. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/diabatic.py +1 -1
  15. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/engine.py +1 -1
  16. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/component.py +5 -0
  17. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/base.py +8 -8
  18. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/condenser.py +4 -4
  19. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/movingboundary.py +7 -9
  20. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/parabolic_trough.py +2 -2
  21. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/simple.py +31 -41
  22. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/solar_collector.py +2 -2
  23. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/pipe.py +2 -2
  24. tespy-0.8.2/src/tespy/components/subsystem.py +213 -0
  25. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/compressor.py +3 -0
  26. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/pump.py +3 -0
  27. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/turbine.py +4 -0
  28. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/bus.py +6 -2
  29. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/connection.py +19 -14
  30. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/network.py +203 -121
  31. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/document_models.py +6 -0
  32. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/wrappers.py +59 -17
  33. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/global_vars.py +4 -1
  34. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/helpers.py +49 -0
  35. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_analyses/test_entropy_analysis.py +1 -1
  36. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_analyses/test_exergy_analysis.py +8 -8
  37. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_combustion.py +58 -26
  38. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_heat_exchangers.py +42 -42
  39. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_merge.py +4 -4
  40. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_piping.py +3 -3
  41. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_reactors.py +9 -9
  42. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_turbomachinery.py +26 -26
  43. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_errors.py +5 -2
  44. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_CGAM_model.py +1 -1
  45. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_heat_pump_model.py +1 -1
  46. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_binary_incompressible.py +3 -3
  47. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_bypassing.py +4 -4
  48. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_mixing_rules.py +6 -6
  49. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_network.py +66 -21
  50. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_coolprop.py +1 -1
  51. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_iapws.py +4 -4
  52. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_pyromat.py +2 -2
  53. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/gas_turbine.py +1 -1
  54. tespy-0.8.0.post4/src/tespy/components/subsystem.py +0 -87
  55. {tespy-0.8.0.post4 → tespy-0.8.2}/.editorconfig +0 -0
  56. {tespy-0.8.0.post4 → tespy-0.8.2}/.pep8speaks.yml +0 -0
  57. {tespy-0.8.0.post4 → tespy-0.8.2}/.readthedocs.yml +0 -0
  58. {tespy-0.8.0.post4 → tespy-0.8.2}/CODE_OF_CONDUCT.md +0 -0
  59. {tespy-0.8.0.post4 → tespy-0.8.2}/CONTRIBUTING.md +0 -0
  60. {tespy-0.8.0.post4 → tespy-0.8.2}/LICENSE +0 -0
  61. {tespy-0.8.0.post4 → tespy-0.8.2}/PULL_REQUEST_TEMPLATE.md +0 -0
  62. {tespy-0.8.0.post4 → tespy-0.8.2}/README.rst +0 -0
  63. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/css/custom.css +0 -0
  64. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/flowsheet.svg +0 -0
  65. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/flowsheet_darkmode.svg +0 -0
  66. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/sankey.svg +0 -0
  67. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating.svg +0 -0
  68. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_darkmode.svg +0 -0
  69. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_partload.svg +0 -0
  70. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_partload_darkmode.svg +0 -0
  71. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine.svg +0 -0
  72. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_darkmode.svg +0 -0
  73. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_fuel_composition.svg +0 -0
  74. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_fuel_composition_darkmode.svg +0 -0
  75. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_oxygen.svg +0 -0
  76. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_oxygen_darkmode.svg +0 -0
  77. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_parametric.svg +0 -0
  78. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_parametric_darkmode.svg +0 -0
  79. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump.svg +0 -0
  80. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_darkmode.svg +0 -0
  81. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_parametric.svg +0 -0
  82. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_parametric_darkmode.svg +0 -0
  83. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/modeling_concept.svg +0 -0
  84. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_cycle.svg +0 -0
  85. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_cycle_darkmode.svg +0 -0
  86. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_parametric.svg +0 -0
  87. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_parametric_darkmode.svg +0 -0
  88. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_partload.svg +0 -0
  89. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_partload_darkmode.svg +0 -0
  90. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_ts_diagram.svg +0 -0
  91. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_ts_diagram_darkmode.svg +0 -0
  92. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/GRC_flowsheet.svg +0 -0
  93. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/GRC_flowsheet_darkmode.svg +0 -0
  94. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/ORC_parametric_flowsheet.svg +0 -0
  95. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/ORC_parametric_flowsheet_darkmode.svg +0 -0
  96. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/PM_CAES_graphical-abstract.svg +0 -0
  97. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/PM_CAES_graphical-abstract_darkmode.svg +0 -0
  98. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/heatpumps.png +0 -0
  99. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/heatpumps_darkmode.png +0 -0
  100. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big.svg +0 -0
  101. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big_darkmode.svg +0 -0
  102. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big_editable_font.svg +0 -0
  103. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid.svg +0 -0
  104. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_christmas.svg +0 -0
  105. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_darkmode.svg +0 -0
  106. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_darkmode_christmas.svg +0 -0
  107. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_editable_font.svg +0 -0
  108. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mini.svg +0 -0
  109. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_small.svg +0 -0
  110. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/Ts_diagram_states.svg +0 -0
  111. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/characteristics.svg +0 -0
  112. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/characteristics_darkmode.svg +0 -0
  113. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/connections.svg +0 -0
  114. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/connections_darkmode.svg +0 -0
  115. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/fluid_properties.svg +0 -0
  116. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/fluid_properties_darkmode.svg +0 -0
  117. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/logph_diagram_states.svg +0 -0
  118. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/subsystem_waste_heat_generator.svg +0 -0
  119. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/subsystem_waste_heat_generator_darkmode.svg +0 -0
  120. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/ude.svg +0 -0
  121. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/ude_darkmode.svg +0 -0
  122. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs.svg +0 -0
  123. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_closed.svg +0 -0
  124. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_forks.svg +0 -0
  125. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_open.svg +0 -0
  126. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/NH3_logph.svg +0 -0
  127. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/NH3_sankey.svg +0 -0
  128. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_E_D.svg +0 -0
  129. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_E_D_darkmode.svg +0 -0
  130. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Q.svg +0 -0
  131. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Q_darkmode.svg +0 -0
  132. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Ths.svg +0 -0
  133. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Ths_darkmode.svg +0 -0
  134. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_eps_Tamb_Tgeo.svg +0 -0
  135. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_eps_Tamb_Tgeo_darkmode.svg +0 -0
  136. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/flowsheet.svg +0 -0
  137. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/flowsheet_darkmode.svg +0 -0
  138. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/COP_by_wf.svg +0 -0
  139. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/COP_by_wf_darkmode.svg +0 -0
  140. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/flowsheet.svg +0 -0
  141. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/flowsheet_darkmode.svg +0 -0
  142. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/logph.svg +0 -0
  143. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet.svg +0 -0
  144. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_darkmode.svg +0 -0
  145. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p1.svg +0 -0
  146. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p1_darkmode.svg +0 -0
  147. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p2.svg +0 -0
  148. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p2_darkmode.svg +0 -0
  149. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/osmses-2023.svg +0 -0
  150. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/osmses-2023_darkmode.svg +0 -0
  151. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/flowsheet.svg +0 -0
  152. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/flowsheet_darkmode.svg +0 -0
  153. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/pygmo_optimization.svg +0 -0
  154. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/pygmo_optimization_darkmode.svg +0 -0
  155. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/js/custom.js +0 -0
  156. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_templates/index.html +0 -0
  157. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/advanced/exergy.rst +0 -0
  158. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/advanced/optimization.rst +0 -0
  159. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionChamber.svg +0 -0
  160. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionChamber_darkmode.svg +0 -0
  161. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionEngine.svg +0 -0
  162. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionEngine_darkmode.svg +0 -0
  163. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Compressor.svg +0 -0
  164. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Compressor_darkmode.svg +0 -0
  165. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Condenser.svg +0 -0
  166. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Condenser_darkmode.svg +0 -0
  167. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/DropletSeparator.svg +0 -0
  168. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/DropletSeparator_darkmode.svg +0 -0
  169. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Drum.svg +0 -0
  170. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Drum_darkmode.svg +0 -0
  171. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/FuelCell.svg +0 -0
  172. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/FuelCell_darkmode.svg +0 -0
  173. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/HeatExchanger.svg +0 -0
  174. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/HeatExchanger_darkmode.svg +0 -0
  175. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Merge.svg +0 -0
  176. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Merge_darkmode.svg +0 -0
  177. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ORCEvaporator.svg +0 -0
  178. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ParabolicTrough.svg +0 -0
  179. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ParabolicTrough_darkmode.svg +0 -0
  180. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pipe.svg +0 -0
  181. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pipe_darkmode.svg +0 -0
  182. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pump.svg +0 -0
  183. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pump_darkmode.svg +0 -0
  184. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SolarCollector.svg +0 -0
  185. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SolarCollector_darkmode.svg +0 -0
  186. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Splitter.svg +0 -0
  187. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Splitter_darkmode.svg +0 -0
  188. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SubsystemInterface.svg +0 -0
  189. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SubsystemInterface_darkmode.svg +0 -0
  190. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Turbine.svg +0 -0
  191. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Turbine_darkmode.svg +0 -0
  192. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Valve.svg +0 -0
  193. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Valve_darkmode.svg +0 -0
  194. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/WaterElectrolyzer.svg +0 -0
  195. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/WaterElectrolyzer_darkmode.svg +0 -0
  196. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Q1_char_DEFAULT.svg +0 -0
  197. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Q2_char_DEFAULT.svg +0 -0
  198. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Qloss_char_DEFAULT.svg +0 -0
  199. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_tiP_char_DEFAULT.svg +0 -0
  200. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_char_map_eta_s_DEFAULT.svg +0 -0
  201. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_char_map_pr_DEFAULT.svg +0 -0
  202. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_eta_s_char_DEFAULT.svg +0 -0
  203. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/condenser_kA_char1_DEFAULT.svg +0 -0
  204. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/condenser_kA_char2_DEFAULT.svg +0 -0
  205. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/desuperheater_kA_char1_DEFAULT.svg +0 -0
  206. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/desuperheater_kA_char2_DEFAULT.svg +0 -0
  207. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char1_CONDENSING_FLUID.svg +0 -0
  208. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char1_DEFAULT.svg +0 -0
  209. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char2_DEFAULT.svg +0 -0
  210. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char2_EVAPORATING_FLUID.svg +0 -0
  211. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_simple_kA_char_DEFAULT.svg +0 -0
  212. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/pipe_kA_char_DEFAULT.svg +0 -0
  213. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/pump_eta_s_char_DEFAULT.svg +0 -0
  214. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/turbine_eta_s_char_DEFAULT.svg +0 -0
  215. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/turbine_eta_s_char_TRAUPEL.svg +0 -0
  216. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/water_electrolyzer_eta_char_DEFAULT.svg +0 -0
  217. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/connections.rst +0 -0
  218. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/data.rst +0 -0
  219. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/networks.rst +0 -0
  220. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/tools.rst +0 -0
  221. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api.rst +0 -0
  222. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/district_heating.rst +0 -0
  223. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/gas_turbine.rst +0 -0
  224. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/heat_pump.rst +0 -0
  225. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/intro.rst +0 -0
  226. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/rankine_cycle.rst +0 -0
  227. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics.rst +0 -0
  228. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/benchmarks.rst +0 -0
  229. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/conf.py +0 -0
  230. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/development/how.rst +0 -0
  231. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/development/what.rst +0 -0
  232. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/examples.rst +0 -0
  233. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/index.rst +0 -0
  234. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/installation.rst +0 -0
  235. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/introduction.rst +0 -0
  236. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/characteristics.rst +0 -0
  237. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/fluid_properties.rst +0 -0
  238. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/ude.rst +0 -0
  239. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules.rst +0 -0
  240. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/references.bib +0 -0
  241. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/regular_meeting.rst +0 -0
  242. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/scripts/generate_tespy_data_module.py +0 -0
  243. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/district_heating.rst +0 -0
  244. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/heat_pump_exergy.rst +0 -0
  245. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/heat_pump_steps.rst +0 -0
  246. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/pygmo_optimization.rst +0 -0
  247. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/starting_values.rst +0 -0
  248. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials.rst +0 -0
  249. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-1.rst +0 -0
  250. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-2.rst +0 -0
  251. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-3.rst +0 -0
  252. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-4.rst +0 -0
  253. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-5.rst +0 -0
  254. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-0.rst +0 -0
  255. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-1.rst +0 -0
  256. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-2.rst +0 -0
  257. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-3.rst +0 -0
  258. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-4.rst +0 -0
  259. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-0.rst +0 -0
  260. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-1.rst +0 -0
  261. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-2.rst +0 -0
  262. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-0.rst +0 -0
  263. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-1.rst +0 -0
  264. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-2.rst +0 -0
  265. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-3.rst +0 -0
  266. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-4.rst +0 -0
  267. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-0.rst +0 -0
  268. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-1.rst +0 -0
  269. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-2.rst +0 -0
  270. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3-001.rst +0 -0
  271. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3-003.rst +0 -0
  272. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3.rst +0 -0
  273. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-4.rst +0 -0
  274. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-5-0.rst +0 -0
  275. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-5-1.rst +0 -0
  276. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-0.rst +0 -0
  277. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-1.rst +0 -0
  278. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-2.rst +0 -0
  279. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-3.rst +0 -0
  280. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-0.rst +0 -0
  281. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-1.rst +0 -0
  282. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-2.rst +0 -0
  283. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-3.rst +0 -0
  284. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-4.rst +0 -0
  285. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-5.rst +0 -0
  286. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-6-001.rst +0 -0
  287. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-6.rst +0 -0
  288. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-7.rst +0 -0
  289. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8-001.rst +0 -0
  290. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8-002.rst +0 -0
  291. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8.rst +0 -0
  292. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-9.rst +0 -0
  293. {tespy-0.8.0.post4 → tespy-0.8.2}/docs/zliterature.rst +0 -0
  294. {tespy-0.8.0.post4 → tespy-0.8.2}/paper.bib +0 -0
  295. {tespy-0.8.0.post4 → tespy-0.8.2}/paper.md +0 -0
  296. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/__init__.py +0 -0
  297. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/__init__.py +0 -0
  298. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/cycle_closer.py +0 -0
  299. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/sink.py +0 -0
  300. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/source.py +0 -0
  301. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/subsystem_interface.py +0 -0
  302. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/__init__.py +0 -0
  303. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/customs/__init__.py +0 -0
  304. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/__init__.py +0 -0
  305. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/desuperheater.py +0 -0
  306. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/__init__.py +0 -0
  307. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/base.py +0 -0
  308. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/droplet_separator.py +0 -0
  309. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/drum.py +0 -0
  310. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/merge.py +0 -0
  311. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/separator.py +0 -0
  312. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/splitter.py +0 -0
  313. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/__init__.py +0 -0
  314. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/valve.py +0 -0
  315. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/__init__.py +0 -0
  316. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/fuel_cell.py +0 -0
  317. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/water_electrolyzer.py +0 -0
  318. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/__init__.py +0 -0
  319. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/base.py +0 -0
  320. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/steam_turbine.py +0 -0
  321. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/__init__.py +0 -0
  322. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Ahrendts.json +0 -0
  323. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Szargut1988.json +0 -0
  324. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Szargut2007.json +0 -0
  325. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/char_lines.json +0 -0
  326. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/char_maps.json +0 -0
  327. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/__init__.py +0 -0
  328. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/network_reader.py +0 -0
  329. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/__init__.py +0 -0
  330. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/analyses.py +0 -0
  331. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/characteristics.py +0 -0
  332. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/data_containers.py +0 -0
  333. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/__init__.py +0 -0
  334. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/functions.py +0 -0
  335. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/helpers.py +0 -0
  336. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/mixtures.py +0 -0
  337. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/logger.py +0 -0
  338. {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/optimization.py +0 -0
  339. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_advanced_tutorials.py +0 -0
  340. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_basic_tutorials.py +0 -0
  341. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_busses.py +0 -0
  342. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_customs.py +0 -0
  343. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_drum.py +0 -0
  344. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_connections.py +0 -0
  345. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_heat_pump_exergy.py +0 -0
  346. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/cgam-ebsilon-results.csv +0 -0
  347. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_solar_energy_generating_system.py +0 -0
  348. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/busses.json +0 -0
  349. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/CombustionChamber.csv +0 -0
  350. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Compressor.csv +0 -0
  351. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/SimpleHeatExchanger.csv +0 -0
  352. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Sink.csv +0 -0
  353. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Source.csv +0 -0
  354. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Turbine.csv +0 -0
  355. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/connections.csv +0 -0
  356. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/busses.json +0 -0
  357. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/CombustionChamber.json +0 -0
  358. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Compressor.json +0 -0
  359. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/SimpleHeatExchanger.json +0 -0
  360. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Sink.json +0 -0
  361. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Source.json +0 -0
  362. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Turbine.json +0 -0
  363. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/connections.json +0 -0
  364. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/network.json +0 -0
  365. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_characteristics.py +0 -0
  366. {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_helpers.py +0 -0
  367. {tespy-0.8.0.post4 → tespy-0.8.2}/tox.ini +0 -0
  368. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/README.rst +0 -0
  369. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/optimization_example.py +0 -0
  370. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/starting_values.py +0 -0
  371. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/stepwise.py +0 -0
  372. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/district_heating.py +0 -0
  373. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/heat_pump.py +0 -0
  374. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/rankine.py +0 -0
  375. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/NH3.py +0 -0
  376. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/NH3_calculations.py +0 -0
  377. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/R410A.py +0 -0
  378. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/R410A_calculations.py +0 -0
  379. {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/plots.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tespy
3
- Version: 0.8.0.post4
3
+ Version: 0.8.2
4
4
  Summary: Thermal Engineering Systems in Python (TESPy)
5
5
  Author-email: Francesco Witte <tespy@witte.sh>
6
6
  Requires-Python: >=3.9
@@ -78,6 +78,22 @@ tespy.components.combustion.engine module
78
78
  :undoc-members:
79
79
  :show-inheritance:
80
80
 
81
+ tespy.components.heat_exchangers.base module
82
+ --------------------------------------------
83
+
84
+ .. automodule:: tespy.components.heat_exchangers.base
85
+ :members:
86
+ :undoc-members:
87
+ :show-inheritance:
88
+
89
+ tespy.components.heat_exchangers.movingboundary module
90
+ ------------------------------------------------------
91
+
92
+ .. automodule:: tespy.components.heat_exchangers.movingboundary
93
+ :members:
94
+ :undoc-members:
95
+ :show-inheritance:
96
+
81
97
  tespy.components.heat_exchangers.condenser module
82
98
  -------------------------------------------------
83
99
 
@@ -94,14 +110,6 @@ tespy.components.heat_exchangers.desuperheater module
94
110
  :undoc-members:
95
111
  :show-inheritance:
96
112
 
97
- tespy.components.heat_exchangers.base module
98
- --------------------------------------------
99
-
100
- .. automodule:: tespy.components.heat_exchangers.base
101
- :members:
102
- :undoc-members:
103
- :show-inheritance:
104
-
105
113
  tespy.components.heat_exchangers.simple module
106
114
  ----------------------------------------------
107
115
 
@@ -777,12 +777,14 @@ Custom subsystems
777
777
  -----------------
778
778
 
779
779
  Create a :code:`.py` file in your working-directory. This file contains the
780
- class definition of your subsystem and at minimum two methods:
780
+ class definition of your subsystem and at minimum one method:
781
781
 
782
- - :code:`create_comps`: Method to create the components of your subsystem and
783
- save them in the :code:`Subsystem.comps` attribute (dictionary).
784
- - :code:`create_conns`: Method to create the connections of your subsystem and
785
- save them in the :code:`Subsystem.conns` attribute (dictionary).
782
+ - :code:`create_network`: Method to create the network of your subsystem.
783
+
784
+ On top of that you need to add methods to define the available interfaces of
785
+ your subsystem to the remaining network through specifying the number of inlets
786
+ and outlets in the :code:`__init__` method of your class as seen in the code
787
+ example below.
786
788
 
787
789
  All other functionalities are inherited by the parent class of the
788
790
  :py:class:`subsystem <tespy.components.subsystem.Subsystem>` object.
@@ -826,28 +828,33 @@ Create a file, e.g. :code:`mysubsystems.py` and add the following lines:
826
828
 
827
829
  >>> class WasteHeatSteamGenerator(Subsystem):
828
830
  ... """Class documentation"""
831
+ ... def __init__(self, label):
832
+ ... self.num_in = 2
833
+ ... self.num_out = 2
834
+ ... super().__init__(label)
829
835
  ...
830
- ... def create_comps(self):
831
- ... """Create the subsystem's components."""
832
- ... self.comps['eco'] = HeatExchanger(f'{self.label}_economizer')
833
- ... self.comps['eva'] = HeatExchanger(f'{self.label}_evaporator')
834
- ... self.comps['sup'] = HeatExchanger(f'{self.label}_superheater')
835
- ... self.comps['drum'] = Drum(f'{self.label}_drum')
836
- ...
837
- ... def create_conns(self):
836
+ ... def create_network(self):
838
837
  ... """Define the subsystem's connections."""
839
- ... self.conns['eco_dr'] = Connection(
840
- ... self.comps['eco'], 'out2', self.comps['drum'], 'in1')
841
- ... self.conns['dr_eva'] = Connection(
842
- ... self.comps['drum'], 'out1', self.comps['eva'], 'in2')
843
- ... self.conns['eva_dr'] = Connection(
844
- ... self.comps['eva'], 'out2', self.comps['drum'], 'in2')
845
- ... self.conns['dr_sup'] = Connection(
846
- ... self.comps['drum'], 'out2', self.comps['sup'], 'in2')
847
- ... self.conns['sup_eva'] = Connection(
848
- ... self.comps['sup'], 'out1', self.comps['eva'], 'in1')
849
- ... self.conns['eva_eco'] = Connection(
850
- ... self.comps['eva'], 'out1', self.comps['eco'], 'in1')
838
+ ... eco = HeatExchanger('economizer')
839
+ ... eva = HeatExchanger('evaporator')
840
+ ... sup = HeatExchanger('superheater')
841
+ ... drum = Drum('drum')
842
+ ...
843
+ ... inlet_eco = Connection(self.inlet, 'out2', eco, 'in2', label='1')
844
+ ... eco_dr = Connection(eco, 'out2', drum, 'in1', label='2')
845
+ ... dr_eva = Connection(drum, 'out1', eva, 'in2', label='3')
846
+ ... eva_dr = Connection(eva, 'out2', drum, 'in2', label='4')
847
+ ... dr_sup = Connection(drum, 'out2', sup, 'in2', label='5')
848
+ ... sup_outlet = Connection(sup, 'out2', self.outlet, 'in2', label='6')
849
+ ...
850
+ ... self.add_conns(inlet_eco, eco_dr, dr_eva, eva_dr, dr_sup, sup_outlet)
851
+ ...
852
+ ... inlet_sup = Connection(self.inlet, 'out1', sup, 'in1', label='11')
853
+ ... sup_eva = Connection(sup, 'out1', eva, 'in1', label='12')
854
+ ... eva_eco = Connection(eva, 'out1', eco, 'in1', label='13')
855
+ ... eco_outlet = Connection(eco, 'out1', self.outlet, 'in1', label='14')
856
+ ...
857
+ ... self.add_conns(inlet_sup, sup_eva, eva_eco, eco_outlet)
851
858
 
852
859
  .. note::
853
860
 
@@ -881,13 +888,13 @@ different tespy classes required.
881
888
  >>> sg = WasteHeatSteamGenerator('waste heat steam generator')
882
889
 
883
890
  >>> # %% connection definition
884
- >>> fw_sg = Connection(feed_water, 'out1', sg.comps['eco'], 'in2')
885
- >>> sg_ls = Connection(sg.comps['sup'], 'out2', steam, 'in1')
886
- >>> fg_sg = Connection(waste_heat, 'out1', sg.comps['sup'], 'in1')
887
- >>> sg_ch = Connection(sg.comps['eco'], 'out1', chimney, 'in1')
891
+ >>> fw_sg = Connection(feed_water, 'out1', sg, 'in2')
892
+ >>> sg_ls = Connection(sg, 'out2', steam, 'in1')
893
+ >>> fg_sg = Connection(waste_heat, 'out1', sg, 'in1')
894
+ >>> sg_ch = Connection(sg, 'out1', chimney, 'in1')
888
895
 
889
896
  >>> nw.add_conns(fw_sg, sg_ls, fg_sg, sg_ch)
890
- >>> nw.add_subsys(sg)
897
+ >>> nw.add_subsystems(sg)
891
898
 
892
899
  >>> # %% connection parameters
893
900
  >>> fw_sg.set_attr(fluid={'water': 1}, T=25)
@@ -895,29 +902,30 @@ different tespy classes required.
895
902
  >>> sg_ls.set_attr(p=130)
896
903
  >>> sg_ch.set_attr(p=1)
897
904
 
898
- >>> sg.conns['eva_dr'].set_attr(x=0.6)
905
+ >>> sg.get_conn('4').set_attr(x=0.6)
899
906
 
900
907
  >>> # %% component parameters
901
- >>> sg.comps['eco'].set_attr(
908
+ >>> sg.get_comp('economizer').set_attr(
902
909
  ... pr1=0.999, pr2=0.97, design=['pr1', 'pr2', 'ttd_u'],
903
910
  ... offdesign=['zeta1', 'zeta2', 'kA_char']
904
911
  ... )
905
912
 
906
- >>> sg.comps['eva'].set_attr(
913
+ >>> sg.get_comp('evaporator').set_attr(
907
914
  ... pr1=0.999, ttd_l=20, design=['pr1', 'ttd_l'],
908
915
  ... offdesign=['zeta1', 'kA_char']
909
916
  ... )
910
917
 
911
- >>> sg.comps['sup'].set_attr(
918
+ >>> sg.get_comp('superheater').set_attr(
912
919
  ... pr1=0.999, pr2=0.99, ttd_u=50, design=['pr1', 'pr2', 'ttd_u'],
913
920
  ... offdesign=['zeta1', 'zeta2', 'kA_char']
914
921
  ... )
915
922
 
916
- >>> sg.conns['eco_dr'].set_attr(Td_bp=-5, design=['Td_bp'])
923
+ >>> sg.get_conn('2').set_attr(Td_bp=-5, design=['Td_bp'])
917
924
 
918
925
  >>> # %% solve
919
926
  >>> # solve design case
920
927
  >>> nw.solve('design')
928
+ >>> nw.assert_convergence()
921
929
  >>> nw.save('tmp.json')
922
930
 
923
931
  >>> # offdesign test
@@ -132,7 +132,7 @@ example:
132
132
  >>> myconn.set_attr(fluid={'water': 1}) # HEOS back end
133
133
  >>> myconn.set_attr(fluid={'INCOMP::water': 1}) # incompressible fluid
134
134
  >>> myconn.set_attr(fluid={'BICUBIC::air': 1}) # bicubic back end
135
- >>> myconn.set_attr(fluid={'INCOMP::MPG[0.5]': 1}) # binary incompressible mixture
135
+ >>> myconn.set_attr(fluid={'INCOMP::MPG[0.5]|mass': 1}) # binary incompressible mixture
136
136
 
137
137
  .. note::
138
138
 
@@ -95,7 +95,7 @@ or via subsystems using the corresponding methods:
95
95
  .. code-block:: python
96
96
 
97
97
  >>> my_plant.add_conns()
98
- >>> my_plant.add_subsys()
98
+ >>> my_plant.add_subsystems()
99
99
 
100
100
  .. note::
101
101
 
@@ -417,7 +417,7 @@ power :math:`P` to be 1000 W, the set of equations will look like this:
417
417
  &0 = \dot{m}_{in} - \dot{m}_{out}\\
418
418
  \mathrm{additional:} \, &0 = 1000 - \dot{m}_{in} (\cdot {h_{out} - h_{in}})
419
419
 
420
- .. _tespy_modules_convergence_check_label:
420
+ .. _tespy_module_convergence_label:
421
421
 
422
422
  Convergence stability
423
423
  +++++++++++++++++++++
@@ -462,9 +462,25 @@ after the third iteration, further checks are usually not required.
462
462
  .. tip::
463
463
 
464
464
  To check if the solver successfully found a solution for your model you can
465
- check the `.converged` attribute of the Network class after calling the
466
- `solve` method. It will be `True` in case no linear dependency was and the
467
- residual value of all equations is below the minimum threshold.
465
+ check the `.status` attribute of the Network class after calling the
466
+ `solve` method. It will be
467
+
468
+ - 0 in case a solution was successfully found
469
+ - 1 in case a solution was found, but some parameters violate physical
470
+ limits
471
+ - 2 in case no convergence was achieved after completion of the iterations
472
+ - 3 in case a linear dependency in the Jacobian matrix is found
473
+ - 11 in case the number of specified parameters is too small for the given
474
+ problem
475
+ - 12 in case the number of specified parameters is too large for the given
476
+ problem
477
+ - 99 in case the simulation crashed due to any other reason
478
+
479
+ The :code:`solve` does not exit with an exception in case the status is
480
+ 0, 1, 2 or 3. If you want to raise an error in your script, you can call
481
+ the `Network.assert_convergence()` method. It will raise an
482
+ :code:`AssertionError` if the simulation did not find a converged solution
483
+ status 2 or status 3.
468
484
 
469
485
  Calculation speed improvement
470
486
  +++++++++++++++++++++++++++++
@@ -9,7 +9,7 @@ Bug Fixes
9
9
  (`PR #640 <https://github.com/oemof/tespy/pull/640>`__).
10
10
  - In case a heat exchanger heats up the same mass flow (e.g. in a recuperator
11
11
  or internal heat exchanger), the derivative to the mass flow was assigned
12
- wrong (`PR #640 <https://github.com/oemof/tespy/pull/640>`__).
12
+ wrong (`PR #646 <https://github.com/oemof/tespy/pull/646>`__).
13
13
 
14
14
  Other Changes
15
15
  #############
@@ -5,6 +5,7 @@ API breaking changes
5
5
  ####################
6
6
  - The :code:`OptimizationProblem` implements the following changes
7
7
  (see `PR #610 <https://github.com/oemof/tespy/pull/610>`__):
8
+
8
9
  - The dtype for :code:`objective` has been changed to list. With a single
9
10
  element list, a single objective optimization is carried out. With lists
10
11
  containing more elements, multi-objective optimization will be carried out.
@@ -0,0 +1,31 @@
1
+ v0.8.1 - Newton's Nature (May, 29, 2025)
2
+ ++++++++++++++++++++++++++++++++++++++++
3
+
4
+ New Features
5
+ ############
6
+ - The :code:`CoolPropWrapper` API can now handle CoolProp based mixtures
7
+ and allows the user to specify which type of mixture fractions to use
8
+ (mass, molar, volume). This is mostly for REFPROP support and will require
9
+ further adaptions for the :code:`CoolPropWrapper` in the future, because the
10
+ pure fluid functions may not be applicable in the context of mixtures
11
+ (`PR #655 <https://github.com/oemof/tespy/pull/655>`__).
12
+
13
+ In case you are working with incompressible mixtures, this feature is API
14
+ breaking. You need to append :code:`|mass`, :code:`|volume` or
15
+ :code:`|molar` to your fluid name string at the very end to specify, which
16
+ type of mixture is used. This information can be retrieved from the
17
+ CoolProp online documentation on the incompressible fluids.
18
+
19
+ Bug Fixes
20
+ #########
21
+ - In case parts of a :code:`Network` were missing a :code:`CycleCloser` or
22
+ a :code:`Source` and :code:`Sink` combination a misleading error was raised.
23
+ These cases are checked for explicitly now to make debugging easier
24
+ (`PR #653 <https://github.com/oemof/tespy/pull/653>`__).
25
+ - The logging of warnings for :code:`HeatExchanger` based components includes
26
+ the label of the component, when cold or hot side effectiveness cannot be
27
+ calculated (`PR #670 <https://github.com/oemof/tespy/pull/670>`__).
28
+
29
+ Contributors
30
+ ############
31
+ - Francesco Witte (`@fwitte <https://github.com/fwitte>`__)
@@ -0,0 +1,50 @@
1
+ v0.8.2 - Newton's Nature (June, 12, 2025)
2
+ +++++++++++++++++++++++++++++++++++++++++
3
+
4
+ API changes
5
+ ###########
6
+ - The API of the :code:`Subsystem` class has been revised to make it act more
7
+ like a :code:`Network`. You can get components and connections from the
8
+ subsystem with respective methods, and the :code:`SubsystemInterface` class
9
+ is utilized to target the :code:`subsystem.inlet` and
10
+ :code:`subsystem.outlet` in a :code:`Connection` object. For the required
11
+ changes please check the respective section
12
+ :ref:`in the docs <tespy_subsystems_label>`
13
+ (`PR #652 <https://github.com/oemof/tespy/pull/652>`__).
14
+ - The attribute :code:`progress` of the class :code:`Network` has been removed.
15
+ (`PR #684 <https://github.com/oemof/tespy/pull/684>`__).
16
+ - To raise an :code:`AssertionError` on non-convergence of a simulation you
17
+ must now use :code:`Network.assert_convergence()` instead of
18
+ :code:`Network._convergence_check()`
19
+ (`PR #684 <https://github.com/oemof/tespy/pull/684>`__).
20
+
21
+ New Features
22
+ ############
23
+ - The combustion based component classes :code:`CombustionChamber`,
24
+ :code:`DiabaticCombustionChamber` and :code:`CombustionEngine` can now handle
25
+ carbonmonoxide as fuel
26
+ (`PR #674 <https://github.com/oemof/tespy/pull/674>`__).
27
+ - The :code:`Network`'s :code:`solve` method will now assign status values
28
+ depending of the outcome of the simulation. Check the section on
29
+ :ref:`convergence <tespy_module_convergence_label>` for more information
30
+ (`PR #684 <https://github.com/oemof/tespy/pull/684>`__).
31
+
32
+ Other Changes
33
+ #############
34
+ - The partial derivatives for specified temperature are only calculated towards
35
+ enthalpy and pressure, not towards the fluid compostion. The reason for this
36
+ is, that it is not intended, that the composition of a fluid can be
37
+ determined by specifying temperature. Removing this saves a lot of
38
+ computational overhead for mixtures
39
+ (`PR #674 <https://github.com/oemof/tespy/pull/674>`__).
40
+ - The calculation of the logarithmic temperature difference in heat exchanger
41
+ classes was error-prone due to rounding differences in temperature. The
42
+ calculation is now consistent through all respective classes and can handle
43
+ temperature differences to a precision of :code:`1e-6`
44
+ (`PR #679 <https://github.com/oemof/tespy/pull/679>`__).
45
+ - The export method :code:`to_exerpy` now includes the results for components
46
+ (`PR #680 <https://github.com/oemof/tespy/pull/680>`__).
47
+
48
+ Contributors
49
+ ############
50
+ - Francesco Witte (`@fwitte <https://github.com/fwitte>`__)
@@ -3,6 +3,8 @@ What's New
3
3
 
4
4
  Discover notable new features and improvements in each release
5
5
 
6
+ .. include:: whats_new/v0-8-2.rst
7
+ .. include:: whats_new/v0-8-1.rst
6
8
  .. include:: whats_new/v0-8-0-001.rst
7
9
  .. include:: whats_new/v0-8-0.rst
8
10
  .. include:: whats_new/v0-7-9.rst
@@ -24,7 +24,7 @@ exclude = ["docs/_build"]
24
24
 
25
25
  [project]
26
26
  name = "tespy"
27
- version = "0.8.0.post4"
27
+ version = "0.8.2"
28
28
  description = "Thermal Engineering Systems in Python (TESPy)"
29
29
  readme = "README.rst"
30
30
  authors = [
@@ -1,9 +1,18 @@
1
1
  # -*- coding: utf-8
2
2
  import importlib.resources
3
3
  import os
4
+ import sys
5
+ import warnings
6
+
7
+ if sys.version_info[1] < 10:
8
+ msg = (
9
+ "Supprt for python versions below 3.10 will be dropped with the "
10
+ "next major release"
11
+ )
12
+ warnings.warn(FutureWarning(msg))
4
13
 
5
14
  __datapath__ = os.path.join(importlib.resources.files("tespy"), "data")
6
- __version__ = '0.8.0.post4 - Newton\'s Nature'
15
+ __version__ = '0.8.2 - Newton\'s Nature'
7
16
 
8
17
  # tespy data and connections import
9
18
  from . import connections # noqa: F401
@@ -47,7 +47,7 @@ class CombustionChamber(Component):
47
47
 
48
48
  Available fuels
49
49
 
50
- - methane, ethane, propane, butane, hydrogen
50
+ - methane, ethane, propane, butane, hydrogen, carbon monoxide, nDodecane
51
51
 
52
52
  Inlets/Outlets
53
53
 
@@ -334,21 +334,22 @@ class CombustionChamber(Component):
334
334
  hf['propane'] = -103.8
335
335
  hf['butane'] = -125.7
336
336
  hf['nDodecane'] = -289.4
337
+ hf['CO'] = -110.5
337
338
  hf[self.o2] = 0
338
339
  hf[self.co2] = -393.51
339
340
  # water (gaseous)
340
341
  hf[self.h2o] = -241.826
341
342
 
342
343
  key = set(list(hf.keys())).intersection(
343
- set([a.replace(' ', '')
344
- for a in CP.get_aliases(f)]))
344
+ set([a.replace(' ', '') for a in CP.get_aliases(f)])
345
+ )
345
346
 
346
347
  val = (
347
348
  -(
348
349
  self.fuels[f]['H'] / 2 * hf[self.h2o]
349
350
  + self.fuels[f]['C'] * hf[self.co2]
350
351
  - (
351
- (self.fuels[f]['C'] + self.fuels[f]['H'] / 4) * hf[self.o2]
352
+ (self.fuels[f]['C'] + self.fuels[f]['H'] / 4 - self.fuels[f]['O'] / 2) * hf[self.o2]
352
353
  + hf[list(key)[0]]
353
354
  )
354
355
  ) / inl[0].fluid.wrapper[f]._molar_mass * 1000
@@ -601,6 +602,7 @@ class CombustionChamber(Component):
601
602
  n_oxy_stoich = {}
602
603
  n_h = 0
603
604
  n_c = 0
605
+ n_o = 0
604
606
  for f in self.fuel_list:
605
607
  n_fuel[f] = 0
606
608
  for i in inl:
@@ -608,10 +610,12 @@ class CombustionChamber(Component):
608
610
  n_fuel[f] += n
609
611
  n_h += n * self.fuels[f]['H']
610
612
  n_c += n * self.fuels[f]['C']
613
+ n_o += n * self.fuels[f]['O']
611
614
 
612
615
  # stoichiometric oxygen requirement for each fuel
613
616
  n_oxy_stoich[f] = n_fuel[f] * (
614
617
  self.fuels[f]['H'] / 4 + self.fuels[f]['C']
618
+ - self.fuels[f]['O'] / 2
615
619
  )
616
620
 
617
621
  n_oxygen = 0
@@ -622,7 +626,7 @@ class CombustionChamber(Component):
622
626
 
623
627
  ###################################################################
624
628
  # calculate stoichiometric oxygen
625
- n_oxygen_stoich = n_h / 4 + n_c
629
+ n_oxygen_stoich = n_h / 4 + n_c - n_o / 2
626
630
 
627
631
  ###################################################################
628
632
  # calculate lambda if not set
@@ -662,7 +666,7 @@ class CombustionChamber(Component):
662
666
  if self.lamb.val < 1:
663
667
  n_fuel_exc = (
664
668
  -(n_oxygen / n_oxygen_stoich - 1) * n_oxy_stoich[fluid]
665
- / (self.fuels[fluid]['H'] / 4 + self.fuels[fluid]['C'])
669
+ / (self.fuels[fluid]['H'] / 4 + self.fuels[fluid]['C'] - self.fuels[fluid]['O'] / 2)
666
670
  )
667
671
  else:
668
672
  n_fuel_exc = 0
@@ -994,6 +998,7 @@ class CombustionChamber(Component):
994
998
 
995
999
  n_h = 0
996
1000
  n_c = 0
1001
+ n_o = 0
997
1002
  for f in self.fuel_list:
998
1003
  for i in inl:
999
1004
  n_fuel = (
@@ -1002,6 +1007,7 @@ class CombustionChamber(Component):
1002
1007
  )
1003
1008
  n_h += n_fuel * self.fuels[f]['H']
1004
1009
  n_c += n_fuel * self.fuels[f]['C']
1010
+ n_o += n_fuel * self.fuels[f]['O']
1005
1011
 
1006
1012
  n_oxygen = 0
1007
1013
  for i in inl:
@@ -1009,7 +1015,7 @@ class CombustionChamber(Component):
1009
1015
  i.m.val_SI * i.fluid.val[self.o2]
1010
1016
  / inl[0].fluid.wrapper[self.o2]._molar_mass
1011
1017
  )
1012
- n_oxygen_stoich = n_h / 4 + n_c
1018
+ n_oxygen_stoich = n_h / 4 + n_c - n_o / 2
1013
1019
  return n_oxygen / n_oxygen_stoich
1014
1020
 
1015
1021
 
@@ -1218,16 +1224,12 @@ class CombustionChamber(Component):
1218
1224
  outl.fluid.val[f] = 0.05
1219
1225
 
1220
1226
  elif f == self.co2:
1221
- if outl.fluid.val[f] > 0.1:
1222
- outl.fluid.val[f] = 0.075
1223
- if outl.fluid.val[f] < 0.001:
1224
- outl.fluid.val[f] = 0.02
1227
+ if outl.fluid.val[f] > 0.15:
1228
+ outl.fluid.val[f] = 0.1
1225
1229
 
1226
1230
  elif f == self.h2o:
1227
- if outl.fluid.val[f] > 0.1:
1228
- outl.fluid.val[f] = 0.075
1229
- if outl.fluid.val[f] < 0.001:
1230
- outl.fluid.val[f] = 0.02
1231
+ if outl.fluid.val[f] > 0.15:
1232
+ outl.fluid.val[f] = 0.1
1231
1233
 
1232
1234
  elif f in self.fuel_list:
1233
1235
  if outl.fluid.val[f] > 0:
@@ -42,7 +42,7 @@ class DiabaticCombustionChamber(CombustionChamber):
42
42
 
43
43
  Available fuels
44
44
 
45
- - methane, ethane, propane, butane, hydrogen
45
+ - methane, ethane, propane, butane, hydrogen, carbon monoxide, nDodecane
46
46
 
47
47
  Inlets/Outlets
48
48
 
@@ -63,7 +63,7 @@ class CombustionEngine(CombustionChamber):
63
63
 
64
64
  Available fuels
65
65
 
66
- - methane, ethane, propane, butane, hydrogen
66
+ - methane, ethane, propane, butane, hydrogen, carbon monoxide, nDodecane
67
67
 
68
68
  Inlets/Outlets
69
69
 
@@ -838,6 +838,7 @@ class Component:
838
838
 
839
839
  def check_parameter_bounds(self):
840
840
  r"""Check parameter value limits."""
841
+ _no_limit_violated = True
841
842
  for p in self.parameters.keys():
842
843
  data = self.get_attr(p)
843
844
  if isinstance(data, dc_cp):
@@ -848,6 +849,7 @@ class Component:
848
849
  f"{self.label}."
849
850
  )
850
851
  logger.warning(msg)
852
+ _no_limit_violated = False
851
853
 
852
854
  elif data.val < data.min_val - ERR:
853
855
  msg = (
@@ -856,6 +858,7 @@ class Component:
856
858
  f"{self.label}."
857
859
  )
858
860
  logger.warning(msg)
861
+ _no_limit_violated = False
859
862
 
860
863
  elif isinstance(data, dc_cc) and data.is_set:
861
864
  expr = self.get_char_expr(data.param, **data.char_params)
@@ -868,6 +871,8 @@ class Component:
868
871
  char_data.param, **char_data.char_params)
869
872
  char_data.char_func.get_domain_errors(expr, self.label)
870
873
 
874
+ return _no_limit_violated
875
+
871
876
  def convergence_check(self):
872
877
  return
873
878
 
@@ -494,7 +494,7 @@ class HeatExchanger(Component):
494
494
  ttd_u = T_i1 - T_o2
495
495
  ttd_l = T_o1 - T_i2
496
496
 
497
- if ttd_u == ttd_l:
497
+ if round(ttd_u, 6) == round(ttd_l, 6):
498
498
  td_log = ttd_l
499
499
  else:
500
500
  td_log = (ttd_l - ttd_u) / math.log((ttd_l) / (ttd_u))
@@ -719,7 +719,7 @@ class HeatExchanger(Component):
719
719
 
720
720
  def ttd_l_func(self):
721
721
  r"""
722
- Equation for upper terminal temperature difference.
722
+ Equation for lower terminal temperature difference.
723
723
 
724
724
  Returns
725
725
  -------
@@ -738,7 +738,7 @@ class HeatExchanger(Component):
738
738
 
739
739
  def ttd_l_func_doc(self, label):
740
740
  r"""
741
- Equation for upper terminal temperature difference.
741
+ Equation for lower terminal temperature difference.
742
742
 
743
743
  Parameters
744
744
  ----------
@@ -755,7 +755,7 @@ class HeatExchanger(Component):
755
755
 
756
756
  def ttd_l_deriv(self, increment_filter, k):
757
757
  """
758
- Calculate partial derivates of upper terminal temperature function.
758
+ Calculate partial derivates of lower terminal temperature function.
759
759
 
760
760
  Parameters
761
761
  ----------
@@ -774,7 +774,7 @@ class HeatExchanger(Component):
774
774
 
775
775
  def ttd_min_func(self):
776
776
  r"""
777
- Equation for upper terminal temperature difference.
777
+ Equation for minimum terminal temperature difference.
778
778
 
779
779
  Returns
780
780
  -------
@@ -1171,7 +1171,7 @@ class HeatExchanger(Component):
1171
1171
  # kA and logarithmic temperature difference
1172
1172
  if self.ttd_u.val < 0 or self.ttd_l.val < 0:
1173
1173
  self.td_log.val = np.nan
1174
- elif self.ttd_l.val == self.ttd_u.val:
1174
+ elif round(self.ttd_l.val, 6) == round(self.ttd_u.val, 6):
1175
1175
  self.td_log.val = self.ttd_l.val
1176
1176
  else:
1177
1177
  self.td_log.val = (
@@ -1189,7 +1189,7 @@ class HeatExchanger(Component):
1189
1189
  except ValueError:
1190
1190
  self.eff_hot.val = np.nan
1191
1191
  msg = (
1192
- "Cannot calculate heat exchanger hot side effectiveness "
1192
+ f"Cannot calculate {self.label} hot side effectiveness "
1193
1193
  "because cold side inlet temperature is out of bounds for hot "
1194
1194
  "side fluid."
1195
1195
  )
@@ -1202,7 +1202,7 @@ class HeatExchanger(Component):
1202
1202
  except ValueError:
1203
1203
  self.eff_cold.val = np.nan
1204
1204
  msg = (
1205
- "Cannot calculate heat exchanger cold side effectiveness "
1205
+ f"Cannot calculate {self.label} cold side effectiveness "
1206
1206
  "because hot side inlet temperature is out of bounds for cold "
1207
1207
  "side fluid."
1208
1208
  )
@@ -336,7 +336,7 @@ class Condenser(HeatExchanger):
336
336
 
337
337
  ttd_u = T_i1 - T_o2
338
338
  ttd_l = T_o1 - T_i2
339
- if ttd_u == ttd_l:
339
+ if round(ttd_u, 6) == round(ttd_l, 6):
340
340
  td_log = ttd_l
341
341
  else:
342
342
  td_log = (ttd_l - ttd_u) / math.log((ttd_l) / (ttd_u))
@@ -494,7 +494,7 @@ class Condenser(HeatExchanger):
494
494
  # kA and logarithmic temperature difference
495
495
  if self.ttd_u.val < 0 or self.ttd_l.val < 0:
496
496
  self.td_log.val = np.nan
497
- elif self.ttd_l.val == self.ttd_u.val:
497
+ elif round(self.ttd_l.val, 6) == round(self.ttd_u.val, 6):
498
498
  self.td_log.val = self.ttd_l.val
499
499
  else:
500
500
  self.td_log.val = (
@@ -512,7 +512,7 @@ class Condenser(HeatExchanger):
512
512
  except ValueError:
513
513
  self.eff_hot.val = np.nan
514
514
  msg = (
515
- "Cannot calculate heat exchanger hot side effectiveness "
515
+ f"Cannot calculate {self.label} hot side effectiveness "
516
516
  "because cold side inlet temperature is out of bounds for hot "
517
517
  "side fluid."
518
518
  )
@@ -525,7 +525,7 @@ class Condenser(HeatExchanger):
525
525
  except ValueError:
526
526
  self.eff_cold.val = np.nan
527
527
  msg = (
528
- "Cannot calculate heat exchanger cold side effectiveness "
528
+ f"Cannot calculate {self.label} cold side effectiveness "
529
529
  "because hot side inlet temperature is out of bounds for cold "
530
530
  "side fluid."
531
531
  )