Coverage for backend/pinch_service/OpenPinch/src/lib/config.py: 85%

122 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1from __future__ import annotations 

2 

3from typing import List, TYPE_CHECKING 

4from .enums import * 

5if TYPE_CHECKING: 

6 from .schema import * 

7 

8 

9"""Global parameters.""" 

10C_to_K: float = 273.15 # degrees 

11ZERO: float = 0.000001 

12T_CRIT: float = 373.9 # C 

13ACTIVATE_TIMING = True 

14LOG_TIMING = False 

15 

16class Configuration: 

17 TOP_ZONE_NAME: str = "Site" 

18 TOP_ZONE_IDENTIFIER = ZoneType.S.value 

19 # TIT_BUTTON_SELECTED: bool = False 

20 # TS_BUTTON_SELECTED: bool = False 

21 TURBINE_WORK_BUTTON: bool = False 

22 AREA_BUTTON: bool = False 

23 ENERGY_RETROFIT_BUTTON: bool = False 

24 EXERGY_BUTTON: bool = False 

25 # PRINT_PTS: bool = False 

26 PLOT_GRAPHS: bool = True 

27 DECIMAL_PLACES: int = 2 

28 

29 CC_CHECKBOX: bool = True 

30 SCC_CHECKBOX: bool = True 

31 BCC_CHECKBOX: bool = False 

32 GCC_CHECKBOX: bool = True 

33 GCC_NP_CHECKBOX: bool = True 

34 GCCU_CHECKBOX: bool = False 

35 LGCC_CHECKBOX: bool = False 

36 TSC_CHECKBOX: bool = False 

37 ERC_CHECKBOX: bool = False 

38 NLC_CHECKBOX: bool = False 

39 MAX_GRAPHS: int = 128 

40 

41 T_TURBINE_BOX: float = 450 

42 P_TURBINE_BOX: float = 90 

43 MIN_EFF: float = 0.1 

44 ELECTRICITY_PRICE: float = 100 

45 LOAD: float = 1 

46 MECH_EFF: float = 1 

47 COMBOBOX: str = "Medina-Flores et al. (2010)" 

48 ABOVE_PINCH_CHECKBOX: bool = False 

49 BELOW_PINCH_CHECKBOX: bool = False 

50 CONDESATE_FLASH_CORRECTION: bool = False 

51 

52 # CF_SELECTED: bool = True 

53 # PF_SELECTED: bool = False 

54 # SHELL_AND_TUBE: bool = False 

55 

56 HHT_OPTION: bool = True 

57 VHT_OPTION: bool = False 

58 AUTOREORDER: bool = False 

59 AUTOREORDER_1: bool = False 

60 AUTOREORDER_2: bool = False 

61 AUTOREORDER_3: bool = False 

62 AUTOREORDER_4: bool = False 

63 GCC_REG_FULL_POCKET: bool = True 

64 GCC_VERT_CUT_KINK_OPTION: bool = False 

65 SET_MIN_DH_THRES: bool = False 

66 SET_MIN_TH_AREA: bool = False 

67 AUTOMATED_RETROFIT_TARGETING_BUTTON: bool = False 

68 THRESHOLD: float = 0 

69 AREA_THRESHOLD: float = 0 

70 

71 Q_MIN: float = 400 

72 NUM_HX: float = 6 

73 AREA_RATIO: float = 0 

74 PRICE_UTILITIES: float = 220 

75 MAX_RBBRIDGE: float = 100000 

76 RECORD: bool = True 

77 PARETO: bool = False 

78 QUANTIFY_AREA: bool = False 

79 ACCELERATION: bool = True 

80 HEURISTICS: bool = True 

81 

82 FC: float = 0 

83 VC: float = 10000 

84 EXP: float = 0.7 

85 DISCOUNT_RATE: float = 0.07 

86 SERV_LIFE: float = 10 

87 ANNUAL_OP_TIME: float = 8300 

88 

89 DTCONT: float = 5 

