-
Notifications
You must be signed in to change notification settings - Fork 28
HPRTU measure: carrier's dual fuel RTU option #446
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: ccaradon/sdr_2025_r4
Are you sure you want to change the base?
Conversation
|
adding some code walk-throughs below |
|
|
||
| # make list of backup heat options | ||
| li_backup_heat_options = %w[match_original_primary_heating_fuel electric_resistance_backup] | ||
| li_backup_heat_options = %w[match_original_primary_heating_fuel electric_resistance_backup dual_fuel_gas_furnace_backup] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this new option triggers the addition of modeling hybrid gas coil via Coil:UserDefined object
|
|
||
| # make list of cchpc scenarios | ||
| li_hprtu_scenarios = %w[two_speed_standard_eff two_speed_lab_data variable_speed_high_eff cchpc_2027_spec] | ||
| li_hprtu_scenarios = %w[two_speed_standard_eff two_speed_lab_data variable_speed_high_eff cchpc_2027_spec carrier_48qe_dualfuel] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and this new option applies performance maps that resemble Carrier's 48QE models
| modify_setbacks = OpenStudio::Measure::OSArgument.makeBoolArgument('modify_setbacks', false) | ||
| modify_setbacks.setDisplayName('Modify setbacks in heating mode? True will adjust setbacks, according to value in setback value argument.') | ||
| modify_setbacks.setDefaultValue(true) | ||
| modify_setbacks.setDefaultValue(false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not related to this work, but setting the default as false
| end | ||
|
|
||
| #### End predefined functions | ||
| def create_two_stage_dual_fuel_gas_coil_with_ems( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is the method that adds Coil:UserDefined object with EMS
| when 'carrier_48qe_dualfuel' | ||
| # read performance data | ||
| path_data_curve = "#{File.dirname(__FILE__)}/resources/performance_maps_carrier_48qe_dualfuel.json" | ||
| custom_data_json = JSON.parse(File.read(path_data_curve)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
loading the new json that includes new performance maps
| # ********************************************************* | ||
| # add dual fuel gas coil via ems | ||
| # ********************************************************* | ||
| if (backup_ht_fuel_scheme == 'dual_fuel_gas_furnace_backup') | ||
| create_two_stage_dual_fuel_gas_coil_with_ems( | ||
| model, | ||
| runner, | ||
| air_loop_hvac, | ||
| new_dx_heating_coil, | ||
| orig_htg_coil_gross_cap_old, | ||
| new_air_to_air_heatpump, | ||
| hybrid_gas_coil_stage_ratio | ||
| ) | ||
| end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is where the new hybrid gas coil gets created and added to the airloop "after" the unitary system object
| label_map = { | ||
| 'wholebuilding' => 'wb', | ||
| 'office' => 'off', | ||
| 'zone' => 'zn', | ||
| 'story' => 'stry', | ||
| 'ground' => 'grnd', | ||
| 'psz-ac' => '', | ||
| 'fullservicerestaurant' => 'fsr', | ||
| 'dining' => 'din', | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't want to blow up names in ems variables. so created this map but it isn't certainly including all variations we see in our models. maybe it'd be nice to hear about other/better options for this.
| # Mechanical heating must be active | ||
| ems_program.addLine("IF #{s_dx_runtime_frac.name} > 0.0") | ||
| ems_program.addLine(" SET mech_heat_enable = 1") | ||
| ems_program.addLine("ELSEIF #{s_oat_t.name} < #{hp_min_comp_lockout_temp_f}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
line 1372: this IF means, hybrid gas coil operates when HP heating is running (and when SAT stpt is not met)
line 1375: this IF means, hybrid gas coil operates when HP is locked out (and when SAT stpt is not met)
| num_steps_per_hr = model.getSimulationControl.timestep.get.numberOfTimestepsPerHour | ||
|
|
||
| # initialize constants | ||
| heating_capacity_stage_1_w, heating_capacity_stage_2_w = get_dual_fuel_gas_coil_capacity(dx_rated_htg_cap_applied) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assigning hybrid gas coil capacities from regressions generated from catalog data
|
note:
|
Pull request overview
coming from DualFuelRTU project:
expanding existing HPRTU measure to reflect Carrier's dual fuel RTU (48QE model) performance
other than some clean ups in the measure script, major implementations/changes are,
performance maps:
hybrid gas coil:
Coil:UserDefinedobject for modeling two-stage hybrid gas coil. because of the suspected issue with the OS forward translator, this is how the final model looks like in terms of branch structure:single model test results 1:
single model test results 2:
remaining TODOs:
just noticed, I have to let the hybrid gas coil to run when compressor is locked out.Pull Request Author
This pull request makes changes to (select all the apply):
Pull Request Author Checklist:
comstock_column_definitions.csvoptions_lookup.tsvfiles updatedtest/reporting_measure_tests.txt,test/workflow_measure_tests.txt, ortest/upgrade_measure_tests.txt.ymlfiles andREADME.mdfilesPull Request Reviewer Checklist:
test/reporting_measure_tests.txt,test/workflow_measure_tests.txt, ortest/upgrade_measure_tests.txt.ymlandREADME.mdfiles updatedComStock Licensing Language - Add to Beginning of Each Code File