Skip to content

Commit

Permalink
Add simultaneous heating and cooling G36 verification.
Browse files Browse the repository at this point in the history
  • Loading branch information
lymereJ committed Jun 21, 2023
1 parent 1a66427 commit 7ed198d
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/library/G36SimultaneousHeatingCooling.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""
G36 2021
### Description
Section 5.16.2.3
### Verification logic
```python
if heating_output > 0 and cooling_output > 0
fail
else
pass
end
```
"""
import pandas as pd
from checklib import RuleCheckBase
import numpy as np


class G36SimultaneousHeatingCooling(RuleCheckBase):
points = ["heating_output", "cooling_output"]

def simultaneous_heating_and_cooling(self, data):
if data["heating_output"] > 0 and data["cooling_output"]:
return False
else:
return True

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

def check_obool(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 @@ -11,6 +11,7 @@
from .ventilation_fan_controls import *
from .wlhp_loop_heat_rejection_controls import *
from .supply_air_temp_reset import *
from .G36SimultaneousHeatingCooling import *

__all__ = [
"AutomaticOADamperControl",
Expand All @@ -29,4 +30,5 @@
"VentilationFanControl",
"WLHPLoopHeatRejectionControl",
"SupplyAirTempReset",
"G36SimultaneousHeatingCooling",
]
29 changes: 29 additions & 0 deletions tests/TestG36SimultaneousHeatingCooling.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import unittest, sys
import datetime

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

import json
import pandas as pd
import numpy as np


class TestG36SimultaneousHeatingCooling(unittest.TestCase):
def test_heating_cooling(self):
points = ["heating_output", "cooling_output"]
data = [[1000, 0], [1000, 1000], [0, 1000]]

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

verification_obj = run_test_verification_with_data(
"G36SimultaneousHeatingCooling", df
)

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

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

0 comments on commit 7ed198d

Please sign in to comment.