Coverage for backend/ahuora-builder/src/ahuora_builder/custom/custom_cooler.py: 93%
24 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
1from idaes.models.unit_models.heater import HeaterData
2from .inverted import add_inverted, enable_inverted, disable_inverted
3from idaes.core import declare_process_block_class
5@declare_process_block_class("CustomCooler")
6class CustomCoolerData(HeaterData):
7 """
8 Custom Cooler model that includes inverted deltaP and Heat Added properties.
9 """
11 def build(self, *args, **kwargs):
12 super().build(*args, **kwargs)
14 # add deltaP_inverted as a property
15 add_inverted(self, "heat_duty")
16 if hasattr(self,"deltaP"):
17 add_inverted(self, "deltaP")
19 def initialize_build(
20 self,*args,**kwargs,
21 ):
22 temporarily_fixed_heat_duty = disable_inverted(self, "heat_duty")
24 temporarily_fixed_delta_p = []
25 if hasattr(self,"deltaP"):
26 temporarily_fixed_delta_p = disable_inverted(self, "deltaP")
28 try:
29 super().initialize_build(*args, **kwargs)
30 finally:
31 enable_inverted(self, "heat_duty", temporarily_fixed_heat_duty)
32 if hasattr(self,"deltaP"):
33 enable_inverted(self, "deltaP", temporarily_fixed_delta_p)
36 @staticmethod
37 def ahuora_metadata():
38 from ahuora_unit_ops.json_config import (
39 JsonAdapterArgConfig,
40 JsonFrontendConfig,
41 JsonGraphicObjectConfig,
42 JsonIdaesAdapterConfig,
43 JsonPortConfig,
44 JsonPropertyConfig,
45 JsonPropertySetGroupConfig,
46 JsonUnitOpConfig,
47 )
49 return JsonUnitOpConfig(
50 key='cooler',
51 objectType='cooler',
52 enumMember='Cooler',
53 displayType='Cooler',
54 displayName='Cooler',
55 categoryPath=['chemical', 'heating_and_cooling'],
56 ports={
57 'inlet': JsonPortConfig(
58 displayName='Inlet',
59 type='inlet',
60 streamType='stream',
61 many=False,
62 default=1,
63 minimum=1,
64 makeStream=True,
65 streamOffset=0.75,
66 streamName='S',
67 ),
68 'outlet': JsonPortConfig(
69 displayName='Outlet',
70 type='outlet',
71 streamType='stream',
72 many=False,
73 default=1,
74 minimum=1,
75 makeStream=True,
76 streamOffset=0.75,
77 streamName='S',
78 ),
79 },
80 propertyPackagePorts={
81 '': ['inlet', 'outlet'],
82 },
83 graphicObject=JsonGraphicObjectConfig(
84 kind='unitop_graphic',
85 ),
86 indexSets=[],
87 properties={
88 'heat_duty_inverted': JsonPropertyConfig(
89 propertySetGroup='default',
90 displayName='Heat Removed',
91 indexSets=None,
92 sumToOne=False,
93 value=None,
94 unit=None,
95 unitType='heatflow',
96 description=None,
97 type='numeric',
98 many=False,
99 default=1,
100 options={},
101 hasTimeIndex=True,
102 ),
103 'deltaP_inverted': JsonPropertyConfig(
104 propertySetGroup='default',
105 displayName='Pressure Drop',
106 indexSets=None,
107 sumToOne=False,
108 value=0,
109 unit=None,
110 unitType='pressure',
111 description=None,
112 type='numeric',
113 many=False,
114 default=1,
115 options={},
116 hasTimeIndex=True,
117 ),
118 },
119 propertySetGroups={
120 'default': JsonPropertySetGroupConfig(
121 type='stateVars',
122 displayName='Properties',
123 stateVars=['heat_duty_inverted', 'deltaP_inverted'],
124 toggle=None,
125 ),
126 },
127 keyProperties=['heat_duty'],
128 splitterFractionName=None,
129 idaesAdapter=JsonIdaesAdapterConfig(
130 constructor='ahuora_builder.custom.custom_cooler.CustomCooler',
131 args={
132 'property_package': JsonAdapterArgConfig(
133 kind='property_package',
134 label=None,
135 ),
136 'has_pressure_change': JsonAdapterArgConfig(
137 kind='constant',
138 value=True,
139 ),
140 'dynamic': JsonAdapterArgConfig(
141 kind='constant',
142 value=False,
143 ),
144 },
145 ports=None,
146 properties=None,
147 ),
148 frontend=JsonFrontendConfig(
149 showInPanel=True,
150 variant=None,
151 ),
152 )