boost::optional<IdfObject> ForwardTranslator::translateInteriorPartitionSurfaceGroup( model::InteriorPartitionSurfaceGroup & modelObject )
{
  InteriorPartitionSurfaceVector interiorPartitionSurfaces = modelObject.interiorPartitionSurfaces();
  std::sort(interiorPartitionSurfaces.begin(), interiorPartitionSurfaces.end(), WorkspaceObjectNameLess());
  for (InteriorPartitionSurface& interiorPartitionSurface : interiorPartitionSurfaces){
    translateAndMapModelObject(interiorPartitionSurface);
  }

  return boost::none;
}
boost::optional<IdfObject> ForwardTranslator::translateShadingSurfaceGroup( model::ShadingSurfaceGroup & modelObject )
{
  
  ShadingSurfaceVector shadingSurfaces = modelObject.shadingSurfaces();
  std::sort(shadingSurfaces.begin(), shadingSurfaces.end(), WorkspaceObjectNameLess());
  for (ShadingSurface& shadingSurface : shadingSurfaces){
    translateAndMapModelObject(shadingSurface);
  }

  return boost::none;
}
Exemplo n.º 3
0
std::vector<model::RefrigerationSystem> RefrigerationSystemListController::systems() const
{
  std::vector<model::RefrigerationSystem> result;

  if( boost::optional<model::Model> model = OSAppBase::instance()->currentModel() )
  {
    result = model->getModelObjects<model::RefrigerationSystem>();
  }

  std::sort(result.begin(), result.end(), WorkspaceObjectNameLess());

  return result;
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
  boost::optional<QDomDocument> ForwardTranslator::translateModel(const openstudio::model::Model& model)
  {
    QDomDocument doc;
    doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");

    QDomElement sddElement = doc.createElement("SDDXML");
    sddElement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    sddElement.setAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
    doc.appendChild(sddElement);

    // set ruleset, where should this data come from?
    QDomElement rulesetFilenameElement = doc.createElement("RulesetFilename");
    sddElement.appendChild(rulesetFilenameElement);
    rulesetFilenameElement.setAttribute("file", "unknown");

    // set project, where should this data come from?
    QDomElement projectElement = doc.createElement("Proj");
    sddElement.appendChild(projectElement);

    QDomElement projectNameElement = doc.createElement("Name");
    projectElement.appendChild(projectNameElement);
    projectNameElement.appendChild( doc.createTextNode( "unknown"));

    // site data
    QDomElement projectClimateZoneElement = doc.createElement("CliZn");
    projectElement.appendChild(projectClimateZoneElement);
    projectClimateZoneElement.appendChild( doc.createTextNode( "unknown"));

    // set lat, lon, elev
    // DLM: do not translate forward,  Issue 242: Forward Translator - Remove Proj:Lat/Lon/Elevation translation
    /*
    boost::optional<model::Site> site = model.getOptionalUniqueModelObject<model::Site>();
    if (site){
      double latitude = site->latitude();
      QDomElement latElement = doc.createElement("Lat");
      projectElement.appendChild(latElement);
      latElement.appendChild( doc.createTextNode(QString::number(latitude)));

      double longitude = site->longitude();
      QDomElement longElement = doc.createElement("Long");
      projectElement.appendChild(longElement);
      longElement.appendChild( doc.createTextNode(QString::number(longitude)));

      double elevationSI = site->elevation();
      double elevationIP = elevationSI/0.3048;
      QDomElement elevationElement = doc.createElement("Elevation");
      projectElement.appendChild(elevationElement);
      elevationElement.appendChild( doc.createTextNode(QString::number(elevationIP)));
    }
    */

    // todo: write out epw file path
    // todo: write out ddy file and set path
    //<DDWeatherFile>C:/svn-CBECC-Com-130521/CBECC-Com13/Data/EPW/SACRAMENTO-EXECUTIVE_724830_CZ2010.ddy</DDWeatherFile>
    //<AnnualWeatherFile>C:/svn-CBECC-Com-130521/CBECC-Com13/Data/EPW/SACRAMENTO-EXECUTIVE_724830_CZ2010.epw</AnnualWeatherFile>
    //<HVACAutoSizing>1</HVACAutoSizing>
    //<SimDsgnDays>1</SimDsgnDays>
    //<RunPeriodBeginMonth>0</RunPeriodBeginMonth>
    //<RunPeriodBeginDay>0</RunPeriodBeginDay>
    //<RunPeriodEndMonth>0</RunPeriodEndMonth>
    //<RunPeriodEndDay>0</RunPeriodEndDay>
    //<RunPeriodYear>0</RunPeriodYear>

    // do materials before constructions 
    std::vector<model::Material> materials = model.getModelObjects<model::Material>();
    std::sort(materials.begin(), materials.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Materials"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum(materials.size());
      m_progressBar->setValue(0);
    }

    for (const model::Material& material : materials){

      boost::optional<QDomElement> materialElement = translateMaterial(material, doc);
      if (materialElement){
        projectElement.appendChild(*materialElement);
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }
  
    // do constructions before geometry

    std::vector<model::ConstructionBase> constructions = model.getModelObjects<model::ConstructionBase>();
    std::sort(constructions.begin(), constructions.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Constructions"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum(3*constructions.size()); // three loops below
      m_progressBar->setValue(0);
    }

    std::set<Handle> surfaceConstructions;
    for (const model::Surface& surface : model.getConcreteModelObjects<model::Surface>()){
      boost::optional<model::ConstructionBase> construction = surface.construction();
      if (construction){
        surfaceConstructions.insert(construction->handle());
      }
    }

    std::set<Handle> doorConstructions;
    std::set<Handle> fenestrationConstructions;
    for (const model::SubSurface& subSurface : model.getConcreteModelObjects<model::SubSurface>()){
      boost::optional<model::ConstructionBase> construction = subSurface.construction();
      if (construction){
        std::string subSurfaceType = subSurface.subSurfaceType();
        if (istringEqual("Door", subSurfaceType) || istringEqual("OverheadDoor", subSurfaceType)){
          doorConstructions.insert(construction->handle());
        }else{
          fenestrationConstructions.insert(construction->handle());
        }
      }
    }

    // translate surface constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (surfaceConstructions.find(constructionBase.handle()) == surfaceConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateConstructionBase(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }
            
      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate door constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (doorConstructions.find(constructionBase.handle()) == doorConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateDoorConstruction(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }
            
      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate fenestration constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (fenestrationConstructions.find(constructionBase.handle()) == fenestrationConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateFenestrationConstruction(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate site shading
    std::vector<model::ShadingSurfaceGroup> shadingSurfaceGroups = model.getConcreteModelObjects<model::ShadingSurfaceGroup>();
    std::sort(shadingSurfaceGroups.begin(), shadingSurfaceGroups.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Site Shading"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum(shadingSurfaceGroups.size()); 
      m_progressBar->setValue(0);
    }

    for (const model::ShadingSurfaceGroup& shadingSurfaceGroup : shadingSurfaceGroups){
      if (istringEqual(shadingSurfaceGroup.shadingSurfaceType(), "Site")){

        Transformation transformation = shadingSurfaceGroup.siteTransformation();

        for (const model::ShadingSurface& shadingSurface : shadingSurfaceGroup.shadingSurfaces()){
          boost::optional<QDomElement> shadingSurfaceElement = translateShadingSurface(shadingSurface, transformation, doc);
          if (shadingSurfaceElement){
            projectElement.appendChild(*shadingSurfaceElement);
          }
        }
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate the building
    boost::optional<model::Building> building = model.getOptionalUniqueModelObject<model::Building>();
    if (building){
      boost::optional<QDomElement> buildingElement = translateBuilding(*building, doc);
      if (buildingElement){
        projectElement.appendChild(*buildingElement);
      }
    }

    return doc;
  }
Exemplo n.º 6
0
  boost::optional<QDomDocument> ForwardTranslator::translateModel(const openstudio::model::Model& model)
  {
    QDomDocument doc;
    doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");

    QDomElement sddElement = doc.createElement("SDDXML");
    sddElement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    sddElement.setAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
    doc.appendChild(sddElement);

    // set ruleset, where should this data come from?
    QDomElement rulesetFilenameElement = doc.createElement("RulesetFilename");
    sddElement.appendChild(rulesetFilenameElement);
    rulesetFilenameElement.setAttribute("file", "CEC 2013 NonRes.bin"); // DLM: only allow one value for now

    // set project, where should this data come from?
    QDomElement projectElement = doc.createElement("Proj");
    sddElement.appendChild(projectElement);

    // DLM: what name to use here?
    QDomElement projectNameElement = doc.createElement("Name");
    projectElement.appendChild(projectNameElement);
    projectNameElement.appendChild(doc.createTextNode("unknown"));

    // site data
    boost::optional<model::ClimateZones> climateZones = model.getOptionalUniqueModelObject<model::ClimateZones>();
    if (climateZones){
      // todo: check document year
      std::vector<model::ClimateZone> zones = climateZones->getClimateZones("CEC");
      if (zones.size() > 0 && !zones[0].value().empty()){

        bool isNumber;
        QString value = toQString(zones[0].value());
        value.toInt(&isNumber);
        if (isNumber){
          value = QString("ClimateZone") + value;
        }

        QDomElement projectClimateZoneElement = doc.createElement("CliZn");
        projectElement.appendChild(projectClimateZoneElement);
        projectClimateZoneElement.appendChild(doc.createTextNode(value));

        m_translatedObjects[climateZones->handle()] = projectClimateZoneElement;
      }
    }

    // set lat, lon, elev
    // DLM: do not translate forward,  Issue 242: Forward Translator - Remove Proj:Lat/Lon/Elevation translation
    /*
    boost::optional<model::Site> site = model.getOptionalUniqueModelObject<model::Site>();
    if (site){
      double latitude = site->latitude();
      QDomElement latElement = doc.createElement("Lat");
      projectElement.appendChild(latElement);
      latElement.appendChild( doc.createTextNode(QString::number(latitude)));

      double longitude = site->longitude();
      QDomElement longElement = doc.createElement("Long");
      projectElement.appendChild(longElement);
      longElement.appendChild( doc.createTextNode(QString::number(longitude)));

      double elevationSI = site->elevation();
      double elevationIP = elevationSI/0.3048;
      QDomElement elevationElement = doc.createElement("Elevation");
      projectElement.appendChild(elevationElement);
      elevationElement.appendChild( doc.createTextNode(QString::number(elevationIP)));

      m_translatedObjects[site.handle()] = latElement;
    }
    */

    // todo: write out epw file path
    // todo: write out ddy file and set path
    //<DDWeatherFile>C:/svn-CBECC-Com-130521/CBECC-Com13/Data/EPW/SACRAMENTO-EXECUTIVE_724830_CZ2010.ddy</DDWeatherFile>
    //<AnnualWeatherFile>C:/svn-CBECC-Com-130521/CBECC-Com13/Data/EPW/SACRAMENTO-EXECUTIVE_724830_CZ2010.epw</AnnualWeatherFile>
    //<HVACAutoSizing>1</HVACAutoSizing>
    //<SimDsgnDays>1</SimDsgnDays>
    //<RunPeriodBeginMonth>0</RunPeriodBeginMonth>
    //<RunPeriodBeginDay>0</RunPeriodBeginDay>
    //<RunPeriodEndMonth>0</RunPeriodEndMonth>
    //<RunPeriodEndDay>0</RunPeriodEndDay>
    //<RunPeriodYear>0</RunPeriodYear>

    // do materials before constructions 
    std::vector<model::Material> materials = model.getModelObjects<model::Material>();
    std::sort(materials.begin(), materials.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Materials"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum((int)materials.size());
      m_progressBar->setValue(0);
    }

    for (const model::Material& material : materials){

      boost::optional<QDomElement> materialElement = translateMaterial(material, doc);
      if (materialElement){
        projectElement.appendChild(*materialElement);
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }
  
    // do constructions before geometry

    std::vector<model::ConstructionBase> constructions = model.getModelObjects<model::ConstructionBase>();
    std::sort(constructions.begin(), constructions.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Constructions"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum(3 * ((int)constructions.size())); // three loops below
      m_progressBar->setValue(0);
    }

    std::set<Handle> surfaceConstructions;
    for (const model::Surface& surface : model.getConcreteModelObjects<model::Surface>()){
      boost::optional<model::ConstructionBase> construction = surface.construction();
      if (construction){
        surfaceConstructions.insert(construction->handle());
      }
    }

    std::set<Handle> doorConstructions;
    std::set<Handle> fenestrationConstructions;
    for (const model::SubSurface& subSurface : model.getConcreteModelObjects<model::SubSurface>()){
      boost::optional<model::ConstructionBase> construction = subSurface.construction();
      if (construction){
        std::string subSurfaceType = subSurface.subSurfaceType();
        if (istringEqual("Door", subSurfaceType) || istringEqual("OverheadDoor", subSurfaceType)){
          doorConstructions.insert(construction->handle());
        }else{
          fenestrationConstructions.insert(construction->handle());
        }
      }
    }

    // translate surface constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (surfaceConstructions.find(constructionBase.handle()) == surfaceConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateConstructionBase(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }
            
      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate door constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (doorConstructions.find(constructionBase.handle()) == doorConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateDoorConstruction(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }
            
      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate fenestration constructions
    for (const model::ConstructionBase& constructionBase : constructions){
      if (fenestrationConstructions.find(constructionBase.handle()) == fenestrationConstructions.end()){
        continue;
      }

      boost::optional<QDomElement> constructionElement = translateFenestrationConstruction(constructionBase, doc);
      if (constructionElement){
        projectElement.appendChild(*constructionElement);
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate site shading
    std::vector<model::ShadingSurfaceGroup> shadingSurfaceGroups = model.getConcreteModelObjects<model::ShadingSurfaceGroup>();
    std::sort(shadingSurfaceGroups.begin(), shadingSurfaceGroups.end(), WorkspaceObjectNameLess());

    if (m_progressBar){
      m_progressBar->setWindowTitle(toString("Translating Site Shading"));
      m_progressBar->setMinimum(0);
      m_progressBar->setMaximum((int)shadingSurfaceGroups.size()); 
      m_progressBar->setValue(0);
    }

    for (const model::ShadingSurfaceGroup& shadingSurfaceGroup : shadingSurfaceGroups){
      if (istringEqual(shadingSurfaceGroup.shadingSurfaceType(), "Site")){

        Transformation transformation = shadingSurfaceGroup.siteTransformation();

        for (const model::ShadingSurface& shadingSurface : shadingSurfaceGroup.shadingSurfaces()){
          boost::optional<QDomElement> shadingSurfaceElement = translateShadingSurface(shadingSurface, transformation, doc);
          if (shadingSurfaceElement){
            projectElement.appendChild(*shadingSurfaceElement);
          }
        }
      }

      if (m_progressBar){
        m_progressBar->setValue(m_progressBar->value() + 1);
      }
    }

    // translate the building
    boost::optional<model::Building> building = model.getOptionalUniqueModelObject<model::Building>();
    if (building){
      boost::optional<QDomElement> buildingElement = translateBuilding(*building, doc);
      if (buildingElement){
        projectElement.appendChild(*buildingElement);
      }
    }

    m_ignoreTypes.push_back(model::BoilerSteam::iddObjectType());
    m_ignoreTypes.push_back(model::ClimateZones::iddObjectType()); // might not be translated but it is checked
    m_ignoreTypes.push_back(model::CoilCoolingDXMultiSpeedStageData::iddObjectType());
    m_ignoreTypes.push_back(model::CoilHeatingGasMultiStageStageData::iddObjectType());
    m_ignoreTypes.push_back(model::ComponentCostAdjustments::iddObjectType());
    m_ignoreTypes.push_back(model::ComponentData::iddObjectType());
    m_ignoreTypes.push_back(model::Connection::iddObjectType());
    m_ignoreTypes.push_back(model::ControllerWaterCoil::iddObjectType());
    m_ignoreTypes.push_back(model::ConvergenceLimits::iddObjectType());
    m_ignoreTypes.push_back(model::CoolingTowerPerformanceCoolTools::iddObjectType());
    m_ignoreTypes.push_back(model::CoolingTowerPerformanceYorkCalc::iddObjectType());
    m_ignoreTypes.push_back(model::CurrencyType::iddObjectType());
    m_ignoreTypes.push_back(model::CurveBicubic::iddObjectType());
    m_ignoreTypes.push_back(model::CurveBiquadratic::iddObjectType());
    m_ignoreTypes.push_back(model::CurveCubic::iddObjectType());
    m_ignoreTypes.push_back(model::CurveDoubleExponentialDecay::iddObjectType());
    m_ignoreTypes.push_back(model::CurveExponent::iddObjectType());
    m_ignoreTypes.push_back(model::CurveExponentialDecay::iddObjectType());
    m_ignoreTypes.push_back(model::CurveExponentialSkewNormal::iddObjectType());
    m_ignoreTypes.push_back(model::CurveFanPressureRise::iddObjectType());
    m_ignoreTypes.push_back(model::CurveFunctionalPressureDrop::iddObjectType());
    m_ignoreTypes.push_back(model::CurveLinear::iddObjectType());
    m_ignoreTypes.push_back(model::CurveQuadratic::iddObjectType());
    m_ignoreTypes.push_back(model::CurveQuadraticLinear::iddObjectType());
    m_ignoreTypes.push_back(model::CurveQuartic::iddObjectType());
    m_ignoreTypes.push_back(model::CurveRectangularHyperbola1::iddObjectType());
    m_ignoreTypes.push_back(model::CurveRectangularHyperbola2::iddObjectType());
    m_ignoreTypes.push_back(model::CurveSigmoid::iddObjectType());
    m_ignoreTypes.push_back(model::CurveTriquadratic::iddObjectType());
    m_ignoreTypes.push_back(model::DefaultConstructionSet::iddObjectType());
    m_ignoreTypes.push_back(model::DesignDay::iddObjectType());
    m_ignoreTypes.push_back(model::DefaultScheduleSet::iddObjectType());
    m_ignoreTypes.push_back(model::DesignSpecificationZoneAirDistribution::iddObjectType());
    m_ignoreTypes.push_back(model::DefaultSurfaceConstructions::iddObjectType());
    m_ignoreTypes.push_back(model::DefaultSubSurfaceConstructions::iddObjectType());
    m_ignoreTypes.push_back(model::Facility::iddObjectType());
    m_ignoreTypes.push_back(model::HeatBalanceAlgorithm::iddObjectType());
    m_ignoreTypes.push_back(model::IlluminanceMap::iddObjectType());
    m_ignoreTypes.push_back(model::InsideSurfaceConvectionAlgorithm::iddObjectType());
    m_ignoreTypes.push_back(model::InternalMass::iddObjectType());
    m_ignoreTypes.push_back(model::LifeCycleCost::iddObjectType());
    m_ignoreTypes.push_back(model::LifeCycleCostParameters::iddObjectType());
    m_ignoreTypes.push_back(model::LightingDesignDay::iddObjectType());
    m_ignoreTypes.push_back(model::LightingSimulationControl::iddObjectType());
    m_ignoreTypes.push_back(model::Meter::iddObjectType());
    m_ignoreTypes.push_back(model::ModelObjectList::iddObjectType());
    m_ignoreTypes.push_back(model::Node::iddObjectType());
    m_ignoreTypes.push_back(model::OutputControlReportingTolerances::iddObjectType());
    m_ignoreTypes.push_back(model::OutputVariable::iddObjectType());
    m_ignoreTypes.push_back(model::OutsideSurfaceConvectionAlgorithm::iddObjectType());
    m_ignoreTypes.push_back(model::PortList::iddObjectType());
    m_ignoreTypes.push_back(model::ProgramControl::iddObjectType());
    m_ignoreTypes.push_back(model::RadianceParameters::iddObjectType());
    m_ignoreTypes.push_back(model::RenderingColor::iddObjectType());
    m_ignoreTypes.push_back(model::RunPeriod::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleCompact::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleConstant::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleDay::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleFixedInterval::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleRule::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleRuleset::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleTypeLimits::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleVariableInterval::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleWeek::iddObjectType());
    m_ignoreTypes.push_back(model::ScheduleYear::iddObjectType());
    m_ignoreTypes.push_back(model::SetpointManagerMixedAir::iddObjectType());
    m_ignoreTypes.push_back(model::ShadowCalculation::iddObjectType());
    m_ignoreTypes.push_back(model::SimulationControl::iddObjectType());
    m_ignoreTypes.push_back(model::Site::iddObjectType()); // might not be translated but it is checked
    m_ignoreTypes.push_back(model::SiteGroundReflectance::iddObjectType());
    m_ignoreTypes.push_back(model::SiteGroundTemperatureBuildingSurface::iddObjectType());
    m_ignoreTypes.push_back(model::SiteWaterMainsTemperature::iddObjectType());
    m_ignoreTypes.push_back(model::SizingParameters::iddObjectType());
    m_ignoreTypes.push_back(model::SkyTemperature::iddObjectType());
    m_ignoreTypes.push_back(model::StandardsInformationConstruction::iddObjectType());
    m_ignoreTypes.push_back(model::StandardsInformationMaterial::iddObjectType());
    m_ignoreTypes.push_back(model::TableMultiVariableLookup::iddObjectType());
    m_ignoreTypes.push_back(model::Timestep::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityBill::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Charge_Block::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Charge_Simple::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Computation::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Qualify::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Ratchet::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Tariff::iddObjectType());
    m_ignoreTypes.push_back(model::UtilityCost_Variable::iddObjectType());
    m_ignoreTypes.push_back(model::Version::iddObjectType());
    m_ignoreTypes.push_back(model::WeatherFile::iddObjectType());
    m_ignoreTypes.push_back(model::WeatherFileConditionType::iddObjectType());
    m_ignoreTypes.push_back(model::WeatherFileDays::iddObjectType());
    m_ignoreTypes.push_back(model::YearDescription::iddObjectType());
    m_ignoreTypes.push_back(model::ZoneAirContaminantBalance::iddObjectType());
    m_ignoreTypes.push_back(model::ZoneAirHeatBalanceAlgorithm::iddObjectType());
    m_ignoreTypes.push_back(model::ZoneCapacitanceMultiplierResearchSpecial::iddObjectType());
    m_ignoreTypes.push_back(model::ZoneHVACEquipmentList::iddObjectType());

    return doc;
  }
Exemplo n.º 7
0
void ZoneChooserView::layoutView()
{
    this->setUpdatesEnabled(false);

    QLayoutItem * child;
    while((child = m_vLayout->takeAt(0)) != 0)
    {
        delete child->widget();
        delete child;
    }
    m_zoneChooserItems.clear();

    if( m_mixer )
    {
        QLabel * label = new QLabel();
        label->setObjectName("IGHeader");
        label->setText(toQString(m_mixer->iddObject().name()));
        m_vLayout->addWidget(label);
    }
    else if( m_splitter )
    {
        QLabel * label = new QLabel();
        label->setObjectName("IGHeader");
        label->setText(toQString(m_splitter->iddObject().name()));
        m_vLayout->addWidget(label);
    }

    if( m_mixer )
    {
        if( model::OptionalAirLoopHVAC airLoop = m_mixer->airLoopHVAC() )
        {
            m_splitter = airLoop->zoneSplitter();
        }
        else
        {
            return;
        }
    }
    else if( ! m_splitter )
    {
        return;
    }

    std::vector<model::ThermalZone> zones;
    zones = m_splitter->model().getModelObjects<model::ThermalZone>();
    std::sort(zones.begin(),zones.end(),WorkspaceObjectNameLess());

    for( std::vector<model::ThermalZone>::iterator it = zones.begin();
            it < zones.end();
            ++it )
    {
        if( ! it->isPlenum() )
        {
            ZoneChooserItem * zoneChooserItem = new ZoneChooserItem(*it,this);
            m_zoneChooserItems.push_back(zoneChooserItem);
            m_vLayout->addWidget(zoneChooserItem);
            zoneChooserItem->setChecked(false);
        }
    }
    m_vLayout->addStretch();

    std::vector<model::ThermalZone> thermalZones;
    thermalZones = m_splitter->thermalZones();
    for( std::vector<model::ThermalZone>::iterator it = thermalZones.begin();
            it < thermalZones.end();
            ++it )
    {
        zoneChooserItemForZone(it->name().get())->setChecked(true);
    }

    for(int i = 0; i < m_vLayout->count(); i++)
    {
        if( QWidget * widget = m_vLayout->itemAt(i)->widget() )
        {
            widget->show();
        }
    }

    this->setUpdatesEnabled(true);

}
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);
}
boost::optional<IdfObject> ForwardTranslator::translateSpaceType( SpaceType & modelObject )
{
  std::vector<Space> spaces = modelObject.spaces();

  // check if this is a dummy space type meant to prevent inheriting building space type
  std::vector<ModelObject> children = modelObject.children();
  if (children.empty()){
    LOG(Info, "SpaceType " << modelObject.name().get() << " has no children, it will not be translated");
    return boost::none;
  }

  IdfObject idfObject = createRegisterAndNameIdfObject(openstudio::IddObjectType::ZoneList, 
                                                       modelObject);

  std::set<std::string> zoneNames;
  for (const Space& space : spaces){
    boost::optional<ThermalZone> thermalZone = space.thermalZone();
    if (thermalZone){
      zoneNames.insert(thermalZone->name().get());
    }
  }

  idfObject.clearExtensibleGroups();
  for (const std::string& zoneName : zoneNames){
    idfObject.pushExtensibleGroup(std::vector<std::string>(1, zoneName));
  }

  // translate internal mass
  InternalMassVector internalMasses = modelObject.internalMass();
  std::sort(internalMasses.begin(), internalMasses.end(), WorkspaceObjectNameLess());
  for (InternalMass& internalMass : internalMasses){
    translateAndMapModelObject(internalMass);
  }

  // translate lights
  LightsVector lights = modelObject.lights();
  std::sort(lights.begin(), lights.end(), WorkspaceObjectNameLess());
  for (Lights& light : lights){
    translateAndMapModelObject(light);
  }

  // translate luminaires
  LuminaireVector luminaires = modelObject.luminaires();
  std::sort(luminaires.begin(), luminaires.end(), WorkspaceObjectNameLess());
  for (Luminaire& luminaire : luminaires){
    translateAndMapModelObject(luminaire);
  }

  // translate people
  PeopleVector people = modelObject.people();
  std::sort(people.begin(), people.end(), WorkspaceObjectNameLess());
  for (People& person : people){
    translateAndMapModelObject(person);
  }

  // translate electric equipment
  ElectricEquipmentVector electricEquipment = modelObject.electricEquipment();
  std::sort(electricEquipment.begin(), electricEquipment.end(), WorkspaceObjectNameLess());
  for (ElectricEquipment& equipment : electricEquipment){
    translateAndMapModelObject(equipment);
  }

  // translate gas equipment
  GasEquipmentVector gasEquipment = modelObject.gasEquipment();
  std::sort(gasEquipment.begin(), gasEquipment.end(), WorkspaceObjectNameLess());
  for (GasEquipment& equipment : gasEquipment){
    translateAndMapModelObject(equipment);
  }

  // translate hot water equipment
  HotWaterEquipmentVector hotWaterEquipment = modelObject.hotWaterEquipment();
  std::sort(hotWaterEquipment.begin(), hotWaterEquipment.end(), WorkspaceObjectNameLess());
  for (HotWaterEquipment& equipment : hotWaterEquipment){
    translateAndMapModelObject(equipment);
  }

  // translate steam equipment
  SteamEquipmentVector steamEquipment = modelObject.steamEquipment();
  std::sort(steamEquipment.begin(), steamEquipment.end(), WorkspaceObjectNameLess());
  for (SteamEquipment& equipment : steamEquipment){
    translateAndMapModelObject(equipment);
  }

  // translate other equipment
  OtherEquipmentVector otherEquipment = modelObject.otherEquipment();
  std::sort(otherEquipment.begin(), otherEquipment.end(), WorkspaceObjectNameLess());
  for (OtherEquipment& equipment : otherEquipment){
    translateAndMapModelObject(equipment);
  }

  // translate SpaceInfiltration_DesignFlowRate
  SpaceInfiltrationDesignFlowRateVector spaceInfiltrationDesignFlowRates = modelObject.spaceInfiltrationDesignFlowRates();
  std::sort(spaceInfiltrationDesignFlowRates.begin(), spaceInfiltrationDesignFlowRates.end(), WorkspaceObjectNameLess());
  for (SpaceInfiltrationDesignFlowRate& spaceInfiltrationDesignFlowRate : spaceInfiltrationDesignFlowRates){
    translateAndMapModelObject(spaceInfiltrationDesignFlowRate);
  }

  // translate SpaceInfiltration_EffectiveLeakageArea
  SpaceInfiltrationEffectiveLeakageAreaVector spaceInfiltrationEffectiveLeakageAreas = modelObject.spaceInfiltrationEffectiveLeakageAreas();
  std::sort(spaceInfiltrationEffectiveLeakageAreas.begin(), spaceInfiltrationEffectiveLeakageAreas.end(), WorkspaceObjectNameLess());
  for (SpaceInfiltrationEffectiveLeakageArea& spaceInfiltrationEffectiveLeakageArea : spaceInfiltrationEffectiveLeakageAreas){
    translateAndMapModelObject(spaceInfiltrationEffectiveLeakageArea);
  }

  return idfObject;
}