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

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 

4 

5@declare_process_block_class("CustomCooler") 

6class CustomCoolerData(HeaterData): 

7 """ 

8 Custom Cooler model that includes inverted deltaP and Heat Added properties. 

9 """ 

10 

11 def build(self, *args, **kwargs): 

12 super().build(*args, **kwargs) 

13 

14 # add deltaP_inverted as a property 

15 add_inverted(self, "heat_duty") 

16 if hasattr(self,"deltaP"): 

17 add_inverted(self, "deltaP") 

18 

19 def initialize_build( 

20 self,*args,**kwargs, 

21 ): 

22 temporarily_fixed_heat_duty = disable_inverted(self, "heat_duty") 

23 

24 temporarily_fixed_delta_p = [] 

25 if hasattr(self,"deltaP"): 

26 temporarily_fixed_delta_p = disable_inverted(self, "deltaP") 

27 

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) 

34 

35 

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 ) 

48 

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 )