90 DTGLIDE: float = 0.01 

91 HTC: float = 1.0 

92 UTILITY_PRICE: float = 40 

93 TEMP_REF: float = 15 

94 PRESSURE_REF: float = 101 

95 AHT_BUTTON_SELECTED: bool = False 

96 OVERRIDEDT_BUTTON_SELECTED: bool = False 

97 

98 def __init__(self, options: Options = None, top_zone_name: str = "Site", top_zone_identifier: str = ZoneType.S.value): 

99 self.TOP_ZONE_NAME = top_zone_name 

100 self.TOP_ZONE_IDENTIFIER = top_zone_identifier 

101 if options: 

102 self.set_parameters(options) 

103 

104 def set_parameters(self, options: Options) -> None: 

105 # Main properties 

106 main_props = options.main 

107 self.TIT_BUTTON_SELECTED = "PROP_MOP_0" in main_props 

108 self.TS_BUTTON_SELECTED = "PROP_MOP_1" in main_props 

109 self.TURBINE_WORK_BUTTON = "PROP_MOP_2" in main_props 

110 self.AREA_BUTTON = "PROP_MOP_3" in main_props 

111 self.ENERGY_RETROFIT_BUTTON = "PROP_MOP_4" in main_props 

112 self.EXERGY_BUTTON = "PROP_MOP_5" in main_props 

113 self.PRINT_PTS = "PROP_MOP_6" in main_props 

114 self.PLOT_GRAPHS = True 

115 

116 # Graph properties 

117 if self.PLOT_GRAPHS: 117 ↛ 130line 117 didn't jump to line 130 because the condition on line 117 was always true

118 self.CC_CHECKBOX = True 

119 self.SCC_CHECKBOX = True 

120 self.BCC_CHECKBOX = True 

121 self.GCC_CHECKBOX = True 

122 self.GCC_NP_CHECKBOX = True 

123 self.GCCU_CHECKBOX = True 

124 self.LGCC_CHECKBOX = True 

125 self.TSC_CHECKBOX = True 

126 self.ERC_CHECKBOX = True 

127 self.NLC_CHECKBOX = True 

128 

129 # Turbine options 

130 turbine_options = options.turbine 

131 self._set_turbine_parameters(turbine_options) 

132 

133 def _set_turbine_parameters(self, turbine_options: List["TurbineOption"]) -> None: 

134 def get_turbine_value(key: str, default=None): 

135 for option in turbine_options: 

136 if option.key == key: # Access the key attribute directly 

137 return option.value if option.value is not None else default 

138 return default 

139 

140 if self.TURBINE_WORK_BUTTON: 140 ↛ 141line 140 didn't jump to line 141 because the condition on line 140 was never true

141 self.T_TURBINE_BOX = get_turbine_value("PROP_TOP_0", self.T_TURBINE_BOX) 

142 self.P_TURBINE_BOX = get_turbine_value("PROP_TOP_1", self.P_TURBINE_BOX) 

143 self.MIN_EFF = get_turbine_value("PROP_TOP_2", self.MIN_EFF) 

144 self.ELECTRICITY_PRICE = get_turbine_value("PROP_TOP_3", self.ELECTRICITY_PRICE) 

145 self.LOAD = get_turbine_value("PROP_TOP_4", self.LOAD) 

146 self.MECH_EFF = get_turbine_value("PROP_TOP_5", self.MECH_EFF) 

147 self.COMBOBOX = get_turbine_value("PROP_TOP_6", self.COMBOBOX) 

148 self.ABOVE_PINCH_CHECKBOX = get_turbine_value("PROP_TOP_7", self.ABOVE_PINCH_CHECKBOX) 

149 self.BELOW_PINCH_CHECKBOX = get_turbine_value("PROP_TOP_8", self.BELOW_PINCH_CHECKBOX) 

150 self.CONDESATE_FLASH_CORRECTION = get_turbine_value("PROP_TOP_9", self.CONDESATE_FLASH_CORRECTION)