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
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
1from __future__ import annotations
3from typing import List, TYPE_CHECKING
4from .enums import *
5if TYPE_CHECKING:
6 from .schema import *
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
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
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
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
52 # CF_SELECTED: bool = True
53 # PF_SELECTED: bool = False
54 # SHELL_AND_TUBE: bool = False
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
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
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
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
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)
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
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
129 # Turbine options
130 turbine_options = options.turbine
131 self._set_turbine_parameters(turbine_options)
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
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)