boost::optional<IdfObject> ForwardTranslator::translateGeneratorFuelCellWaterSupply(GeneratorFuelCellWaterSupply & modelObject)
{
  boost::optional<std::string> s;
  boost::optional<double> d;
  boost::optional<Node> node;
  boost::optional<CurveQuadratic> curvequad;
  boost::optional<CurveCubic> curvecubic;
  boost::optional<Schedule> sch;

  IdfObject pcm = createAndRegisterIdfObject(openstudio::IddObjectType::Generator_FuelCell_WaterSupply, modelObject);
  //Name
  s = modelObject.name();
  if (s) {
    pcm.setName(*s);
  }

  //ReformerWaterFlowRateFunctionofFuelRateCurveName
  curvequad = modelObject.reformerWaterFlowRateFunctionofFuelRateCurve();
  if (curvequad) {
    pcm.setString(Generator_FuelCell_WaterSupplyFields::ReformerWaterFlowRateFunctionofFuelRateCurveName, curvequad.get().nameString());
  }

  //ReformerWaterPumpPowerFunctionofFuelRateCurveName
  curvecubic = modelObject.reformerWaterPumpPowerFunctionofFuelRateCurve();
  if (curvecubic) {
    pcm.setString(Generator_FuelCell_WaterSupplyFields::ReformerWaterPumpPowerFunctionofFuelRateCurveName, curvecubic.get().nameString());
  }

  //PumpHeatLossFactor
  d = modelObject.pumpHeatLossFactor();
  if (d) {
    pcm.setDouble(Generator_FuelCell_WaterSupplyFields::PumpHeatLossFactor, d.get());
  }

  //WaterTemperatureModelingMode
  s = modelObject.waterTemperatureModelingMode();
  if (s) {
    pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureModelingMode, s.get());
  }

  //WaterTemperatureReferenceNodeName
  node = modelObject.waterTemperatureReferenceNode();
  if (node) {
    pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureReferenceNodeName, node.get().nameString());
  }

  //WaterTemperatureScheduleName
  sch = modelObject.waterTemperatureSchedule();
  if (sch) {
    pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureScheduleName, sch.get().nameString());
  }

  return pcm;

}
boost::optional<IdfObject> ForwardTranslator::translateScheduleConstant( ScheduleConstant & modelObject )
{
  IdfObject scheduleConstant = createAndRegisterIdfObject(openstudio::IddObjectType::Schedule_Constant,
                                                          modelObject);

  scheduleConstant.setName(modelObject.name().get());
  scheduleConstant.setString(Schedule_ConstantFields::ScheduleTypeLimitsName,
                             modelObject.getString(OS_Schedule_ConstantFields::ScheduleTypeLimitsName,true).get());
  scheduleConstant.setDouble(Schedule_ConstantFields::HourlyValue, modelObject.value());

  return boost::optional<IdfObject>(scheduleConstant);
}
Ejemplo n.º 3
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);
}
boost::optional<IdfObject> ForwardTranslator::translateScheduleCompact( ScheduleCompact & modelObject )
{
  IdfObject scheduleCompact = createAndRegisterIdfObject(openstudio::IddObjectType::Schedule_Compact,
                                                         modelObject);

  OptionalString os;
  if ((os = modelObject.name())) {
    scheduleCompact.setName(*os);
  }

  boost::optional<ScheduleTypeLimits> scheduleTypeLimits = modelObject.scheduleTypeLimits();
  if (scheduleTypeLimits){
    boost::optional<IdfObject> idfScheduleTypeLimits = translateAndMapModelObject(*scheduleTypeLimits);
    if (idfScheduleTypeLimits){
      scheduleCompact.setString(Schedule_CompactFields::ScheduleTypeLimitsName, idfScheduleTypeLimits->name().get());
    }
  }

  for (const IdfExtensibleGroup& eg : modelObject.extensibleGroups()) {
    scheduleCompact.pushExtensibleGroup(eg.fields());
  }

  return boost::optional<IdfObject>(scheduleCompact);
}
boost::optional<IdfObject> ForwardTranslator::translateGeneratorFuelSupply(GeneratorFuelSupply & modelObject)
{
  boost::optional<std::string> s;
  boost::optional<double> d;
  boost::optional<int> i;
  boost::optional<Node> node;
  boost::optional<Schedule> schedule;
  boost::optional<CurveCubic> curve;
  std::vector< std::pair<std::string, double> > constituents;

  IdfObject pcm = createAndRegisterIdfObject(openstudio::IddObjectType::Generator_FuelSupply, modelObject);
  //Name
  s = modelObject.name();
  if (s) {
    pcm.setName(*s);
  }

  //fuelTemperatureModelingMode
  s = modelObject.fuelTemperatureModelingMode();
  if (s) {
    pcm.setString(Generator_FuelSupplyFields::FuelTemperatureModelingMode, s.get());
  }

  //FuelTemperatureReferenceNodeName
  node = modelObject.fuelTemperatureReferenceNode();
  if (node) {
    pcm.setString(Generator_FuelSupplyFields::FuelTemperatureReferenceNodeName, node.get().nameString());
  }

  //FuelTemperatureScheduleName
  schedule = modelObject.fuelTemperatureSchedule();
  if (schedule) {
    pcm.setString(Generator_FuelSupplyFields::FuelTemperatureScheduleName, schedule.get().nameString());
  }

  //CompressorPowerMultiplierFunctionofFuelRateCurveName
  curve = modelObject.compressorPowerMultiplierFunctionofFuelRateCurve();
  if (curve) {
    pcm.setString(Generator_FuelSupplyFields::CompressorPowerMultiplierFunctionofFuelRateCurveName, curve.get().nameString());
  }

  //CompressorHeatLossFactor
  d = modelObject.compressorHeatLossFactor();
  if (d) {
    pcm.setDouble(Generator_FuelSupplyFields::CompressorHeatLossFactor, d.get());
  }

  //FuelType
  s = modelObject.fuelType();
  if (s) {
    pcm.setString(Generator_FuelSupplyFields::FuelType, s.get());
  }

  //LiquidGenericFuelLowerHeatingValue
  d = modelObject.liquidGenericFuelLowerHeatingValue();
  if (d) {
    pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelLowerHeatingValue, d.get());
  }

  //LiquidGenericFuelHigherHeatingValue
  d = modelObject.liquidGenericFuelHigherHeatingValue();
  if (d) {
    pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelHigherHeatingValue, d.get());
  }

  //LiquidGenericFuelMolecularWeight
  d = modelObject.liquidGenericFuelMolecularWeight();
  if (d) {
    pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelMolecularWeight, d.get());
  }

  //LiquidGenericFuelCO2EmissionFactor
  d = modelObject.liquidGenericFuelCO2EmissionFactor();
  if (d) {
    pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelCO2EmissionFactor, d.get());
  }

  //UserDefinedConstituents
  constituents = modelObject.constituents();
  if (!constituents.empty()) {
    for (auto constituent : constituents) {
      auto eg = pcm.pushExtensibleGroup();
      eg.setString(Generator_FuelSupplyExtensibleFields::ConstituentName, constituent.first);
      eg.setDouble(Generator_FuelSupplyExtensibleFields::ConstituentMolarFraction, constituent.second);
    }
  }

  //NumberofUserDefinedConstituents
  i = constituents.size();
  if (i) {
    pcm.setDouble(Generator_FuelSupplyFields::NumberofConstituentsinGaseousConstituentFuelSupply, i.get());
  }

  return pcm;

}