MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / clone

Method clone

src/model/Surface.cpp:131–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

129 }
130
131 ModelObject Surface_Impl::clone(Model model) const {
132 ModelObject newParentAsModelObject = ModelObject_Impl::clone(model);
133 auto newParent = newParentAsModelObject.cast<ParentObject>();
134
135 for (const ModelObject& child : children()) {
136 ModelObject newChild = child.clone(model);
137 newChild.setParent(newParent);
138 if (auto ss_ = child.optionalCast<SubSurface>()) {
139 newChild.cast<SubSurface>().setSubSurfaceType(ss_->subSurfaceType());
140 }
141 }
142
143 auto coefficients = surfacePropertyConvectionCoefficients();
144 if (coefficients) {
145 auto coefficientsClone = coefficients->clone(model).cast<SurfacePropertyConvectionCoefficients>();
146 coefficientsClone.setSurface(newParentAsModelObject);
147 }
148
149 // TODO: do we clone the SurfacePropertyLocalEnvironment?
150
151 auto foundation = adjacentFoundation();
152 if (foundation) {
153 auto foundationClone = foundation->clone(model).cast<FoundationKiva>();
154 newParentAsModelObject.cast<Surface>().setAdjacentFoundation(foundationClone);
155 }
156
157 return newParentAsModelObject;
158 }
159
160 std::vector<IddObjectType> Surface_Impl::allowableChildTypes() const {
161 return std::vector<IddObjectType>{IddObjectType::OS_SubSurface};

Callers 1

Calls 6

setSubSurfaceTypeMethod · 0.80
subSurfaceTypeMethod · 0.80
setAdjacentFoundationMethod · 0.80
cloneFunction · 0.50
setParentMethod · 0.45
setSurfaceMethod · 0.45

Tested by

no test coverage detected