From 75281471314bc868438068e4786c4db3f6a9254f Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 13:25:07 +0100 Subject: [PATCH 01/37] Add method to get KPIs disaggregated. --- kpis/kpi_calculator.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index a86cbf8e4..1defea9a8 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -215,6 +215,37 @@ def get_core_kpis(self, price_scenario='Constant'): return ckpi + def get_kpis_disaggregated(self, price_scenario='Constant'): + '''Return the core KPIs of a test case disaggregated and + with absolute values (not normalized by area or zone) + to see the contributions of each element to each KPI. + Parameters + ---------- + price_scenario : str, optional + Price scenario for cost kpi calculation. + 'Constant' or 'Dynamic' or 'HighlyDynamic'. + Default is 'Constant'. + Returns + ------- + dkpi = dict + Dictionary with the core KPIs disaggregated and + with absolute values. + ''' + + _ = self.get_core_kpis(price_scenario=price_scenario) + + dkpi = OrderedDict() + dkpi['tdis'] = self.tdis_dict + dkpi['idis'] = self.idis_dict + dkpi['ener'] = self.ener_dict + dkpi['cost'] = self.cost_dict + dkpi['emis'] = self.emis_dict + dkpi['pele'] = self.pele_dict + dkpi['pgas'] = self.pgas_dict + dkpi['pdih'] = self.pdih_dict + + return dkpi + def get_thermal_discomfort(self): '''The thermal discomfort is the integral of the deviation of the temperature with respect to the predefined comfort From 050da8caad41e677f4098f7e882820fbb44c432f Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 13:33:56 +0100 Subject: [PATCH 02/37] Interface to get_kpis_disaggregated at testcase.py --- testcase.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/testcase.py b/testcase.py index 20ee4f183..b12b6b3e3 100644 --- a/testcase.py +++ b/testcase.py @@ -789,6 +789,50 @@ def get_kpis(self): return status, message, payload + def get_kpis_disaggregated(self): + '''Returns KPIs disaggregated and with absolute values. + Requires standard sensor signals. + + Parameters + ---------- + None + + Returns + ------- + status: int + Indicates whether a request for querying the KPIs has been completed. + If 200, the KPIs were successfully queried. + If 500, an internal error occured. + message: str + Includes detailed debugging information + payload : dict + Dictionary containing KPIs disaggregated and with absolute values. + {:} + Returns None if error during calculation. + + ''' + + status = 200 + message = "Queried disaggregated KPIs successfully." + try: + # Set correct price scenario for cost + if self.scenario['electricity_price'] == 'constant': + price_scenario = 'Constant' + elif self.scenario['electricity_price'] == 'dynamic': + price_scenario = 'Dynamic' + elif self.scenario['electricity_price'] == 'highly_dynamic': + price_scenario = 'HighlyDynamic' + # Calculate the disaggregated kpis + payload = self.cal.get_kpis_disaggregated(price_scenario=price_scenario) + except: + payload = None + status = 500 + message = "Failed to query disaggregated KPIs: {}".format(traceback.format_exc()) + logging.error(message) + logging.info(message) + + return status, message, payload + def get_forecast_points(self): '''Returns a dictionary of available forecast points and their meta-data. From 34eda9982053f45263e4d702ed45b1ead99125c1 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 13:43:15 +0100 Subject: [PATCH 03/37] Implement Rest API call. --- restapi.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/restapi.py b/restapi.py index 50f6655c1..5f89f1643 100644 --- a/restapi.py +++ b/restapi.py @@ -191,6 +191,13 @@ def get(self): status, message, payload = case.get_kpis() return construct(status, message, payload) +class KPI_Disaggregated(Resource): + '''Interface to test case KPIs disaggregated and with absolute values.''' + + def get(self): + '''GET request to receive KPIs disaggregated and with absolute values.''' + status, message, payload = case.get_kpis_disaggregated() + return construct(status, message, payload) class Forecast(Resource): '''Interface to test case forecast data.''' @@ -267,6 +274,7 @@ def post(self): api.add_resource(Forecast_Points, '/forecast_points') api.add_resource(Results, '/results') api.add_resource(KPI, '/kpi') +api.add_resource(KPI_Disaggregated, '/kpi_disaggregated') api.add_resource(Forecast, '/forecast') api.add_resource(Scenario, '/scenario') api.add_resource(Name, '/name') From 8f7f31db94efa9af0e547ad2e3012c2156d562f5 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 15:34:13 +0000 Subject: [PATCH 04/37] Add check for getting all core KPIs. --- testing/test_kpis.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/testing/test_kpis.py b/testing/test_kpis.py index 1fac92732..dc32adbbc 100644 --- a/testing/test_kpis.py +++ b/testing/test_kpis.py @@ -262,6 +262,21 @@ def test_change_scenario_with_warmup(self): # Check results self._perform_test(self.case.cost_tot, self.case.cost_dict, 'cost_warmup_highly_dynamic') + def test_get_kpis(self): + '''Check for getting all core KPIs. + + ''' + + # Reset kpi calculator + self.cal.initialize() + + # Calculate all core KPIs + ckpis = self.cal.get_core_kpis() + + # Check results + ref_filepath = os.path.join(utilities.get_root_path(), 'testing', 'references', 'kpis', 'all_ckpis_{0}.csv'.format(self.name)) + self.compare_ref_json(ckpis, ref_filepath) + def _perform_test(self, tot, dictionary, label): '''Common function for performing the tests. From 973c9da0757008658d5cdb0eca2672425071fd20 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 15:34:39 +0000 Subject: [PATCH 05/37] Add check for getting all KPIs disaggregated. --- testing/test_kpis.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/testing/test_kpis.py b/testing/test_kpis.py index dc32adbbc..d8695f103 100644 --- a/testing/test_kpis.py +++ b/testing/test_kpis.py @@ -277,6 +277,21 @@ def test_get_kpis(self): ref_filepath = os.path.join(utilities.get_root_path(), 'testing', 'references', 'kpis', 'all_ckpis_{0}.csv'.format(self.name)) self.compare_ref_json(ckpis, ref_filepath) + def test_get_kpis_disaggregated(self): + '''Check for getting all core KPIs in a disaggregated format. + + ''' + + # Reset kpi calculator + self.cal.initialize() + + # Calculate all core KPIs + dkpis = self.cal.get_kpis_disaggregated() + + # Check disaggregated results + ref_filepath = os.path.join(utilities.get_root_path(), 'testing', 'references', 'kpis', 'all_dkpis_{0}.csv'.format(self.name)) + self.compare_ref_json(dkpis, ref_filepath) + def _perform_test(self, tot, dictionary, label): '''Common function for performing the tests. From c5218683a84ddddeda3f12b56d53fb3891d62535 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 15:35:12 +0000 Subject: [PATCH 06/37] Add reference results for new tests. --- testing/references/kpis/all_ckpis_MultiZone.csv | 1 + testing/references/kpis/all_ckpis_SingleZone.csv | 1 + testing/references/kpis/all_dkpis_MultiZone.csv | 1 + testing/references/kpis/all_dkpis_SingleZone.csv | 1 + 4 files changed, 4 insertions(+) create mode 100644 testing/references/kpis/all_ckpis_MultiZone.csv create mode 100644 testing/references/kpis/all_ckpis_SingleZone.csv create mode 100644 testing/references/kpis/all_dkpis_MultiZone.csv create mode 100644 testing/references/kpis/all_dkpis_SingleZone.csv diff --git a/testing/references/kpis/all_ckpis_MultiZone.csv b/testing/references/kpis/all_ckpis_MultiZone.csv new file mode 100644 index 000000000..ad66cae11 --- /dev/null +++ b/testing/references/kpis/all_ckpis_MultiZone.csv @@ -0,0 +1 @@ +{"tdis_tot": 10.866116056527034, "idis_tot": 515.1749482042578, "ener_tot": 2.1905882633882148, "cost_tot": 0.15334117843717504, "emis_tot": 0.438117652677643, "pele_tot": null, "pgas_tot": 0.10097014409038282, "pdih_tot": null, "time_rat": null} \ No newline at end of file diff --git a/testing/references/kpis/all_ckpis_SingleZone.csv b/testing/references/kpis/all_ckpis_SingleZone.csv new file mode 100644 index 000000000..440199b2f --- /dev/null +++ b/testing/references/kpis/all_ckpis_SingleZone.csv @@ -0,0 +1 @@ +{"tdis_tot": 6.044280949869132, "idis_tot": 365.6911873402533, "ener_tot": 3.06717186709752, "cost_tot": 0.613434373419504, "emis_tot": 1.53358593354876, "pele_tot": 0.11118336992336572, "pgas_tot": null, "pdih_tot": null, "time_rat": null} \ No newline at end of file diff --git a/testing/references/kpis/all_dkpis_MultiZone.csv b/testing/references/kpis/all_dkpis_MultiZone.csv new file mode 100644 index 000000000..71634c74e --- /dev/null +++ b/testing/references/kpis/all_dkpis_MultiZone.csv @@ -0,0 +1 @@ +{"tdis": {"TRooAirSou_dTlower_y": 6.861372185606556, "TRooAirSou_dTupper_y": 3.771997257241026, "TRooAirNor_dTlower_y": 8.2055849580535, "TRooAirNor_dTupper_y": 2.893277712152985}, "idis": {"CO2RooAirSou_dIupper_y": 1016.9440316099603, "CO2RooAirNor_dIupper_y": 13.40586479855533}, "ener": {"PHeaNor_y": 22.33656655950071, "PHeaSou_y": 21.475198708263587}, "cost": {"PHeaNor_y": 1.5635596591650494, "PHeaSou_y": 1.503263909578451}, "emis": {"PHeaNor_y": 4.467313311900141, "PHeaSou_y": 4.295039741652719}, "pele": null, "pgas": {"PHeaNor_y": 0.052890074450167406, "PHeaSou_y": 0.048080069640217556}, "pdih": null} \ No newline at end of file diff --git a/testing/references/kpis/all_dkpis_SingleZone.csv b/testing/references/kpis/all_dkpis_SingleZone.csv new file mode 100644 index 000000000..0a9dbcbc0 --- /dev/null +++ b/testing/references/kpis/all_dkpis_SingleZone.csv @@ -0,0 +1 @@ +{"tdis": {"TRooAir_dTlower_y": 5.174733104689715, "TRooAir_dTupper_y": 0.8695478451794166}, "idis": {"CO2RooAir_dIupper_y": 365.6911873402533}, "ener": {"PCoo_y": 2.5790120993548213, "PFan_y": 1.2243750151212227, "PHea_y": 143.38535826054658, "PPum_y": 0.035504245658337034}, "cost": {"PCoo_y": 0.5158024198709642, "PFan_y": 0.2448750030242446, "PHea_y": 28.677071652109316, "PPum_y": 0.007100849131667407}, "emis": {"PCoo_y": 1.2895060496774107, "PFan_y": 0.6121875075606114, "PHea_y": 71.69267913027329, "PPum_y": 0.017752122829168517}, "pele": {"PCoo_y": 0.0, "PFan_y": 0.00010899903943058726, "PHea_y": 0.11107437088393521, "PPum_y": 0.0}, "pgas": null, "pdih": null} \ No newline at end of file From f032705eaa2547ccdb666f79669595abc1d7534f Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 15:52:12 +0000 Subject: [PATCH 07/37] Calculate integral separately not to add up when computing by source. If called multiple times, xxxx_dict_by_source used to increase even when the test case is not moving forward because it was calculated from xxxx_dict instead of using the _get_data_from_last_index method. --- kpis/kpi_calculator.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index 1defea9a8..12406bd6f 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -364,11 +364,10 @@ def get_energy(self): if 'Power' in source: for signal in self.case.kpi_json[source]: pow_data = np.array(self._get_data_from_last_index(signal,self.i_last_ener)) - self.ener_dict[signal] += \ - trapz(pow_data, - self._get_data_from_last_index('time',self.i_last_ener))*2.77778e-7 # Convert to kWh - self.ener_dict_by_source[source+'_'+signal] += \ - self.ener_dict[signal] + integral = trapz(pow_data, + self._get_data_from_last_index('time',self.i_last_ener))*2.77778e-7 # Convert to kWh + self.ener_dict[signal] += integral + self.ener_dict_by_source[source+'_'+signal] += integral self.ener_tot = self.ener_tot + self.ener_dict[signal]/self.case._get_area() # Normalize total by floor area # Assign to case @@ -572,11 +571,10 @@ def get_cost(self, scenario='Constant'): # Calculate costs for signal in self.case.kpi_json[source]: pow_data = np.array(self._get_data_from_last_index(signal,self.i_last_cost)) - self.cost_dict[signal] += \ - trapz(np.multiply(source_price_data,pow_data), + integral = trapz(np.multiply(source_price_data,pow_data), self._get_data_from_last_index('time',self.i_last_cost))*factor - self.cost_dict_by_source[source+'_'+signal] += \ - self.cost_dict[signal] + self.cost_dict[signal] += integral + self.cost_dict_by_source[source+'_'+signal] += integral self.cost_tot = self.cost_tot + self.cost_dict[signal]/self.case._get_area() # Normalize total by floor area # Assign to case @@ -616,11 +614,10 @@ def get_emissions(self): ['Emissions'+source]) for signal in self.case.kpi_json[source]: pow_data = np.array(self._get_data_from_last_index(signal,self.i_last_emis)) - self.emis_dict[signal] += \ - trapz(np.multiply(source_emissions_data,pow_data), + integral = trapz(np.multiply(source_emissions_data,pow_data), self._get_data_from_last_index('time',self.i_last_emis))*2.77778e-7 # Convert to kWh - self.emis_dict_by_source[source+'_'+signal] += \ - self.emis_dict[signal] + self.emis_dict[signal] += integral + self.emis_dict_by_source[source+'_'+signal] += integral self.emis_tot = self.emis_tot + self.emis_dict[signal]/self.case._get_area() # Normalize total by floor area # Update last integration index From 08a4dfcea7ed883b841559f642dfd6b18b677b05 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 17:11:49 +0000 Subject: [PATCH 08/37] Normalize peak power only for peak_tot, not for peak_dict. --- kpis/kpi_calculator.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index 12406bd6f..5fdd5c506 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -412,10 +412,10 @@ def get_peak_electricity(self): df_pow_data_all = pd.concat([df_pow_data_all, df_pow_data], axis=1) df_pow_data_all.index = pd.TimedeltaIndex(df_pow_data_all.index, unit='s') df_pow_data_all['total_demand'] = df_pow_data_all.sum(axis=1) - df_pow_data_all = df_pow_data_all.resample('15T').mean()/self.case._get_area()/1000. + df_pow_data_all = df_pow_data_all.resample('15T').mean()/1000. i = df_pow_data_all['total_demand'].idxmax() peak = df_pow_data_all.loc[i,'total_demand'] - self.pele_tot = peak + self.pele_tot = peak/self.case._get_area() # Find contributions to peak by each signal for signal in self.case.kpi_json[source]: self.pele_dict[signal] = df_pow_data_all.loc[i,signal] @@ -459,10 +459,10 @@ def get_peak_gas(self): df_pow_data_all = pd.concat([df_pow_data_all, df_pow_data], axis=1) df_pow_data_all.index = pd.TimedeltaIndex(df_pow_data_all.index, unit='s') df_pow_data_all['total_demand'] = df_pow_data_all.sum(axis=1) - df_pow_data_all = df_pow_data_all.resample('15T').mean()/self.case._get_area()/1000. + df_pow_data_all = df_pow_data_all.resample('15T').mean()/1000. i = df_pow_data_all['total_demand'].idxmax() peak = df_pow_data_all.loc[i,'total_demand'] - self.pgas_tot = peak + self.pgas_tot = peak/self.case._get_area() # Find contributions to peak by each signal for signal in self.case.kpi_json[source]: self.pgas_dict[signal] = df_pow_data_all.loc[i,signal] @@ -506,10 +506,10 @@ def get_peak_district_heating(self): df_pow_data_all = pd.concat([df_pow_data_all, df_pow_data], axis=1) df_pow_data_all.index = pd.TimedeltaIndex(df_pow_data_all.index, unit='s') df_pow_data_all['total_demand'] = df_pow_data_all.sum(axis=1) - df_pow_data_all = df_pow_data_all.resample('15T').mean()/self.case._get_area()/1000. + df_pow_data_all = df_pow_data_all.resample('15T').mean()/1000. i = df_pow_data_all['total_demand'].idxmax() peak = df_pow_data_all.loc[i,'total_demand'] - self.pdih_tot = peak + self.pdih_tot = peak/self.case._get_area() # Find contributions to peak by each signal for signal in self.case.kpi_json[source]: self.pdih_dict[signal] = df_pow_data_all.loc[i,signal] From 995d8429ab864fc21aaf939e454f0f2641a1a88a Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 17:13:07 +0000 Subject: [PATCH 09/37] Update xxxx_dict references due to peak KPIs normalized only at xxxx_tot. Notice that this does not affect to the xxxx_tot results. --- testing/references/kpis/all_ckpis_MultiZone.csv | 2 +- testing/references/kpis/all_ckpis_SingleZone.csv | 2 +- testing/references/kpis/all_dkpis_MultiZone.csv | 2 +- testing/references/kpis/all_dkpis_SingleZone.csv | 2 +- testing/references/kpis/pele_dict_SingleZone.csv | 4 ++-- testing/references/kpis/pgas_dict_MultiZone.csv | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/testing/references/kpis/all_ckpis_MultiZone.csv b/testing/references/kpis/all_ckpis_MultiZone.csv index ad66cae11..0a2794d7e 100644 --- a/testing/references/kpis/all_ckpis_MultiZone.csv +++ b/testing/references/kpis/all_ckpis_MultiZone.csv @@ -1 +1 @@ -{"tdis_tot": 10.866116056527034, "idis_tot": 515.1749482042578, "ener_tot": 2.1905882633882148, "cost_tot": 0.15334117843717504, "emis_tot": 0.438117652677643, "pele_tot": null, "pgas_tot": 0.10097014409038282, "pdih_tot": null, "time_rat": null} \ No newline at end of file +{"tdis_tot": 10.866116056527034, "idis_tot": 515.1749482042578, "ener_tot": 2.1905882633882148, "cost_tot": 0.15334117843717504, "emis_tot": 0.438117652677643, "pele_tot": null, "pgas_tot": 0.10097014409038281, "pdih_tot": null, "time_rat": null} \ No newline at end of file diff --git a/testing/references/kpis/all_ckpis_SingleZone.csv b/testing/references/kpis/all_ckpis_SingleZone.csv index 440199b2f..f15d06a2e 100644 --- a/testing/references/kpis/all_ckpis_SingleZone.csv +++ b/testing/references/kpis/all_ckpis_SingleZone.csv @@ -1 +1 @@ -{"tdis_tot": 6.044280949869132, "idis_tot": 365.6911873402533, "ener_tot": 3.06717186709752, "cost_tot": 0.613434373419504, "emis_tot": 1.53358593354876, "pele_tot": 0.11118336992336572, "pgas_tot": null, "pdih_tot": null, "time_rat": null} \ No newline at end of file +{"tdis_tot": 6.044280949869132, "idis_tot": 365.6911873402533, "ener_tot": 3.06717186709752, "cost_tot": 0.613434373419504, "emis_tot": 1.53358593354876, "pele_tot": 0.11118336992336571, "pgas_tot": null, "pdih_tot": null, "time_rat": null} \ No newline at end of file diff --git a/testing/references/kpis/all_dkpis_MultiZone.csv b/testing/references/kpis/all_dkpis_MultiZone.csv index 71634c74e..90d03775b 100644 --- a/testing/references/kpis/all_dkpis_MultiZone.csv +++ b/testing/references/kpis/all_dkpis_MultiZone.csv @@ -1 +1 @@ -{"tdis": {"TRooAirSou_dTlower_y": 6.861372185606556, "TRooAirSou_dTupper_y": 3.771997257241026, "TRooAirNor_dTlower_y": 8.2055849580535, "TRooAirNor_dTupper_y": 2.893277712152985}, "idis": {"CO2RooAirSou_dIupper_y": 1016.9440316099603, "CO2RooAirNor_dIupper_y": 13.40586479855533}, "ener": {"PHeaNor_y": 22.33656655950071, "PHeaSou_y": 21.475198708263587}, "cost": {"PHeaNor_y": 1.5635596591650494, "PHeaSou_y": 1.503263909578451}, "emis": {"PHeaNor_y": 4.467313311900141, "PHeaSou_y": 4.295039741652719}, "pele": null, "pgas": {"PHeaNor_y": 0.052890074450167406, "PHeaSou_y": 0.048080069640217556}, "pdih": null} \ No newline at end of file +{"tdis": {"TRooAirSou_dTlower_y": 6.861372185606556, "TRooAirSou_dTupper_y": 3.771997257241026, "TRooAirNor_dTlower_y": 8.2055849580535, "TRooAirNor_dTupper_y": 2.893277712152985}, "idis": {"CO2RooAirSou_dIupper_y": 1016.9440316099603, "CO2RooAirNor_dIupper_y": 13.40586479855533}, "ener": {"PHeaNor_y": 22.33656655950071, "PHeaSou_y": 21.475198708263587}, "cost": {"PHeaNor_y": 1.5635596591650494, "PHeaSou_y": 1.503263909578451}, "emis": {"PHeaNor_y": 4.467313311900141, "PHeaSou_y": 4.295039741652719}, "pele": null, "pgas": {"PHeaNor_y": 1.057801489003348, "PHeaSou_y": 0.9616013928043511}, "pdih": null} \ No newline at end of file diff --git a/testing/references/kpis/all_dkpis_SingleZone.csv b/testing/references/kpis/all_dkpis_SingleZone.csv index 0a9dbcbc0..d8524a17c 100644 --- a/testing/references/kpis/all_dkpis_SingleZone.csv +++ b/testing/references/kpis/all_dkpis_SingleZone.csv @@ -1 +1 @@ -{"tdis": {"TRooAir_dTlower_y": 5.174733104689715, "TRooAir_dTupper_y": 0.8695478451794166}, "idis": {"CO2RooAir_dIupper_y": 365.6911873402533}, "ener": {"PCoo_y": 2.5790120993548213, "PFan_y": 1.2243750151212227, "PHea_y": 143.38535826054658, "PPum_y": 0.035504245658337034}, "cost": {"PCoo_y": 0.5158024198709642, "PFan_y": 0.2448750030242446, "PHea_y": 28.677071652109316, "PPum_y": 0.007100849131667407}, "emis": {"PCoo_y": 1.2895060496774107, "PFan_y": 0.6121875075606114, "PHea_y": 71.69267913027329, "PPum_y": 0.017752122829168517}, "pele": {"PCoo_y": 0.0, "PFan_y": 0.00010899903943058726, "PHea_y": 0.11107437088393521, "PPum_y": 0.0}, "pgas": null, "pdih": null} \ No newline at end of file +{"tdis": {"TRooAir_dTlower_y": 5.174733104689715, "TRooAir_dTupper_y": 0.8695478451794166}, "idis": {"CO2RooAir_dIupper_y": 365.6911873402533}, "ener": {"PCoo_y": 2.5790120993548213, "PFan_y": 1.2243750151212227, "PHea_y": 143.38535826054658, "PPum_y": 0.035504245658337034}, "cost": {"PCoo_y": 0.5158024198709642, "PFan_y": 0.2448750030242446, "PHea_y": 28.677071652109316, "PPum_y": 0.007100849131667407}, "emis": {"PCoo_y": 1.2895060496774107, "PFan_y": 0.6121875075606114, "PHea_y": 71.69267913027329, "PPum_y": 0.017752122829168517}, "pele": {"PCoo_y": 0.0, "PFan_y": 0.005231953892668188, "PHea_y": 5.33156980242889, "PPum_y": 0.0}, "pgas": null, "pdih": null} \ No newline at end of file diff --git a/testing/references/kpis/pele_dict_SingleZone.csv b/testing/references/kpis/pele_dict_SingleZone.csv index 3521a3477..38e467ed1 100644 --- a/testing/references/kpis/pele_dict_SingleZone.csv +++ b/testing/references/kpis/pele_dict_SingleZone.csv @@ -1,5 +1,5 @@ keys,value PCoo_y,0.0 -PFan_y,0.000108999039431 -PHea_y,0.111074370884 +PFan_y,0.00523195389267 +PHea_y,5.33156980243 PPum_y,0.0 diff --git a/testing/references/kpis/pgas_dict_MultiZone.csv b/testing/references/kpis/pgas_dict_MultiZone.csv index efdef174c..23a9b4be7 100644 --- a/testing/references/kpis/pgas_dict_MultiZone.csv +++ b/testing/references/kpis/pgas_dict_MultiZone.csv @@ -1,3 +1,3 @@ keys,value -PHeaNor_y,0.0528900744502 -PHeaSou_y,0.0480800696402 +PHeaNor_y,1.057801489 +PHeaSou_y,0.961601392804 From 893ce5d6e5db0bf0fff29fcffde17aaf62dfa45a Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 17:22:57 +0000 Subject: [PATCH 10/37] Describe new method in releasenotes.md. --- releasenotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releasenotes.md b/releasenotes.md index 63efc8f08..693142115 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -9,6 +9,7 @@ Released on xx/xx/xxxx. - Add materials for RLEM23 workshop at ``docs/workshops/RlemWorkshop_20231112``. This is for [#585](https://github.com/ibpsa/project1-boptest/issues/585). - Change JModelica docker container address in ``testing/Dockerfile``. This is for [#590](https://github.com/ibpsa/project1-boptest/issues/590). - Specify the Python version (3.7) used for building the wrapper to execute the example JavaScript controllers in the unit test. This is for [#594](https://github.com/ibpsa/project1-boptest/issues/594). +- Implement method to get disaggregated KPIs with absolute values. This enables to make a more comprehensive analysis of which elements are contributing to each KPI. This is for [#604](https://github.com/ibpsa/project1-boptest/issues/604). ## BOPTEST v0.5.0 From 622ae1918d2c9f2ab69b9ff3d38cba2abc1c3b4f Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Thu, 11 Jan 2024 17:29:19 +0000 Subject: [PATCH 11/37] Add kpi_disaggregated to README.md. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a86e8af93..27ac048bb 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ Example RESTful interaction: | Receive control signal point names (u) and metadata. | GET ``inputs`` | | Receive test result data for the given point names between the start and final time in seconds. | PUT ``results`` with required arguments ``point_names=``, ``start_time=``, ``final_time=``| | Receive test KPIs. | GET ``kpi`` | +| Receive test KPIs disaggregated and in absolute values. | GET ``kpi_disaggregated`` | | Receive test case name. | GET ``name`` | | Receive boundary condition forecast from current communication step for the given point names for the horizon and at the interval in seconds. | PUT ``forecast`` with required arguments ``point_names=``, ``horizon=``, ``interval=``| | Receive boundary condition forecast available point names and metadata. | GET ``forecast_points`` | From f13818a929d34243d7a5fdbd09a05765b35634de Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 12 Jan 2024 17:49:06 +0100 Subject: [PATCH 12/37] Update refs for numerical differences. --- testing/references/bestest_hydronic/submit.json | 2 +- testing/references/testcase3/submit.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/references/bestest_hydronic/submit.json b/testing/references/bestest_hydronic/submit.json index 61bad9e12..bd357424e 100644 --- a/testing/references/bestest_hydronic/submit.json +++ b/testing/references/bestest_hydronic/submit.json @@ -1 +1 @@ -{"dash_url": "https://dashboard.boptest.net//api/results", "payload": {"results": [{"account": {"apiKey": "valid_api_key"}, "boptestVersion": "0.5.0-dev\n", "buildingType": {"uid": "bestest_hydronic"}, "controlStep": "86400.0", "dateRun": "2020-05-17 00:00:00", "forecastParameters": {}, "isShared": true, "kpis": {"cost_tot": 0.4660775943925745, "emis_tot": 1.6291465071977262, "ener_tot": 9.00349952561408, "idis_tot": 0.0, "pdih_tot": null, "pele_tot": 0.00025517153990852024, "pgas_tot": 0.11798036181564837, "tdis_tot": 18.21783776691252, "time_rat": 0}, "scenario": {"electricityPrice": "dynamic", "timePeriod": "peak_heat_day", "weatherForecastUncertainty": "deterministic"}, "tags": ["baseline", "unit_test"], "uid": "1"}]}} +{"dash_url": "https://dashboard.boptest.net//api/results", "payload": {"results": [{"account": {"apiKey": "valid_api_key"}, "boptestVersion": "0.5.0-dev\n", "buildingType": {"uid": "bestest_hydronic"}, "controlStep": "86400.0", "dateRun": "2020-05-17 00:00:00", "forecastParameters": {}, "isShared": true, "kpis": {"cost_tot": 0.4660775943925745, "emis_tot": 1.6291465071977262, "ener_tot": 9.00349952561408, "idis_tot": 0.0, "pdih_tot": null, "pele_tot": 0.0002551715399085203, "pgas_tot": 0.11798036181564837, "tdis_tot": 18.21783776691252, "time_rat": 0}, "scenario": {"electricityPrice": "dynamic", "timePeriod": "peak_heat_day", "weatherForecastUncertainty": "deterministic"}, "tags": ["baseline", "unit_test"], "uid": "1"}]}} \ No newline at end of file diff --git a/testing/references/testcase3/submit.json b/testing/references/testcase3/submit.json index d29cdde99..a89ee4e81 100644 --- a/testing/references/testcase3/submit.json +++ b/testing/references/testcase3/submit.json @@ -1 +1 @@ -{"dash_url": "https://dashboard.boptest.net//api/results", "payload": {"results": [{"account": {"apiKey": "valid_api_key"}, "boptestVersion": "0.5.0-dev\n", "buildingType": {"uid": "testcase3"}, "controlStep": "86400.0", "dateRun": "2020-05-17 00:00:00", "forecastParameters": {}, "isShared": true, "kpis": {"cost_tot": 0.9674593335412667, "emis_tot": 2.7641695244036195, "ener_tot": 13.820847622018096, "idis_tot": 3606.22674562425, "pdih_tot": null, "pele_tot": null, "pgas_tot": 0.12017492256526957, "tdis_tot": 443.7163025810678, "time_rat": 0}, "scenario": {"electricityPrice": "dynamic", "timePeriod": "test_day", "weatherForecastUncertainty": "deterministic"}, "tags": ["baseline", "unit_test"], "uid": "1"}]}} +{"dash_url": "https://dashboard.boptest.net//api/results", "payload": {"results": [{"account": {"apiKey": "valid_api_key"}, "boptestVersion": "0.5.0-dev\n", "buildingType": {"uid": "testcase3"}, "controlStep": "86400.0", "dateRun": "2020-05-17 00:00:00", "forecastParameters": {}, "isShared": true, "kpis": {"cost_tot": 0.9674593335412667, "emis_tot": 2.7641695244036195, "ener_tot": 13.820847622018096, "idis_tot": 3606.22674562425, "pdih_tot": null, "pele_tot": null, "pgas_tot": 0.12017492256526958, "tdis_tot": 443.7163025810678, "time_rat": 0}, "scenario": {"electricityPrice": "dynamic", "timePeriod": "test_day", "weatherForecastUncertainty": "deterministic"}, "tags": ["baseline", "unit_test"], "uid": "1"}]}} \ No newline at end of file From be4913bc0ba2a7fef1429130d84ec221392b23ef Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 13:17:10 -0800 Subject: [PATCH 13/37] Update get_html_IO script to print activate and new total file --- data/get_html_IO.py | 52 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/data/get_html_IO.py b/data/get_html_IO.py index e3af1d2c7..528a755eb 100644 --- a/data/get_html_IO.py +++ b/data/get_html_IO.py @@ -8,9 +8,11 @@ 3. Run this script Outputs: -"inputs.txt": html code documenting the inputs -"measurements.txt": html code documenting the outputs - +"inputs.html": html code documenting the inputs +"measurements.html": html code documenting the outputs +"forecast_points.html" html code documenting the forecasts +"inputs_measurement_forecasts.html" html code documenting inputs,outputs and +forecasts together """ # GENERAL PACKAGE IMPORT @@ -42,22 +44,60 @@ def run(): # -------------------- # Inputs available inputs = requests.get('{0}/inputs'.format(url)).json()['payload'] - with open('inputs.txt', 'w') as f: + with open('inputs.html', 'w') as f: + for i in sorted(inputs.keys()): + if 'activate' not in i: + f.write('
  • \n{0} [{1}] [min={2}, max={3}]: {4}\n
  • \n'.format(i,inputs[i]['Unit'],inputs[i]['Minimum'], inputs[i]['Maximum'], inputs[i]['Description'])) + else: + f.write('
  • \n{0} [1] [min=0, max=1]: Activation signal to overwrite input {1} where 1 activates, 0 deactivates (default value)\n
  • \n'.format(i,i.replace('activate','')+'u')) + + # Measurements available + measurements = requests.get('{0}/measurements'.format(url)).json()['payload'] + with open('measurements.html', 'w') as f: + for i in sorted(measurements.keys()): + if 'activate' not in i: + f.write('
  • \n{0} [{1}] [min={2}, max={3}]: {4}\n
  • \n'.format(i,measurements[i]['Unit'],measurements[i]['Minimum'], measurements[i]['Maximum'], measurements[i]['Description'])) + # Forecasts available + forecast_points = requests.get('{0}/forecast_points'.format(url)).json()['payload'] + with open('forecast_points.html', 'w') as f: + for i in sorted(forecast_points.keys()): + if 'activate' not in i: + f.write('
  • \n{0} [{1}]: {2}\n
  • \n'.format(i,forecast_points[i]['Unit'],forecast_points[i]['Description'])) + # -------------------- + # Create single I/O file + # Inputs available + inputs = requests.get('{0}/inputs'.format(url)).json()['payload'] + with open('inputs_measurements_forecasts.html', 'w') as f: + f.write('

    Model IO\'s

    \n') + f.write('

    Inputs

    \n') + f.write('The model inputs are:\n') + f.write('
      \n') for i in sorted(inputs.keys()): if 'activate' not in i: f.write('
    • \n{0} [{1}] [min={2}, max={3}]: {4}\n
    • \n'.format(i,inputs[i]['Unit'],inputs[i]['Minimum'], inputs[i]['Maximum'], inputs[i]['Description'])) + else: + f.write('
    • \n{0} [1] [min=0, max=1]: Activation signal to overwrite input {1} where 1 activates, 0 deactivates (default value)\n
    • \n'.format(i,i.replace('activate','')+'u')) + f.write('
    \n') # Measurements available measurements = requests.get('{0}/measurements'.format(url)).json()['payload'] - with open('measurements.txt', 'w') as f: + with open('inputs_measurements_forecasts.html', 'a') as f: + f.write('

    Outputs

    \n') + f.write('The model outputs are:\n') + f.write('
      \n') for i in sorted(measurements.keys()): if 'activate' not in i: f.write('
    • \n{0} [{1}] [min={2}, max={3}]: {4}\n
    • \n'.format(i,measurements[i]['Unit'],measurements[i]['Minimum'], measurements[i]['Maximum'], measurements[i]['Description'])) + f.write('
    \n') # Forecasts available forecast_points = requests.get('{0}/forecast_points'.format(url)).json()['payload'] - with open('forecast_points.txt', 'w') as f: + with open('inputs_measurements_forecasts.html', 'a') as f: + f.write('

    Forecasts

    \n') + f.write('The model forecasts are:\n') + f.write('
      \n') for i in sorted(forecast_points.keys()): if 'activate' not in i: f.write('
    • \n{0} [{1}]: {2}\n
    • \n'.format(i,forecast_points[i]['Unit'],forecast_points[i]['Description'])) + f.write('
    \n') # -------------------- if __name__ == "__main__": From c52c2f96058edf9de30bab9689ef05ffcbbf8705 Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 13:25:45 -0800 Subject: [PATCH 14/37] Update testcases documentation --- testcases/bestest_air/doc/index.html | 23 ++- .../BESTESTAir/TestCases/TestCase_Ideal.mo | 22 ++- testcases/bestest_hydronic/doc/index.html | 72 +++++---- .../bestest_hydronic_heat_pump/doc/index.html | 22 ++- .../doc/index.html | 87 ++++++++++ .../TestCases/TestCase.mo | 87 ++++++++++ .../doc/MultiZoneResidentialHydronic.html | 153 +++++++++--------- .../MultiZoneResidentialHydronic/TestCase.mo | 153 +++++++++--------- .../doc/index.html | 32 +++- .../models/OU44Emulator/Documentation.mo | 32 +++- .../twozone_apartment_hydronic/doc/index.html | 18 +++ .../TestCases/ApartmentModelQHTyp.mo | 18 +++ 12 files changed, 514 insertions(+), 205 deletions(-) diff --git a/testcases/bestest_air/doc/index.html b/testcases/bestest_air/doc/index.html index 1e6a218ce..572618d62 100644 --- a/testcases/bestest_air/doc/index.html +++ b/testcases/bestest_air/doc/index.html @@ -263,16 +263,28 @@

    Inputs

    The model inputs are:
    • -fcu_oveTSup_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint +con_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input con_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
    • -fcu_oveFan_u [1] [min=0.0, max=1.0]: Fan control signal as air mass flow rate normalized to the design air mass flow rate +con_oveTSetCoo_u [K] [min=296.15, max=303.15]: Zone temperature setpoint for cooling +
    • +
    • +con_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input con_oveTSetHea_u where 1 activates, 0 deactivates (default value)
    • con_oveTSetHea_u [K] [min=288.15, max=296.15]: Zone temperature setpoint for heating
    • -con_oveTSetCoo_u [K] [min=296.15, max=303.15]: Zone temperature setpoint for cooling +fcu_oveFan_activate [1] [min=0, max=1]: Activation signal to overwrite input fcu_oveFan_u where 1 activates, 0 deactivates (default value) +
    • +
    • +fcu_oveFan_u [1] [min=0.0, max=1.0]: Fan control signal as air mass flow rate normalized to the design air mass flow rate +
    • +
    • +fcu_oveTSup_activate [1] [min=0, max=1]: Activation signal to overwrite input fcu_oveTSup_u where 1 activates, 0 deactivates (default value) +
    • +
    • +fcu_oveTSup_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint

    Outputs

    @@ -367,9 +379,14 @@

    Outputs

  • zon_weaSta_reaWeaWinDir_y [rad] [min=None, max=None]: Wind direction measurement +
  • +
  • +zon_weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement +
  • Forecasts

    The model forecasts are: +
    • EmissionsElectricPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh of electricity
    • diff --git a/testcases/bestest_air/models/BESTESTAir/TestCases/TestCase_Ideal.mo b/testcases/bestest_air/models/BESTESTAir/TestCases/TestCase_Ideal.mo index 134fcd316..ea1ca4e43 100644 --- a/testcases/bestest_air/models/BESTESTAir/TestCases/TestCase_Ideal.mo +++ b/testcases/bestest_air/models/BESTESTAir/TestCases/TestCase_Ideal.mo @@ -291,16 +291,28 @@ temperature setpoint. The model inputs are:
      • -fcu_oveTSup_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint +con_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input con_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
      • -fcu_oveFan_u [1] [min=0.0, max=1.0]: Fan control signal as air mass flow rate normalized to the design air mass flow rate +con_oveTSetCoo_u [K] [min=296.15, max=303.15]: Zone temperature setpoint for cooling +
      • +
      • +con_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input con_oveTSetHea_u where 1 activates, 0 deactivates (default value)
      • con_oveTSetHea_u [K] [min=288.15, max=296.15]: Zone temperature setpoint for heating
      • -con_oveTSetCoo_u [K] [min=296.15, max=303.15]: Zone temperature setpoint for cooling +fcu_oveFan_activate [1] [min=0, max=1]: Activation signal to overwrite input fcu_oveFan_u where 1 activates, 0 deactivates (default value) +
      • +
      • +fcu_oveFan_u [1] [min=0.0, max=1.0]: Fan control signal as air mass flow rate normalized to the design air mass flow rate +
      • +
      • +fcu_oveTSup_activate [1] [min=0, max=1]: Activation signal to overwrite input fcu_oveTSup_u where 1 activates, 0 deactivates (default value) +
      • +
      • +fcu_oveTSup_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint

      Outputs

      @@ -395,6 +407,10 @@ The model outputs are:
    • zon_weaSta_reaWeaWinDir_y [rad] [min=None, max=None]: Wind direction measurement +
    • +
    • +zon_weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement +

    Forecasts

    The model forecasts are: diff --git a/testcases/bestest_hydronic/doc/index.html b/testcases/bestest_hydronic/doc/index.html index 5b8dbd40b..808088960 100644 --- a/testcases/bestest_hydronic/doc/index.html +++ b/testcases/bestest_hydronic/doc/index.html @@ -103,108 +103,120 @@

    Rule-based or local-loop controllers (if included)

    Model IO's

    Inputs

    -

    The model inputs are:

    +The model inputs are:
    • -oveTSetHea_u [K] [min=288.15, max=296.15]: Zone operative temperature setpoint for heating +ovePum_activate [1] [min=0, max=1]: Activation signal to overwrite input ovePum_u where 1 activates, 0 deactivates (default value) +
    • +
    • +ovePum_u [1] [min=0.0, max=1.0]: Integer signal to control the stage of the pump either on or off +
    • +
    • +oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetCoo_u where 1 activates, 0 deactivates (default value)
    • oveTSetCoo_u [K] [min=296.15, max=303.15]: Zone operative temperature setpoint for cooling
    • -oveTSetSup_u [K] [min=293.15, max=353.15]: Supply temperature setpoint of the heater +oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetHea_u where 1 activates, 0 deactivates (default value)
    • -ovePum_u [1] [min=0.0, max=1.0]: Integer signal to control the stage of the pump either on or off +oveTSetHea_u [K] [min=288.15, max=296.15]: Zone operative temperature setpoint for heating +
    • +
    • +oveTSetSup_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetSup_u where 1 activates, 0 deactivates (default value) +
    • +
    • +oveTSetSup_u [K] [min=293.15, max=353.15]: Supply temperature setpoint of the heater

    Outputs

    -

    The model outputs are:

    +The model outputs are:
    • -reaQHea_y [W] [min=None, max=None]: Heating thermal power +reaCO2RooAir_y [ppm] [min=None, max=None]: CO2 concentration in the zone
    • reaPPum_y [W] [min=None, max=None]: Pump electrical power
    • -reaCO2RooAir_y [ppm] [min=None, max=None]: CO2 concentration in the zone +reaQHea_y [W] [min=None, max=None]: Heating thermal power
    • reaTRoo_y [K] [min=None, max=None]: Operative zone temperature
    • -weaSta_reaWeaPAtm_y [Pa] [min=None, max=None]: Atmospheric pressure measurement +weaSta_reaWeaCeiHei_y [m] [min=None, max=None]: Cloud cover ceiling height measurement
    • -weaSta_reaWeaHGloHor_y [W/m2] [min=None, max=None]: Global horizontal solar irradiation measurement +weaSta_reaWeaCloTim_y [s] [min=None, max=None]: Day number with units of seconds
    • -weaSta_reaWeaNOpa_y [1] [min=None, max=None]: Opaque sky cover measurement +weaSta_reaWeaHDifHor_y [W/m2] [min=None, max=None]: Horizontal diffuse solar radiation measurement
    • -weaSta_reaWeaTBlaSky_y [K] [min=None, max=None]: Black-body sky temperature measurement +weaSta_reaWeaHDirNor_y [W/m2] [min=None, max=None]: Direct normal radiation measurement
    • -weaSta_reaWeaNTot_y [1] [min=None, max=None]: Sky cover measurement +weaSta_reaWeaHGloHor_y [W/m2] [min=None, max=None]: Global horizontal solar irradiation measurement
    • -weaSta_reaWeaSolAlt_y [rad] [min=None, max=None]: Solar altitude angle measurement +weaSta_reaWeaHHorIR_y [W/m2] [min=None, max=None]: Horizontal infrared irradiation measurement
    • -weaSta_reaWeaSolZen_y [rad] [min=None, max=None]: Solar zenith angle measurement +weaSta_reaWeaLat_y [rad] [min=None, max=None]: Latitude of the location
    • -weaSta_reaWeaHHorIR_y [W/m2] [min=None, max=None]: Horizontal infrared irradiation measurement +weaSta_reaWeaLon_y [rad] [min=None, max=None]: Longitude of the location
    • -weaSta_reaWeaSolTim_y [s] [min=None, max=None]: Solar time +weaSta_reaWeaNOpa_y [1] [min=None, max=None]: Opaque sky cover measurement
    • -weaSta_reaWeaCloTim_y [s] [min=None, max=None]: Day number with units of seconds +weaSta_reaWeaNTot_y [1] [min=None, max=None]: Sky cover measurement
    • -weaSta_reaWeaLon_y [rad] [min=None, max=None]: Longitude of the location +weaSta_reaWeaPAtm_y [Pa] [min=None, max=None]: Atmospheric pressure measurement
    • weaSta_reaWeaRelHum_y [1] [min=None, max=None]: Outside relative humidity measurement
    • -weaSta_reaWeaSolDec_y [rad] [min=None, max=None]: Solar declination angle measurement +weaSta_reaWeaSolAlt_y [rad] [min=None, max=None]: Solar altitude angle measurement
    • -weaSta_reaWeaHDirNor_y [W/m2] [min=None, max=None]: Direct normal radiation measurement +weaSta_reaWeaSolDec_y [rad] [min=None, max=None]: Solar declination angle measurement
    • -weaSta_reaWeaWinDir_y [rad] [min=None, max=None]: Wind direction measurement +weaSta_reaWeaSolHouAng_y [rad] [min=None, max=None]: Solar hour angle measurement
    • -weaSta_reaWeaTWetBul_y [K] [min=None, max=None]: Wet bulb temperature measurement +weaSta_reaWeaSolTim_y [s] [min=None, max=None]: Solar time
    • -weaSta_reaWeaTDewPoi_y [K] [min=None, max=None]: Dew point temperature measurement +weaSta_reaWeaSolZen_y [rad] [min=None, max=None]: Solar zenith angle measurement
    • -weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement +weaSta_reaWeaTBlaSky_y [K] [min=None, max=None]: Black-body sky temperature measurement
    • -weaSta_reaWeaHDifHor_y [W/m2] [min=None, max=None]: Horizontal diffuse solar radiation measurement +weaSta_reaWeaTDewPoi_y [K] [min=None, max=None]: Dew point temperature measurement
    • -weaSta_reaWeaLat_y [rad] [min=None, max=None]: Latitude of the location +weaSta_reaWeaTDryBul_y [K] [min=None, max=None]: Outside drybulb temperature measurement
    • -weaSta_reaWeaTDryBul_y [K] [min=None, max=None]: Outside drybulb temperature measurement +weaSta_reaWeaTWetBul_y [K] [min=None, max=None]: Wet bulb temperature measurement
    • -weaSta_reaWeaCeiHei_y [m] [min=None, max=None]: Cloud cover ceiling height measurement +weaSta_reaWeaWinDir_y [rad] [min=None, max=None]: Wind direction measurement
    • -weaSta_reaWeaSolHouAng_y [rad] [min=None, max=None]: Solar hour angle measurement +weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement

    Forecasts

    -

    The model forecasts are:

    +The model forecasts are:
    • EmissionsElectricPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh of electricity diff --git a/testcases/bestest_hydronic_heat_pump/doc/index.html b/testcases/bestest_hydronic_heat_pump/doc/index.html index a1edd582c..231c19586 100644 --- a/testcases/bestest_hydronic_heat_pump/doc/index.html +++ b/testcases/bestest_hydronic_heat_pump/doc/index.html @@ -251,27 +251,36 @@

      Rule-based or local-loop controllers (if included)

      Model IO's

      Inputs

      -

      The model inputs are:

      +The model inputs are:
        - +
      • +oveFan_activate [1] [min=0, max=1]: Activation signal to overwrite input oveFan_u where 1 activates, 0 deactivates (default value) +
      • oveFan_u [1] [min=0.0, max=1.0]: Integer signal to control the heat pump evaporator fan either on or off
      • +oveHeaPumY_activate [1] [min=0, max=1]: Activation signal to overwrite input oveHeaPumY_u where 1 activates, 0 deactivates (default value) +
      • +
      • oveHeaPumY_u [1] [min=0.0, max=1.0]: Heat pump modulating signal for compressor speed between 0 (not working) and 1 (working at maximum capacity)
      • +ovePum_activate [1] [min=0, max=1]: Activation signal to overwrite input ovePum_u where 1 activates, 0 deactivates (default value) +
      • +
      • ovePum_u [1] [min=0.0, max=1.0]: Integer signal to control the emission circuit pump either on or off
      • +oveTSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSet_u where 1 activates, 0 deactivates (default value) +
      • +
      • oveTSet_u [K] [min=278.15, max=308.15]: Zone operative temperature setpoint
      • -

      Outputs

      -

      The model outputs are:

      +The model outputs are:
        -
      • reaCO2RooAir_y [ppm] [min=None, max=None]: CO2 concentration in the zone
      • @@ -380,10 +389,9 @@

        Outputs

      • weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement
      • -

      Forecasts

      -

      The model forecasts are:

      +The model forecasts are:
      • EmissionsElectricPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh of electricity diff --git a/testcases/multizone_office_simple_air/doc/index.html b/testcases/multizone_office_simple_air/doc/index.html index bd3949157..72459ce13 100644 --- a/testcases/multizone_office_simple_air/doc/index.html +++ b/testcases/multizone_office_simple_air/doc/index.html @@ -346,90 +346,177 @@

        Inputs

        The model inputs are:
        • +hvac_oveAhu_TSupSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_TSupSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_TSupSet_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint for AHU
        • +hvac_oveAhu_dpSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_dpSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_dpSet_u [Pa] [min=50.0, max=410.0]: Supply duct pressure setpoint for AHU
        • +hvac_oveAhu_yCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yCoo_u [1] [min=0.0, max=1.0]: Cooling coil valve control signal for AHU
        • +hvac_oveAhu_yFan_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yFan_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yFan_u [1] [min=0.0, max=1.0]: Supply fan speed setpoint for AHU
        • +hvac_oveAhu_yHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yHea_u [1] [min=0.0, max=1.0]: Heating coil valve control signal for AHU
        • +hvac_oveAhu_yOA_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yOA_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yOA_u [1] [min=0.0, max=1.0]: Outside air damper position setpoint for AHU
        • +hvac_oveAhu_yPumCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yPumCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yPumCoo_u [1] [min=0.0, max=1.0]: Cooling coil pump control signal for AHU
        • +hvac_oveAhu_yPumHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yPumHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yPumHea_u [1] [min=0.0, max=1.0]: Heating coil pump control signal for AHU
        • +hvac_oveAhu_yRet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yRet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yRet_u [1] [min=0.0, max=1.0]: Return air damper position setpoint for AHU
        • +hvac_oveZonActCor_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActCor_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActCor_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone cor
        • +hvac_oveZonActCor_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActCor_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActCor_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone cor
        • +hvac_oveZonActEas_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActEas_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActEas_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone eas
        • +hvac_oveZonActEas_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActEas_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActEas_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone eas
        • +hvac_oveZonActNor_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActNor_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActNor_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone nor
        • +hvac_oveZonActNor_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActNor_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActNor_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone nor
        • +hvac_oveZonActSou_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActSou_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActSou_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone sou
        • +hvac_oveZonActSou_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActSou_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActSou_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone sou
        • +hvac_oveZonActWes_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActWes_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActWes_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone wes
        • +hvac_oveZonActWes_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActWes_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActWes_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone wes
        • +hvac_oveZonSupCor_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupCor_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupCor_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone cor
        • +hvac_oveZonSupCor_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupCor_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupCor_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone cor
        • +hvac_oveZonSupEas_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupEas_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupEas_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone eas
        • +hvac_oveZonSupEas_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupEas_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupEas_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone eas
        • +hvac_oveZonSupNor_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupNor_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupNor_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone nor
        • +hvac_oveZonSupNor_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupNor_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupNor_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone nor
        • +hvac_oveZonSupSou_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupSou_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupSou_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone sou
        • +hvac_oveZonSupSou_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupSou_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupSou_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone sou
        • +hvac_oveZonSupWes_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupWes_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupWes_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone wes
        • +hvac_oveZonSupWes_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupWes_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupWes_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone wes
        diff --git a/testcases/multizone_office_simple_air/models/MultiZoneOfficeSimpleAir/TestCases/TestCase.mo b/testcases/multizone_office_simple_air/models/MultiZoneOfficeSimpleAir/TestCases/TestCase.mo index f9468899b..fa7b4e74d 100644 --- a/testcases/multizone_office_simple_air/models/MultiZoneOfficeSimpleAir/TestCases/TestCase.mo +++ b/testcases/multizone_office_simple_air/models/MultiZoneOfficeSimpleAir/TestCases/TestCase.mo @@ -425,90 +425,177 @@ heating coil pump. The model inputs are:
        • +hvac_oveAhu_TSupSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_TSupSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_TSupSet_u [K] [min=285.15, max=313.15]: Supply air temperature setpoint for AHU
        • +hvac_oveAhu_dpSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_dpSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_dpSet_u [Pa] [min=50.0, max=410.0]: Supply duct pressure setpoint for AHU
        • +hvac_oveAhu_yCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yCoo_u [1] [min=0.0, max=1.0]: Cooling coil valve control signal for AHU
        • +hvac_oveAhu_yFan_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yFan_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yFan_u [1] [min=0.0, max=1.0]: Supply fan speed setpoint for AHU
        • +hvac_oveAhu_yHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yHea_u [1] [min=0.0, max=1.0]: Heating coil valve control signal for AHU
        • +hvac_oveAhu_yOA_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yOA_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yOA_u [1] [min=0.0, max=1.0]: Outside air damper position setpoint for AHU
        • +hvac_oveAhu_yPumCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yPumCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yPumCoo_u [1] [min=0.0, max=1.0]: Cooling coil pump control signal for AHU
        • +hvac_oveAhu_yPumHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yPumHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yPumHea_u [1] [min=0.0, max=1.0]: Heating coil pump control signal for AHU
        • +hvac_oveAhu_yRet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveAhu_yRet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveAhu_yRet_u [1] [min=0.0, max=1.0]: Return air damper position setpoint for AHU
        • +hvac_oveZonActCor_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActCor_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActCor_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone cor
        • +hvac_oveZonActCor_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActCor_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActCor_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone cor
        • +hvac_oveZonActEas_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActEas_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActEas_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone eas
        • +hvac_oveZonActEas_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActEas_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActEas_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone eas
        • +hvac_oveZonActNor_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActNor_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActNor_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone nor
        • +hvac_oveZonActNor_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActNor_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActNor_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone nor
        • +hvac_oveZonActSou_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActSou_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActSou_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone sou
        • +hvac_oveZonActSou_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActSou_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActSou_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone sou
        • +hvac_oveZonActWes_yDam_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActWes_yDam_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActWes_yDam_u [1] [min=0.0, max=1.0]: Damper position setpoint for zone wes
        • +hvac_oveZonActWes_yReaHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonActWes_yReaHea_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonActWes_yReaHea_u [1] [min=0.0, max=1.0]: Reheat control signal for zone wes
        • +hvac_oveZonSupCor_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupCor_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupCor_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone cor
        • +hvac_oveZonSupCor_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupCor_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupCor_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone cor
        • +hvac_oveZonSupEas_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupEas_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupEas_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone eas
        • +hvac_oveZonSupEas_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupEas_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupEas_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone eas
        • +hvac_oveZonSupNor_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupNor_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupNor_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone nor
        • +hvac_oveZonSupNor_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupNor_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupNor_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone nor
        • +hvac_oveZonSupSou_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupSou_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupSou_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone sou
        • +hvac_oveZonSupSou_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupSou_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupSou_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone sou
        • +hvac_oveZonSupWes_TZonCooSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupWes_TZonCooSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupWes_TZonCooSet_u [K] [min=285.15, max=313.15]: Zone air temperature cooling setpoint for zone wes
        • +hvac_oveZonSupWes_TZonHeaSet_activate [1] [min=0, max=1]: Activation signal to overwrite input hvac_oveZonSupWes_TZonHeaSet_u where 1 activates, 0 deactivates (default value) +
        • +
        • hvac_oveZonSupWes_TZonHeaSet_u [K] [min=285.15, max=313.15]: Zone air temperature heating setpoint for zone wes
        diff --git a/testcases/multizone_residential_hydronic/doc/MultiZoneResidentialHydronic.html b/testcases/multizone_residential_hydronic/doc/MultiZoneResidentialHydronic.html index b9f71e3c7..50532dab4 100644 --- a/testcases/multizone_residential_hydronic/doc/MultiZoneResidentialHydronic.html +++ b/testcases/multizone_residential_hydronic/doc/MultiZoneResidentialHydronic.html @@ -209,198 +209,209 @@

        Rule-based or local-loop controllers (if included)

        Model IO's

        Inputs

        -

        The model inputs are:

        +The model inputs are:
        • +boi_oveBoi_activate [1] [min=0, max=1]: Activation signal to overwrite input boi_oveBoi_u where 1 activates, 0 deactivates (default value) +
        • +
        • boi_oveBoi_u [1] [min=0.0, max=1.0]: Boiler control signal for part load ratio
        • +conCooBth_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooBth_oveCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • conCooBth_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Bth
        • +conCooBth_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooBth_oveTSetCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • conCooBth_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Bth
        • +conCooHal_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooHal_oveCoo_u where 1 activates, 0 deactivates (default value) +
        • +
        • conCooHal_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Hal
        • -conCooHal_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Hal +conCooHal_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooHal_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
        • -conCooLiv_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Liv +conCooHal_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Hal
        • -conCooLiv_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Liv +conCooLiv_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooLiv_oveCoo_u where 1 activates, 0 deactivates (default value)
        • -conCooRo1_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro1 +conCooLiv_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Liv
        • -conCooRo1_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro1 +conCooLiv_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooLiv_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
        • -conCooRo2_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro2 +conCooLiv_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Liv
        • -conCooRo2_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro2 +conCooRo1_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo1_oveCoo_u where 1 activates, 0 deactivates (default value)
        • -conCooRo3_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro3 +conCooRo1_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro1
        • -conCooRo3_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro3 +conCooRo1_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo1_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
        • -conHeaBth_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Bth +conCooRo1_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro1
        • -conHeaBth_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Bth +conCooRo2_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo2_oveCoo_u where 1 activates, 0 deactivates (default value)
        • -conHeaLiv_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Liv +conCooRo2_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro2
        • -conHeaLiv_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Liv +conCooRo2_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo2_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
        • -conHeaRo1_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro1 +conCooRo2_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro2
        • -conHeaRo1_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro1 +conCooRo3_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo3_oveCoo_u where 1 activates, 0 deactivates (default value)
        • -conHeaRo2_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro2 +conCooRo3_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro3
        • -conHeaRo2_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro2 +conCooRo3_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo3_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
        • -conHeaRo3_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro3 +conCooRo3_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro3
        • -conHeaRo3_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro3 +conHeaBth_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaBth_oveActHea_u where 1 activates, 0 deactivates (default value)
        • -oveEmiPum_u [1] [min=0.0, max=1.0]: Control signal to the circulation pump of the emission system +conHeaBth_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Bth
        • -oveMixValSup_u [1] [min=0.0, max=1.0]: Actuator signal for 0three-way mixing valve controlling supply water temperature to radiators +conHeaBth_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaBth_oveTSetHea_u where 1 activates, 0 deactivates (default value)
        • -oveTSetPum_u [K] [min=283.15, max=368.15]: Heating zone air temperature setpoint used to control circulation pump of the emission system +conHeaBth_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Bth
        • -oveTSetSup_u [K] [min=283.15, max=368.15]: Supply water temperature setpoint to radiators +conHeaLiv_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaLiv_oveActHea_u where 1 activates, 0 deactivates (default value)
        • -
        - -

        Outputs

        -

        The model outputs are:

        -
        • -boi_oveBoi_y [1] [min=None, max=None]: Boiler control signal for part load ratio +conHeaLiv_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Liv
        • -boi_reaGasBoi_y [W] [min=None, max=None]: Boiler gas power use +conHeaLiv_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaLiv_oveTSetHea_u where 1 activates, 0 deactivates (default value)
        • -boi_reaPpum_y [W] [min=None, max=None]: Boiler pump electrical power use +conHeaLiv_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Liv
        • -conCooBth_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Bth +conHeaRo1_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo1_oveActHea_u where 1 activates, 0 deactivates (default value)
        • -conCooBth_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Bth +conHeaRo1_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro1
        • -conCooBth_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Bth +conHeaRo1_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo1_oveTSetHea_u where 1 activates, 0 deactivates (default value)
        • -conCooHal_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Hal +conHeaRo1_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro1
        • -conCooHal_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Hal +conHeaRo2_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo2_oveActHea_u where 1 activates, 0 deactivates (default value)
        • -conCooHal_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Hal +conHeaRo2_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro2
        • -conCooLiv_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Liv +conHeaRo2_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo2_oveTSetHea_u where 1 activates, 0 deactivates (default value)
        • -conCooLiv_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Liv +conHeaRo2_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro2
        • -conCooLiv_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Liv +conHeaRo3_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo3_oveActHea_u where 1 activates, 0 deactivates (default value)
        • -conCooRo1_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro1 +conHeaRo3_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro3
        • -conCooRo1_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro1 +conHeaRo3_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo3_oveTSetHea_u where 1 activates, 0 deactivates (default value)
        • -conCooRo1_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro1 +conHeaRo3_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro3
        • -conCooRo2_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro2 +oveEmiPum_activate [1] [min=0, max=1]: Activation signal to overwrite input oveEmiPum_u where 1 activates, 0 deactivates (default value)
        • -conCooRo2_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro2 +oveEmiPum_u [1] [min=0.0, max=1.0]: Control signal to the circulation pump of the emission system
        • -conCooRo2_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro2 +oveMixValSup_activate [1] [min=0, max=1]: Activation signal to overwrite input oveMixValSup_u where 1 activates, 0 deactivates (default value)
        • -conCooRo3_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro3 +oveMixValSup_u [1] [min=0.0, max=1.0]: Actuator signal for three-way mixing valve controlling supply water temperature to radiators
        • -conCooRo3_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro3 +oveTSetPum_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetPum_u where 1 activates, 0 deactivates (default value)
        • -conCooRo3_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro3 +oveTSetPum_u [K] [min=283.15, max=368.15]: Heating zone air temperature setpoint used to control circulation pump of the emission system
        • -conHeaBth_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Bth +oveTSetSup_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetSup_u where 1 activates, 0 deactivates (default value)
        • -conHeaBth_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Bth +oveTSetSup_u [K] [min=283.15, max=368.15]: Supply water temperature setpoint to radiators
        • +
        +

        Outputs

        +The model outputs are: +
        • -conHeaBth_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Bth +boi_reaGasBoi_y [W] [min=None, max=None]: Boiler gas power use
        • -conHeaLiv_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Liv +boi_reaPpum_y [W] [min=None, max=None]: Boiler pump electrical power use
        • -conHeaLiv_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Liv +conCooBth_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Bth
        • -conHeaLiv_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Liv +conCooHal_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Hal
        • -conHeaRo1_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro1 +conCooLiv_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Liv
        • -conHeaRo1_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro1 +conCooRo1_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro1
        • -conHeaRo1_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro1 +conCooRo2_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro2
        • -conHeaRo2_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro2 +conCooRo3_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro3
        • -conHeaRo2_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro2 +conHeaBth_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Bth
        • -conHeaRo2_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro2 +conHeaLiv_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Liv
        • -conHeaRo3_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro3 +conHeaRo1_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro1
        • -conHeaRo3_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro3 +conHeaRo2_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro2
        • conHeaRo3_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro3 @@ -430,18 +441,6 @@

          Outputs

          infRo3_reaCO2RooAir_y [ppm] [min=None, max=None]: Air CO2 concentration of zone Ro3
        • -oveEmiPum_y [1] [min=None, max=None]: Control signal to the circulation pump of the emission system -
        • -
        • -oveMixValSup_y [1] [min=None, max=None]: Actuator signal for three-way mixing valve controlling supply water temperature to radiators -
        • -
        • -oveTSetPum_y [K] [min=None, max=None]: Heating zone air temperature setpoint used to control circulation pump of the emission system -
        • -
        • -oveTSetSup_y [K] [min=None, max=None]: Supply water temperature setpoint to radiators -
        • -
        • reaHeaBth_y [W] [min=None, max=None]: Heating delivered to Bth
        • @@ -548,7 +547,7 @@

          Outputs

        Forecasts

        -

        The model forecasts are:

        +The model forecasts are:
        • EmissionsElectricPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh of electricity diff --git a/testcases/multizone_residential_hydronic/models/MultiZoneResidentialHydronic/TestCase.mo b/testcases/multizone_residential_hydronic/models/MultiZoneResidentialHydronic/TestCase.mo index ff9b21f16..2b3dfa89e 100644 --- a/testcases/multizone_residential_hydronic/models/MultiZoneResidentialHydronic/TestCase.mo +++ b/testcases/multizone_residential_hydronic/models/MultiZoneResidentialHydronic/TestCase.mo @@ -2483,198 +2483,209 @@ vacuum failures when all valves are closed while the distribution pump is workin

          Model IO's

          Inputs

          -

          The model inputs are:

          +The model inputs are:
          • +boi_oveBoi_activate [1] [min=0, max=1]: Activation signal to overwrite input boi_oveBoi_u where 1 activates, 0 deactivates (default value) +
          • +
          • boi_oveBoi_u [1] [min=0.0, max=1.0]: Boiler control signal for part load ratio
          • +conCooBth_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooBth_oveCoo_u where 1 activates, 0 deactivates (default value) +
          • +
          • conCooBth_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Bth
          • +conCooBth_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooBth_oveTSetCoo_u where 1 activates, 0 deactivates (default value) +
          • +
          • conCooBth_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Bth
          • +conCooHal_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooHal_oveCoo_u where 1 activates, 0 deactivates (default value) +
          • +
          • conCooHal_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Hal
          • -conCooHal_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Hal +conCooHal_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooHal_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
          • -conCooLiv_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Liv +conCooHal_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Hal
          • -conCooLiv_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Liv +conCooLiv_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooLiv_oveCoo_u where 1 activates, 0 deactivates (default value)
          • -conCooRo1_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro1 +conCooLiv_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Liv
          • -conCooRo1_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro1 +conCooLiv_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooLiv_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
          • -conCooRo2_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro2 +conCooLiv_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Liv
          • -conCooRo2_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro2 +conCooRo1_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo1_oveCoo_u where 1 activates, 0 deactivates (default value)
          • -conCooRo3_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro3 +conCooRo1_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro1
          • -conCooRo3_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro3 +conCooRo1_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo1_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
          • -conHeaBth_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Bth +conCooRo1_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro1
          • -conHeaBth_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Bth +conCooRo2_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo2_oveCoo_u where 1 activates, 0 deactivates (default value)
          • -conHeaLiv_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Liv +conCooRo2_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro2
          • -conHeaLiv_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Liv +conCooRo2_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo2_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
          • -conHeaRo1_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro1 +conCooRo2_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro2
          • -conHeaRo1_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro1 +conCooRo3_oveCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo3_oveCoo_u where 1 activates, 0 deactivates (default value)
          • -conHeaRo2_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro2 +conCooRo3_oveCoo_u [1] [min=0.0, max=1.0]: Cooling control signal as fraction of maximum for zone Ro3
          • -conHeaRo2_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro2 +conCooRo3_oveTSetCoo_activate [1] [min=0, max=1]: Activation signal to overwrite input conCooRo3_oveTSetCoo_u where 1 activates, 0 deactivates (default value)
          • -conHeaRo3_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro3 +conCooRo3_oveTSetCoo_u [K] [min=283.15, max=303.15]: Air temperature cooling setpoint for zone Ro3
          • -conHeaRo3_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro3 +conHeaBth_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaBth_oveActHea_u where 1 activates, 0 deactivates (default value)
          • -oveEmiPum_u [1] [min=0.0, max=1.0]: Control signal to the circulation pump of the emission system +conHeaBth_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Bth
          • -oveMixValSup_u [1] [min=0.0, max=1.0]: Actuator signal for 0three-way mixing valve controlling supply water temperature to radiators +conHeaBth_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaBth_oveTSetHea_u where 1 activates, 0 deactivates (default value)
          • -oveTSetPum_u [K] [min=283.15, max=368.15]: Heating zone air temperature setpoint used to control circulation pump of the emission system +conHeaBth_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Bth
          • -oveTSetSup_u [K] [min=283.15, max=368.15]: Supply water temperature setpoint to radiators +conHeaLiv_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaLiv_oveActHea_u where 1 activates, 0 deactivates (default value)
          • -
          - -

          Outputs

          -

          The model outputs are:

          -
          • -boi_oveBoi_y [1] [min=None, max=None]: Boiler control signal for part load ratio +conHeaLiv_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Liv
          • -boi_reaGasBoi_y [W] [min=None, max=None]: Boiler gas power use +conHeaLiv_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaLiv_oveTSetHea_u where 1 activates, 0 deactivates (default value)
          • -boi_reaPpum_y [W] [min=None, max=None]: Boiler pump electrical power use +conHeaLiv_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Liv
          • -conCooBth_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Bth +conHeaRo1_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo1_oveActHea_u where 1 activates, 0 deactivates (default value)
          • -conCooBth_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Bth +conHeaRo1_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro1
          • -conCooBth_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Bth +conHeaRo1_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo1_oveTSetHea_u where 1 activates, 0 deactivates (default value)
          • -conCooHal_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Hal +conHeaRo1_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro1
          • -conCooHal_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Hal +conHeaRo2_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo2_oveActHea_u where 1 activates, 0 deactivates (default value)
          • -conCooHal_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Hal +conHeaRo2_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro2
          • -conCooLiv_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Liv +conHeaRo2_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo2_oveTSetHea_u where 1 activates, 0 deactivates (default value)
          • -conCooLiv_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Liv +conHeaRo2_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro2
          • -conCooLiv_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Liv +conHeaRo3_oveActHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo3_oveActHea_u where 1 activates, 0 deactivates (default value)
          • -conCooRo1_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro1 +conHeaRo3_oveActHea_u [1] [min=0.0, max=1.0]: Actuator signal for heating valve for zone Ro3
          • -conCooRo1_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro1 +conHeaRo3_oveTSetHea_activate [1] [min=0, max=1]: Activation signal to overwrite input conHeaRo3_oveTSetHea_u where 1 activates, 0 deactivates (default value)
          • -conCooRo1_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro1 +conHeaRo3_oveTSetHea_u [K] [min=283.15, max=368.15]: Air temperature heating setpoint for zone Ro3
          • -conCooRo2_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro2 +oveEmiPum_activate [1] [min=0, max=1]: Activation signal to overwrite input oveEmiPum_u where 1 activates, 0 deactivates (default value)
          • -conCooRo2_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro2 +oveEmiPum_u [1] [min=0.0, max=1.0]: Control signal to the circulation pump of the emission system
          • -conCooRo2_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro2 +oveMixValSup_activate [1] [min=0, max=1]: Activation signal to overwrite input oveMixValSup_u where 1 activates, 0 deactivates (default value)
          • -conCooRo3_oveCoo_y [1] [min=None, max=None]: Cooling control signal as fraction of maximum for zone Ro3 +oveMixValSup_u [1] [min=0.0, max=1.0]: Actuator signal for three-way mixing valve controlling supply water temperature to radiators
          • -conCooRo3_oveTSetCoo_y [K] [min=None, max=None]: Air temperature cooling setpoint for zone Ro3 +oveTSetPum_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetPum_u where 1 activates, 0 deactivates (default value)
          • -conCooRo3_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro3 +oveTSetPum_u [K] [min=283.15, max=368.15]: Heating zone air temperature setpoint used to control circulation pump of the emission system
          • -conHeaBth_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Bth +oveTSetSup_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSetSup_u where 1 activates, 0 deactivates (default value)
          • -conHeaBth_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Bth +oveTSetSup_u [K] [min=283.15, max=368.15]: Supply water temperature setpoint to radiators
          • +
          +

          Outputs

          +The model outputs are: +
          • -conHeaBth_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Bth +boi_reaGasBoi_y [W] [min=None, max=None]: Boiler gas power use
          • -conHeaLiv_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Liv +boi_reaPpum_y [W] [min=None, max=None]: Boiler pump electrical power use
          • -conHeaLiv_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Liv +conCooBth_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Bth
          • -conHeaLiv_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Liv +conCooHal_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Hal
          • -conHeaRo1_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro1 +conCooLiv_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Liv
          • -conHeaRo1_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro1 +conCooRo1_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro1
          • -conHeaRo1_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro1 +conCooRo2_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro2
          • -conHeaRo2_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro2 +conCooRo3_reaPCoo_y [W] [min=None, max=None]: Cooling electrical power use in zone Ro3
          • -conHeaRo2_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro2 +conHeaBth_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Bth
          • -conHeaRo2_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro2 +conHeaLiv_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Liv
          • -conHeaRo3_oveActHea_y [1] [min=None, max=None]: Actuator signal for heating valve for zone Ro3 +conHeaRo1_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro1
          • -conHeaRo3_oveTSetHea_y [K] [min=None, max=None]: Air temperature heating setpoint for zone Ro3 +conHeaRo2_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro2
          • conHeaRo3_reaTZon_y [K] [min=None, max=None]: Air temperature of zone Ro3 @@ -2704,18 +2715,6 @@ vacuum failures when all valves are closed while the distribution pump is workin infRo3_reaCO2RooAir_y [ppm] [min=None, max=None]: Air CO2 concentration of zone Ro3
          • -oveEmiPum_y [1] [min=None, max=None]: Control signal to the circulation pump of the emission system -
          • -
          • -oveMixValSup_y [1] [min=None, max=None]: Actuator signal for three-way mixing valve controlling supply water temperature to radiators -
          • -
          • -oveTSetPum_y [K] [min=None, max=None]: Heating zone air temperature setpoint used to control circulation pump of the emission system -
          • -
          • -oveTSetSup_y [K] [min=None, max=None]: Supply water temperature setpoint to radiators -
          • -
          • reaHeaBth_y [W] [min=None, max=None]: Heating delivered to Bth
          • @@ -2822,7 +2821,7 @@ vacuum failures when all valves are closed while the distribution pump is workin

          Forecasts

          -

          The model forecasts are:

          +The model forecasts are:
          • EmissionsElectricPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh of electricity diff --git a/testcases/singlezone_commercial_hydronic/doc/index.html b/testcases/singlezone_commercial_hydronic/doc/index.html index 9d8fe6f36..4842f62d2 100644 --- a/testcases/singlezone_commercial_hydronic/doc/index.html +++ b/testcases/singlezone_commercial_hydronic/doc/index.html @@ -78,37 +78,61 @@ The third, with parameters kp=0.05 and Ti=800 s, regulates indoor temperature of the zone to the heating set point by controlling the hot water valve position serving the radiator.

            -

            Model IO's

            +

            Model IO's

            Inputs

            -

            The model inputs are

            +The model inputs are:
            • +ahu_oveFanRet_activate [1] [min=0, max=1]: Activation signal to overwrite input ahu_oveFanRet_u where 1 activates, 0 deactivates (default value) +
            • +
            • ahu_oveFanRet_u [1] [min=0.0, max=1.0]: AHU return fan speed control signal
            • +ahu_oveFanSup_activate [1] [min=0, max=1]: Activation signal to overwrite input ahu_oveFanSup_u where 1 activates, 0 deactivates (default value) +
            • +
            • ahu_oveFanSup_u [1] [min=0.0, max=1.0]: AHU supply fan speed control signal
            • +oveCO2ZonSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveCO2ZonSet_u where 1 activates, 0 deactivates (default value) +
            • +
            • oveCO2ZonSet_u [ppm] [min=400.0, max=1000.0]: Zone CO2 concentration setpoint
            • +ovePum_activate [1] [min=0, max=1]: Activation signal to overwrite input ovePum_u where 1 activates, 0 deactivates (default value) +
            • +
            • ovePum_u [1] [min=0.0, max=1.0]: Pump speed control signal for heating distribution system
            • +oveTSupSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSupSet_u where 1 activates, 0 deactivates (default value) +
            • +
            • oveTSupSet_u [K] [min=288.15, max=313.15]: AHU supply air temperature set point for heating
            • +oveTZonSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTZonSet_u where 1 activates, 0 deactivates (default value) +
            • +
            • oveTZonSet_u [K] [min=283.15, max=303.15]: Zone temperature set point for heating
            • +oveValCoi_activate [1] [min=0, max=1]: Activation signal to overwrite input oveValCoi_u where 1 activates, 0 deactivates (default value) +
            • +
            • oveValCoi_u [1] [min=0.0, max=1.0]: AHU heating coil valve control signal
            • +oveValRad_activate [1] [min=0, max=1]: Activation signal to overwrite input oveValRad_u where 1 activates, 0 deactivates (default value) +
            • +
            • oveValRad_u [1] [min=0.0, max=1.0]: Radiator valve control signal

            Outputs

            -

            The model outputs are

            +The model outputs are:
            • ahu_reaFloSupAir_y [kg/s] [min=None, max=None]: AHU supply air mass flowrate @@ -226,7 +250,7 @@

              Outputs

            Forecasts

            -

            The model forecasts are

            +The model forecasts are:
            • EmissionsBiomassPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh thermal from biomass diff --git a/testcases/singlezone_commercial_hydronic/models/OU44Emulator/Documentation.mo b/testcases/singlezone_commercial_hydronic/models/OU44Emulator/Documentation.mo index ace7e8414..2295262f7 100644 --- a/testcases/singlezone_commercial_hydronic/models/OU44Emulator/Documentation.mo +++ b/testcases/singlezone_commercial_hydronic/models/OU44Emulator/Documentation.mo @@ -83,37 +83,61 @@ The second, with parameters kp=0.05 and Ti=800 s, regulates the supply air tempe The third, with parameters kp=0.05 and Ti=800 s, regulates indoor temperature of the zone to the heating set point by controlling the hot water valve position serving the radiator.

              -

              Model IO's

              +

              Model IO's

              Inputs

              -

              The model inputs are

              +The model inputs are:
              • +ahu_oveFanRet_activate [1] [min=0, max=1]: Activation signal to overwrite input ahu_oveFanRet_u where 1 activates, 0 deactivates (default value) +
              • +
              • ahu_oveFanRet_u [1] [min=0.0, max=1.0]: AHU return fan speed control signal
              • +ahu_oveFanSup_activate [1] [min=0, max=1]: Activation signal to overwrite input ahu_oveFanSup_u where 1 activates, 0 deactivates (default value) +
              • +
              • ahu_oveFanSup_u [1] [min=0.0, max=1.0]: AHU supply fan speed control signal
              • +oveCO2ZonSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveCO2ZonSet_u where 1 activates, 0 deactivates (default value) +
              • +
              • oveCO2ZonSet_u [ppm] [min=400.0, max=1000.0]: Zone CO2 concentration setpoint
              • +ovePum_activate [1] [min=0, max=1]: Activation signal to overwrite input ovePum_u where 1 activates, 0 deactivates (default value) +
              • +
              • ovePum_u [1] [min=0.0, max=1.0]: Pump speed control signal for heating distribution system
              • +oveTSupSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTSupSet_u where 1 activates, 0 deactivates (default value) +
              • +
              • oveTSupSet_u [K] [min=288.15, max=313.15]: AHU supply air temperature set point for heating
              • +oveTZonSet_activate [1] [min=0, max=1]: Activation signal to overwrite input oveTZonSet_u where 1 activates, 0 deactivates (default value) +
              • +
              • oveTZonSet_u [K] [min=283.15, max=303.15]: Zone temperature set point for heating
              • +oveValCoi_activate [1] [min=0, max=1]: Activation signal to overwrite input oveValCoi_u where 1 activates, 0 deactivates (default value) +
              • +
              • oveValCoi_u [1] [min=0.0, max=1.0]: AHU heating coil valve control signal
              • +oveValRad_activate [1] [min=0, max=1]: Activation signal to overwrite input oveValRad_u where 1 activates, 0 deactivates (default value) +
              • +
              • oveValRad_u [1] [min=0.0, max=1.0]: Radiator valve control signal

              Outputs

              -

              The model outputs are

              +The model outputs are:
              • ahu_reaFloSupAir_y [kg/s] [min=None, max=None]: AHU supply air mass flowrate @@ -231,7 +255,7 @@ The third, with parameters kp=0.05 and Ti=800 s, regulates indoor temperature of

              Forecasts

              -

              The model forecasts are

              +The model forecasts are:
              • EmissionsBiomassPower [kgCO2/kWh]: Kilograms of carbon dioxide to produce 1 kWh thermal from biomass diff --git a/testcases/twozone_apartment_hydronic/doc/index.html b/testcases/twozone_apartment_hydronic/doc/index.html index 27b8cbf0a..1dcbf5a4c 100644 --- a/testcases/twozone_apartment_hydronic/doc/index.html +++ b/testcases/twozone_apartment_hydronic/doc/index.html @@ -611,21 +611,39 @@

                Inputs

                The model inputs are:
                • +hydronicSystem_oveMDayZ_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMDayZ_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMDayZ_u [1] [min=0.0, max=1.0]: Signal Day zone valve
                • +hydronicSystem_oveMNigZ_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMNigZ_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMNigZ_u [1] [min=0.0, max=1.0]: Signal Night zone valve
                • +hydronicSystem_oveMpumCon_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMpumCon_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMpumCon_u [kg/s] [min=0.0, max=5.0]: Mass flow rate control input to circulation pump for water through floor heating system
                • +hydronicSystem_oveTHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveTHea_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveTHea_u [K] [min=273.15, max=318.15]: Heat system supply temperature
                • +thermostatDayZon_oveTsetZon_activate [1] [min=0, max=1]: Activation signal to overwrite input thermostatDayZon_oveTsetZon_u where 1 activates, 0 deactivates (default value) +
                • +
                • thermostatDayZon_oveTsetZon_u [K] [min=273.15, max=318.15]: Setpoint temperature for thermal zone
                • +thermostatNigZon_oveTsetZon_activate [1] [min=0, max=1]: Activation signal to overwrite input thermostatNigZon_oveTsetZon_u where 1 activates, 0 deactivates (default value) +
                • +
                • thermostatNigZon_oveTsetZon_u [K] [min=273.15, max=318.15]: Setpoint temperature for thermal zone
                diff --git a/testcases/twozone_apartment_hydronic/models/TwoZoneApartmentHydronic/TestCases/ApartmentModelQHTyp.mo b/testcases/twozone_apartment_hydronic/models/TwoZoneApartmentHydronic/TestCases/ApartmentModelQHTyp.mo index 177608a3a..38bf5775d 100644 --- a/testcases/twozone_apartment_hydronic/models/TwoZoneApartmentHydronic/TestCases/ApartmentModelQHTyp.mo +++ b/testcases/twozone_apartment_hydronic/models/TwoZoneApartmentHydronic/TestCases/ApartmentModelQHTyp.mo @@ -783,21 +783,39 @@ The figure below reports a scheme of the controls. The model inputs are:
                • +hydronicSystem_oveMDayZ_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMDayZ_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMDayZ_u [1] [min=0.0, max=1.0]: Signal Day zone valve
                • +hydronicSystem_oveMNigZ_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMNigZ_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMNigZ_u [1] [min=0.0, max=1.0]: Signal Night zone valve
                • +hydronicSystem_oveMpumCon_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveMpumCon_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveMpumCon_u [kg/s] [min=0.0, max=5.0]: Mass flow rate control input to circulation pump for water through floor heating system
                • +hydronicSystem_oveTHea_activate [1] [min=0, max=1]: Activation signal to overwrite input hydronicSystem_oveTHea_u where 1 activates, 0 deactivates (default value) +
                • +
                • hydronicSystem_oveTHea_u [K] [min=273.15, max=318.15]: Heat system supply temperature
                • +thermostatDayZon_oveTsetZon_activate [1] [min=0, max=1]: Activation signal to overwrite input thermostatDayZon_oveTsetZon_u where 1 activates, 0 deactivates (default value) +
                • +
                • thermostatDayZon_oveTsetZon_u [K] [min=273.15, max=318.15]: Setpoint temperature for thermal zone
                • +thermostatNigZon_oveTsetZon_activate [1] [min=0, max=1]: Activation signal to overwrite input thermostatNigZon_oveTsetZon_u where 1 activates, 0 deactivates (default value) +
                • +
                • thermostatNigZon_oveTsetZon_u [K] [min=273.15, max=318.15]: Setpoint temperature for thermal zone
                From cd2c03bdcc9a61caf4179ec72ef1d854932239e0 Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 13:34:26 -0800 Subject: [PATCH 15/37] Updated release notes --- releasenotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releasenotes.md b/releasenotes.md index d5c50d8c8..78e8521cf 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -16,6 +16,7 @@ Released on xx/xx/xxxx. - Correct typo in documentation for ``multizone_office_simple_air``, cooling setback temperature changed from 12 to 30. This is for [#605](https://github.com/ibpsa/project1-boptest/issues/605). - Modify unit tests for test case scenarios to only simulate two days after warmup instead of the whole two-week scenario. This is for [#576](https://github.com/ibpsa/project1-boptest/issues/576). - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). +- Add ``activate`` control inputs to all test cases documentations and updated ``get_html_IO.py`` to print one file with all inputs,outputs and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). ## BOPTEST v0.5.0 From e3316d7badac41d7b6df51fb9de27e582b9c6162 Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 20:12:21 -0800 Subject: [PATCH 16/37] Address review comments --- data/get_html_IO.py | 24 +----------------------- releasenotes.md | 2 +- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/data/get_html_IO.py b/data/get_html_IO.py index 528a755eb..9b4e6a357 100644 --- a/data/get_html_IO.py +++ b/data/get_html_IO.py @@ -11,7 +11,7 @@ "inputs.html": html code documenting the inputs "measurements.html": html code documenting the outputs "forecast_points.html" html code documenting the forecasts -"inputs_measurement_forecasts.html" html code documenting inputs,outputs and +"inputs_measurements_forecasts.html" html code documenting inputs,outputs and forecasts together """ @@ -42,28 +42,6 @@ def run(): # GET TEST INFORMATION # -------------------- - # Inputs available - inputs = requests.get('{0}/inputs'.format(url)).json()['payload'] - with open('inputs.html', 'w') as f: - for i in sorted(inputs.keys()): - if 'activate' not in i: - f.write('
              • \n{0} [{1}] [min={2}, max={3}]: {4}\n
              • \n'.format(i,inputs[i]['Unit'],inputs[i]['Minimum'], inputs[i]['Maximum'], inputs[i]['Description'])) - else: - f.write('
              • \n{0} [1] [min=0, max=1]: Activation signal to overwrite input {1} where 1 activates, 0 deactivates (default value)\n
              • \n'.format(i,i.replace('activate','')+'u')) - - # Measurements available - measurements = requests.get('{0}/measurements'.format(url)).json()['payload'] - with open('measurements.html', 'w') as f: - for i in sorted(measurements.keys()): - if 'activate' not in i: - f.write('
              • \n{0} [{1}] [min={2}, max={3}]: {4}\n
              • \n'.format(i,measurements[i]['Unit'],measurements[i]['Minimum'], measurements[i]['Maximum'], measurements[i]['Description'])) - # Forecasts available - forecast_points = requests.get('{0}/forecast_points'.format(url)).json()['payload'] - with open('forecast_points.html', 'w') as f: - for i in sorted(forecast_points.keys()): - if 'activate' not in i: - f.write('
              • \n{0} [{1}]: {2}\n
              • \n'.format(i,forecast_points[i]['Unit'],forecast_points[i]['Description'])) - # -------------------- # Create single I/O file # Inputs available inputs = requests.get('{0}/inputs'.format(url)).json()['payload'] diff --git a/releasenotes.md b/releasenotes.md index 78e8521cf..cf9299c20 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -16,7 +16,7 @@ Released on xx/xx/xxxx. - Correct typo in documentation for ``multizone_office_simple_air``, cooling setback temperature changed from 12 to 30. This is for [#605](https://github.com/ibpsa/project1-boptest/issues/605). - Modify unit tests for test case scenarios to only simulate two days after warmup instead of the whole two-week scenario. This is for [#576](https://github.com/ibpsa/project1-boptest/issues/576). - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). -- Add ``activate`` control inputs to all test cases documentations and updated ``get_html_IO.py`` to print one file with all inputs,outputs and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). +- Add ``activate`` control inputs to all test case documentation, and update ``get_html_IO.py`` to print one file with all inputs, outputs and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). ## BOPTEST v0.5.0 From 50396f7947be9242ba0763a7262f04a9b600ace7 Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 20:13:31 -0800 Subject: [PATCH 17/37] Update documentation --- data/get_html_IO.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/data/get_html_IO.py b/data/get_html_IO.py index 9b4e6a357..1059137df 100644 --- a/data/get_html_IO.py +++ b/data/get_html_IO.py @@ -7,10 +7,7 @@ 2. Run BOPTEST test case on localhost:5000 3. Run this script -Outputs: -"inputs.html": html code documenting the inputs -"measurements.html": html code documenting the outputs -"forecast_points.html" html code documenting the forecasts +Output: "inputs_measurements_forecasts.html" html code documenting inputs,outputs and forecasts together """ From fd39c7a0c6bb588c23eb1c6d31f4816d9e344f2b Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 21 Feb 2024 20:14:17 -0800 Subject: [PATCH 18/37] Update documentation --- data/get_html_IO.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/get_html_IO.py b/data/get_html_IO.py index 1059137df..8d966fd42 100644 --- a/data/get_html_IO.py +++ b/data/get_html_IO.py @@ -8,7 +8,7 @@ 3. Run this script Output: -"inputs_measurements_forecasts.html" html code documenting inputs,outputs and +"inputs_measurements_forecasts.html" html code documenting inputs, outputs and forecasts together """ From 8afd1f3a11fb76d66f46ce4a27e57e89fb2f2961 Mon Sep 17 00:00:00 2001 From: Harald Taxt Walnum Date: Tue, 27 Feb 2024 12:44:38 +0100 Subject: [PATCH 19/37] first implementation --- testcase.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/testcase.py b/testcase.py index 20ee4f183..8e08ed7f6 100644 --- a/testcase.py +++ b/testcase.py @@ -22,6 +22,7 @@ import os import json import array as a +import pandas as pd class TestCase(object): '''Class that implements the test case. @@ -359,6 +360,8 @@ def advance(self, u): # Check if scenario is over if self.start_time >= self.end_time: self.scenario_end = True + # store results + self.store_results() # Log and return logging.info(message) return status, message, payload @@ -1327,6 +1330,41 @@ def _get_full_current_state(self): return z + def store_results(self): + '''Stores results from scenario in working directory. + When ran with service, the result will be packed in the result tarball and + be retrieveable with the test_id + + + Returns + ------- + None. + + ''' + + name = "results" + # get results_json + results_json = { + "dateRun": str(datetime.now(tz=pytz.UTC)), + "boptestVersion": self.version, + "emulatorName": self.get_name()[2]['name'], + "controlStep": str(self.get_step()[2]), + "forecastParameters": {}, # for future use to store used parameters? + "measurementParameters": {}, # for future use to store used parameters? + "kpis": self.get_kpis()[2], + "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), + } + + # store results_json + with open(name + ".json", "w") as outfile: + json.dump(results_json, outfile) + + # get results trajectories + results = self.get_results(self, self.input_names + self.output_names, self.initial_time, self.end_time)[2] + results_df = pd.DataFrame.from_dict(results) + # store + results_df.to_csv(name + ".csv") + def to_camel_case(self, snake_str): components = snake_str.split('_') # We capitalize the first letter of each component except the first one From 5780811d28c85afbd1a243b0274b7b9dd1864533 Mon Sep 17 00:00:00 2001 From: Harald Taxt Walnum Date: Tue, 27 Feb 2024 15:27:56 +0100 Subject: [PATCH 20/37] fixed get_results call --- testcase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testcase.py b/testcase.py index 8e08ed7f6..6941b417f 100644 --- a/testcase.py +++ b/testcase.py @@ -1360,7 +1360,7 @@ def store_results(self): json.dump(results_json, outfile) # get results trajectories - results = self.get_results(self, self.input_names + self.output_names, self.initial_time, self.end_time)[2] + results = self.get_results(self.input_names + self.output_names, self.initial_time, self.end_time)[2] results_df = pd.DataFrame.from_dict(results) # store results_df.to_csv(name + ".csv") From ee92c0648b6030da0720460144f2d7451a2b486d Mon Sep 17 00:00:00 2001 From: Harald Taxt Walnum Date: Tue, 27 Feb 2024 21:59:30 +0100 Subject: [PATCH 21/37] fixed results quiery as some outputs are removed from output_names --- testcase.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/testcase.py b/testcase.py index 6941b417f..9c4a624ff 100644 --- a/testcase.py +++ b/testcase.py @@ -1358,9 +1358,12 @@ def store_results(self): # store results_json with open(name + ".json", "w") as outfile: json.dump(results_json, outfile) - + + # get list of results, need to use output metadata because duplicate inputs are removed + result_list = self.input_names + list(self.outputs_metadata.keys()) # get results trajectories - results = self.get_results(self.input_names + self.output_names, self.initial_time, self.end_time)[2] + results = self.get_results(result_list, self.initial_time, self.end_time)[2] + # convert to dataframe results_df = pd.DataFrame.from_dict(results) # store results_df.to_csv(name + ".csv") From 525a5e9b4b429ffc1e8cd529aedbfd8794aae08a Mon Sep 17 00:00:00 2001 From: ettore zanetti Date: Wed, 28 Feb 2024 10:00:52 -0800 Subject: [PATCH 22/37] Update README and release notes --- README.md | 2 +- releasenotes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a86e8af93..123b53758 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Example RESTful interaction: | Interaction | Request | |-----------------------------------------------------------------------|-----------------------------------------------------------| -| Advance simulation with control input and receive measurements. | POST ``advance`` with optional json data "{:}" | +| Advance simulation with control input and receive measurements. | POST ``advance`` with optional json data "{:,:<0> or <1> }", <1> input enabled, <0> (default value) input disabled | | Initialize simulation to a start time using a warmup period in seconds. Also resets point data history and KPI calculations. | PUT ``initialize`` with required arguments ``start_time=``, ``warmup_period=``| | Receive communication step in seconds. | GET ``step`` | | Set communication step in seconds. | PUT ``step`` with required argument ``step=`` | diff --git a/releasenotes.md b/releasenotes.md index cf9299c20..a8d16a1ac 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -16,7 +16,7 @@ Released on xx/xx/xxxx. - Correct typo in documentation for ``multizone_office_simple_air``, cooling setback temperature changed from 12 to 30. This is for [#605](https://github.com/ibpsa/project1-boptest/issues/605). - Modify unit tests for test case scenarios to only simulate two days after warmup instead of the whole two-week scenario. This is for [#576](https://github.com/ibpsa/project1-boptest/issues/576). - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). -- Add ``activate`` control inputs to all test case documentation, and update ``get_html_IO.py`` to print one file with all inputs, outputs and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). +- Add ``activate`` control inputs to all test case documentation and update ``get_html_IO.py`` to print one file with all inputs, outputs, and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). ## BOPTEST v0.5.0 From 8b510d3cb3fe8b22d3f2e1b5bade6cd6787b7365 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Mar 2024 12:58:04 -0800 Subject: [PATCH 23/37] Edits to readme text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 123b53758..92ca381d4 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Example RESTful interaction: | Interaction | Request | |-----------------------------------------------------------------------|-----------------------------------------------------------| -| Advance simulation with control input and receive measurements. | POST ``advance`` with optional json data "{:,:<0> or <1> }", <1> input enabled, <0> (default value) input disabled | +| Advance simulation with control input and receive measurements. | POST ``advance`` with optional arguments ``:``, and corresponding ``:<0 or 1>``, where 1 enables value overwrite and 0 disables (0 is default) | | Initialize simulation to a start time using a warmup period in seconds. Also resets point data history and KPI calculations. | PUT ``initialize`` with required arguments ``start_time=``, ``warmup_period=``| | Receive communication step in seconds. | GET ``step`` | | Set communication step in seconds. | PUT ``step`` with required argument ``step=`` | From 3d4099d506760403e23f8a5bdb05051a0225aee6 Mon Sep 17 00:00:00 2001 From: Harald Taxt Walnum Date: Fri, 8 Mar 2024 11:53:20 +0100 Subject: [PATCH 24/37] created _get_test_results() to avoid duplicate code --- testcase.py | 66 +++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/testcase.py b/testcase.py index 9c4a624ff..710968871 100644 --- a/testcase.py +++ b/testcase.py @@ -1145,27 +1145,16 @@ def post_results_to_dashboard(self, api_key, tags, unit_test=False): dash_server = os.environ['BOPTEST_DASHBOARD_SERVER'] # Create payload uid = str(uuid.uuid4()) - payload = { - "results": [ - { - "uid": uid, - "dateRun": str(datetime.now(tz=pytz.UTC)), - "boptestVersion": self.version, - "isShared": True, - "controlStep": str(self.get_step()[2]), - "account": { + test_results = self._get_test_results() + api_parameters = { + "uid": uid, + "isShared": True, + "account": { "apiKey": api_key - }, - "forecastParameters":{}, - "tags": tags, - "kpis": self.get_kpis()[2], - "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), - "buildingType": { - "uid": self.get_name()[2]['name'] - } - } - ] + }, + "tags": tags, } + payload = {"results":[{**test_results, **api_parameters}]} dash_url = "%s/api/results" % dash_server # Post to dashboard if not unit_test: @@ -1329,6 +1318,28 @@ def _get_full_current_state(self): z.update(self.u) return z + + def _get_test_results(self): + '''Collect test results. + + Returns + ------- + results: dict + Dictionary of test specific results. + ''' + results = { + "dateRun": str(datetime.now(tz=pytz.UTC)), + "boptestVersion": self.version, + "controlStep": str(self.get_step()[2]), + "forecastParameters": {}, # for future use to store used parameters? + "measurementParameters": {}, # for future use to store used parameters? + "kpis": self.get_kpis()[2], + "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), + "buildingType": { + "uid": self.get_name()[2]['name'], + } + } + return results def store_results(self): '''Stores results from scenario in working directory. @@ -1342,21 +1353,12 @@ def store_results(self): ''' - name = "results" + file_name = "results" # get results_json - results_json = { - "dateRun": str(datetime.now(tz=pytz.UTC)), - "boptestVersion": self.version, - "emulatorName": self.get_name()[2]['name'], - "controlStep": str(self.get_step()[2]), - "forecastParameters": {}, # for future use to store used parameters? - "measurementParameters": {}, # for future use to store used parameters? - "kpis": self.get_kpis()[2], - "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), - } + results_json = self._get_test_results() # store results_json - with open(name + ".json", "w") as outfile: + with open(file_name + ".json", "w") as outfile: json.dump(results_json, outfile) # get list of results, need to use output metadata because duplicate inputs are removed @@ -1366,7 +1368,7 @@ def store_results(self): # convert to dataframe results_df = pd.DataFrame.from_dict(results) # store - results_df.to_csv(name + ".csv") + results_df.to_csv(file_name + ".csv") def to_camel_case(self, snake_str): components = snake_str.split('_') From f50b7b4a3065e0c0a9800b3fdb4f2d97e9b4bfef Mon Sep 17 00:00:00 2001 From: Harald Taxt Walnum Date: Fri, 8 Mar 2024 12:34:35 +0100 Subject: [PATCH 25/37] updated releasenotes.md --- releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes.md b/releasenotes.md index d5c50d8c8..5c05fe2bd 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -16,7 +16,7 @@ Released on xx/xx/xxxx. - Correct typo in documentation for ``multizone_office_simple_air``, cooling setback temperature changed from 12 to 30. This is for [#605](https://github.com/ibpsa/project1-boptest/issues/605). - Modify unit tests for test case scenarios to only simulate two days after warmup instead of the whole two-week scenario. This is for [#576](https://github.com/ibpsa/project1-boptest/issues/576). - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). - +- Add storing of scenario results to simulation directory. This is for [#626](https://github.com/ibpsa/project1-boptest/issues/626). ## BOPTEST v0.5.0 From 9987e2d2accbb2bab805c11a12319a2a1adbdbf3 Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Mar 2024 13:01:48 -0700 Subject: [PATCH 26/37] Make time as index for csv --- testcase.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/testcase.py b/testcase.py index 710968871..941935f10 100644 --- a/testcase.py +++ b/testcase.py @@ -1318,7 +1318,7 @@ def _get_full_current_state(self): z.update(self.u) return z - + def _get_test_results(self): '''Collect test results. @@ -1360,13 +1360,14 @@ def store_results(self): # store results_json with open(file_name + ".json", "w") as outfile: json.dump(results_json, outfile) - + # get list of results, need to use output metadata because duplicate inputs are removed result_list = self.input_names + list(self.outputs_metadata.keys()) # get results trajectories results = self.get_results(result_list, self.initial_time, self.end_time)[2] - # convert to dataframe + # convert to dataframe with time as index results_df = pd.DataFrame.from_dict(results) + results_df.index = results_df['time'] # store results_df.to_csv(file_name + ".csv") From 74314ea7fe659f0baa2194ef032fb5347a3c0972 Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Mar 2024 13:03:16 -0700 Subject: [PATCH 27/37] Use points instead of parameters --- testcase.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/testcase.py b/testcase.py index 941935f10..b0743271e 100644 --- a/testcase.py +++ b/testcase.py @@ -1331,8 +1331,9 @@ def _get_test_results(self): "dateRun": str(datetime.now(tz=pytz.UTC)), "boptestVersion": self.version, "controlStep": str(self.get_step()[2]), - "forecastParameters": {}, # for future use to store used parameters? - "measurementParameters": {}, # for future use to store used parameters? + "forecastPoints": {}, # for future use to store used forecast points + "measurementPoints": {}, # for future use to store used measurement points + "inputPoints": {}, # for future use to store used input points "kpis": self.get_kpis()[2], "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), "buildingType": { From 485301c1bb57c891703ec0adf276ebb868e3be46 Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Mar 2024 13:07:27 -0700 Subject: [PATCH 28/37] Doc formatting and edits --- testcase.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/testcase.py b/testcase.py index b0743271e..30279468c 100644 --- a/testcase.py +++ b/testcase.py @@ -1320,13 +1320,15 @@ def _get_full_current_state(self): return z def _get_test_results(self): - '''Collect test results. + '''Collect test results and information into a dictionary. Returns ------- results: dict - Dictionary of test specific results. + Dictionary of test specific results and information. + ''' + results = { "dateRun": str(datetime.now(tz=pytz.UTC)), "boptestVersion": self.version, @@ -1340,36 +1342,35 @@ def _get_test_results(self): "uid": self.get_name()[2]['name'], } } + return results def store_results(self): - '''Stores results from scenario in working directory. - When ran with service, the result will be packed in the result tarball and - be retrieveable with the test_id + '''Stores results from scenario in working directory as json and csv. + When run with Service, the result will be packed in the result tarball and + be retrieveable with the test_id. Returns ------- - None. + None ''' file_name = "results" # get results_json results_json = self._get_test_results() - # store results_json with open(file_name + ".json", "w") as outfile: json.dump(results_json, outfile) - - # get list of results, need to use output metadata because duplicate inputs are removed + # get list of results, need to use output metadata so duplicate inputs are removed result_list = self.input_names + list(self.outputs_metadata.keys()) # get results trajectories results = self.get_results(result_list, self.initial_time, self.end_time)[2] # convert to dataframe with time as index results_df = pd.DataFrame.from_dict(results) results_df.index = results_df['time'] - # store + # store results csv results_df.to_csv(file_name + ".csv") def to_camel_case(self, snake_str): From ed371c0c0dab6dffadf09683754478552e83acf6 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Mar 2024 08:58:18 -0700 Subject: [PATCH 29/37] Revert back to forecastParameters without other points --- testcase.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/testcase.py b/testcase.py index 30279468c..326d54fb3 100644 --- a/testcase.py +++ b/testcase.py @@ -1333,9 +1333,7 @@ def _get_test_results(self): "dateRun": str(datetime.now(tz=pytz.UTC)), "boptestVersion": self.version, "controlStep": str(self.get_step()[2]), - "forecastPoints": {}, # for future use to store used forecast points - "measurementPoints": {}, # for future use to store used measurement points - "inputPoints": {}, # for future use to store used input points + "forecastParameters":{}, "kpis": self.get_kpis()[2], "scenario": self.add_forecast_uncertainty(self.keys_to_camel_case(self.get_scenario()[2])), "buildingType": { From edc0c3c9df1e4026c165297e633f6e91cd51dd67 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Mar 2024 13:54:06 -0700 Subject: [PATCH 30/37] Update dict in python2,3 compatible way for unit tests to pass --- testcase.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testcase.py b/testcase.py index 326d54fb3..1c23c6457 100644 --- a/testcase.py +++ b/testcase.py @@ -1154,7 +1154,8 @@ def post_results_to_dashboard(self, api_key, tags, unit_test=False): }, "tags": tags, } - payload = {"results":[{**test_results, **api_parameters}]} + test_results.update(api_parameters) + payload = {"results":[test_results]} dash_url = "%s/api/results" % dash_server # Post to dashboard if not unit_test: From 4b810917b86309d773338a93d68b6286120c4d80 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 14 Mar 2024 08:58:08 -0700 Subject: [PATCH 31/37] Update releasenotes.md [ci skip] --- releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes.md b/releasenotes.md index 9673b2ae5..9aaaba341 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -17,7 +17,7 @@ Released on xx/xx/xxxx. - Modify unit tests for test case scenarios to only simulate two days after warmup instead of the whole two-week scenario. This is for [#576](https://github.com/ibpsa/project1-boptest/issues/576). - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). - Add ``activate`` control inputs to all test case documentation and update ``get_html_IO.py`` to print one file with all inputs, outputs, and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). -- Add storing of scenario results to simulation directory. This is for [#626](https://github.com/ibpsa/project1-boptest/issues/626). +- Add storing of scenario result trajectories, kpis, and test information to simulation directory within test case docker container. This is for [#626](https://github.com/ibpsa/project1-boptest/issues/626). ## BOPTEST v0.5.0 From 3ac058d6ba97017499c89aacd095433cb8179ee0 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 09:57:32 +0100 Subject: [PATCH 32/37] Add release note. --- releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes.md b/releasenotes.md index 9aaaba341..c079fd7aa 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -18,7 +18,7 @@ Released on xx/xx/xxxx. - Fix unit tests for possible false passes in certain test cases. This is for [#620](https://github.com/ibpsa/project1-boptest/issues/620). - Add ``activate`` control inputs to all test case documentation and update ``get_html_IO.py`` to print one file with all inputs, outputs, and forecasts. This is for [#555](https://github.com/ibpsa/project1-boptest/issues/555). - Add storing of scenario result trajectories, kpis, and test information to simulation directory within test case docker container. This is for [#626](https://github.com/ibpsa/project1-boptest/issues/626). - +- Implement method to get disaggregated KPIs with absolute values. This enables to make a more comprehensive analysis of which elements are contributing to each KPI. This is for [#604](https://github.com/ibpsa/project1-boptest/issues/604). ## BOPTEST v0.5.0 From af184105210937676139aeabbce8e1f684bcb83d Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 10:05:04 +0100 Subject: [PATCH 33/37] Run pre-commit --- kpis/kpi_calculator.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index 5fdd5c506..54b3fc43c 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -216,9 +216,10 @@ def get_core_kpis(self, price_scenario='Constant'): return ckpi def get_kpis_disaggregated(self, price_scenario='Constant'): - '''Return the core KPIs of a test case disaggregated and - with absolute values (not normalized by area or zone) - to see the contributions of each element to each KPI. + '''Return the core KPIs of a test case disaggregated and + with absolute values (not normalized by area or zone) + to see the contributions of each element to each KPI. + Parameters ---------- price_scenario : str, optional @@ -228,7 +229,7 @@ def get_kpis_disaggregated(self, price_scenario='Constant'): Returns ------- dkpi = dict - Dictionary with the core KPIs disaggregated and + Dictionary with the core KPIs disaggregated and with absolute values. ''' @@ -236,7 +237,7 @@ def get_kpis_disaggregated(self, price_scenario='Constant'): dkpi = OrderedDict() dkpi['tdis'] = self.tdis_dict - dkpi['idis'] = self.idis_dict + dkpi['idis'] = self.idis_dict dkpi['ener'] = self.ener_dict dkpi['cost'] = self.cost_dict dkpi['emis'] = self.emis_dict From 0d0bfeedffad0b4103d2dd67bcb0a9e853cc7817 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 10:06:21 +0100 Subject: [PATCH 34/37] Add space before returns. --- kpis/kpi_calculator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index 54b3fc43c..58e0ad5e3 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -226,6 +226,7 @@ def get_kpis_disaggregated(self, price_scenario='Constant'): Price scenario for cost kpi calculation. 'Constant' or 'Dynamic' or 'HighlyDynamic'. Default is 'Constant'. + Returns ------- dkpi = dict From 5a0a5451a738fcc855f4b108565a2b0a2207f072 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 10:10:35 +0100 Subject: [PATCH 35/37] Add space before end of docstring. --- kpis/kpi_calculator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/kpis/kpi_calculator.py b/kpis/kpi_calculator.py index 58e0ad5e3..60e2d6ac5 100644 --- a/kpis/kpi_calculator.py +++ b/kpis/kpi_calculator.py @@ -232,6 +232,7 @@ def get_kpis_disaggregated(self, price_scenario='Constant'): dkpi = dict Dictionary with the core KPIs disaggregated and with absolute values. + ''' _ = self.get_core_kpis(price_scenario=price_scenario) From c5fc24978c0183932c50251e99a717e51e2d419d Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 10:15:28 +0100 Subject: [PATCH 36/37] Be more specific in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23b497807..bb22c903d 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Example RESTful interaction: | Receive control signal point names (u) and metadata. | GET ``inputs`` | | Receive test result data for the given point names between the start and final time in seconds. | PUT ``results`` with required arguments ``point_names=``, ``start_time=``, ``final_time=``| | Receive test KPIs. | GET ``kpi`` | -| Receive test KPIs disaggregated and in absolute values. | GET ``kpi_disaggregated`` | +| Receive test KPIs disaggregated into contributing components (e.g. each equipment or zone) ...| GET ``kpi_disaggregated`` | | Receive test case name. | GET ``name`` | | Receive boundary condition forecast from current communication step for the given point names for the horizon and at the interval in seconds. | PUT ``forecast`` with required arguments ``point_names=``, ``horizon=``, ``interval=``| | Receive boundary condition forecast available point names and metadata. | GET ``forecast_points`` | From 8374559f73e98fe75d909e7830d07208d80514a2 Mon Sep 17 00:00:00 2001 From: Javier Arroyo Date: Fri, 22 Mar 2024 16:35:36 +0100 Subject: [PATCH 37/37] Update user guide with new API endpoint. --- docs/user_guide/source/api.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/user_guide/source/api.rst b/docs/user_guide/source/api.rst index dd1c8bc3f..ac028561d 100644 --- a/docs/user_guide/source/api.rst +++ b/docs/user_guide/source/api.rst @@ -290,6 +290,30 @@ GET /kpi "time_rat": // float, Computational time ratio in s/ss } +GET /kpi_disaggregated +---------------------- + +- **Description:** Receive KPI values disaggregated into contributing components (e.g. each equipment or zone). + The returned results are in absolute values, that is, they are not normalized by floor area or by number of zones. + Calculated from start time and do not include warmup periods. + +- **Arguments:** None. + +- **Returns:** + + :: + + { + "cost"::, // dict, Contribution of each element to HVAC energy cost in $ or Euro + "emis"::, // dict, Contribution of each element to HVAC energy emissions in kgCO2e + "ener"::, // dict, Contribution of each element to HVAC energy total usage in kWh + "pele"::, // dict, Contribution of each element to HVAC at the overall peak electrical demand in kW + "pgas"::, // dict, Contribution of each element to HVAC at the overall peak gas demand in kW + "pdih"::, // dict, Contribution of each element to HVAC at the overall peak district heating demand in kW + "idis"::, // dict, Contribution of each element to indoor air quality discomfort in ppmh + "tdis"::, // dict, Contribution of each element to thermal discomfort in Kh + } + GET /submit -----------