Exergy Workflows

OpenPinch exposes exergy targeting as an advanced post-processing workflow on top of an already solved thermal target.

Question This Guide Answers

How do I enrich an existing OpenPinch thermal target with exergy metrics and exergetic graph views?

Typical Workflow

  1. solve the base thermal case

  2. choose the target family whose GCC or net-load view you want to interpret

  3. run the exergy workflow on that existing result

  4. inspect the exergy summary fields and exergetic graph payloads together

Python Surface

The main user-facing route is:

problem = PinchProblem("pulp_mill.json")
problem.target()
exergy_target = problem.target.exergy()

problem.target.exergy() does not create a separate target family. It returns the selected existing target after enriching it with:

  • exergy_sources

  • exergy_sinks

  • ETE

  • exergy_req_min

  • exergy_des_min

Base Target Selection

By default, problem.target.exergy() resolves the first compatible existing target family in this order: Total Site -> Indirect Heat Pump -> Direct Heat Pump -> Direct Integration.

To pin one exact family and disable fallback, pass options={"base_target_type": "..."}.

Unlike the main thermal targeting accessors, the exergy workflow expects that the requested target family already exists for the selected zone and state. If it does not, run the corresponding base targeting accessor first.

Typical explicit pattern:

problem.target.indirect_heat_integration(state_id="peak")
ts_exergy = problem.target.exergy(
    state_id="peak",
    options={"base_target_type": "Total Site Target"},
)

Graphs

The exergy workflow also restores two graph accessors:

  • problem.plot.exergetic_grand_composite_curve(...)

  • problem.plot.exergetic_net_load_profiles(...)

Example:

problem.target.direct_heat_integration()
exergy_target = problem.target.exergy(
    options={"base_target_type": "Direct Integration"},
)
gcc_x = problem.plot.exergetic_grand_composite_curve()
nlp_x = problem.plot.exergetic_net_load_profiles()

Interpretation Notes

Read the exergy result after the thermal picture is already understood.

Use this order:

  1. confirm which thermal target family was enriched

  2. inspect exergy_sources and exergy_sinks

  3. inspect exergy_req_min and exergy_des_min

  4. inspect the exergetic GCC and exergetic net-load profiles

Zone and State Scope

The same high-level targeting controls are available here:

  • zone_name=... for one zone in the hierarchy

  • include_subzones=True to enrich a selected subtree

  • state_id=... for one canonical state

When include_subzones=True is used, exergy targeting is applied in post-order so child zones are solved before any site-level exergy enrichment that depends on their existing targets.

Next Steps