Exemple #1
0
  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;
  }
Exemple #2
0
 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);
}