void setupInitialConditions() { speciesHandler.copyAndAddObject(LinearViscoelasticSpecies()); Coil coil(Vec3D(0.1, 0.2, 0.3), 0.4, 0.5, 0.6, 0.7, 0.8); CylindricalWall cylindricalWall; cylindricalWall.set(0.1); AxisymmetricIntersectionOfWalls axisymmetricIntersectionOfWalls; axisymmetricIntersectionOfWalls.setPosition(Vec3D(0.1,0.2,0.3)); axisymmetricIntersectionOfWalls.setOrientation(Vec3D(0.4,0.5,0.6)); axisymmetricIntersectionOfWalls.addObject(Vec3D(0.7,0.8,0.9),0.11*Vec3D(0.7,0.8,0.9)); IntersectionOfWalls intersectionOfWalls; intersectionOfWalls.addObject(Vec3D(0.1, 0.2, 0.3), Vec3D(0.4, 0.5, 0.6)); InfiniteWall infiniteWall; infiniteWall.set(Vec3D(0.1, 0.2, 0.3), 0.4*Vec3D(0.1, 0.2, 0.3)); InfiniteWallWithHole infiniteWallWithHole; infiniteWallWithHole.set(Vec3D(0.1, 0.2, 0.3), 0.4, 0.5); Screw screw(Vec3D(0.1, 0.2, 0.3), 0.4, 0.5, 0.6, 0.7, 0.8); wallHandler.copyAndAddObject(coil); wallHandler.copyAndAddObject(cylindricalWall); wallHandler.copyAndAddObject(axisymmetricIntersectionOfWalls); wallHandler.copyAndAddObject(intersectionOfWalls); wallHandler.copyAndAddObject(infiniteWall); wallHandler.copyAndAddObject(infiniteWallWithHole); wallHandler.copyAndAddObject(screw); AngledPeriodicBoundary angledPeriodicBoundary; angledPeriodicBoundary.set(Vec3D(0.1, 0.2, 0.3), Vec3D(0.4, 0.5, 0.6), Vec3D(0.7, 0.8, 0.9)); ChuteInsertionBoundary chuteInsertionBoundary; chuteInsertionBoundary.set(new BaseParticle, 13, Vec3D(0.1, 0.2, 0.3), Vec3D(0.4, 0.5, 0.6), 0.33, 0.44, 0.55, 1.1, 1.2); CubeInsertionBoundary cubeInsertionBoundary; cubeInsertionBoundary.set(new BaseParticle, 13, Vec3D(0.1, 0.2, 0.3), Vec3D(0.4, 0.5, 0.6), Vec3D(0.11, 0.22, 0.33), Vec3D(0.44, 0.55, 0.66), 0.77, 0.88); HopperInsertionBoundary hopperInsertionBoundary; hopperInsertionBoundary.set(new BaseParticle, 13, 0.2, 0.3, 0.66, 0.77, 3.1, 0.69, false, 3, 0.11, 0.21, 0.09, 2.31, 0.001, 30); PeriodicBoundary periodicBoundary; periodicBoundary.set(Vec3D(0.1, 0.2, 0.3), 1.1, 2.2, Vec3D(0.4, 0.5, 0.6)); CircularPeriodicBoundary circularPeriodicBoundary(0.3); DeletionBoundary deletionBoundary; deletionBoundary.set(Vec3D(0.1, 0.2, 0.3), 3.14); LeesEdwardsBoundary leesEdwardsBoundary; leesEdwardsBoundary.set( [&] (double time UNUSED){ return 0.1;}, [&] (double time UNUSED) { return 0.2;}, 0.3,0.4,0.5,0.6); boundaryHandler.copyAndAddObject(angledPeriodicBoundary); boundaryHandler.copyAndAddObject(chuteInsertionBoundary); boundaryHandler.copyAndAddObject(cubeInsertionBoundary); boundaryHandler.copyAndAddObject(hopperInsertionBoundary); boundaryHandler.copyAndAddObject(periodicBoundary); boundaryHandler.copyAndAddObject(circularPeriodicBoundary); boundaryHandler.copyAndAddObject(deletionBoundary); boundaryHandler.copyAndAddObject(leesEdwardsBoundary); BaseParticle baseParticle; particleHandler.copyAndAddObject(baseParticle); }
OptionalModelObject ReverseTranslator::translateCoilHeatingGas( const WorkspaceObject & workspaceObject ) { OptionalModelObject result,temp; OptionalSchedule schedule; //get the Schedule OptionalWorkspaceObject owo = workspaceObject.getTarget(Coil_Heating_GasFields::AvailabilityScheduleName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find Schedule."); return result; } temp = translateAndMapWorkspaceObject(*owo); if(temp) { schedule=temp->optionalCast<Schedule>(); } if( !schedule ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() <<"Failed to convert iddObject (schedule) into ModelObject. Maybe it does not exist in model yet"); return result; } try { openstudio::model::CoilHeatingGas coil( m_model, *schedule ); OptionalString optS = workspaceObject.name(); if(optS) { coil.setName(*optS); } OptionalDouble d; d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::GasBurnerEfficiency); if(d) { coil.setGasBurnerEfficiency(*d); } d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::NominalCapacity); if(d) { coil.setNominalCapacity(*d); } //skip inlet and outlet node names. That should be done FOR us by the AirLoop Translator. d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::GasBurnerEfficiency); if(d) { coil.setGasBurnerEfficiency(*d); } d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::NominalCapacity); if(d) { coil.setNominalCapacity(*d); } d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::ParasiticElectricLoad); if(d) { coil.setParasiticElectricLoad(*d); } d = workspaceObject.getDouble(openstudio::Coil_Heating_GasFields::ParasiticGasLoad); if(d) { coil.setParasiticGasLoad(*d); } result = coil; } catch (std::exception& e) { LOG(Error,"Unable to reverse translate " << workspaceObject.briefDescription() << ", because " << e.what() << "."); return boost::none; } return result; }
OptionalModelObject ReverseTranslator::translateCoilCoolingDXSingleSpeed( const WorkspaceObject & workspaceObject ) { OptionalModelObject result,temp; OptionalSchedule schedule; //get the Schedule OptionalWorkspaceObject owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::AvailabilityScheduleName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find Schedule."); return result; } temp = translateAndMapWorkspaceObject(*owo); if(temp) { schedule=temp->optionalCast<Schedule>(); } if( !schedule ) { LOG(Error,"Error importing object: " << workspaceObject.briefDescription() <<"Failed to convert iddObject (schedule) into ModelObject. Maybe it does not exist in model yet"); return result; } //collect the curves owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::TotalCoolingCapacityFunctionofTemperatureCurveName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find TotalCoolingCapacityFunctionOfTemperatureCurve."); return result; } if( owo->numSources() > 1 ) { owo = owo->workspace().addObject(owo.get()); } temp= translateAndMapWorkspaceObject( *owo ); if(!temp) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't convert workspace curve into a model curve. "); return result; } boost::optional<Curve> tccfot = temp->optionalCast<Curve>(); if( ! tccfot ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " curve is wrong type. "); return result; } owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::EnergyInputRatioFunctionofTemperatureCurveName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find EnergyInputRatioFunctionofTemperatureCurveName."); return result; } if( owo->numSources() > 1 ) { owo = owo->workspace().addObject(owo.get()); } temp = translateAndMapWorkspaceObject( *owo ); if(!temp) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't convert workspace curve into a model curve. "); return result; } boost::optional<Curve> eirfot = temp->optionalCast<Curve>(); if( ! eirfot ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " curve is wrong type. "); return result; } owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::TotalCoolingCapacityFunctionofFlowFractionCurveName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find TotalCoolingCapacityFunctionofFlowFractionCurveName."); return result; } if( owo->numSources() > 1 ) { owo = owo->workspace().addObject(owo.get()); } temp = translateAndMapWorkspaceObject( *owo ); if(!temp) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't convert workspace curve into a model curve. "); return result; } boost::optional<Curve> tccfoff = temp->optionalCast<Curve>(); if( ! tccfoff ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " curve is wrong type. "); return result; } owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::EnergyInputRatioFunctionofFlowFractionCurveName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find EnergyInputRatioFunctionofFlowFractionCurveName."); return result; } if( owo->numSources() > 1 ) { owo = owo->workspace().addObject(owo.get()); } temp = translateAndMapWorkspaceObject( *owo ); if(!temp) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't convert workspace curve into a model curve. "); return result; } boost::optional<Curve> eirfoff = temp->optionalCast<Curve>(); if( ! eirfoff ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " curve is wrong type. "); return result; } owo = workspaceObject.getTarget(Coil_Cooling_DX_SingleSpeedFields::PartLoadFractionCorrelationCurveName); if(!owo) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't find PartLoadFractionCorrelationCurveName."); return result; } if( owo->numSources() > 1 ) { owo = owo->workspace().addObject(owo.get()); } temp = translateAndMapWorkspaceObject( *owo ); if(!temp) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " Can't convert workspace curve into a model curve. "); return result; } boost::optional<Curve> plfcc = temp->optionalCast<Curve>(); if( ! plfcc ) { LOG(Error, "Error importing object: " << workspaceObject.briefDescription() << " curve is wrong type. "); return result; } try { CoilCoolingDXSingleSpeed coil(m_model, *schedule, *tccfot, *tccfoff, *eirfot, *eirfoff, *plfcc); OptionalString optS = workspaceObject.name(); if( optS ) { coil.setName( *optS ); } OptionalDouble d = workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::GrossRatedTotalCoolingCapacity); if(d) { coil.setRatedTotalCoolingCapacity(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::GrossRatedSensibleHeatRatio); if(d) { coil.setRatedSensibleHeatRatio(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::GrossRatedCoolingCOP); if(d) { coil.setRatedCOP(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::RatedAirFlowRate); if(d) { coil.setRatedAirFlowRate(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::RatedEvaporatorFanPowerPerVolumeFlowRate); if(d) { coil.setRatedEvaporatorFanPowerPerVolumeFlowRate(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::NominalTimeforCondensateRemovaltoBegin); if(d) { coil.setNominalTimeForCondensateRemovalToBegin(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::RatioofInitialMoistureEvaporationRateandSteadyStateLatentCapacity); if(d) { coil.setRatioOfInitialMoistureEvaporationRateAndSteadyStateLatentCapacity(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::MaximumCyclingRate); if(d) { coil.setMaximumCyclingRate(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::LatentCapacityTimeConstant); if(d) { coil.setLatentCapacityTimeConstant(*d); } optS=workspaceObject.getString(Coil_Cooling_DX_SingleSpeedFields::CondenserAirInletNodeName); if(optS) { coil.setCondenserAirInletNodeName(*optS); } optS = workspaceObject.getString(Coil_Cooling_DX_SingleSpeedFields::CondenserType); if(optS) { coil.setCondenserType(*optS); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::EvaporativeCondenserEffectiveness); if(d) { coil.setEvaporativeCondenserEffectiveness(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::EvaporativeCondenserAirFlowRate); if(d) { coil.setEvaporativeCondenserAirFlowRate(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::EvaporativeCondenserPumpRatedPowerConsumption); if(d) { coil.setEvaporativeCondenserPumpRatedPowerConsumption(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::CrankcaseHeaterCapacity); if(d) { coil.setCrankcaseHeaterCapacity(*d); } d=workspaceObject.getDouble(Coil_Cooling_DX_SingleSpeedFields::MaximumOutdoorDryBulbTemperatureforCrankcaseHeaterOperation); if(d) { coil.setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(*d); } result=coil; } catch (std::exception& e) { LOG(Error,"Could not reverse translate " << workspaceObject.briefDescription() << ", because " << e.what() << "."); } return result; }