本文整理汇总了C++中Workspace::save方法的典型用法代码示例。如果您正苦于以下问题:C++ Workspace::save方法的具体用法?C++ Workspace::save怎么用?C++ Workspace::save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workspace
的用法示例。
在下文中一共展示了Workspace::save方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: schedule
TEST_F(EnergyPlusFixture, ForwardTranslator_ExternalInterfaceSchedule) {
Model model;
ExternalInterfaceSchedule schedule(model, 10);
EXPECT_EQ(10.0, schedule.initialValue());
EXPECT_EQ("External Interface Schedule 1", schedule.nameString());
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ExternalInterface_Schedule).size());
//EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ScheduleTypeLimits).size());
WorkspaceObject object = workspace.getObjectsByType(IddObjectType::ExternalInterface_Schedule)[0];
//WorkspaceObject object2 = workspace.getObjectsByType(IddObjectType::ScheduleTypeLimits)[0];
ASSERT_TRUE(object.getString(ExternalInterface_ScheduleFields::Name, false));
EXPECT_EQ("External Interface Schedule 1", object.getString(ExternalInterface_ScheduleFields::Name, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_ScheduleFields::ScheduleTypeLimitsName, false));
//EXPECT_EQ(object2.nameString(), object.getString(ExternalInterface_ScheduleFields::ScheduleTypeLimitsName, false).get());
ASSERT_TRUE(object.getDouble(ExternalInterface_ScheduleFields::InitialValue, false));
EXPECT_EQ(10.0, object.getDouble(ExternalInterface_ScheduleFields::InitialValue, false).get());
model.save(toPath("./ExternalInterfaceSchedule.osm"), true);
workspace.save(toPath("./ExternalInterfaceSchedule.idf"), true);
}
示例2: eifmui
TEST_F(EnergyPlusFixture, ForwardTranslator_ExternalInterfaceFunctionalMockupUnitImportToSchedule) {
Model model;
ExternalInterfaceFunctionalMockupUnitImport eifmui(model, "test name");
ExternalInterfaceFunctionalMockupUnitImportToSchedule schedule(model, eifmui, "FMU", "FMU name", 10);
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ExternalInterface_FunctionalMockupUnitImport_To_Schedule).size());
//EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ScheduleTypeLimits).size());
WorkspaceObject object = workspace.getObjectsByType(IddObjectType::ExternalInterface_FunctionalMockupUnitImport_To_Schedule)[0];
//WorkspaceObject object2 = workspace.getObjectsByType(IddObjectType::ScheduleTypeLimits)[0];
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::Name, false));
EXPECT_EQ("External Interface Functional Mockup Unit Import To Schedule 1", object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::Name, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::ScheduleTypeLimitsNames, false));
//EXPECT_EQ(object2.nameString(), object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::ScheduleTypeLimitsNames, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUFileName, false));
EXPECT_EQ(eifmui.fMUFileName(), object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUFileName, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUInstanceName, false));
EXPECT_EQ("FMU", object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUInstanceName, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUVariableName, false));
EXPECT_EQ("FMU name", object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::FMUVariableName, false).get());
ASSERT_TRUE(object.getDouble(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::InitialValue, false));
EXPECT_EQ(10.0, object.getDouble(ExternalInterface_FunctionalMockupUnitImport_To_ScheduleFields::InitialValue, false).get());
model.save(toPath("./ExternalInterfaceFunctionalMockupUnitImportToSchedule.osm"), true);
workspace.save(toPath("./ExternalInterfaceFunctionalMockupUnitImportToSchedule.idf"), true);
}
示例3: forwardTranslator
/*
TEST_F(EnergyPlusFixture,ForwardTranslator_LightShelf)
{
ASSERT_TRUE(true);
}
TEST_F(EnergyPlusFixture,ForwardTranslator_Building)
{
openstudio::model::Model model;
openstudio::model::Building building(model);
ForwardTranslator forwardTranslator(model);
OptionalWorkspace outWorkspace = forwardTranslator.convert();
ASSERT_TRUE(outWorkspace);
EXPECT_EQ(static_cast<unsigned>(1), outWorkspace->getObjectsByType(IddObjectType::Building).size());
}
TEST_F(EnergyPlusFixture,ForwardTranslator_Zone)
{
openstudio::model::Model model;
openstudio::model::Zone zone(model);
openstudio::model::Lights lights(model);
lights.addToZone(zone);
ForwardTranslator forwardTranslator(model);
OptionalWorkspace outWorkspace = forwardTranslator.convert();
ASSERT_TRUE(outWorkspace);
ASSERT_EQ(static_cast<unsigned>(1), outWorkspace->getObjectsByType(IddObjectType::Zone).size());
Handle zoneHandle = outWorkspace->getObjectsByType(IddObjectType::Zone)[0].handle();
ASSERT_EQ(static_cast<unsigned>(1), outWorkspace->getObjectsByType(IddObjectType::Lights).size());
WorkspaceObject lightsObject = outWorkspace->getObjectsByType(IddObjectType::Lights)[0];
ASSERT_TRUE(lightsObject.getTarget(openstudio::LightsFields::ZoneorZoneListName));
EXPECT_TRUE(zoneHandle == lightsObject.getTarget(openstudio::LightsFields::ZoneorZoneListName)->handle());
}
*/
TEST_F(EnergyPlusFixture,ForwardTranslator_ExampleModel) {
Model model = exampleModel();
EXPECT_TRUE(model.getOptionalUniqueModelObject<Version>()) << "Example model does not include a Version object.";
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u,workspace.getObjectsByType(IddObjectType::Version).size());
model.save(toPath("./example.osm"), true);
workspace.save(toPath("./example.idf"), true);
}
示例4: inWorkspace
TEST_F(EnergyPlusFixture,ReverseTranslator_SimpleRelativeTest)
{
openstudio::path idfPath = resourcesPath() / toPath("energyplus/SimpleSurfaces/SimpleSurfaces_Relative.idf");
OptionalIdfFile idfFile = IdfFile::load(idfPath, IddFileType::EnergyPlus);
ASSERT_TRUE(idfFile);
Workspace inWorkspace(*idfFile);
ReverseTranslator reverseTranslator;
Model model = reverseTranslator.translateWorkspace(inWorkspace);
model.save( resourcesPath() / toPath("energyplus/SimpleSurfaces/SimpleSurfaces_Relative.osm"), true);
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
workspace.save( resourcesPath() / toPath("energyplus/SimpleSurfaces/SimpleSurfaces_Relative2.idf"), true);
}
示例5: airSupply
TEST_F(EnergyPlusFixture, ForwardTranslatorFuelCell4) {
//TEST orphaned FC
Model model;
Building building = model.getUniqueModelObject<Building>();
GeneratorFuelCellAirSupply airSupply(model);
GeneratorFuelCellAuxiliaryHeater auxHeater(model);
GeneratorFuelCellElectricalStorage elecStorage(model);
GeneratorFuelCellExhaustGasToWaterHeatExchanger exhaustHX(model);
GeneratorFuelCellInverter inverter(model);
GeneratorFuelCellPowerModule powerModule(model);
//GeneratorFuelCellStackCooler stackCooler(model);
GeneratorFuelCellWaterSupply waterSupply(model);
GeneratorFuelSupply fuelSupply(model);
// create default fuelcell
GeneratorFuelCell fuelcell(model, powerModule, airSupply, waterSupply, auxHeater, exhaustHX, elecStorage, inverter, fuelSupply);
// remove the ELCD
boost::optional<ElectricLoadCenterDistribution> elcd = fuelcell.electricLoadCenterDistribution();
elcd.get().remove();
EXPECT_FALSE(fuelcell.electricLoadCenterDistribution());
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, forwardTranslator.warnings().size());
//NO FC components should FT now since it is orphaned
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::ElectricLoadCenter_Generators).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::ElectricLoadCenter_Distribution).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_AirSupply).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_AuxiliaryHeater).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_ElectricalStorage).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_ExhaustGasToWaterHeatExchanger).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_Inverter).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_PowerModule).size());
//expect stack cooler
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_StackCooler).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_WaterSupply).size());
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelSupply).size());
//no water mains expected
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Site_WaterMainsTemperature).size());
model.save(toPath("./fuelcell4.osm"), true);
workspace.save(toPath("./fuelcell4.idf"), true);
}
示例6: fan
TEST_F(EnergyPlusFixture, ForwardTranslator_ExternalInterfaceFunctionalMockupUnitImportToActuator) {
Model model;
Building building = model.getUniqueModelObject<Building>();
// add fan
Schedule s = model.alwaysOnDiscreteSchedule();
FanConstantVolume fan(model, s);
// add FMU
ExternalInterfaceFunctionalMockupUnitImport eifmui(model, "test name");
// add actuator
std::string fanControlType = "Fan Pressure Rise";
std::string ComponentType = "Fan";
ExternalInterfaceFunctionalMockupUnitImportToActuator fanActuator(fan, ComponentType, fanControlType, eifmui, "FMU", "Fan FMU name", 10);
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ExternalInterface_FunctionalMockupUnitImport_To_Actuator).size());
WorkspaceObject object = workspace.getObjectsByType(IddObjectType::ExternalInterface_FunctionalMockupUnitImport_To_Actuator)[0];
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::Name, false));
EXPECT_EQ("External Interface Functional Mockup Unit Import To Actuator 1", object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::Name, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentUniqueName, false));
EXPECT_EQ(fan.nameString(), object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentUniqueName, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentType, false));
EXPECT_EQ(ComponentType, object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentType, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentControlType, false));
EXPECT_EQ(fanControlType, object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::ActuatedComponentControlType, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::FMUFileName, false));
EXPECT_EQ(eifmui.fMUFileName(), object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::FMUFileName, false).get());
ASSERT_TRUE(object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::FMUVariableName, false));
EXPECT_EQ("Fan FMU name", object.getString(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::FMUVariableName, false).get());
ASSERT_TRUE(object.getDouble(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::InitialValue, false));
EXPECT_EQ(10.0, object.getDouble(ExternalInterface_FunctionalMockupUnitImport_To_ActuatorFields::InitialValue, false).get());
model.save(toPath("./ExternalInterfaceFunctionalMockupUnitImportToActuator.osm"), true);
workspace.save(toPath("./ExternalInterfaceFunctionalMockupUnitImportToActuator.idf"), true);
}
示例7: variable
TEST_F(EnergyPlusFixture, ForwardTranslator_ExternalInterfaceVariable) {
Model model;
ExternalInterfaceVariable variable(model, "test name", 10);
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ExternalInterface_Variable).size());
WorkspaceObject object = workspace.getObjectsByType(IddObjectType::ExternalInterface_Variable)[0];
ASSERT_TRUE(object.getString(ExternalInterface_VariableFields::Name, false));
EXPECT_EQ("test name", object.getString(ExternalInterface_VariableFields::Name, false).get());
ASSERT_TRUE(object.getDouble(ExternalInterface_VariableFields::InitialValue, false));
EXPECT_EQ(10.0, object.getDouble(ExternalInterface_VariableFields::InitialValue, false).get());
model.save(toPath("./ExternalInterfaceVariable.osm"), true);
workspace.save(toPath("./ExternalInterfaceVariable.idf"), true);
}
示例8:
TEST_F(EnergyPlusFixture, ForwardTranslator_ExternalInterface) {
Model model;
ExternalInterface externalinterface = model.getUniqueModelObject<ExternalInterface>();
EXPECT_EQ("PtolemyServer", externalinterface.nameofExternalInterface());
EXPECT_TRUE(externalinterface.setNameofExternalInterface("FunctionalMockupUnitImport"));
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::ExternalInterface).size());
WorkspaceObject object = workspace.getObjectsByType(IddObjectType::ExternalInterface)[0];
ASSERT_TRUE(object.getString(ExternalInterfaceFields::NameofExternalInterface, false));
EXPECT_EQ("FunctionalMockupUnitImport", object.getString(ExternalInterfaceFields::NameofExternalInterface, false).get());
model.save(toPath("./ExternalInterface.osm"), true);
workspace.save(toPath("./ExternalInterface.idf"), true);
}
示例9: plantLoop
/**
* Tests whether the ForwarTranslator will handle the name of the GeneratorMicroTurbine correctly in the PlantEquipmentOperationHeatingLoad
**/
TEST_F(EnergyPlusFixture,ForwardTranslatorGeneratorMicroTurbine_ELCD_PlantLoop)
{
// TODO: Temporarily output the Log in the console with the Trace (-3) level
// for debug
// openstudio::Logger::instance().standardOutLogger().enable();
// openstudio::Logger::instance().standardOutLogger().setLogLevel(Trace);
// Create a model, a mchp, a mchpHR, a plantLoop and an electricalLoadCenter
Model model;
GeneratorMicroTurbine mchp = GeneratorMicroTurbine(model);
GeneratorMicroTurbineHeatRecovery mchpHR = GeneratorMicroTurbineHeatRecovery(model, mchp);
ASSERT_EQ(mchpHR, mchp.generatorMicroTurbineHeatRecovery().get());
PlantLoop plantLoop(model);
// Add a supply branch for the mchpHR
ASSERT_TRUE(plantLoop.addSupplyBranchForComponent(mchpHR));
// Create a WaterHeater:Mixed
WaterHeaterMixed waterHeater(model);
// Add it on the same branch as the chpHR, right after it
Node mchpHROutletNode = mchpHR.outletModelObject()->cast<Node>();
ASSERT_TRUE(waterHeater.addToNode(mchpHROutletNode));
// Create a plantEquipmentOperationHeatingLoad
PlantEquipmentOperationHeatingLoad operation(model);
operation.setName(plantLoop.name().get() + " PlantEquipmentOperationHeatingLoad");
ASSERT_TRUE(plantLoop.setPlantEquipmentOperationHeatingLoad(operation));
ASSERT_TRUE(operation.addEquipment(mchpHR));
ASSERT_TRUE(operation.addEquipment(waterHeater));
// Create an ELCD
ElectricLoadCenterDistribution elcd = ElectricLoadCenterDistribution(model);
elcd.setName("Capstone C65 ELCD");
elcd.setElectricalBussType("AlternatingCurrent");
elcd.addGenerator(mchp);
// Forward Translates
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
ASSERT_EQ(1u, workspace.getObjectsByType(IddObjectType::WaterHeater_Mixed).size());
ASSERT_EQ(1u, workspace.getObjectsByType(IddObjectType::ElectricLoadCenter_Distribution).size());
// The MicroTurbine should have been forward translated since there is an ELCD
WorkspaceObjectVector microTurbineObjects(workspace.getObjectsByType(IddObjectType::Generator_MicroTurbine));
EXPECT_EQ(1u, microTurbineObjects.size());
// Check that the HR nodes have been set
WorkspaceObject idf_mchp(microTurbineObjects[0]);
EXPECT_EQ(mchpHR.inletModelObject()->name().get(), idf_mchp.getString(Generator_MicroTurbineFields::HeatRecoveryWaterInletNodeName).get());
EXPECT_EQ(mchpHR.outletModelObject()->name().get(), idf_mchp.getString(Generator_MicroTurbineFields::HeatRecoveryWaterOutletNodeName).get());
OptionalWorkspaceObject idf_operation(workspace.getObjectByTypeAndName(IddObjectType::PlantEquipmentOperation_HeatingLoad,*(operation.name())));
ASSERT_TRUE(idf_operation);
// Get the extensible
ASSERT_EQ(1u, idf_operation->numExtensibleGroups());
// IdfExtensibleGroup eg = idf_operation.getExtensibleGroup(0);
// idf_operation.targets[0]
ASSERT_EQ(1u, idf_operation->targets().size());
WorkspaceObject plantEquipmentList(idf_operation->targets()[0]);
ASSERT_EQ(2u, plantEquipmentList.extensibleGroups().size());
IdfExtensibleGroup eg(plantEquipmentList.extensibleGroups()[0]);
ASSERT_EQ("Generator:MicroTurbine", eg.getString(PlantEquipmentListExtensibleFields::EquipmentObjectType).get());
// This fails
EXPECT_EQ(mchp.name().get(), eg.getString(PlantEquipmentListExtensibleFields::EquipmentName).get());
IdfExtensibleGroup eg2(plantEquipmentList.extensibleGroups()[1]);
ASSERT_EQ("WaterHeater:Mixed", eg2.getString(PlantEquipmentListExtensibleFields::EquipmentObjectType).get());
EXPECT_EQ(waterHeater.name().get(), eg2.getString(PlantEquipmentListExtensibleFields::EquipmentName).get());
model.save(toPath("./ForwardTranslatorGeneratorMicroTurbine_ELCD_PlantLoop.osm"), true);
workspace.save(toPath("./ForwardTranslatorGeneratorMicroTurbine_ELCD_PlantLoop.idf"), true);
}
示例10: central_hp
//.........这里部分代码省略.........
// Should have created a Cooling Load one only
ASSERT_EQ(1u, idf_plant_op.extensibleGroups().size());
WorkspaceExtensibleGroup w_eg = idf_plant_op.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
ASSERT_EQ("PlantEquipmentOperation:CoolingLoad", w_eg.getString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType).get());
// Get the Operation Scheme
_wo = w_eg.getTarget(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_op_scheme = _wo.get();
// Get the Plant Equipment List of this CoolingLoad scheme
// There should only be one Load Range
ASSERT_EQ(1u, idf_op_scheme.extensibleGroups().size());
// Load range 1
w_eg = idf_op_scheme.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
_wo = w_eg.getTarget(PlantEquipmentOperation_CoolingLoadExtensibleFields::RangeEquipmentListName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_peq_list = _wo.get();
// Should have one equipment on it: CentralHeatPumpSystem
ASSERT_EQ(1u, idf_peq_list.extensibleGroups().size());
IdfExtensibleGroup idf_eg(idf_peq_list.extensibleGroups()[0]);
ASSERT_EQ(central_hp.name().get(), idf_eg.getString(PlantEquipmentListExtensibleFields::EquipmentName).get());
}
// tertiary = Heating
{
_wo = w.getObjectByTypeAndName(IddObjectType::PlantLoop, heatingPlant.name().get());
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_heatingPlant = _wo.get();
WorkspaceObject idf_plant_op = idf_heatingPlant.getTarget(PlantLoopFields::PlantEquipmentOperationSchemeName).get();
// Should have created a Heating Load one only
ASSERT_EQ(1u, idf_plant_op.extensibleGroups().size());
WorkspaceExtensibleGroup w_eg = idf_plant_op.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
ASSERT_EQ("PlantEquipmentOperation:HeatingLoad", w_eg.getString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType).get());
// Get the Operation Scheme
_wo = w_eg.getTarget(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_op_scheme = _wo.get();
// Get the Plant Equipment List of this HeatingLoad scheme
// There should only be one Load Range
ASSERT_EQ(1u, idf_op_scheme.extensibleGroups().size());
// Load range 1
w_eg = idf_op_scheme.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
_wo = w_eg.getTarget(PlantEquipmentOperation_HeatingLoadExtensibleFields::RangeEquipmentListName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_peq_list = _wo.get();
// Should have one equipment on it: CentralHeatPumpSystem
ASSERT_EQ(1u, idf_peq_list.extensibleGroups().size());
IdfExtensibleGroup idf_eg(idf_peq_list.extensibleGroups()[0]);
ASSERT_EQ(central_hp.name().get(), idf_eg.getString(PlantEquipmentListExtensibleFields::EquipmentName).get());
}
// SourceLoop: on the demand side. So it shouldn't be on it
{
_wo = w.getObjectByTypeAndName(IddObjectType::PlantLoop, sourcePlant.name().get());
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_sourcePlant = _wo.get();
WorkspaceObject idf_plant_op = idf_sourcePlant.getTarget(PlantLoopFields::PlantEquipmentOperationSchemeName).get();
// Should have created a Cooling Load one only
ASSERT_EQ(1u, idf_plant_op.extensibleGroups().size());
WorkspaceExtensibleGroup w_eg = idf_plant_op.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
ASSERT_EQ("PlantEquipmentOperation:CoolingLoad", w_eg.getString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType).get());
// Get the Operation Scheme
_wo = w_eg.getTarget(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_op_scheme = _wo.get();
// Get the Plant Equipment List of this HeatingLoad scheme
// There should only be one Load Range
ASSERT_EQ(1u, idf_op_scheme.extensibleGroups().size());
// Load range 1
w_eg = idf_op_scheme.extensibleGroups()[0].cast<WorkspaceExtensibleGroup>();
_wo = w_eg.getTarget(PlantEquipmentOperation_CoolingLoadExtensibleFields::RangeEquipmentListName);
ASSERT_TRUE(_wo.is_initialized());
WorkspaceObject idf_peq_list = _wo.get();
// Should have one equipment on it: Cooling Tower
ASSERT_EQ(1u, idf_peq_list.extensibleGroups().size());
IdfExtensibleGroup idf_eg(idf_peq_list.extensibleGroups()[0]);
ASSERT_EQ(ct.name().get(), idf_eg.getString(PlantEquipmentListExtensibleFields::EquipmentName).get());
}
m.save(toPath("./ft_central_hp.osm"), true);
w.save(toPath("./ft_central_hp.idf"), true);
}
示例11: timeseries
TEST_F(EnergyPlusFixture,ForwardTranslator_ScheduleFixedInterval_Hourly)
{
//Vector values = linspace(0, 100, 8760);
Vector values = linspace(1, 8760, 8760);
TimeSeries timeseries(DateTime(Date(MonthOfYear::Jan, 1), Time(0,1,0)), Time(0,1,0), values, "");
Model model;
boost::optional<ScheduleInterval> scheduleInterval = ScheduleInterval::fromTimeSeries(timeseries, model);
ASSERT_TRUE(scheduleInterval);
EXPECT_TRUE(scheduleInterval->optionalCast<ScheduleFixedInterval>());
ForwardTranslator ft;
Workspace workspace = ft.translateModel(model);
std::vector<WorkspaceObject> objects = workspace.getObjectsByType(IddObjectType::Schedule_Compact);
ASSERT_EQ(1u, objects.size());
boost::regex throughRegex("^Through:\\s*(.*)/\\s*(.*)\\s*");
boost::regex untilRegex("^Until:\\s*(.*):(.*)\\s*");
workspace.save(toPath("./ForwardTranslator_ScheduleFixedInterval_Hourly.idf"), true);
unsigned N = objects[0].numFields();
boost::optional<Date> lastDateThrough;
bool until24Found = false;
bool nextValueShouldBeLast = false;
unsigned numUntils = 0;
for ( unsigned i = 0; i < N; ++i){
boost::optional<std::string> field = objects[0].getString(i, true, false);
ASSERT_TRUE(field);
if (nextValueShouldBeLast){
double value = boost::lexical_cast<double>(*field);
EXPECT_EQ(8760.0, value);
nextValueShouldBeLast = false;
}
boost::smatch throughMatches;
if (boost::regex_search(*field, throughMatches, throughRegex)){
std::string monthText(throughMatches[1].first, throughMatches[1].second);
std::string dayText(throughMatches[2].first, throughMatches[2].second);
int month = boost::lexical_cast<int>(monthText);
int day = boost::lexical_cast<int>(dayText);
Date date(MonthOfYear(month), day);
if (lastDateThrough){
// check that this date is greater than last date
EXPECT_TRUE(date > *lastDateThrough) << date << " <= " << *lastDateThrough;
// DLM: this schedule should not wrap around to 1/1, it should end on 12/31 at 24:00
// check that last date was closed at 24:00
EXPECT_TRUE(until24Found);
}
lastDateThrough = date;
until24Found = false;
}
boost::smatch untilMatches;
if (boost::regex_search(*field, untilMatches, untilRegex)){
numUntils += 1;
std::string hrText(untilMatches[1].first, untilMatches[1].second);
std::string minText(untilMatches[2].first, untilMatches[2].second);
int hr = boost::lexical_cast<int>(hrText);
int min = boost::lexical_cast<int>(minText);
EXPECT_TRUE(hr <= 24);
EXPECT_TRUE(min < 60);
if ((hr == 24) && (min == 0)){
until24Found = true;
}
// should see Until: 00:00,
EXPECT_FALSE((hr==0) && (min==0));
if ((lastDateThrough == Date(MonthOfYear(12),31)) && until24Found){
nextValueShouldBeLast = true;
}
}
}
bool lastUntil24Found = until24Found;
// check last date was closed
EXPECT_TRUE(lastUntil24Found);
// check that there were 8760 untils
EXPECT_EQ(8760, numUntils);
}
示例12: fuelcell
TEST_F(EnergyPlusFixture,ForwardTranslatorFuelCell) {
Model model;
Building building = model.getUniqueModelObject<Building>();
//ThermalZone zone1(model);
//ThermalZone zone2(model);
// create default fuelcell
GeneratorFuelCell fuelcell(model);
// get default power module
GeneratorFuelCellPowerModule fCPM = fuelcell.powerModule();
// check default power module curve values
Curve curve = fCPM.efficiencyCurve();
CurveQuadratic curveQ = curve.cast<CurveQuadratic>();
EXPECT_EQ(0.642388, curveQ.coefficient1Constant());
EXPECT_EQ(-0.0001619, curveQ.coefficient2x());
EXPECT_EQ(2.26e-008, curveQ.coefficient3xPOW2());
EXPECT_EQ("Annex42", fCPM.efficiencyCurveMode());
// check default Airsupply
GeneratorFuelCellAirSupply fAS = fuelcell.airSupply();
EXPECT_EQ("AirRatiobyStoics", fAS.airSupplyRateCalculationMode());
EXPECT_EQ(1.0, fAS.stoichiometricRatio());
EXPECT_EQ("NoRecovery", fAS.airIntakeHeatRecoveryMode());
EXPECT_EQ("AmbientAir", fAS.airSupplyConstituentMode());
// check default fuel supply
GeneratorFuelSupply fS = fuelcell.fuelSupply();
// check default water supply
GeneratorFuelCellWaterSupply fWS = fuelcell.waterSupply();
fWS.setWaterTemperatureModelingMode("MainsWaterTemperature");
// check default aux heater
GeneratorFuelCellAuxiliaryHeater fAX = fuelcell.auxiliaryHeater();
// check default heat exchanger
GeneratorFuelCellExhaustGasToWaterHeatExchanger fHX = fuelcell.heatExchanger();
// check default electric storage
GeneratorFuelCellElectricalStorage fES = fuelcell.electricalStorage();
// check default inverter
GeneratorFuelCellInverter fI = fuelcell.inverter();
// check default optional stackcooler
boost::optional<GeneratorFuelCellStackCooler> fSC = fuelcell.stackCooler();
EXPECT_FALSE(fSC);
ForwardTranslator forwardTranslator;
Workspace workspace = forwardTranslator.translateModel(model);
EXPECT_EQ(0u, forwardTranslator.errors().size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_AirSupply).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_AuxiliaryHeater).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_ElectricalStorage).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_ExhaustGasToWaterHeatExchanger).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_Inverter).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_PowerModule).size());
// no stack cooler by default
EXPECT_EQ(0u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_StackCooler).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelCell_WaterSupply).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Generator_FuelSupply).size());
//expect site water mains
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::Site_WaterMainsTemperature).size());
model.save(toPath("./fuelcell.osm"), true);
workspace.save(toPath("./fuelcell.idf"), true);
}