Hello to all friends I know my question is very simple, but thank you for your help. I created a space with the number of people and electrical equipment and other options, placed the space in the thermal zone, defined an ideal air system for it and was able to generate the output of the osm file. Now, how can I report the cooling and heating loads of the walls, penetration, ceiling, lighting, etc. in summary or analysis for different hours for the heating area? In other words, what class can I use to get summary or analytical output?
OpenStudio.Model model = new OpenStudio.Model(); // Weather File OpenStudio.Path path = OpenStudio.OpenStudioUtilitiesCore.toPath("D:\Pluginet\Chiral\Chiral\WeatherFile\IRN_Shiraz.408480_ITMY.epw"); OpenStudio.WeatherFile.setWeatherFile(model, new OpenStudio.EpwFile(path)); OpenStudio.DesignDay WinterDesignDay = new OpenStudio.DesignDay(model); WinterDesignDay.setMonth(12); WinterDesignDay.setDayOfMonth(21); WinterDesignDay.setDayType("WinterDesignDay"); WinterDesignDay.setMaximumDryBulbTemperature(25); WinterDesignDay.setDailyDryBulbTemperatureRange(25); WinterDesignDay.setBarometricPressure(25); WinterDesignDay.setWindSpeed(250); WinterDesignDay.setWindDirection(20); WinterDesignDay.setSkyClearness(1);
OpenStudio.DesignDay SummerDesignDay = new OpenStudio.DesignDay(model);
SummerDesignDay.setMonth(7);
SummerDesignDay.setDayOfMonth(21);
SummerDesignDay.setDayType("SummerDesignDay");
SummerDesignDay.setMaximumDryBulbTemperature(20);
SummerDesignDay.setDailyDryBulbTemperatureRange(20);
SummerDesignDay.setBarometricPressure(25);
SummerDesignDay.setWindSpeed(250);
SummerDesignDay.setWindDirection(20);
SummerDesignDay.setSkyClearness(1);
// Creat Construction && Material
OpenStudio.Construction construction = new OpenStudio.Construction(model);
OpenStudio.StandardOpaqueMaterial material = new OpenStudio.StandardOpaqueMaterial(model);
material.setName("material");
material.setThickness(10);
material.setDensity(1920);
material.setSpecificHeat(840);
material.setThermalConductance(8);
material.setSolarAbsorptance(1);
construction.insertLayer(0, material);
// Creat Discrete Schedule
OpenStudio.ScheduleTypeLimits DiscreteScheduleTypeLimits = new OpenStudio.ScheduleTypeLimits(model);
DiscreteScheduleTypeLimits.setName("DiscreteScheduleTypeLimits");
DiscreteScheduleTypeLimits.setUpperLimitValue(1);
DiscreteScheduleTypeLimits.setLowerLimitValue(0);
DiscreteScheduleTypeLimits.setNumericType("Discrete");
OpenStudio.ScheduleDay DiscreteScheduleDay = new OpenStudio.ScheduleDay(model);
DiscreteScheduleDay.setName("DiscreteScheduleDay");
DiscreteScheduleDay.setScheduleTypeLimits(DiscreteScheduleTypeLimits);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 0), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 1), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 2), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 3), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 4), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 5), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 6), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 7), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 8), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 9), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 10), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 11), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 12), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 13), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 14), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 15), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 16), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 17), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 18), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 19), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 20), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 21), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 22), 1);
DiscreteScheduleDay.addValue(new OpenStudio.Time(0, 23), 1);
OpenStudio.ScheduleWeek DiscreteallOfWeekAprill = new OpenStudio.ScheduleWeek(model);
DiscreteallOfWeekAprill.setName("DiscreteallOfWeekAprill");
DiscreteallOfWeekAprill.setSaturdaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setSundaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setMondaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setTuesdaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setWednesdaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setThursdaySchedule(DiscreteScheduleDay);
DiscreteallOfWeekAprill.setFridaySchedule(DiscreteScheduleDay);
OpenStudio.ScheduleYear DiscreteScheduleYear = new OpenStudio.ScheduleYear(model);
DiscreteScheduleYear.setName("DiscreteScheduleYear");
DiscreteScheduleYear.setScheduleTypeLimits(DiscreteScheduleTypeLimits);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(1), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(2), 28), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(3), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(4), 30), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(5), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(6), 30), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(7), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(8), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(9), 30), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(10), 31), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(11), 30), DiscreteallOfWeekAprill);
DiscreteScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(12), 31), DiscreteallOfWeekAprill);
// Creat Continuous Schedule
OpenStudio.ScheduleTypeLimits ContinuousScheduleTypeLimits = new OpenStudio.ScheduleTypeLimits(model);
ContinuousScheduleTypeLimits.setUpperLimitValue(100);
ContinuousScheduleTypeLimits.setLowerLimitValue(0);
ContinuousScheduleTypeLimits.setNumericType("Continuous");
OpenStudio.ScheduleDay ContinuousScheduleDay = new OpenStudio.ScheduleDay(model);
ContinuousScheduleDay.setName("Schedule");
ContinuousScheduleDay.setScheduleTypeLimits(ContinuousScheduleTypeLimits);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 0), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 1), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 2), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 3), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 4), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 5), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 6), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 7), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 8), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 9), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 10), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 11), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 12), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 13), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 14), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 15), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 16), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 17), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 18), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 19), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 20), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 21), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 22), 100);
ContinuousScheduleDay.addValue(new OpenStudio.Time(0, 23), 100);
OpenStudio.ScheduleWeek ContinuousallOfWeekAprill = new OpenStudio.ScheduleWeek(model);
ContinuousallOfWeekAprill.setName("ContinuousContinuousallOfWeekAprill");
ContinuousallOfWeekAprill.setSaturdaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setSundaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setMondaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setTuesdaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setWednesdaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setThursdaySchedule(ContinuousScheduleDay);
ContinuousallOfWeekAprill.setFridaySchedule(ContinuousScheduleDay);
OpenStudio.ScheduleYear ContinuousScheduleYear = new OpenStudio.ScheduleYear(model);
ContinuousScheduleYear.setName("ContinuousScheduleYear");
ContinuousScheduleYear.setScheduleTypeLimits(ContinuousScheduleTypeLimits);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(1), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(2), 28), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(3), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(4), 30), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(5), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(6), 30), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(7), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(8), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(9), 30), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(10), 31), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(11), 30), ContinuousallOfWeekAprill);
ContinuousScheduleYear.addScheduleWeek(new OpenStudio.Date(new OpenStudio.MonthOfYear(12), 31), ContinuousallOfWeekAprill);
// Creat Thermal Zone
OpenStudio.ThermalZone thermalZone = new OpenStudio.ThermalZone(model);
////Creat Thermostat
//OpenStudio.Thermostat thermostat = null;
//thermostat.setFieldComment(28, "heating_setpoint");
//thermostat.setFieldComment(25, "cooling_setpoint");
// Creat System
OpenStudio.ZoneHVACIdealLoadsAirSystem zoneHVACIdealLoadsAirSystem = new OpenStudio.ZoneHVACIdealLoadsAirSystem(model);
zoneHVACIdealLoadsAirSystem.setName("IdealSystem");
zoneHVACIdealLoadsAirSystem.addToThermalZone(thermalZone);
zoneHVACIdealLoadsAirSystem.setAvailabilitySchedule(DiscreteScheduleYear);
zoneHVACIdealLoadsAirSystem.setMaximumHeatingSupplyAirTemperature(50);
zoneHVACIdealLoadsAirSystem.setMinimumCoolingSupplyAirTemperature(13);
zoneHVACIdealLoadsAirSystem.setMaximumHeatingSupplyAirHumidityRatio(0.0156);
zoneHVACIdealLoadsAirSystem.setMinimumCoolingSupplyAirHumidityRatio(0.0077);
zoneHVACIdealLoadsAirSystem.setHeatingLimit("NoLimit");
//zoneHVACIdealLoadsAirSystem.setMaximumCoolingAirFlowRate();
//zoneHVACIdealLoadsAirSystem.setMaximumSensibleHeatingCapacity();
//zoneHVACIdealLoadsAirSystem.setCoolingLimit();
//zoneHVACIdealLoadsAirSystem.setMaximumCoolingAirFlowRate();
//zoneHVACIdealLoadsAirSystem.setMaximumTotalCoolingCapacity();
//zoneHVACIdealLoadsAirSystem.setHeatingAvailabilitySchedule();
//zoneHVACIdealLoadsAirSystem.setCoolingAvailabilitySchedule();
//zoneHVACIdealLoadsAirSystem.setDehumidificationControlType();
zoneHVACIdealLoadsAirSystem.setCoolingSensibleHeatRatio(0.7);
// Creat Space
OpenStudio.Space space = new OpenStudio.Space(model);
space.setName("testspace");
space.setThermalZone(thermalZone);
// Creat People Simulation
OpenStudio.PeopleDefinition peopleDefinition = new OpenStudio.PeopleDefinition(model);
OpenStudio.People people = new OpenStudio.People(peopleDefinition);
peopleDefinition.setFractionRadiant(0.3);
peopleDefinition.setNumberofPeople(10);
people.setDefinition(peopleDefinition);
people.setSpace(space);
people.setActivityLevelSchedule(ContinuousScheduleYear);
// Creat Lighting Simulation
OpenStudio.LightsDefinition lightsDefinition = new OpenStudio.LightsDefinition(model);
OpenStudio.Lights lights = new OpenStudio.Lights(lightsDefinition);
lightsDefinition.setLightingLevel(50);
lights.setDefinition(lightsDefinition);
lights.setSpace(space);
lights.setSchedule(ContinuousScheduleYear);
// Creat Infiltration
OpenStudio.SpaceInfiltrationDesignFlowRate SpaceInfiltrationDesignFlowRate = new OpenStudio.SpaceInfiltrationDesignFlowRate(model);
SpaceInfiltrationDesignFlowRate.setAirChangesperHour(5);
SpaceInfiltrationDesignFlowRate.setSpace(space);
SpaceInfiltrationDesignFlowRate.setSchedule(DiscreteScheduleYear);
// Creat Electrical Equipment Simulation
OpenStudio.ElectricEquipmentDefinition electricEquipmentDefinition = new OpenStudio.ElectricEquipmentDefinition(model);
OpenStudio.ElectricEquipment ElectricEquipment = new OpenStudio.ElectricEquipment(electricEquipmentDefinition);
electricEquipmentDefinition.setDesignLevel(500);
ElectricEquipment.setDefinition(electricEquipmentDefinition);
ElectricEquipment.setSpace(space);
ElectricEquipment.setSchedule(ContinuousScheduleYear);
OpenStudio.Point3dVector Point3Ds = new OpenStudio.Point3dVector();
Point3Ds.Add(new OpenStudio.Point3d(0, 0, 3));
Point3Ds.Add(new OpenStudio.Point3d(0, 0, 0));
Point3Ds.Add(new OpenStudio.Point3d(3, 0, 0));
Point3Ds.Add(new OpenStudio.Point3d(3, 0, 1));
OpenStudio.Surface wallSurface = new OpenStudio.Surface(Point3Ds, model);
wallSurface.setName("Wall");
wallSurface.setSpace(space);
wallSurface.setSurfaceType("Wall");
wallSurface.setSunExposure("SunExposed");
wallSurface.setWindExposure("WindExposed");
wallSurface.setConstruction(construction);
OpenStudio.SubSurface windowSubSurface = new OpenStudio.SubSurface(Point3Ds, model);
windowSubSurface.setName("Window");
windowSubSurface.setSubSurfaceType("Window");
windowSubSurface.setSurface(wallSurface);
windowSubSurface.setConstruction(construction);
OpenStudio.Surface roofSurface = new OpenStudio.Surface(Point3Ds, model);
roofSurface.setName("Roof");
roofSurface.setSpace(space);
roofSurface.setSurfaceType("Roof");
roofSurface.setSunExposure("SunExposed");
roofSurface.setWindExposure("WindExposed");
roofSurface.setConstruction(construction);
// Calculation Algorithm
OpenStudio.InsideSurfaceConvectionAlgorithm insideSurfaceConvectionAlgorithm = model.getInsideSurfaceConvectionAlgorithm();
insideSurfaceConvectionAlgorithm.setAlgorithm("TRAP");
OpenStudio.OutsideSurfaceConvectionAlgorithm outsideSurfaceConvectionAlgorithm = model.getOutsideSurfaceConvectionAlgorithm();
outsideSurfaceConvectionAlgorithm.setAlgorithm("DOE-2");
OpenStudio.RunPeriod runPeriod = model.getRunPeriod();
runPeriod.setName("Start");
runPeriod.setBeginMonth(1);
runPeriod.setBeginDayOfMonth(1);
runPeriod.setEndMonth(12);
runPeriod.setEndDayOfMonth(31);
OpenStudio.HeatBalanceAlgorithm heatBalanceAlgorithm = model.getHeatBalanceAlgorithm();
heatBalanceAlgorithm.setAlgorithm("ConductionTransferFunction");
heatBalanceAlgorithm.setSurfaceTemperatureUpperLimit(200);
heatBalanceAlgorithm.setMinimumSurfaceConvectionHeatTransferCoefficientValue(0.1);
heatBalanceAlgorithm.setMaximumSurfaceConvectionHeatTransferCoefficientValue(1000);
OpenStudio.Timestep timestep = model.getTimestep();
timestep.setNumberOfTimestepsPerHour(6);
OpenStudio.SimulationControl simulationControl = model.getSimulationControl();
simulationControl.setDoZoneSizingCalculation(false);
simulationControl.setDoSystemSizingCalculation(true);
simulationControl.setDoPlantSizingCalculation(false);
simulationControl.setRunSimulationforSizingPeriods(false);
simulationControl.setRunSimulationforWeatherFileRunPeriods(true);
simulationControl.setDoHVACSizingSimulationforSizingPeriods(false);
simulationControl.setMaximumNumberofHVACSizingSimulationPasses(1);
OpenStudio.Building building = model.getBuilding();
building.setNorthAxis(0);
OpenStudio.SiteGroundTemperatureBuildingSurface siteGroundTemperatureBuildingSurface = new OpenStudio.SiteGroundTemperatureBuildingSurface(model);
siteGroundTemperatureBuildingSurface.setJanuaryGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setFebruaryGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setMarchGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setAprilGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setMayGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setJuneGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setJulyGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setAugustGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setSeptemberGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setOctoberGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setNovemberGroundTemperature(18);
siteGroundTemperatureBuildingSurface.setDecemberGroundTemperature(18);
// Output
OpenStudio.OutputVariable outputVariable = new OpenStudio.OutputVariable("", model);
outputVariable.setKeyValue("*");
outputVariable.setVariableName("");
outputVariable.setReportingFrequency("");
path = OpenStudio.OpenStudioUtilitiesCore.toPath("C:\\Users\\Masoud\\Desktop\\test.osm");
model.save(new OpenStudio.Path(path), true);