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.
- {tespy-0.8.0.post4 → tespy-0.8.2}/PKG-INFO +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/components.rst +16 -8
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/components.rst +43 -35
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/connections.rst +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/networks.rst +21 -5
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-8-0-001.rst +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-8-0.rst +1 -0
- tespy-0.8.2/docs/whats_new/v0-8-1.rst +31 -0
- tespy-0.8.2/docs/whats_new/v0-8-2.rst +50 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new.rst +2 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/pyproject.toml +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/__init__.py +10 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/base.py +17 -15
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/diabatic.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/engine.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/component.py +5 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/base.py +8 -8
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/condenser.py +4 -4
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/movingboundary.py +7 -9
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/parabolic_trough.py +2 -2
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/simple.py +31 -41
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/solar_collector.py +2 -2
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/pipe.py +2 -2
- tespy-0.8.2/src/tespy/components/subsystem.py +213 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/compressor.py +3 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/pump.py +3 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/turbine.py +4 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/bus.py +6 -2
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/connection.py +19 -14
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/network.py +203 -121
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/document_models.py +6 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/wrappers.py +59 -17
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/global_vars.py +4 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/helpers.py +49 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_analyses/test_entropy_analysis.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_analyses/test_exergy_analysis.py +8 -8
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_combustion.py +58 -26
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_heat_exchangers.py +42 -42
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_merge.py +4 -4
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_piping.py +3 -3
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_reactors.py +9 -9
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_turbomachinery.py +26 -26
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_errors.py +5 -2
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_CGAM_model.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_heat_pump_model.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_binary_incompressible.py +3 -3
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_bypassing.py +4 -4
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_mixing_rules.py +6 -6
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/test_network.py +66 -21
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_coolprop.py +1 -1
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_iapws.py +4 -4
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_fluid_properties/test_pyromat.py +2 -2
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/gas_turbine.py +1 -1
- tespy-0.8.0.post4/src/tespy/components/subsystem.py +0 -87
- {tespy-0.8.0.post4 → tespy-0.8.2}/.editorconfig +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/.pep8speaks.yml +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/.readthedocs.yml +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/CODE_OF_CONDUCT.md +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/CONTRIBUTING.md +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/LICENSE +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/PULL_REQUEST_TEMPLATE.md +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/README.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/css/custom.css +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/advanced/exergy/sankey.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_partload.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/district_heating_partload_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_fuel_composition.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_fuel_composition_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_oxygen.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_oxygen_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_parametric.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/gas_turbine_parametric_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_parametric.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/heat_pump_parametric_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/modeling_concept.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_cycle.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_cycle_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_parametric.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_parametric_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_partload.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_partload_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_ts_diagram.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/basics/rankine_ts_diagram_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/GRC_flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/GRC_flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/ORC_parametric_flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/ORC_parametric_flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/PM_CAES_graphical-abstract.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/PM_CAES_graphical-abstract_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/heatpumps.png +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/examples/heatpumps_darkmode.png +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_big_editable_font.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_christmas.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_darkmode_christmas.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mid_editable_font.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_mini.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/logo_tespy_small.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/Ts_diagram_states.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/characteristics.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/characteristics_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/connections.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/connections_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/fluid_properties.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/fluid_properties_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/logph_diagram_states.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/subsystem_waste_heat_generator.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/subsystem_waste_heat_generator_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/ude.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/modules/ude_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_closed.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_forks.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/district_heating_system/dhs_open.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/NH3_logph.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/NH3_sankey.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_E_D.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_E_D_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Q.svg +0 -0
- {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
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_cop_eps_Tgeo_Ths.svg +0 -0
- {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
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_eps_Tamb_Tgeo.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/diagram_eps_Tamb_Tgeo_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_exergy/flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/COP_by_wf.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/COP_by_wf_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_starting_values/logph.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p1.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p1_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p2.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/heat_pump_stepwise/flowsheet_p2_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/osmses-2023.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/osmses-2023_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/flowsheet.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/flowsheet_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/pygmo_optimization.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/images/tutorials/pygmo_optimization/pygmo_optimization_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_static/js/custom.js +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/_templates/index.html +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/advanced/exergy.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/advanced/optimization.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionChamber.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionChamber_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionEngine.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/CombustionEngine_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Compressor.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Compressor_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Condenser.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Condenser_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/DropletSeparator.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/DropletSeparator_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Drum.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Drum_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/FuelCell.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/FuelCell_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/HeatExchanger.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/HeatExchanger_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Merge.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Merge_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ORCEvaporator.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ParabolicTrough.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/ParabolicTrough_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pipe.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pipe_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pump.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Pump_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SolarCollector.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SolarCollector_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Splitter.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Splitter_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SubsystemInterface.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/SubsystemInterface_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Turbine.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Turbine_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Valve.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/Valve_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/WaterElectrolyzer.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/WaterElectrolyzer_darkmode.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Q1_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Q2_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_Qloss_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/combustion_engine_tiP_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_char_map_eta_s_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_char_map_pr_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/compressor_eta_s_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/condenser_kA_char1_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/condenser_kA_char2_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/desuperheater_kA_char1_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/desuperheater_kA_char2_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char1_CONDENSING_FLUID.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char1_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char2_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_kA_char2_EVAPORATING_FLUID.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/heat_exchanger_simple_kA_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/pipe_kA_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/pump_eta_s_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/turbine_eta_s_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/turbine_eta_s_char_TRAUPEL.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/_images/water_electrolyzer_eta_char_DEFAULT.svg +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/connections.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/data.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/networks.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api/tools.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/api.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/district_heating.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/gas_turbine.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/heat_pump.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/intro.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics/rankine_cycle.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/basics.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/benchmarks.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/conf.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/development/how.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/development/what.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/examples.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/index.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/installation.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/introduction.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/characteristics.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/fluid_properties.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules/ude.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/modules.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/references.bib +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/regular_meeting.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/scripts/generate_tespy_data_module.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/district_heating.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/heat_pump_exergy.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/heat_pump_steps.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/pygmo_optimization.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials/starting_values.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/tutorials.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-4.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-0-5.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-1-4.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-2-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-3-4.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3-001.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3-003.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-4-4.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-5-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-5-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-6-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-0.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-1.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-2.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-3.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-4.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-5.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-6-001.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-6.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-7.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8-001.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8-002.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-8.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/whats_new/v0-7-9.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/docs/zliterature.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/paper.bib +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/paper.md +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/cycle_closer.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/sink.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/source.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/basics/subsystem_interface.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/combustion/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/customs/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/heat_exchangers/desuperheater.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/base.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/droplet_separator.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/drum.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/merge.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/separator.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/nodes/splitter.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/piping/valve.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/fuel_cell.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/reactors/water_electrolyzer.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/base.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/components/turbomachinery/steam_turbine.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/connections/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Ahrendts.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Szargut1988.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/ChemEx/Szargut2007.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/char_lines.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/data/char_maps.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/networks/network_reader.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/analyses.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/characteristics.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/data_containers.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/__init__.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/functions.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/helpers.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/fluid_properties/mixtures.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/logger.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/src/tespy/tools/optimization.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_advanced_tutorials.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_basic_tutorials.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_busses.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_customs.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_components/test_drum.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_connections.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_heat_pump_exergy.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/cgam-ebsilon-results.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_models/test_solar_energy_generating_system.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/busses.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/CombustionChamber.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Compressor.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/SimpleHeatExchanger.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Sink.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Source.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/components/Turbine.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/design_state/connections.csv +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/busses.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/CombustionChamber.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Compressor.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/SimpleHeatExchanger.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Sink.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Source.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/components/Turbine.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/connections.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_networks/exported_nwk/network.json +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_characteristics.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tests/test_tools/test_helpers.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tox.ini +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/README.rst +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/optimization_example.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/starting_values.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/advanced/stepwise.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/district_heating.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/heat_pump.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/basics/rankine.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/NH3.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/NH3_calculations.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/R410A.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/R410A_calculations.py +0 -0
- {tespy-0.8.0.post4 → tespy-0.8.2}/tutorial/heat_pump_exergy/plots.py +0 -0
|
@@ -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
|
|
780
|
+
class definition of your subsystem and at minimum one method:
|
|
781
781
|
|
|
782
|
-
- :code:`
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
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
|
|
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
|
-
...
|
|
840
|
-
...
|
|
841
|
-
...
|
|
842
|
-
...
|
|
843
|
-
...
|
|
844
|
-
...
|
|
845
|
-
...
|
|
846
|
-
...
|
|
847
|
-
...
|
|
848
|
-
...
|
|
849
|
-
... self.
|
|
850
|
-
...
|
|
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
|
|
885
|
-
>>> sg_ls = Connection(sg
|
|
886
|
-
>>> fg_sg = Connection(waste_heat, 'out1', sg
|
|
887
|
-
>>> sg_ch = Connection(sg
|
|
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.
|
|
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.
|
|
905
|
+
>>> sg.get_conn('4').set_attr(x=0.6)
|
|
899
906
|
|
|
900
907
|
>>> # %% component parameters
|
|
901
|
-
>>> sg.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
..
|
|
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 `.
|
|
466
|
-
`solve` method. It will be
|
|
467
|
-
|
|
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 #
|
|
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>`__)
|
|
@@ -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.
|
|
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
|
-
|
|
344
|
-
|
|
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.
|
|
1222
|
-
outl.fluid.val[f] = 0.
|
|
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.
|
|
1228
|
-
outl.fluid.val[f] = 0.
|
|
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:
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
)
|