Repository navigation
Conversation
Adds 'Unitary - Single Speed DX cooling - Elec heat - CAV - Hotgas reheat' to the default HVAC library, using CoolReheat dehumidification control with a Coil:Heating:Desuperheater as the reheat coil. The desuperheater reclaims waste heat from the unitary system's own DX cooling coil rather than using resistance reheat, avoiding the extra energy cost of electric reheat. Also fixes AirLoopHVACUnitarySystem cloning (drag-from-library and "copy system"): ModelObject::clone() only remaps parent-child ownership, but CoilHeatingDesuperheater::heatingSource() is a lateral reference to a sibling coil, so it was left unset on the clone. fixupClonedDesuperheaterHeatingSource() re-links the cloned desuperheater coil to the cloned cooling coil. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ModelObject::clone() clones each child individually and reattaches it via setParent(), so parent-child edges are correctly remapped, but lateral (sibling-to-sibling) object-list references within the cloned subtree are left pointing at the original objects. The previous fix special-cased just CoilHeatingDesuperheater::heatingSource(), but the same bug applies to any lateral reference (e.g. SetpointManager:MixedAir's node fields). Replace it with a generic fixup: build an old-handle -> clone map by walking the original and cloned subtrees in parallel, then use IddObject::objectLists()/WorkspaceObject::getTarget()/setPointer() to rewrite any object-list field in the clone that still points into the original subtree. This fixes the desuperheater case as before, and any future lateral-reference case, without needing a new special case per object type. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This repo is built in-place at the repo root rather than in an out-of-source build/ dir, so CMake, Conan, MSBuild, and Qt's moc/rcc all drop generated files directly alongside tracked source. None of that was covered by the existing (out-of-source-build-oriented) ignore rules, so every local build left ~150+ untracked files/dirs in git status. Also ignores the handful of configure_file()-generated files produced from tracked .in templates -- notably AnalyticsHelperSecrets.hxx, which is populated with real secret values at configure time and should never be committed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Owner
Author
|
Closing — this bundled the desuperheater feature commits along with the gitignore commit by mistake. Gitignore-only PR is #2; the desuperheater work will get its own PR separately. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Coil:Heating:Desuperheateras the supplemental/reheat coil underCoolReheatdehumidification control, so reheat is sourced from the cooling coil's waste heat instead of resistance heat.AirLoopHVACUnitarySystemcloning (drag-from-library and "copy system"):ModelObject::clone()only remaps true parent-child relationships, so lateral (sibling-to-sibling) object-list references — likeCoilHeatingDesuperheater::heatingSource()— were left pointing at the original objects after a clone. Replaced the initial desuperheater-specific fix with a generic post-clone reference remapper (buildCloneHandleMap+remapLateralReferences, usingIddObject::objectLists()/WorkspaceObject::getTarget()/setPointer()) so it covers this bug class generically rather than one special case per object type..gitignorerules for the in-source CMake/Conan/Qt build artifacts this repo's local build layout produces (it builds in-place at the repo root rather than out-of-source), includingAnalyticsHelperSecrets.hxx, which is populated with real secret values at configure time and should never be committed.Test plan
cmake --build . --target openstudio_lib --config ReleasesucceedsheatingSource()is correctly re-linked on the clone🤖 Generated with Claude Code