Coverage for backend/django/flowsheetInternals/unitops/config/objects/heat_exchanger_config.py: 100%
4 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
1from common.config_types import *
2from common.config_utils import *
3from ..spec_helpers import *
6heat_exchanger_config: ObjectType = ObjectType(
7 displayType="Heat Exchanger",
8 displayName="Heat Exchanger",
10 ports={
11 "coldInlet": PortType(
12 displayName="Cold Inlet",
13 type="inlet",
14 streamOffset=1,
15 streamName="CS",
16 ),
17 "hotInlet": PortType(
18 displayName="Hot Inlet",
19 type="inlet",
20 streamOffset=1,
21 streamName="HS",
22 ),
23 "coldOutlet": PortType(
24 displayName="Cold Outlet",
25 type="outlet",
26 streamOffset=1,
27 streamName="CS",
28 ),
29 "hotOutlet": PortType(
30 displayName="Hot Outlet",
31 type="outlet",
32 streamOffset=1,
33 streamName="HS",
34 ),
35 },
36 propertyPackagePorts={
37 "Cold Side": ["coldInlet", "coldOutlet"],
38 "Hot Side": ["hotInlet", "hotOutlet"]
39 },
40 graphicObject=unitop_graphic(),
41 properties=PropertiesType({
42 "overall_heat_transfer_coefficient": PropertyType(
43 displayName="Heat Transfer Coefficient (U)",
44 type="numeric",
45 unitType="heat_transf_coeff",
46 ),
47 "area": PropertyType(
48 displayName="Heat Exchange Area",
49 type="numeric",
50 unitType="area",
51 hasTimeIndex=False,
52 ),
53 "heat_duty": PropertyType(
54 displayName="Heat Load",
55 type="numeric",
56 unitType="heatflow",
57 ),
58 "cold_side.deltaP_inverted": PropertyType(
59 displayName="Pressure Drop (Cold Side)",
60 type="numeric",
61 unitType="pressure",
62 value=0.0,
63 ),
64 "hot_side.deltaP_inverted": PropertyType(
65 displayName="Pressure Drop (Hot Side)",
66 type="numeric",
67 unitType="pressure",
68 value=0.0,
69 ),
70 }),
71 propertySetGroups={
72 "default": {
73 "type": "stateVars",
74 "displayName": "Properties",
75 "stateVars": ("overall_heat_transfer_coefficient", "area", "hot_side.deltaP_inverted", "cold_side.deltaP_inverted",)
76 }
77 },
78 keyProperties=[
79 "heat_duty",
80 "logMeanTemperatureDifference",
81 "minimumTemperatureDifference"
82 ],
83 idaes_adapter=UnitModelAdapter(
84 args=ArgAdapter({
85 "hot_side": DictArgAdapter({
86 "property_package": PropertyPackageAdapter("Hot Side"),
87 "has_pressure_change": ConstantArg(True),
88 }),
89 "cold_side": DictArgAdapter({
90 "property_package": PropertyPackageAdapter("Cold Side"),
91 "has_pressure_change": ConstantArg(True),
92 }),
93 "dynamic": ConstantArg(False),
94 }),
95 ports=PortListAdapter({
96 "cold_side_inlet": PortAdapter("coldInlet", inlet=True),
97 "hot_side_inlet": PortAdapter("hotInlet", inlet=True),
98 "cold_side_outlet": PortAdapter("coldOutlet"),
99 "hot_side_outlet": PortAdapter("hotOutlet"),
100 })
101 ),
102)
104# Take a look at the DWSIM calculation mode properties, it's got a pretty good description of what parameters
105# are required for what calculation modes:
106# - we still need to specify efficiency parameters, but not sure if those are supporeted by idaes or not.