Skip to content

Commit

Permalink
Add outdoor air damper verification for configuration with return fan…
Browse files Browse the repository at this point in the history
… with airflow tracking.
  • Loading branch information
lymereJ committed Jun 21, 2023
1 parent f46aed4 commit 91d65a7
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class G36OutdoorAirDamperPositionForReliefDamperOrFanConfig(RuleCheckBase):
"economizer_high_limit_reached",
]

def return_air_damper(self, data):
def outdoor_air_damper(self, data):
if data["heating_output"] > 0:
if abs(data["oa_p"] - data["min_oa_p"]) < data["oa_p_tol"]:
return True
Expand Down Expand Up @@ -95,7 +95,7 @@ def return_air_damper(self, data):
return "Untested"

def verify(self):
self.result = self.df.apply(lambda d: self.return_air_damper(d), axis=1)
self.result = self.df.apply(lambda d: self.outdoor_air_damper(d), axis=1)

def check_bool(self):
if len(self.result[self.result == False] > 0):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
"""
G36 2021
### Description
Section 5.16.2.3
### Verification Logic
```
if abs(oa_p - max_oa_p) < oa_p_tol
pass
else
fail
end
```
"""

import pandas as pd
from checklib import RuleCheckBase
import numpy as np


class G36OutdoorAirDamperPositionForReturnFanAirflowTracking(RuleCheckBase):
points = [
"oa_p",
"max_oa_p",
"oa_p_tol",
]

def outdoor_air_damper(self, data):
if abs(data["oa_p"] - data["max_oa_p"]) < data["oa_p_tol"]:
return True
else:
return False

def verify(self):
self.result = self.df.apply(lambda d: self.outdoor_air_damper(d), axis=1)

def check_bool(self):
if len(self.result[self.result == False] > 0):
return False
else:
return True
2 changes: 2 additions & 0 deletions src/library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from .G36SimultaneousHeatingCooling import *
from .G36ReturnAirDamperPositionForReliefDamperOrFanConfig import *
from .G36OutdoorAirDamperPositionForReliefDamperOrFanConfig import *
from .G36OutdoorAirDamperPositionForReturnFanAirflowTracking import *

__all__ = [
"AutomaticOADamperControl",
Expand All @@ -35,4 +36,5 @@
"G36SimultaneousHeatingCooling",
"G36ReturnAirDamperPositionForReliefDamperOrFanConfig",
"G36OutdoorAirDamperPositionForReliefDamperOrFanConfig",
"G36OutdoorAirDamperPositionForReturnFanAirflowTracking",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import unittest, sys

sys.path.append("./src")
from lib_unit_test_runner import *
from library import *

import pandas as pd
import numpy as np


class TestG36OutdoorAirDamperPositionForReliefDamperOrFanConfig(unittest.TestCase):
def test_return_air_damper_positiong(self):
points = [
"oa_p",
"max_oa_p",
"oa_p_tol",
]
data = [
[0.1, 1, 0.05], # False
[0.98, 1, 0.05], # True
]

df = pd.DataFrame(data, columns=points)

verification_obj = run_test_verification_with_data(
"G36OutdoorAirDamperPositionForReturnFanAirflowTracking", df
)

results = pd.Series(list(verification_obj.result))
expected_results = pd.Series([False, True])
self.assertTrue(results.equals(expected_results))

binary_result = verification_obj.check_bool()
self.assertFalse(binary_result)

0 comments on commit 91d65a7

Please sign in to comment.