HRSG pinch #601
Unanswered
PabloMBarral
asked this question in
Q&A
HRSG pinch
#601
Replies: 1 comment
-
Hi @PabloMBarral, thank you for reaching out with this suggestion, it is absolutely possible to implement this with the def get_conn_list(heat_exchangers):
hot_side_conns = [
c for heat_exchanger in heat_exchangers
for c in (heat_exchanger.outl[0], heat_exchanger.inl[0])
]
# switched order for counter current flow
cold_side_conns = [
c for heat_exchanger in heat_exchangers
for c in (heat_exchanger.inl[1], heat_exchanger.outl[1])
]
return hot_side_conns, cold_side_conns
def pinch_ude(ude):
pinch = ude.params["pinch"]
heat_exchangers = ude.params["heat_exchanger_list"]
hot_side_conns, cold_side_conns = get_conn_list(heat_exchangers)
ttd_list = []
for hsc, csc in zip(hot_side_conns, cold_side_conns):
ttd_list += [hsc.calc_T() - csc.calc_T()]
return pinch - min(ttd_list)
def pinch_ude_deriv(ude):
heat_exchangers = ude.params["heat_exchanger_list"]
hot_side_conns, cold_side_conns = get_conn_list(heat_exchangers)
for c in hot_side_conns + cold_side_conns:
if c.p.is_var:
ude.jacobian[c.p.J_col] = ude.numeric_deriv('p', c)
if c.h.is_var:
ude.jacobian[c.h.J_col] = ude.numeric_deriv('h', c)
from tespy.tools import UserDefinedEquation
ude = UserDefinedEquation(
"minimum pinch equation",
func=pinch_ude,
deriv=pinch_ude_deriv,
conns=[],
params={"pinch": 5, "heat_exchanger_list": [preheater, evaporator]}
)
nw.add_ude(ude) If the heat exchangers are sharing the same connections (i.e. preheater cold side outlet = evaporator cold side inlet and evaporator hot side outlet = preheater hot side inlet) you can make some simplifications, which will result in less temperature values to be calculated. def get_conn_list(heat_exchangers):
hot_side_conns = [heat_exchangers[0].outl[0]] + [heat_exchanger.inl[0] for heat_exchanger in heat_exchangers]
cold_side_conns = [heat_exchanger.inl[1] for heat_exchanger in heat_exchangers] + [heat_exchangers[-1].outl[1]]
return hot_side_conns, cold_side_conns Best Francesco |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi, community! I hope you're doing well.
When performing a thermal balance on an HRSG, the usual approach is to define two parameters, pinch and approach, which characterize the boiler without the need to specify the UA for the evaporator or economizer.
The issue arises when there is heavy supplemental firing, as the pinch point location can shift from the evaporator outlet to the stack.
One way to address this is by performing two consecutive and separate balances, plotting the T-Q diagram, and ensuring that the gas curve does not intersect the steam/water curve. However, I was wondering if this approach could be improved by redefining the pinch point not as a single temperature difference between the gas and steam, but rather as the minimum of two differences (between gas and water/steam at two different locations, the two mentioned above).
I'm not entirely sure if such a minimum function can be implemented using this:
https://tespy.readthedocs.io/en/main/modules/ude.html#tespy-ude-label
Any insight would be appreciated!
Regards,
Beta Was this translation helpful? Give feedback.
All reactions