open-fdd 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. open_fdd/air_handling_unit/faults/__init__.py +301 -301
  2. open_fdd/air_handling_unit/reports/__init__.py +94 -0
  3. open_fdd/air_handling_unit/reports/fault_report.py +1 -0
  4. open_fdd/tests/ahu/test_ahu_fc16.py +190 -0
  5. {open_fdd-0.1.5.dist-info → open_fdd-0.1.6.dist-info}/METADATA +4 -3
  6. open_fdd-0.1.6.dist-info/RECORD +31 -0
  7. {open_fdd-0.1.5.dist-info → open_fdd-0.1.6.dist-info}/WHEEL +1 -1
  8. open_fdd/air_handling_unit/faults/fault_condition_eight.py +0 -127
  9. open_fdd/air_handling_unit/faults/fault_condition_eleven.py +0 -126
  10. open_fdd/air_handling_unit/faults/fault_condition_fifteen.py +0 -152
  11. open_fdd/air_handling_unit/faults/fault_condition_five.py +0 -123
  12. open_fdd/air_handling_unit/faults/fault_condition_four.py +0 -168
  13. open_fdd/air_handling_unit/faults/fault_condition_fourteen.py +0 -143
  14. open_fdd/air_handling_unit/faults/fault_condition_nine.py +0 -128
  15. open_fdd/air_handling_unit/faults/fault_condition_one.py +0 -112
  16. open_fdd/air_handling_unit/faults/fault_condition_seven.py +0 -114
  17. open_fdd/air_handling_unit/faults/fault_condition_six.py +0 -181
  18. open_fdd/air_handling_unit/faults/fault_condition_ten.py +0 -123
  19. open_fdd/air_handling_unit/faults/fault_condition_thirteen.py +0 -127
  20. open_fdd/air_handling_unit/faults/fault_condition_three.py +0 -113
  21. open_fdd/air_handling_unit/faults/fault_condition_twelve.py +0 -132
  22. open_fdd/air_handling_unit/faults/fault_condition_two.py +0 -113
  23. open_fdd/air_handling_unit/images/ahu1_fc1_2024-06_1.jpg +0 -0
  24. open_fdd/air_handling_unit/images/ahu1_fc1_2024-06_2.jpg +0 -0
  25. open_fdd/air_handling_unit/images/example1.jpg +0 -0
  26. open_fdd/air_handling_unit/images/example2.jpg +0 -0
  27. open_fdd/air_handling_unit/images/fc10_definition.png +0 -0
  28. open_fdd/air_handling_unit/images/fc11_definition.png +0 -0
  29. open_fdd/air_handling_unit/images/fc12_definition.png +0 -0
  30. open_fdd/air_handling_unit/images/fc13_definition.png +0 -0
  31. open_fdd/air_handling_unit/images/fc1_definition.png +0 -0
  32. open_fdd/air_handling_unit/images/fc1_report_screenshot_all.png +0 -0
  33. open_fdd/air_handling_unit/images/fc2_definition.png +0 -0
  34. open_fdd/air_handling_unit/images/fc3_definition.png +0 -0
  35. open_fdd/air_handling_unit/images/fc4_definition.png +0 -0
  36. open_fdd/air_handling_unit/images/fc5_definition.png +0 -0
  37. open_fdd/air_handling_unit/images/fc6_definition.png +0 -0
  38. open_fdd/air_handling_unit/images/fc7_definition.png +0 -0
  39. open_fdd/air_handling_unit/images/fc8_definition.png +0 -0
  40. open_fdd/air_handling_unit/images/fc9_definition.png +0 -0
  41. open_fdd/air_handling_unit/images/latex_generator.py +0 -175
  42. open_fdd/air_handling_unit/images/params.docx +0 -0
  43. open_fdd/air_handling_unit/images/params.pdf +0 -0
  44. open_fdd/air_handling_unit/images/plot_for_repo.png +0 -0
  45. open_fdd/air_handling_unit/reports/base_report.py +0 -47
  46. open_fdd/air_handling_unit/reports/report_fc1.py +0 -115
  47. open_fdd/air_handling_unit/reports/report_fc10.py +0 -126
  48. open_fdd/air_handling_unit/reports/report_fc11.py +0 -128
  49. open_fdd/air_handling_unit/reports/report_fc12.py +0 -126
  50. open_fdd/air_handling_unit/reports/report_fc13.py +0 -126
  51. open_fdd/air_handling_unit/reports/report_fc14.py +0 -124
  52. open_fdd/air_handling_unit/reports/report_fc15.py +0 -124
  53. open_fdd/air_handling_unit/reports/report_fc2.py +0 -119
  54. open_fdd/air_handling_unit/reports/report_fc3.py +0 -119
  55. open_fdd/air_handling_unit/reports/report_fc4.py +0 -148
  56. open_fdd/air_handling_unit/reports/report_fc5.py +0 -132
  57. open_fdd/air_handling_unit/reports/report_fc6.py +0 -156
  58. open_fdd/air_handling_unit/reports/report_fc7.py +0 -126
  59. open_fdd/air_handling_unit/reports/report_fc8.py +0 -118
  60. open_fdd/air_handling_unit/reports/report_fc9.py +0 -120
  61. open_fdd-0.1.5.dist-info/RECORD +0 -83
  62. {open_fdd-0.1.5.dist-info → open_fdd-0.1.6.dist-info}/LICENSE +0 -0
  63. {open_fdd-0.1.5.dist-info → open_fdd-0.1.6.dist-info}/top_level.txt +0 -0
