Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
950e9b7
Modified prototype to include CSV schedule file for temperature setpoint
behzadsalimian Mar 27, 2024
17bd096
Modified template to include CSV schedule file for temperature setpoint
behzadsalimian Mar 27, 2024
d9c0dd6
Created CSV schedule file for temperature setpoint
behzadsalimian Mar 27, 2024
b62ebb9
Modified input file to include temperature setpoint schedule
behzadsalimian Mar 27, 2024
2332be2
Modified climates and cohorts
behzadsalimian Mar 27, 2024
fc1cfd4
Copy paste config and query files
behzadsalimian Apr 1, 2024
f6ca3e8
Merge branch 'main' into SWHC012-Workingcopy1
behzadsalimian Apr 1, 2024
0d8ebbd
Update global, rake file and rename MP folder
behzadsalimian Apr 1, 2024
b98d331
Moved schedule.csv file to measure level folder
behzadsalimian Apr 1, 2024
5b9c60d
Correct the if else logic and updated the default parameter for tempe…
behzadsalimian Apr 1, 2024
5553822
Modified the comment lines
behzadsalimian Apr 2, 2024
a1bb7d3
Create python script to generate setpoint schedule for SWHC012
behzadsalimian Apr 4, 2024
07b68c0
Merge branch 'dev-SWHC012-T24-update' into dev-SWHC012-T24-updates
Mar 26, 2025
cab211b
Update cohorts.csv
Apr 2, 2025
302e4e0
Update to latest query.txt
Apr 2, 2025
5bdbdfc
Delete unused case file
Apr 2, 2025
1c24504
Add blank line at the end of file hvac-zone.pxt
Apr 2, 2025
0a3904b
Updated case and cohort files by adding parameters from TRC system ty…
Apr 9, 2025
cccae2f
Revised schedules _Behzad
Apr 9, 2025
31c0dcb
Revised classroom occupancy schedule parameter _Behzad
Apr 9, 2025
10d9358
Revised classroom setpoint schedule parameter _Behzad
Apr 9, 2025
ba328a1
Updated schedule.py files from 2024 to 2023 schedule _Behzad
Apr 9, 2025
2a2abd9
Correct case files and cohorts
Apr 11, 2025
5c5febc
Post-processing - results-sizing-agg.csv and results-sizing-detail.csv
Apr 14, 2025
fdd068c
Update to measure-specific query file
Apr 14, 2025
3cf473b
Post-processing - simdata.csv
Apr 14, 2025
067a8dd
Rename folder version
Apr 14, 2025
638dc0e
Revert "Post-processing - simdata.csv"
Apr 21, 2025
163176e
Revert "Post-processing - results-sizing-agg.csv and results-sizing-d…
Apr 21, 2025
6296844
Result.py
Apr 21, 2025
e142c79
Result2.py
Apr 21, 2025
01b0f5e
Merge pull request #16 from unbiya/dev-SWHC012-T24-update
simularis Apr 30, 2025
0ee127a
updated script
kny4 Sep 18, 2025
9696e4d
updated scripts
kny4 Sep 18, 2025
3cd355a
updated scripts
kny4 Sep 18, 2025
5087083
updated scripts for primary and secondary building types
kny4 Sep 19, 2025
c01fa65
removed unused files
kny4 Sep 19, 2025
4de48d4
edited script
kny4 Sep 19, 2025
5550c14
updated occ schedules for each building type
kny4 Sep 27, 2025
5cd9931
removed unused files
kny4 Sep 27, 2025
45b3f70
updated cases with link sizing, heat/cool sizing factor, and schedule…
kny4 Sep 27, 2025
4f0062f
updated column numbers and script labels
kny4 Sep 28, 2025
49dd5bb
script update
kny4 Sep 28, 2025
4c1b9d2
removed link sizing to run complete models
kny4 Oct 1, 2025
e964a43
Added options for sizing map
nfette Oct 9, 2025
b1de341
updated script occ sched and query file to include cooling cap
kny4 Oct 10, 2025
913f345
Correct disable_ems parameter name (v2)
nfette Oct 9, 2025
ce9e7ec
Disabled linked sizing
nfette Oct 30, 2025
76a9af8
Remove redundant copies of script result.py
nfette Oct 30, 2025
122048b
updated measure post-processing steps README
kny4 Oct 22, 2025
76d838c
updated measure post-processing steps README
kny4 Oct 22, 2025
847c309
added update comment schedule.py
kny4 Oct 22, 2025
129b5c1
Update measure README.md
kny4 Oct 22, 2025
531c15d
Convert script to function to iterate over three building types
nfette Oct 30, 2025
c4e311f
Added function comments for clarity
nfette Oct 30, 2025
f9b9ff6
Simplify output files and add function comments
nfette Oct 30, 2025
8a087e2
Remove redundant files and document schedule script
nfette Oct 30, 2025
619fa5b
Clarify DST assumption in script
nfette Oct 30, 2025
3a81edf
Document workaround in case of EnergyPlus error from relative file path
nfette Oct 30, 2025
0e1d3be
Merge pull request #38 from simularis/dev-SWHC012-T24-update
nfette Oct 31, 2025
8f9331e
Correct disable_ems parameter name
nfette Oct 9, 2025
58cd86e
Preserve sizing runs in hard-sizing cases to resolve errors with Coil…
nfette Oct 9, 2025
1501b1a
Add sizing map entries from manual review by Kelsey Yen
nfette Nov 6, 2025
cae9a07
Address QC for sizing map v22.2
nfette Nov 8, 2025
5c96d4f
Address QC round 2 for sizing map v22.2
nfette Nov 8, 2025
a7be96c
Stylize sizing map file without all upper case class names
nfette Nov 8, 2025
1aff6f5
Revert "Preserve sizing runs in hard-sizing cases to resolve errors w…
nfette Nov 8, 2025
f9dbb83
Class name and output field pairs from running EnergyPlus example models
nfette Nov 10, 2025
14e21a5
Use new sizing map for SWHC012
nfette Nov 10, 2025
4e43607
Apply workaround for relative path to schedule files SWHC012
nfette Nov 10, 2025
088d6f9
Apply linked sizing to SWHC012 new vintage
nfette Nov 14, 2025
064a43e
Query file for gathering cooling capacity SWHC012
nfette Nov 15, 2025
d3b55a7
Create coil_list for classroom and include result_filtered.py
nfette Nov 16, 2025
b1e7059
Simplify normalizing unit query for SWHC012
nfette Nov 16, 2025
7d49970
Update result2.py to latest development version in SWHC12
nfette Nov 16, 2025
2459862
Add other building type / HVAC paris
nfette Nov 16, 2025
bd3f057
Helper file for use with result2.py to get sizing data
nfette Nov 17, 2025
a4630db
Revised SWHC012 README to describe revised normalizing unit process
nfette Jan 4, 2026
c9d60bb
QC edits
nfette Jan 4, 2026
5099854
Merge pull request #45 from simularis/dev-SWHC012-linked-sizing-nf
simularis Jan 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions commercial measures/SWHC012-05 Occupancy Sensor/.modelkit-config
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

