コード例 #1
0
TEST_F(ModelFixture,ZoneHVACFourPipeFanCoil_MaximumSupplyAirFlowRate_Quantity) {
  Model model;
  EXPECT_EQ(0u,model.objects().size());
  EXPECT_TRUE(model.versionObject());
  // need schedule
  ScheduleConstant sched(model);
  EXPECT_EQ(1u,model.objects().size());
  sched.setValue(1.0); // Always on
  // need fan
  FanConstantVolume fan(model,sched);
  // need cooling and heating coils
  CoilCoolingWater coolingCoil(model,sched);
  CoilHeatingWater heatingCoil(model,sched);
  // construct object
  ZoneHVACFourPipeFanCoil zoneHVACFourPipeFanCoil(model,sched,fan,coolingCoil,heatingCoil);
  EXPECT_EQ(6u,model.objects().size());

  Unit units = zoneHVACFourPipeFanCoil.getMaximumSupplyAirFlowRate(true).units(); // Get IP units.
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(zoneHVACFourPipeFanCoil.setMaximumSupplyAirFlowRate(testQ));
  OSOptionalQuantity q = zoneHVACFourPipeFanCoil.getMaximumSupplyAirFlowRate(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #2
0
TEST_F(UnitsFixture,IddUnits_DefaultValue) {
  IdfObject idfObject(IddObjectType::OS_Building);
  // IdfObject::getQuantity(unsigned index, bool returnDefault=false, bool returnIP=false) const;

  // this field is empty but has a default value of 3 m
  EXPECT_TRUE(idfObject.getQuantity(OS_BuildingFields::NominalFloortoFloorHeight, false).empty());

  OSOptionalQuantity siQ = idfObject.getQuantity(OS_BuildingFields::NominalFloortoFloorHeight, true, false);
  ASSERT_FALSE(siQ.empty());
  OptionalUnit mUnit = createUnit("m");
  ASSERT_TRUE(mUnit);
  EXPECT_EQ(*mUnit, siQ.get().units());
  EXPECT_EQ(3.0, siQ.get().value());

  OSOptionalQuantity ipQ = idfObject.getQuantity(OS_BuildingFields::NominalFloortoFloorHeight, true, true);
  ASSERT_FALSE(ipQ.empty());
  OptionalUnit ftUnit = createUnit("ft");
  ASSERT_TRUE(ftUnit);
  EXPECT_EQ(*ftUnit, ipQ.get().units());
  EXPECT_NE(3.0, ipQ.get().value());
  
  OptionalQuantity q = QuantityConverter::instance().convert(ipQ.get(), *mUnit);
  ASSERT_TRUE(q);
  EXPECT_DOUBLE_EQ(3.0, q->value());
}
コード例 #3
0
TEST_F(ModelFixture,ThermalZone_Volume_Quantity) {
  Model model;
  ThermalZone thermalZone(model);

  Unit units = thermalZone.getVolume(true).units(); // Get IP units.
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(thermalZone.setVolume(testQ));
  OSOptionalQuantity q = thermalZone.getVolume(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.get().units().standardString());
}
TEST_F(ModelFixture,HeatExchangerAirToAirSensibleAndLatent_RateofDefrostTimeFractionIncrease_Quantity) {
  Model model;
  HeatExchangerAirToAirSensibleAndLatent heatExchangerAirToAirSensibleAndLatent(model);

  Unit units = heatExchangerAirToAirSensibleAndLatent.getRateofDefrostTimeFractionIncrease(true).units(); // Get IP units.
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(heatExchangerAirToAirSensibleAndLatent.setRateofDefrostTimeFractionIncrease(testQ));
  OSOptionalQuantity q = heatExchangerAirToAirSensibleAndLatent.getRateofDefrostTimeFractionIncrease(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #5
0
ファイル: People_GTest.cpp プロジェクト: Rahjou/OpenStudio
TEST_F(ModelFixture,PeopleDefinition_SensibleHeatFraction_Quantity) {
  Model model;
  PeopleDefinition peopleDefinition(model);

  Unit units = peopleDefinition.getSensibleHeatFraction(true).units(); // Get IP units.
  double value(0.5);
  Quantity testQ(value,units);
  EXPECT_TRUE(peopleDefinition.setSensibleHeatFraction(testQ));
  OSOptionalQuantity q = peopleDefinition.getSensibleHeatFraction(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #6
0
ファイル: AirGap.cpp プロジェクト: ORNL-BTRIC/OpenStudio
 bool AirGap_Impl::setThermalResistance(const OSOptionalQuantity& thermalResistance) {
   bool result(false);
   OptionalDouble value;
   if (thermalResistance.isSet()) {
     value = getDoubleFromQuantity(OS_Material_AirGapFields::ThermalResistance,thermalResistance.get());
     if (value) {
       result = setThermalResistance(value);
     }
   }
   else {
     result = setThermalResistance(value);
   }
   return result;
 }
コード例 #7
0
ファイル: GasMixture.cpp プロジェクト: ORNL-BTRIC/OpenStudio
 bool GasMixture_Impl::setGas4Fraction(const OSOptionalQuantity& gas4Fraction) {
   bool result(false);
   OptionalDouble value;
   if (gas4Fraction.isSet()) {
     value = getDoubleFromQuantity(OS_WindowMaterial_GasMixtureFields::Gas4Fraction,gas4Fraction.get());
     if (value) {
       result = setGas4Fraction(value);
     }
   }
   else {
     result = setGas4Fraction(value);
   }
   return result;
 }
コード例 #8
0
ファイル: Gas.cpp プロジェクト: MatthewSteen/OpenStudio
 bool Gas_Impl::setSpecificHeatRatio(const OSOptionalQuantity& specificHeatRatio) {
   bool result(false);
   OptionalDouble value;
   if (specificHeatRatio.isSet()) {
     value = getDoubleFromQuantity(OS_WindowMaterial_GasFields::SpecificHeatRatio,specificHeatRatio.get());
     if (value) {
       result = setSpecificHeatRatio(value);
     }
   }
   else {
     result = setSpecificHeatRatio(value);
   }
   return result;
 }
コード例 #9
0
ファイル: Gas.cpp プロジェクト: MatthewSteen/OpenStudio
 bool Gas_Impl::setMolecularWeight(const OSOptionalQuantity& molecularWeight) {
   bool result(false);
   OptionalDouble value;
   if (molecularWeight.isSet()) {
     value = getDoubleFromQuantity(OS_WindowMaterial_GasFields::MolecularWeight,molecularWeight.get());
     if (value) {
       result = setMolecularWeight(value);
     }
   }
   else {
     result = setMolecularWeight(value);
   }
   return result;
 }
コード例 #10
0
 bool FanConstantVolume_Impl::setMaximumFlowRate(const OSOptionalQuantity& maximumFlowRate) {
   bool result(false);
   OptionalDouble value;
   if (maximumFlowRate.isSet()) {
     value = getDoubleFromQuantity(OS_Fan_ConstantVolumeFields::MaximumFlowRate,maximumFlowRate.get());
     if (value) {
       result = setMaximumFlowRate(value);
     }
   }
   else {
     result = setMaximumFlowRate(value);
   }
   return result;
 }
コード例 #11
0
ファイル: BoilerSteam.cpp プロジェクト: ChengXinDL/OpenStudio
 bool BoilerSteam_Impl::setOptimumPartLoadRatio(const OSOptionalQuantity& optimumPartLoadRatio) {
   bool result(false);
   OptionalDouble value;
   if (optimumPartLoadRatio.isSet()) {
     value = getDoubleFromQuantity(OS_Boiler_SteamFields::OptimumPartLoadRatio,optimumPartLoadRatio.get());
     if (value) {
       result = setOptimumPartLoadRatio(value);
     }
   }
   else {
     result = setOptimumPartLoadRatio(value);
   }
   return result;
 }
コード例 #12
0
ファイル: BoilerSteam.cpp プロジェクト: ChengXinDL/OpenStudio
 bool BoilerSteam_Impl::setTheoreticalEfficiency(const OSOptionalQuantity& theoreticalEfficiency) {
   bool result(false);
   OptionalDouble value;
   if (theoreticalEfficiency.isSet()) {
     value = getDoubleFromQuantity(OS_Boiler_SteamFields::TheoreticalEfficiency,theoreticalEfficiency.get());
     if (value) {
       result = setTheoreticalEfficiency(value);
     }
   }
   else {
     result = setTheoreticalEfficiency(value);
   }
   return result;
 }
コード例 #13
0
TEST_F(ModelFixture,ZoneHVACIdealLoadsAirSystem_MaximumHeatingAirFlowRate_Quantity) {
  Model model;
  // TODO: Check constructor.
  ZoneHVACIdealLoadsAirSystem zoneHVACIdealLoadsAirSystem(model);

  Unit units = zoneHVACIdealLoadsAirSystem.getMaximumHeatingAirFlowRate(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(zoneHVACIdealLoadsAirSystem.setMaximumHeatingAirFlowRate(testQ));
  OSOptionalQuantity q = zoneHVACIdealLoadsAirSystem.getMaximumHeatingAirFlowRate(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #14
0
ファイル: AirGap_GTest.cpp プロジェクト: CUEBoxer/OpenStudio
TEST_F(ModelFixture,AirGap_ThermalResistance_Quantity) {
  Model model;
  // TODO: Check constructor.
  AirGap airGap(model);

  Unit units = airGap.getThermalResistance(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(airGap.setThermalResistance(testQ));
  OSOptionalQuantity q = airGap.getThermalResistance(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #15
0
TEST_F(ModelFixture,StandardGlazing_VisibleTransmittanceatNormalIncidence_Quantity) {
  Model model;
  // TODO: Check constructor.
  StandardGlazing standardGlazing(model);

  Unit units = standardGlazing.getVisibleTransmittanceatNormalIncidence(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(standardGlazing.setVisibleTransmittanceatNormalIncidence(testQ));
  OSOptionalQuantity q = standardGlazing.getVisibleTransmittanceatNormalIncidence(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #16
0
TEST_F(ModelFixture,ScheduleTypeLimits_UpperLimitValue_Quantity) {
  Model model;
  // TODO: Check constructor.
  ScheduleTypeLimits scheduleTypeLimits(model);

  Unit units = scheduleTypeLimits.getUpperLimitValue(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(scheduleTypeLimits.setUpperLimitValue(testQ));
  OSOptionalQuantity q = scheduleTypeLimits.getUpperLimitValue(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #17
0
TEST_F(ModelFixture,BoilerSteam_MinimumPartLoadRatio_Quantity) {
  Model model;
  // TODO: Check constructor.
  BoilerSteam boilerSteam(model);

  Unit units = boilerSteam.getMinimumPartLoadRatio(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(boilerSteam.setMinimumPartLoadRatio(testQ));
  OSOptionalQuantity q = boilerSteam.getMinimumPartLoadRatio(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #18
0
TEST_F(ModelFixture,SizingZone_ZoneHeatingSizingFactor_Quantity) {
  Model model;
  ThermalZone zone(model);
  SizingZone sizingZone(model,zone);

  Unit units = sizingZone.getZoneHeatingSizingFactor(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(sizingZone.setZoneHeatingSizingFactor(testQ));
  OSOptionalQuantity q = sizingZone.getZoneHeatingSizingFactor(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #19
0
TEST_F(ModelFixture,GasMixture_Gas4Fraction_Quantity) {
  Model model;
  // TODO: Check constructor.
  GasMixture gasMixture(model);

  Unit units = gasMixture.getGas4Fraction(true).units(); // Get IP units.
  // TODO: Check that value is appropriate (within bounds)
  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_TRUE(gasMixture.setGas4Fraction(testQ));
  OSOptionalQuantity q = gasMixture.getGas4Fraction(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #20
0
 bool ScheduleTypeLimits_Impl::setUpperLimitValue(const OSOptionalQuantity& upperLimitValue) {
   bool result(false);
   OptionalDouble value;
   if (upperLimitValue.isSet()) {
     value = getDoubleFromQuantity(OS_ScheduleTypeLimitsFields::UpperLimitValue,upperLimitValue.get());
     if (value) {
       setUpperLimitValue(value);
       result = true;
     }
   }
   else {
     setUpperLimitValue(value);
     result = true;
   }
   return result;
 }
コード例 #21
0
ファイル: BoilerSteam.cpp プロジェクト: ChengXinDL/OpenStudio
  bool BoilerSteam_Impl::setNominalCapacity(const OSOptionalQuantity& nominalCapacity) {
    bool result(false);
    OptionalDouble value;
    if (nominalCapacity.isSet()) {
      value = getDoubleFromQuantity(OS_Boiler_SteamFields::NominalCapacity,nominalCapacity.get());
      if (value) {
        setNominalCapacity(value);

        result = true;
      }
    }
    else {
      setNominalCapacity(value);
      result = true;
    }
    return result;
  }
コード例 #22
0
ファイル: BoilerSteam.cpp プロジェクト: ChengXinDL/OpenStudio
  bool BoilerSteam_Impl::setMaximumOperatingPressure(const OSOptionalQuantity& maximumOperatingPressure) {
    bool result(false);
    OptionalDouble value;
    if (maximumOperatingPressure.isSet()) {
      value = getDoubleFromQuantity(OS_Boiler_SteamFields::MaximumOperatingPressure,maximumOperatingPressure.get());
      if (value) {
        setMaximumOperatingPressure(value);

        result = true;
      }
    }
    else {
      setMaximumOperatingPressure(value);
      result = true;
    }
    return result;
  }
コード例 #23
0
ファイル: Gas_GTest.cpp プロジェクト: mattXGS/OpenStudio
TEST_F(ModelFixture,Gas_MolecularWeight_Quantity) {
    Model model;
    // TODO: Check constructor.
    Gas gas(model);

    Unit units = gas.getMolecularWeight(true).units(); // Get IP units.

    // Bounds: 20 <= value <= 200)

    double value(1.0);
    Quantity testQ(value,units);
    EXPECT_FALSE(gas.setMolecularWeight(testQ));

    double value2(20.0);
    Quantity testQ2(value2,units);
    EXPECT_TRUE(gas.setMolecularWeight(testQ2));
    OSOptionalQuantity q = gas.getMolecularWeight(true);
    ASSERT_TRUE(q.isSet());
    EXPECT_NEAR(value2,q.get().value(),1.0E-8);
    EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #24
0
ファイル: Blind_GTest.cpp プロジェクト: Anto-F/OpenStudio
TEST_F(ModelFixture,Blind_BackSideSlatDiffuseVisibleReflectance_Quantity) {
  Model model;
  // TODO: Check constructor.
  Blind blind(model);

  Unit units = blind.getBackSideSlatDiffuseVisibleReflectance(true).units(); // Get IP units.

  // Bounds: 0.0 <= value < 1.0

  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_FALSE(blind.setBackSideSlatDiffuseVisibleReflectance(testQ));

  double value2(0.1);
  Quantity testQ2(value2,units);
  EXPECT_TRUE(blind.setBackSideSlatDiffuseVisibleReflectance(testQ2));
  OSOptionalQuantity q = blind.getBackSideSlatDiffuseVisibleReflectance(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value2,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #25
0
TEST_F(ModelFixture,SimpleGlazing_VisibleTransmittance_Quantity) {
  Model model;
  // TODO: Check constructor.
  SimpleGlazing simpleGlazing(model);

  Unit units = simpleGlazing.getVisibleTransmittance(true).units(); // Get IP units.

  // Bounds: 0.0 < value < 1.0

  double value(1.0);
  Quantity testQ(value,units);
  EXPECT_FALSE(simpleGlazing.setVisibleTransmittance(testQ));

  double value2(0.1);
  Quantity testQ2(value2,units);
  EXPECT_TRUE(simpleGlazing.setVisibleTransmittance(testQ2));
  OSOptionalQuantity q = simpleGlazing.getVisibleTransmittance(true);
  ASSERT_TRUE(q.isSet());
  EXPECT_NEAR(value2,q.get().value(),1.0E-8);
  EXPECT_EQ(units.standardString(),q.units().standardString());
}
コード例 #26
0
TEST_F(IdfFixture, IdfObject_GetQuantity)
{
    std::string text = "Building,                !- Building \n\
                      Building,                !- Name \n\
                      30.,                     !- North Axis {deg} \n\
                      City,                    !- Terrain \n\
                      0.04,                    !- Loads Convergence Tolerance Value \n\
                      0.4,                     !- Temperature Convergence Tolerance Value {deltaC} \n\
                      FullExterior,            !- Solar Distribution \n\
                      25;                      !- Maximum Number of Warmup Days";

  // make an idf object
  OptionalIdfObject oObj = IdfObject::load(text);
  ASSERT_TRUE(oObj);

  // Test get.
  OSOptionalQuantity ooq = oObj->getQuantity (4);
  ASSERT_TRUE(ooq.isSet());
  Quantity q = ooq.get();
  EXPECT_TRUE(q.value() == 0.4);
  EXPECT_TRUE(q.system() == UnitSystem::SI);
  EXPECT_TRUE(q.standardUnitsString() == "K");

  // Test set.
  OptionalQuantity oq = convert(q,UnitSystem(UnitSystem::IP));
  ASSERT_TRUE(oq);
  EXPECT_TRUE(oq->system() == UnitSystem::IP);
  EXPECT_DOUBLE_EQ(0.72,oq->value());
  oq->setValue(1.5);

  EXPECT_TRUE(oObj->setQuantity(4, *oq));
  ooq = oObj->getQuantity(4);
  ASSERT_TRUE(ooq.isSet());
  q = ooq.get();
  EXPECT_DOUBLE_EQ(0.83333333333333333,q.value());
  EXPECT_TRUE(q.system() == UnitSystem::SI);
  EXPECT_TRUE(q.standardUnitsString() == "K");
}
コード例 #27
0
ファイル: Gas.cpp プロジェクト: MatthewSteen/OpenStudio
 bool Gas_Impl::setViscosityCoefficientA(const OSOptionalQuantity& viscosityCoefficientA) {
   bool result(false);
   OptionalDouble value;
   if (viscosityCoefficientA.isSet()) {
     value = getDoubleFromQuantity(OS_WindowMaterial_GasFields::ViscosityCoefficientA,viscosityCoefficientA.get());
     if (value) {
       result = setViscosityCoefficientA(value);
     }
   }
   else {
     result = setViscosityCoefficientA(value);
   }
   return result;
 }
コード例 #28
0
bool SiteWaterMainsTemperature_Impl::setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(const OSOptionalQuantity& maximumDifferenceInMonthlyAverageOutdoorAirTemperatures) {
    bool result(false);
    OptionalDouble value;
    if (maximumDifferenceInMonthlyAverageOutdoorAirTemperatures.isSet()) {
        value = getDoubleFromQuantity(OS_Site_WaterMainsTemperatureFields::MaximumDifferenceInMonthlyAverageOutdoorAirTemperatures,maximumDifferenceInMonthlyAverageOutdoorAirTemperatures.get());
        if (value) {
            result = setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(value);
        }
    }
    else {
        result = setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(value);
    }
    return result;
}
コード例 #29
0
 bool AirTerminalSingleDuctUncontrolled_Impl::setMaximumAirFlowRate(const OSOptionalQuantity& maximumAirFlowRate) {
   bool result(false);
   OptionalDouble value;
   if (maximumAirFlowRate.isSet()) {
     value = getDoubleFromQuantity(OS_AirTerminal_SingleDuct_UncontrolledFields::MaximumAirFlowRate,maximumAirFlowRate.get());
     if (value) {
       result = setMaximumAirFlowRate(value);
     }
   }
   else {
     result = setMaximumAirFlowRate(value);
   }
   return result;
 }
コード例 #30
0
 bool SimpleGlazing_Impl::setVisibleTransmittance(const OSOptionalQuantity& visibleTransmittance) {
   bool result(false);
   OptionalDouble value;
   if (visibleTransmittance.isSet()) {
     value = getDoubleFromQuantity(OS_WindowMaterial_SimpleGlazingSystemFields::VisibleTransmittance,visibleTransmittance.get());
     if (value) {
       result = setVisibleTransmittance(value);
     }
   }
   else {
     result = setVisibleTransmittance(value);
   }
   return result;
 }