std::vector<ModelObject> Building_Impl::children() const { std::vector<ModelObject> result; // meters MeterVector meters = this->meters(); result.insert(result.end(),meters.begin(),meters.end()); // building stories BuildingStoryVector stories = model().getConcreteModelObjects<BuildingStory>(); result.insert(result.end(),stories.begin(),stories.end()); // exterior shading groups ShadingSurfaceGroupVector shadingSurfaceGroups = this->shadingSurfaceGroups(); result.insert(result.end(), shadingSurfaceGroups.begin(), shadingSurfaceGroups.end()); // thermal zones ThermalZoneVector thermalZones = this->thermalZones(); result.insert(result.end(), thermalZones.begin(), thermalZones.end()); // spaces SpaceVector spaces = this->spaces(); result.insert(result.end(), spaces.begin(), spaces.end()); return result; }
ShadingSurfaceGroupVector Building_Impl::shadingSurfaceGroups() const { ShadingSurfaceGroupVector result; for (ShadingSurfaceGroup shadingGroup : this->model().getConcreteModelObjects<ShadingSurfaceGroup>()){ if (istringEqual(shadingGroup.shadingSurfaceType(), "Building")){ result.push_back(shadingGroup); } } return result; }
boost::optional<IdfObject> ForwardTranslator::translateSite( Site & modelObject ) { IdfObject site = createAndRegisterIdfObject(openstudio::IddObjectType::Site_Location, modelObject); OptionalString optS = modelObject.name(); if(optS) { site.setName(*optS); } OptionalDouble od = modelObject.latitude(); if(od) { site.setDouble(Site_LocationFields::Latitude, *od); } od = modelObject.longitude(); if(od) { site.setDouble(Site_LocationFields::Longitude, *od); } od = modelObject.timeZone(); if(od) { site.setDouble(Site_LocationFields::TimeZone, *od); } od = modelObject.elevation(); if(od) { site.setDouble(Site_LocationFields::Elevation, *od); } // translate shading groups ShadingSurfaceGroupVector shadingSurfaceGroups = modelObject.shadingSurfaceGroups(); std::sort(shadingSurfaceGroups.begin(), shadingSurfaceGroups.end(), WorkspaceObjectNameLess()); for (ShadingSurfaceGroup& shadingSurfaceGroup : shadingSurfaceGroups){ translateAndMapModelObject(shadingSurfaceGroup); } return boost::optional<IdfObject>(site); }
boost::optional<IdfObject> ForwardTranslator::translateBuilding( Building & modelObject ) { Model model = modelObject.model(); IdfObject idfObject(IddObjectType::Building); m_idfObjects.push_back(idfObject); for (LifeCycleCost lifeCycleCost : modelObject.lifeCycleCosts()){ translateAndMapModelObject(lifeCycleCost); } OptionalString optS = modelObject.name(); if( optS ) { idfObject.setName(stripOS2(*optS)); } if (!modelObject.isNorthAxisDefaulted()){ idfObject.setDouble(openstudio::BuildingFields::NorthAxis, modelObject.northAxis()); } // terrain comes from Site OptionalSite site = model.getOptionalUniqueModelObject<Site>(); if (site){ if (!site->isTerrainDefaulted()){ idfObject.setString(openstudio::BuildingFields::Terrain, site->terrain()); } } // these fields come from SimulationControl OptionalSimulationControl simulationControl = model.getOptionalUniqueModelObject<SimulationControl>(); if (simulationControl){ if (!simulationControl->isLoadsConvergenceToleranceValueDefaulted()){ idfObject.setDouble(openstudio::BuildingFields::LoadsConvergenceToleranceValue, simulationControl->loadsConvergenceToleranceValue()); } if (!simulationControl->isTemperatureConvergenceToleranceValueDefaulted()){ idfObject.setDouble(openstudio::BuildingFields::TemperatureConvergenceToleranceValue, simulationControl->temperatureConvergenceToleranceValue()); } if (!simulationControl->isSolarDistributionDefaulted()){ idfObject.setString(openstudio::BuildingFields::SolarDistribution, simulationControl->solarDistribution()); } if (!simulationControl->isMaximumNumberofWarmupDaysDefaulted()){ idfObject.setInt(openstudio::BuildingFields::MaximumNumberofWarmupDays, simulationControl->maximumNumberofWarmupDays()); } if (!simulationControl->isMinimumNumberofWarmupDaysDefaulted()) { idfObject.setInt(openstudio::BuildingFields::MinimumNumberofWarmupDays, simulationControl->minimumNumberofWarmupDays()); } } // translate shading groups ShadingSurfaceGroupVector shadingSurfaceGroups = modelObject.shadingSurfaceGroups(); std::sort(shadingSurfaceGroups.begin(), shadingSurfaceGroups.end(), WorkspaceObjectNameLess()); for (ShadingSurfaceGroup& shadingSurfaceGroup : shadingSurfaceGroups){ translateAndMapModelObject(shadingSurfaceGroup); } return boost::optional<IdfObject>(idfObject); }