# Paths are expanded relative to this modelkit-config file.

prototypes-dir = '../../prototypes'
templates-dir = '../../templates/energyplus/templates'
weather-dir = '../../weather'
codes-dir = '../../codes'

max-workers = 12 # Maximum number of simulations to run in parallel


[template-compose]
annotate = true
indent = " "
esc-line = "! "
dirs = '~\Documents\Modelkit Caboodle\templates\energyplus\templates' # Must be an absolute path

[energyplus-run]
engine = 'C:\EnergyPlusV22-2-0' # Must be an absolute path
#engine = '/Applications/EnergyPlus-22-2-0' # Must be an absolute path
#engine = '/Applications/EnergyPlus-9-2-0' # Must be an absolute path
readvars = true
keep = false
output-files = "eplusout.err; eplusout.sql; eplustbl.htm; eplusvar.csv"
Binary file not shown.
119 changes: 119 additions & 0 deletions commercial measures/SWHC012-05 Occupancy Sensor/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# SWHC012 Occupancy Sensor, Classroom

This document describes the steps necessary to reproduce simulations and model outputs for this measure.

Prepared by Kelsey Yen and Nicholas Fette (Solaris Technical).
Created 2025-10-22, revised 2026-01-03.

## Generating temperature setback schedules

Run the script included in this folder to output Schedule_Primary.csv, Schedule_Relocatable.csv, and Schedule_Secondary.csv.

```
python schedule.py
```

The schedules will be referenced by EnergyPlus models via a Schedule:File object.

## Running simulation

Providing a filename via the parameter classroom_class_setpoint_temp_schedule parameter triggers the prototypes to read in a temperature setpoint schedule from file.
The filename is specified in the hvac-zone template using a relative path to its location in the measure folder.
If EnergyPlus issues a warning due to the relative path, a user apply a workaround by editing the hvac-zone template to hard-code the folder where schedules are located, for example:

**templates\energyplus\templates\zonehvac\hvac-zone.pxt near line 590**

