EMS actuator for Coil:Heating:DX:SingleSpeed gross rated heating capacity#11527
EMS actuator for Coil:Heating:DX:SingleSpeed gross rated heating capacity#11527brianlball wants to merge 4 commits intodevelopfrom
Conversation
…capacity Issue #11301: scan EMSActuatorAvailable after GetDXCoils for the heating sibling of Autosized Rated Total Cooling Capacity; fails because the actuator is not yet registered.
Issue #11301: adds Autosized Rated Total Heating Capacity [W] actuator at the end of GetDXCoils, parallel to the existing cooling sibling. RatedTotCapEMSOverrideOn/Value(1) are already consumed by HeatingCapacitySizer in SizeDXCoil, so only the registration was missing.
Issue #11301: new EMSHeatingDXSingleSpeedCapacityOverride.idf derived from HeatPumpAuto.idf exercises the new actuator end-to-end; EIO shows User-Specified 7500 W (vs autosize). EMS application guide gains a paragraph under DX Heating Coils mirroring the cooling sibling.
|
Regression diff explanation (CI run 24415448969)The `Process completed with exit code 1` annotation is from `gha_regressions.py`, which exits non-zero on any diff but is informational on fork PRs (the "Fail on Regressions from Forked Repository" step is skipped, so the job conclusion is ✓ `success`). Three IDFs show diffs, all of which are the expected mechanical side-effect of registering one new EMS actuator per `Coil:Heating:DX:SingleSpeed`:
The delta in `numEMSActuatorsAvailable` equals the count of `Coil:Heating:DX:SingleSpeed` objects in each IDF. The added `eplusout.edd` lines are all of the form: ``` No simulation-behavior changes (all `tbl` comparison cells are `equal`/0). No ESO, SQL, or tabular numerical diffs. The actuator is only consumed when an EMS program binds to it, and none of these IDFs do. These diffs are safe to merge. |
|
Issue #11301: clarify the implicit parse-order array layout in DXCoils.hh (cooling single-speed first, heating single-speed next, etc.) and annotate the heating actuator loop with the same note. New unit test registers 2 cooling + 2 heating single-speed coils and verifies each capacity actuator's UniqueIDName matches the correct coil and no cross-wiring occurs between cooling and heating ComponentTypeName.
8e9a234 to
8c3162b
Compare
|
|
|
Summary
Resolves #11301. Adds an EMS actuator named
Autosized Rated Total Heating CapacityonCoil:Heating:DX:SingleSpeed, mirroring the existingAutosized Rated Total Cooling Capacityactuator onCoil:Cooling:DX:SingleSpeed. Enables EMS programs to override the autosized gross heating capacity — primary use case: dual-fuel forced-air systems where the heat pump is sized to cooling capacity and the supplemental gas coil carries full heating capacity.What changed
src/EnergyPlus/DXCoils.cc— adds a second loop inside the existingif (AnyEnergyManagementSystemInModel)block inGetDXCoils, iterating heating-single-speed indices and registering oneSetupEMSActuatorcall. ~12 LOC.RatedTotCapEMSOverrideOn/Value(1)are members of the sharedDXCoilDatastruct and are already consumed byHeatingCapacitySizerinSizeDXCoil(theModecheck atDXCoils.cc:7769already includesHeatingDXSingleSpeed). Only theSetupEMSActuatorregistration was missing.Call graph
Naming rationale
Autosized Rated Total Cooling Capacity.Rated Total Heating Capacityused inHeatingCapacitySizing.cc:184andWaterHeatingCapacitySizing.cc:113.Test plan
EnergyPlusFixture.CoilHeatingDXSingleSpeed_GrossCapacityActuatorintst/EnergyPlus/unit/DXCoils.unit.cc— scansEMSActuatorAvailableafterGetDXCoilsand asserts the heating actuator is registered with correct units and name. Test-red without the fix, test-green with it (separate commits for verification).EMSHeatingDXSingleSpeedCapacityOverride.idf— derived fromHeatPumpAuto.idf; EMS program overrides capacity to 7500 W atAfterComponentInputReadIn. EIO confirmsUser-Specified Gross Rated Heating Capacity [W], 7500.00000(vs autosize without override). DESIGN_DAY_ONLY.Docs
doc/readthedocs/sphinx/ems-application-guide/ems-application-guide.rst— new paragraph underDX Heating Coilsdescribing the actuator and its calling point.