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

1from common.config_types import * 

2from common.config_utils import * 

3from ..spec_helpers import * 

4 

5 

6heat_exchanger_config: ObjectType = ObjectType( 

7 displayType="Heat Exchanger", 

8 displayName="Heat Exchanger", 

9 

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) 

103 

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.