```
Schedule:File,
<%=zone_name %> Cooling Setpoint Schedule, !- Name
Temperature, !- Schedule Type Limits Name
C:/DEER-Prototypes-EnergyPlus/commercial measures/SWHC012-05 Occupancy Sensor/<%= setpoint_temp_schedule %>, !- File Name
3, !- Column Number
1, !- Rows to Skip at Top
8760, !- Number of Hours of Data
Comma, !- Column Separator
No, !- Interpolate to Timestep
10, !- Minutes per Item
Yes; !- Adjust Schedule for Daylight Savings
```
**templates\energyplus\templates\zonehvac\hvac-zone.pxt near line 612**

```
Schedule:File,
<%=zone_name %> Heating Setpoint Schedule, !- Name
Temperature, !- Schedule Type Limits Name
C:/DEER-Prototypes-EnergyPlus/commercial measures/SWHC012-05 Occupancy Sensor/<%= setpoint_temp_schedule %>, !- File Name
4, !- Column Number
1, !- Rows to Skip at Top
8760, !- Number of Hours of Data
Comma, !- Column Separator
No, !- Interpolate to Timestep
10, !- Minutes per Item
Yes; !- Adjust Schedule for Daylight Savings
```

## Extracting Normalizing Units for Classrooms

Developers applied the measure to only those zones representing
classrooms, taken to mean where zone_type prefix is `classroom_class`.
Developers considered area (from zones), cooling capacity (from cooling coils),
and cooling capacity (from AirLoopHVAC systems) as candidates for normalizing units,
ultimately choosing cooling capacity from AirLoopHVAC systems.

The total cooling capacity of classroom zones in a given building simulation is
calculated using a multi-step process to tabulate cooling capacity for
each system in the model and then filter relevant systems and aggregate
the capacity of matching systems.

### To reproduce the computations, a user should enter these command line statements:

1. Change directory into the first vintage subfolder and run the data extraction script:

```
cd "C:/DEER-Prototypes-EnergyPlus/commercial measures/SWHC012-05 Occupancy Sensor/SWHC012-05 Occupancy Sensor_Ex"
python result2.py -s -t -q ../query_SWHC012_normalizing.txt
```

At this point, the user should have a new SQLite file `simdata.sqlite` saved by the
script with tables sim_metadata and sim_tabular, which contains cooling capacity figures for each building instance and system.

2. Continue with the command to reformat sizing data:

```
cat ../extract_sizing_data_sqlite.sql | sqlite3 simdata.sqlite -csv -header > results-sizing-detail.csv
```

At this point, the user should have a new file `results-sizing-detail.csv` with
similar information in plain text / CSV format. If sqlite3 is not installed,
download a portable executable or execute the query statement using a database preview application.

3. Repeat above steps for each vintage subfolder (Ex, New).

4. Then, continue with commands:

```
cd "C:/DEER-Prototypes-EnergyPlus/commercial measures/SWHC012-05 Occupancy Sensor"
python result_filtered.py
```

The result_filtered script cross-references the result_sizing_detail.csv and coil_list.xlsx in order to filter relevant zones or systems.
At this point, the user should have a new files "sizing_agg_filtered.csv" in each vintage subfolder.

5. Combine the sizing_agg_filtered files into one CSV file and archive the result among energy model outputs.

The combined sizing_agg_filtered.csv contains the normalizing unit lookup table, which
can be used for example by pasting into an energy savings calculation workbook.