@@ -1,118 +0,0 @@
1
- import matplotlib.pyplot as plt
2
- import pandas as pd
3
- import sys
4
-
5
-
6
- class FaultCodeEightReport:
7
- """Class provides the definitions for Fault Condition 8 Report."""
8
-
9
- def __init__(self, config):
10
- self.sat_col = config["SAT_COL"]
11
- self.mat_col = config["MAT_COL"]
12
- self.supply_vfd_speed_col = config["SUPPLY_VFD_SPEED_COL"]
13
- self.economizer_sig_col = config["ECONOMIZER_SIG_COL"]
14
-
15
- def create_plot(self, df: pd.DataFrame, output_col: str = None):
16
- if output_col is None:
17
- output_col = "fc8_flag"
18
-
19
- fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(25, 8))
20
- fig.suptitle("Fault Conditions 8 Plot")
21
-
22
- ax1.plot(df.index, df[self.sat_col], label="SAT")
23
- ax1.plot(df.index, df[self.mat_col], label="MAT")
24
- ax1.legend(loc="best")
25
- ax1.set_ylabel("AHU Temps °F")
26
-
27
- ax2.plot(df.index, df[output_col], label="Fault", color="k")
28
- ax2.set_xlabel("Date")
29
- ax2.set_ylabel("Fault Flags")
30
- ax2.legend(loc="best")
31
-
32
- plt.tight_layout(rect=[0, 0.03, 1, 0.95])
33
- plt.show()
34
- plt.close()
35
-
36
- def summarize_fault_times(self, df: pd.DataFrame, output_col: str = None) -> dict:
37
- if output_col is None:
38
- output_col = "fc8_flag"
39
-
40
- delta = df.index.to_series().diff()
41
- summary = {
42
- "total_days": round(delta.sum() / pd.Timedelta(days=1), 2),
43
- "total_hours": round(delta.sum() / pd.Timedelta(hours=1)),
44
- "hours_fc8_mode": round(
45
- (delta * df[output_col]).sum() / pd.Timedelta(hours=1)
46
- ),
47
- "percent_true": round(df[output_col].mean() * 100, 2),
48
- "percent_false": round((100 - round(df[output_col].mean() * 100, 2)), 2),
49
- "flag_true_mat": round(
50
- df[self.mat_col].where(df[output_col] == 1).mean(), 2
51
- ),
52
- "flag_true_sat": round(
53
- df[self.sat_col].where(df[output_col] == 1).mean(), 2
54
- ),
55
- "hours_motor_runtime": round(
56
- (delta * df[self.supply_vfd_speed_col].gt(0.01).astype(int)).sum()
57
- / pd.Timedelta(hours=1),
58
- 2,
59
- ),
60
- }
61
-
62
- return summary
63
-
64
- def create_hist_plot(self, df: pd.DataFrame, output_col: str = None):
65
- if output_col is None:
66
- output_col = "fc8_flag"
67
-
68
- df["hour_of_the_day_fc8"] = df.index.hour.where(df[output_col] == 1)
69
-
70
- fig, ax = plt.subplots(tight_layout=True, figsize=(25, 8))
71
- ax.hist(df.hour_of_the_day_fc8.dropna())
72
- ax.set_xlabel("24 Hour Number in Day")
73
- ax.set_ylabel("Frequency")
74
- ax.set_title(f"Hour-Of-Day When Fault Flag 8 is TRUE")
75
- plt.show()
76
- plt.close()
77
-
78
- def display_report_in_ipython(self, df: pd.DataFrame, output_col: str = "fc8_flag"):
79
- print(
80
- "Fault Condition 8: Supply air temperature and mix air temperature should be approximately equal in economizer mode"
81
- )
82
-
83
- self.create_plot(df, output_col)
84
-
85
- summary = self.summarize_fault_times(df, output_col)
86
-
87
- for key, value in summary.items():
88
- formatted_key = key.replace("_", " ")
89
- print(f"{formatted_key}: {value}")
90
- sys.stdout.flush()
91
-
92
- fc_max_faults_found = df[output_col].max()
93
- print("Fault Flag Count: ", fc_max_faults_found)
94
- sys.stdout.flush()
95
-
96
- if fc_max_faults_found != 0:
97
- self.create_hist_plot(df, output_col)
98
-
99
- flag_true_mat = round(df[self.mat_col].where(df[output_col] == 1).mean(), 2)
100
- print("Mix Air Temp Mean When In Fault: ", flag_true_mat)
101
-
102
- flag_true_sat = round(df[self.sat_col].where(df[output_col] == 1).mean(), 2)
103
- print("Supply Air Temp Mean When In Fault: ", flag_true_sat)
104
-
105
- sys.stdout.flush()
106
-
107
- if summary["percent_true"] > 5.0:
108
- print(
109
- "The percent True metric that represents the amount of time for when the fault flag is True is high indicating temperature sensor error or the heating/cooling coils are leaking, potentially creating simultaneous heating/cooling which can be an energy penalty for running the AHU in this fashion. Verify AHU mix/supply temperature sensor calibration in addition to a potential mechanical issue of a leaking valve. A leaking valve can be troubleshot by isolating the valve closed by manual shut-off valves where piping lines enter the AHU coil and then verifying any changes in the AHU discharge air temperature."
110
- )
111
- else:
112
- print(
113
- "The percent True metric that represents the amount of time for when the fault flag is True is low, indicating the AHU components are within calibration for this fault equation."
114
- )
115
-
116
- else:
117
- print("NO FAULTS FOUND - Skipping time-of-day Histogram plot")
118
- sys.stdout.flush()
@@ -1,120 +0,0 @@
1
- import matplotlib.pyplot as plt
2
- import pandas as pd
3
- import sys
4
-
5
-
6
- class FaultCodeNineReport:
7
- """Class provides the definitions for Fault Condition 9 Report."""
8
-
9
- def __init__(self, config):
10
- self.sat_setpoint_col = config["SAT_SETPOINT_COL"]
11
- self.oat_col = config["OAT_COL"]
12
- self.supply_vfd_speed_col = config["SUPPLY_VFD_SPEED_COL"]
13
- self.economizer_sig_col = config["ECONOMIZER_SIG_COL"]
14
-
15
- def create_plot(self, df: pd.DataFrame, output_col: str = None):
16
- if output_col is None:
17
- output_col = "fc9_flag"
18
-
19
- fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(25, 8))
20
- fig.suptitle("Fault Conditions 9 Plot")
21
-
22
- ax1.plot(df.index, df[self.sat_setpoint_col], label="SATSP")
23
- ax1.plot(df.index, df[self.oat_col], label="OAT")
24
- ax1.legend(loc="best")
25
- ax1.set_ylabel("AHU Temps °F")
26
-
27
- ax2.plot(df.index, df[output_col], label="Fault", color="k")
28
- ax2.set_xlabel("Date")
29
- ax2.set_ylabel("Fault Flags")
30
- ax2.legend(loc="best")
31
-
32
- plt.tight_layout(rect=[0, 0.03, 1, 0.95])
33
- plt.show()
34
- plt.close()
35
-
36
- def summarize_fault_times(self, df: pd.DataFrame, output_col: str = None) -> dict:
37
- if output_col is None:
38
- output_col = "fc9_flag"
39
-
40
- delta = df.index.to_series().diff()
41
- summary = {
42
- "total_days": round(delta.sum() / pd.Timedelta(days=1), 2),
43
- "total_hours": round(delta.sum() / pd.Timedelta(hours=1)),
44
- "hours_fc9_mode": round(
45
- (delta * df[output_col]).sum() / pd.Timedelta(hours=1)
46
- ),
47
- "percent_true": round(df[output_col].mean() * 100, 2),
48
- "percent_false": round((100 - round(df[output_col].mean() * 100, 2)), 2),
49
- "flag_true_oat": round(
50
- df[self.oat_col].where(df[output_col] == 1).mean(), 2
51
- ),
52
- "flag_true_satsp": round(
53
- df[self.sat_setpoint_col].where(df[output_col] == 1).mean(), 2
54
- ),
55
- "hours_motor_runtime": round(
56
- (delta * df[self.supply_vfd_speed_col].gt(0.01).astype(int)).sum()
57
- / pd.Timedelta(hours=1),
58
- 2,
59
- ),
60
- }
61
-
62
- return summary
63
-
64
- def create_hist_plot(self, df: pd.DataFrame, output_col: str = None):
65
- if output_col is None:
66
- output_col = "fc9_flag"
67
-
68
- df["hour_of_the_day_fc9"] = df.index.hour.where(df[output_col] == 1)
69
-
70
- fig, ax = plt.subplots(tight_layout=True, figsize=(25, 8))
71
- ax.hist(df.hour_of_the_day_fc9.dropna())
72
- ax.set_xlabel("24 Hour Number in Day")
73
- ax.set_ylabel("Frequency")
74
- ax.set_title(f"Hour-Of-Day When Fault Flag 9 is TRUE")
75
- plt.show()
76
- plt.close()
77
-
78
- def display_report_in_ipython(self, df: pd.DataFrame, output_col: str = "fc9_flag"):
79
- print(
80
- "Fault Condition 9: Outside air temperature too high in free cooling without additional mechanical cooling in economizer mode"
81
- )
82
-
83
- self.create_plot(df, output_col)
84
-
85
- summary = self.summarize_fault_times(df, output_col)
86
-
87
- for key, value in summary.items():
88
- formatted_key = key.replace("_", " ")
89
- print(f"{formatted_key}: {value}")
90
- sys.stdout.flush()
91
-
92
- fc_max_faults_found = df[output_col].max()
93
- print("Fault Flag Count: ", fc_max_faults_found)
94
- sys.stdout.flush()
95
-
96
- if fc_max_faults_found != 0:
97
- self.create_hist_plot(df, output_col)
98
-
99
- flag_true_oat = round(df[self.oat_col].where(df[output_col] == 1).mean(), 2)
100
- print("Outside Air Temp Mean When In Fault: ", flag_true_oat)
101
-
102
- flag_true_satsp = round(
103
- df[self.sat_setpoint_col].where(df[output_col] == 1).mean(), 2
104
- )
105
- print("Supply Air Temp Setpoint Mean When In Fault: ", flag_true_satsp)
106
-
107
- sys.stdout.flush()
108
-
109
- if summary["percent_true"] > 5.0:
110
- print(
111
- "The percent True metric that represents the amount of time for when the fault flag is True is high indicating temperature sensor error or the cooling valve is stuck open or leaking causing overcooling. Trouble shoot a leaking valve by isolating the coil with manual shutoff valves and verify a change in AHU discharge air temperature with the AHU running."
112
- )
113
- else:
114
- print(
115
- "The percent True metric that represents the amount of time for when the fault flag is True is low indicating the AHU components are within calibration for this fault equation."
116
- )
117
-
118
- else:
119
- print("NO FAULTS FOUND - Skipping time-of-day Histogram plot")
120
- sys.stdout.flush()
@@ -1,83 +0,0 @@
1
- open_fdd/__init__.py,sha256=iGj8QTOZJUTE4nNnBiCHXEXsOdV6YvKcGiLrnOusJCg,1411
2
- open_fdd/air_handling_unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- open_fdd/air_handling_unit/faults/__init__.py,sha256=Rq7AfQ7sRWneAfqr4v8R7OwNmLifmmfOH1UaA2iZbRM,90291
4
- open_fdd/air_handling_unit/faults/fault_condition.py,sha256=UN2_k2AZWMDoO4oPAnJW3fvhkHlMkLXZikzU2lXAOuQ,2364
5
- open_fdd/air_handling_unit/faults/fault_condition_eight.py,sha256=nfL66m5toN0fvIjUu02T7AErsTV0rR8kVIErfaqIeic,4603
6
- open_fdd/air_handling_unit/faults/fault_condition_eleven.py,sha256=AgQnxP46-KGI-4Hk55gKfPGhauoxpFppdmrrBv-1kto,4699
7
- open_fdd/air_handling_unit/faults/fault_condition_fifteen.py,sha256=QCn_9FF1p7tqm7qdkyIDOqozP988IeuHzOx0LsmyHAU,5841
8
- open_fdd/air_handling_unit/faults/fault_condition_five.py,sha256=Dy6HlvCnM5-BN0LvFLoQFk8BHyKSxBWMCFC_6Yd0K4I,4574
9
- open_fdd/air_handling_unit/faults/fault_condition_four.py,sha256=os-LIW1Hc1xl6Auna6IJXJFd6CUNboVFwG_A3VWFC8o,6710
10
- open_fdd/air_handling_unit/faults/fault_condition_fourteen.py,sha256=AzcKiK2h3bV5vkbd8ZvqqoaOD372I2CYZHRL1wjHDTo,5480
11
- open_fdd/air_handling_unit/faults/fault_condition_nine.py,sha256=atXgzyHuy0Rf4RAA2EAM_qTnlgERtIEDoXvJzulJ08E,4780
12
- open_fdd/air_handling_unit/faults/fault_condition_one.py,sha256=V2hnTb6FdGTR1Z0IowsR2UdUVzI1nD5EFnaSIADBaEc,4240
13
- open_fdd/air_handling_unit/faults/fault_condition_seven.py,sha256=SKczqGhIkDgyaT5NyyalF5lrc9WFISOQfWh7-PdmVO8,4232
14
- open_fdd/air_handling_unit/faults/fault_condition_six.py,sha256=Ot0SZJIAShs9U5e495n5hvtWvelF4Ycx0SDDsQUviQE,7045
15
- open_fdd/air_handling_unit/faults/fault_condition_ten.py,sha256=Q-EBH6_IuVHespev7NTF2QxbYTFOV8GmfvKVpDj2gQY,4581
16
- open_fdd/air_handling_unit/faults/fault_condition_thirteen.py,sha256=NL_q7fEbTqGoYmvOZocLxHgbc6iCfoBMUvCRNpPVpgs,4718
17
- open_fdd/air_handling_unit/faults/fault_condition_three.py,sha256=cmcIA_QEUjiz5FIYlx9CqnBp7phU4ZopRBkfZpzqGQg,4309
18
- open_fdd/air_handling_unit/faults/fault_condition_twelve.py,sha256=QujZrpRPp-58BL4iTJWmexSrp0WiisInKJIHKe9luyk,5066
19
- open_fdd/air_handling_unit/faults/fault_condition_two.py,sha256=h_psJQHPYBkc8hAK-CbdFx7ySbaJv_XQFS_GxvfM9KE,4305
20
- open_fdd/air_handling_unit/faults/helper_utils.py,sha256=-Bd1mMMLnFmpNPe7eC23kMJxPtazsIyz5P7W6Yqlu4w,12580
21
- open_fdd/air_handling_unit/faults/shared_utils.py,sha256=Kp8ZUBhtrh-jU2Q_bbXTpnbVVUAyacp41tDMknY50i4,2252
22
- open_fdd/air_handling_unit/images/ahu1_fc1_2024-06_1.jpg,sha256=3dHZyEm_nS4p7-acZprIpZyuU65_IJKk2sixJBf7Ans,444019
23
- open_fdd/air_handling_unit/images/ahu1_fc1_2024-06_2.jpg,sha256=kjWCDhRkpxiigl9VJnnMBlETA_FWHZtAn9oqKuQl1M4,392583
24
- open_fdd/air_handling_unit/images/example1.jpg,sha256=3dHZyEm_nS4p7-acZprIpZyuU65_IJKk2sixJBf7Ans,444019
25
- open_fdd/air_handling_unit/images/example2.jpg,sha256=kjWCDhRkpxiigl9VJnnMBlETA_FWHZtAn9oqKuQl1M4,392583
26
- open_fdd/air_handling_unit/images/fc10_definition.png,sha256=wE4tg3BjUDnEfeM1XOYTHAcnl4yUJnkoUrVOipr4Ivo,16603
27
- open_fdd/air_handling_unit/images/fc11_definition.png,sha256=Vp_mZxgPGsB0KsEeazwaI3NcgwvLDBBWzutUh8c2Kcg,14534
28
- open_fdd/air_handling_unit/images/fc12_definition.png,sha256=CZUukCTaQ2DlDRMk-EdZyqXr_Wne-EKUYuYn_ly82Hc,14254
29
- open_fdd/air_handling_unit/images/fc13_definition.png,sha256=qcYnTHtnUwfAaLYFVebcbYtjVSgxSQKqZTi_VwHymgo,16733
30
- open_fdd/air_handling_unit/images/fc1_definition.png,sha256=htGaVcaem2CI47bSq_Y6mBdmwbpUHeaQW2oTm4EREbc,8164
31
- open_fdd/air_handling_unit/images/fc1_report_screenshot_all.png,sha256=U3IhLL2nJ3k-UF-smPd1FPAGnznBxsrbBkj8B3ZtwyM,184473
32
- open_fdd/air_handling_unit/images/fc2_definition.png,sha256=qnFzSrXsj_mwhTq4Zi-NT7kwCTz91HKPGHsh77ov5Fs,9124
33
- open_fdd/air_handling_unit/images/fc3_definition.png,sha256=AE0cecNhMiHHsMBQAPWF-cMnLAWK1A27SASeoNoe76w,9118
34
- open_fdd/air_handling_unit/images/fc4_definition.png,sha256=66NztKUPH0R3nhNgVnxzN3UgMLhE-6mUKxhnwtkRN90,4245
35
- open_fdd/air_handling_unit/images/fc5_definition.png,sha256=xQMxDnStccm8f0KIFL-BpG3yQv4fnl4M9t_9VMVOpWg,14634
36
- open_fdd/air_handling_unit/images/fc6_definition.png,sha256=MPV8QcnSnRRNq465dee5Q0Uw5e2ZV_WoIFBVAvYLCVc,20777
37
- open_fdd/air_handling_unit/images/fc7_definition.png,sha256=O6bsh0kG4sHeWCDSZuBHjDZ3xDFesSY42yifqhWXMMo,15849
38
- open_fdd/air_handling_unit/images/fc8_definition.png,sha256=Cce-_mmZA0QbsbWETwOCr45CJiJLR1vHPQNmB9dQZ6g,19702
39
- open_fdd/air_handling_unit/images/fc9_definition.png,sha256=9r7QPViCQ0LItI4NdJsD7VfZjdA4RUZuh08BzxVUnfU,14913
40
- open_fdd/air_handling_unit/images/latex_generator.py,sha256=9kotpUZjQrECXiB8ewcvYBLMEVvy9-r1-HnbpPb-Xr0,5976
41
- open_fdd/air_handling_unit/images/params.docx,sha256=_mh1G-avi-lsssaW_qH33vGVaYwS_XL_IOQweYpQvAo,157634
42
- open_fdd/air_handling_unit/images/params.pdf,sha256=2rmxh2yxuB7x3Q2Jyq0MnFoTJAQqxwIoxGvzzJirWkU,175678
43
- open_fdd/air_handling_unit/images/plot_for_repo.png,sha256=u4OIzZUyGk6G4o1AusEERUU6aen4vVX-CGPl14P3qkA,651969
44
- open_fdd/air_handling_unit/reports/__init__.py,sha256=tIU1N_3cH7A6tWeoAIsVLLFUlnizIOiMCgMVDeoFGL4,36276
45
- open_fdd/air_handling_unit/reports/base_report.py,sha256=oZX6_qXUjuPEHKpF89DhgpPbAkhHeoo3jpDL30u4njs,1778
46
- open_fdd/air_handling_unit/reports/fault_report.py,sha256=v2yki8kFWsGmHdgY15kbH_mS-8KFGAqtEuHenFn0Ils,1408
47
- open_fdd/air_handling_unit/reports/report_fc1.py,sha256=ZlfTP4Pzv0l0hBHRWmTFMXKWPnuMNW38mHPPD8QW460,4565
48
- open_fdd/air_handling_unit/reports/report_fc10.py,sha256=Dgh0L4A-D-VYqTfVcMwhxdw67R-31c24ydtrpJ-gLyU,5179
49
- open_fdd/air_handling_unit/reports/report_fc11.py,sha256=fLb004y59i_2LegfGlpgEpEzQadqsCWrJPNLZ6obgqg,5197
50
- open_fdd/air_handling_unit/reports/report_fc12.py,sha256=MVjoHul32K0hJCP4WL9bLd6g55HMcKLdxzvPN94AlDA,5090
51
- open_fdd/air_handling_unit/reports/report_fc13.py,sha256=YjU6PBJl2ae_2WD2n-GoRGmwj6BtjQFClcCibHgcJmA,5026
52
- open_fdd/air_handling_unit/reports/report_fc14.py,sha256=j_o3X6BFYhW7IBwGZATQ7afgiXlKmUMGbGY7UuSwfD4,4832
53
- open_fdd/air_handling_unit/reports/report_fc15.py,sha256=Rg4NiheUsCmSxv42s7OFKRD7dweGZxtN83I5iDDzNoo,4831
54
- open_fdd/air_handling_unit/reports/report_fc2.py,sha256=ao_2ZeY10BLJ0GEDMMGAuD-8FbHBCGnIvQg9rF6om_U,4840
55
- open_fdd/air_handling_unit/reports/report_fc3.py,sha256=xyGjwYxJU2kveVJHLzAM3T_MLFlUZNQGBUyJ-YTjAsk,4843
56
- open_fdd/air_handling_unit/reports/report_fc4.py,sha256=0PpPwPnzeUZZybad04IslroBoCcIseDGq5it389wx9s,6052
57
- open_fdd/air_handling_unit/reports/report_fc5.py,sha256=welqsYh9TzIfpbdl3i9pvpaDWTsz_rnFbem6lXvz5K0,5699
58
- open_fdd/air_handling_unit/reports/report_fc6.py,sha256=R-2OONOZS1ZFLkUBv0syrZ7XjrR0TSwI1Wu70opTVeM,6042
59
- open_fdd/air_handling_unit/reports/report_fc7.py,sha256=5j9IAEgmjMqSbpQcStCJZB46TmRPtVSDKnGUutSeVxs,5327
60
- open_fdd/air_handling_unit/reports/report_fc8.py,sha256=3jZPq2piethtqly1faSc8hk0aFCbQe2Y0RMNv3DFzpk,5057
61
- open_fdd/air_handling_unit/reports/report_fc9.py,sha256=hJbYMYnwptVSEI2NVdnV3Ads-h_9Hl4oFD1HDDLZWHQ,4909
62
- open_fdd/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- open_fdd/tests/ahu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- open_fdd/tests/ahu/test_ahu_fc1.py,sha256=ojpdYGZtuIYAKnZ4W9KhxQuoyXnGEI5N7braQXh3kAw,5437
65
- open_fdd/tests/ahu/test_ahu_fc10.py,sha256=niYL7fi6OlgP0wnF8hNh9A07PLzHiRZkyRkrA1zoL2s,4577
66
- open_fdd/tests/ahu/test_ahu_fc11.py,sha256=mdXlGiEMPkPfshf3NN_nJavL74e4HCmkJQMu86aZc6Q,4723
67
- open_fdd/tests/ahu/test_ahu_fc12.py,sha256=5T-XcM6xm9KHrc121uPGC9JWLCYehrAYk0KcbmGgYjw,5848
68
- open_fdd/tests/ahu/test_ahu_fc13.py,sha256=vJlSy4e2WV9hx02P0SiJ75I1DWL2lZ0p7-AWlw97pks,5725
69
- open_fdd/tests/ahu/test_ahu_fc14.py,sha256=MU0LKqIuoQ_dJ0Kij8_A0YyimCMvUwL6IlMwpQhDbqI,8052
70
- open_fdd/tests/ahu/test_ahu_fc15.py,sha256=SIolJ9vnJwnpKfRW2ALugYWySuIiZ9_repWP9fdb5H4,7661
71
- open_fdd/tests/ahu/test_ahu_fc2.py,sha256=CjmO_WUyaSHs17ifCCew3GBJ43nYG55uGL0vHDZpAq8,4736
72
- open_fdd/tests/ahu/test_ahu_fc3.py,sha256=NB6pOXDS-R4P0LNoRN8ItAqhhLnGnGuAHZha32Qw-hE,4658
73
- open_fdd/tests/ahu/test_ahu_fc4.py,sha256=vV8jEnFuNGLfhCoTVz29RsIcoDpDOMWg722G0aBEXaE,6304
74
- open_fdd/tests/ahu/test_ahu_fc5.py,sha256=TpSQTBIF591Q3mVaBeJ6HyqPWhVHmD_gSZNEIFT6yyg,6538
75
- open_fdd/tests/ahu/test_ahu_fc6.py,sha256=66dwv0EBU_ujZK-J9Ki5a3fnXlk17nOwmtKDiQOHdbM,10351
76
- open_fdd/tests/ahu/test_ahu_fc7.py,sha256=sABbw2m7WlAXbsqfDD323vfEfg606ThI0QzQyB-OjFo,2469
77
- open_fdd/tests/ahu/test_ahu_fc8.py,sha256=UZy6BP2PgV1FROUPqMORTx8YnT5ZvqVDhut_Ar81494,4663
78
- open_fdd/tests/ahu/test_ahu_fc9.py,sha256=b-eIzhNzjZUjVNsP0JAHkOgZu-BtDuPeNnblVVm-jU8,4796
79
- open_fdd-0.1.5.dist-info/LICENSE,sha256=eghao_GGx_0gB2Sll3x2vV29knONEzUQKrkaXpX1F7w,1087
80
- open_fdd-0.1.5.dist-info/METADATA,sha256=rQBnlFoVuYXgFtGbTJ7VKWiSI62DHpTK2TOzA3-XqmI,6925
81
- open_fdd-0.1.5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
82
- open_fdd-0.1.5.dist-info/top_level.txt,sha256=Q7sB6UB2d8Ch1v_xIsTiNegmgcCXPkwkrxK3ug6VEOs,9
83
- open_fdd-0.1.5.dist-info/RECORD,,