### Developer Notes
1. The classroom system names were manually identified by inspection of
prototype root files and tabulated in the file `coil_list.xlsx` (sheet "Main coils").
2. Cooling capacity was obtained in bulk using the tabular report fields listed
in query_SWHC012_normalizing.txt. Based on trial and error, measure developers
determined that outputs from AirLoopHVAC:UnitarySystem were preferred over
outputs from individual cooling coils due to ambiguous labeling of total
cooling capacity in multispeed coils; and that with linked-sizing active, the query
strings vary slightly between base case and measure case models.
3. For a convenience, the distinct query file used to collate model usage (`query_SWHC012.txt`)
may include query strings to gather area or cooling capacity of some classroom zones.
These are useful during model testing as a sanity check but are ultimately unused
in calculating normalizing units, UEC, and UES.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_fan_motor_eff,:main_heat_flow_frac,:main_fan_speed,:main_cool_coil_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXGF,NE-HV_Tech-OccSens-cDXGF-NoOccSens,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,Schedule_Primary.csv
,NE-HV_Tech-OccSens-cDXGF-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_cool_coil_type,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_fan_speed,:main_fan_motor_eff,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXHP,NE-HV_Tech-OccSens-cDXHP-NoOccSens,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,Schedule_Primary.csv
,NE-HV_Tech-OccSens-cDXHP-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_fan_motor_eff,:main_heat_flow_frac,:main_fan_speed,:main_cool_coil_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXGF,NE-HV_Tech-OccSens-cDXGF-NoOccSens,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,Schedule_Relocatable.csv
,NE-HV_Tech-OccSens-cDXGF-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_cool_coil_type,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_fan_speed,:main_fan_motor_eff,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXHP,NE-HV_Tech-OccSens-cDXHP-NoOccSens,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,Schedule_Relocatable.csv
,NE-HV_Tech-OccSens-cDXHP-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_fan_motor_eff,:main_heat_flow_frac,:main_fan_speed,:main_cool_coil_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXGF,NE-HV_Tech-OccSens-cDXGF-NoOccSens,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,Schedule_Secondary.csv
,NE-HV_Tech-OccSens-cDXGF-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,COMBUSTION,0.81,,0.87,1,CONSTANT,DX-AIR,4.11,CONSTANT,NONE,nil,3.877['in H2O'],PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
skip,case_name,sizing_case,:disable_ems,:heat_sizing_factor,:cool_sizing_factor,:main_hvac_type,:main_atu_reheat_coil_type,:main_atu_reheat_control,:main_fan_rise,:main_heat_coil_type,:main_heat_coil_eff,:main_heat_coil_cop,:main_cool_coil_type,:main_dx_type,:main_sat_reset_type,:main_sat_temp_max,:main_design_peak_load,:main_oa_econ_type,:main_cool_coil_cop,:main_dx_comp_speed,:main_fan_speed,:main_fan_motor_eff,:classroom_class_setpoint_temp_schedule
,NE-HV_Tech-OccSens-cDXHP,NE-HV_Tech-OccSens-cDXHP-NoOccSens,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,Schedule_Secondary.csv
,NE-HV_Tech-OccSens-cDXHP-NoOccSens,,TRUE,1.25,1.15,SZ-CAV,NONE,nil,3.877['in H2O'],DX-AIR,3.2,,DX-AIR,PNNL,FLOATING,95['F'],NONCOINCIDENT,FIXED-DRY-BULB,4.13,CONSTANT,CONSTANT,0.87,
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
skip,climate,weather_file,climate_zone,codes_file
,CZ01,CA_EUREKA_725940S_CZ2022.epw,1,T24_weight_averaged_ex.csv
,CZ02,CA_NAPA-CO_724955S_CZ2022.epw,2,T24_weight_averaged_ex.csv
,CZ03,CA_OAKLAND-METRO-AP_724930S_CZ2022.epw,3,T24_weight_averaged_ex.csv
,CZ04,CA_SAN-JOSE-IAP_724945S_CZ2022.epw,4,T24_weight_averaged_ex.csv
,CZ05,CA_SANTA-MARIA-PUBLIC-AP_723940S_CZ2022.epw,5,T24_weight_averaged_ex.csv
,CZ06,CA_LOS-ANGELES-IAP_722950S_CZ2022.epw,6,T24_weight_averaged_ex.csv
,CZ07,CA_SAN-DIEGO-LINDBERGH-FLD_722900S_CZ2022.epw,7,T24_weight_averaged_ex.csv
,CZ08,CA_LONG-BEACH-DAUGHERTY-FLD_722970S_CZ2022.epw,8,T24_weight_averaged_ex.csv
,CZ09,CA_LOS-ANGELES-DOWNTOWN-USC_722874S_CZ2022.epw,9,T24_weight_averaged_ex.csv
,CZ10,CA_RIVERSIDE-MUNI_722869S_CZ2022.epw,10,T24_weight_averaged_ex.csv
,CZ11,CA_RED-BLUFF-MUNI-AP_725910S_CZ2022.epw,11,T24_weight_averaged_ex.csv
,CZ12,CA_STOCKTON-METRO-AP_724920S_CZ2022.epw,12,T24_weight_averaged_ex.csv
,CZ13,CA_FRESNO-YOSEMITE-IAP_723890S_CZ2022.epw,13,T24_weight_averaged_ex.csv
,CZ14,CA_DAGGETT-BARSTOW-AP_723815S_CZ2022.epw,14,T24_weight_averaged_ex.csv
,CZ15,CA_EL-CENTRO-NAF_722810S_CZ2022.epw,15,T24_weight_averaged_ex.csv
,CZ16,CA_BISHOP-AP_724800S_CZ2022.epw,16,T24_weight_averaged_ex.csv
Loading