function createGeometry(model) { var polyline = require('/home/ubuntu/dev/aeChack.github.io/openstudio/polyline.json'); // add constructions addExampleConstructions(model); var defaultConstructionSet = openstudio.model.getDefaultConstructionSets(model).get(0); // set building story height var floorHeight = 3.5; // set the number of stories var stories = 10; // create each building story element for (var i=0; i<stories; i++) { // create story var zCoord = i * floorHeight; var story = new openstudio.model.BuildingStory(model); story.setNominalZCoordinate(zCoord); story.setNominalFloortoFloorHeight(floorHeight); // create floor prints var floorPrint = new openstudio.Point3dVector(); for (var j = 0; j < polyline.vertices.length; j++) { floorPrint.add(new openstudio.Point3d(polyline.vertices[j][0],polyline.vertices[j][1],polyline.vertices[j][2])); } // create spaces var thermalZone = new openstudio.model.ThermalZone(model); var space = openstudio.model.Space.fromFloorPrint(floorPrint, floorHeight, model); space.get().setThermalZone(thermalZone); } }
function addExampleConstructions(model) { console.log("Start Constructions"); var defaultConstructions = new openstudio.model.DefaultConstructionSet(model); defaultConstructions.setName("Default Constructions"); var exteriorSurfaceConstructions = new openstudio.model.DefaultSurfaceConstructions(model); exteriorSurfaceConstructions.setName("Exterior Surface Constructions"); defaultConstructions.setDefaultExteriorSurfaceConstructions(exteriorSurfaceConstructions); var interiorSurfaceConstructions = new openstudio.model.DefaultSurfaceConstructions(model); interiorSurfaceConstructions.setName("Interior Surface Constructions"); defaultConstructions.setDefaultInteriorSurfaceConstructions(interiorSurfaceConstructions); var groundContactSurfaceConstructions = new openstudio.model.DefaultSurfaceConstructions(model); groundContactSurfaceConstructions.setName("Ground Contact Surface Constructions"); defaultConstructions.setDefaultGroundContactSurfaceConstructions(groundContactSurfaceConstructions); var exteriorSubSurfaceConstructions = new openstudio.model.DefaultSubSurfaceConstructions(model); exteriorSubSurfaceConstructions.setName("Exterior SubSurface Constructions"); defaultConstructions.setDefaultExteriorSubSurfaceConstructions(exteriorSubSurfaceConstructions); var interiorSubSurfaceConstructions = new openstudio.model.DefaultSubSurfaceConstructions(model); interiorSubSurfaceConstructions.setName("Interior SubSurface Constructions"); defaultConstructions.setDefaultInteriorSubSurfaceConstructions(interiorSubSurfaceConstructions); console.log("Finished Default Construction Set"); var opaqueMaterials = new openstudio.model.OpaqueMaterialVector(); console.log("Initialized Opaque Materials"); // Exterior Wall var m01_100mm_brick = new openstudio.model.StandardOpaqueMaterial(model); m01_100mm_brick.setName("M01 100mm brick"); m01_100mm_brick.setRoughness("MediumRough"); m01_100mm_brick.setThickness(0.1016); m01_100mm_brick.setThermalConductivity(0.89); m01_100mm_brick.setDensity(1920.0); m01_100mm_brick.setSpecificHeat(790.0); opaqueMaterials.add(m01_100mm_brick); var m15_200mm_heavyweight_concrete = new openstudio.model.StandardOpaqueMaterial(model); m15_200mm_heavyweight_concrete.setName("M15 200mm heavyweight concrete"); m15_200mm_heavyweight_concrete.setRoughness("MediumRough"); m15_200mm_heavyweight_concrete.setThickness(0.2032); m15_200mm_heavyweight_concrete.setThermalConductivity(1.95); m15_200mm_heavyweight_concrete.setDensity(2240.0); m15_200mm_heavyweight_concrete.setSpecificHeat(900.0); opaqueMaterials.add(m15_200mm_heavyweight_concrete); var i02_50mm_insulation_board = new openstudio.model.StandardOpaqueMaterial(model); i02_50mm_insulation_board.setName("I02 50mm insulation board"); i02_50mm_insulation_board.setRoughness("MediumRough"); i02_50mm_insulation_board.setThickness(0.0508); i02_50mm_insulation_board.setThermalConductivity(0.03); i02_50mm_insulation_board.setDensity(43.0); i02_50mm_insulation_board.setSpecificHeat(1210.0); opaqueMaterials.add(i02_50mm_insulation_board); var f04_wall_air_space_resistance = new openstudio.model.AirGap(model); f04_wall_air_space_resistance.setName("F04 Wall air space resistance"); f04_wall_air_space_resistance.setThermalResistance(0.15); opaqueMaterials.add(f04_wall_air_space_resistance); var g01a_19mm_gypsum_board = new openstudio.model.StandardOpaqueMaterial(model); g01a_19mm_gypsum_board.setName("G01a 19mm gypsum board"); g01a_19mm_gypsum_board.setRoughness("MediumSmooth"); g01a_19mm_gypsum_board.setThickness(0.019); g01a_19mm_gypsum_board.setThermalConductivity(0.16); g01a_19mm_gypsum_board.setDensity(800.0); g01a_19mm_gypsum_board.setSpecificHeat(1090.0); opaqueMaterials.add(g01a_19mm_gypsum_board); var exteriorWall = new openstudio.model.Construction(model); exteriorWall.setName("Exterior Wall"); exteriorWall.setInsulation(i02_50mm_insulation_board); exteriorSurfaceConstructions.setWallConstruction(opaqueMaterials); opaqueMaterials.clear(); console.log("Finished Exterior Wall Construction"); // Exterior Roof var m11_100mm_lightweight_concrete = new openstudio.model.StandardOpaqueMaterial(model); m11_100mm_lightweight_concrete.setName("M11 100mm lightweight concrete"); m11_100mm_lightweight_concrete.setRoughness("MediumRough"); m11_100mm_lightweight_concrete.setThickness(0.1016); m11_100mm_lightweight_concrete.setThermalConductivity(0.53); m11_100mm_lightweight_concrete.setDensity(1280.0); m11_100mm_lightweight_concrete.setSpecificHeat(840.0); opaqueMaterials.add(m11_100mm_lightweight_concrete); var f05_ceiling_air_space_resistance = new openstudio.model.AirGap(model); f05_ceiling_air_space_resistance.setName("F05 Ceiling air space resistance"); f05_ceiling_air_space_resistance.setThermalResistance(0.18); opaqueMaterials.add(f05_ceiling_air_space_resistance); var f16_acoustic_tile = new openstudio.model.StandardOpaqueMaterial(model); f16_acoustic_tile.setName("F16 Acoustic tile"); f16_acoustic_tile.setRoughness("MediumSmooth"); f16_acoustic_tile.setThickness(0.0191); f16_acoustic_tile.setThermalConductivity(0.06); f16_acoustic_tile.setDensity(368.0); f16_acoustic_tile.setSpecificHeat(590.0); opaqueMaterials.add(f16_acoustic_tile); var exteriorRoof = new openstudio.model.Construction(model); exteriorRoof.setName("Exterior Roof"); exteriorSurfaceConstructions.setRoofCeilingConstruction(exteriorRoof); opaqueMaterials.clear(); console.log("Finished Exterior Roof Construction"); // Interior Floor opaqueMaterials.add(f16_acoustic_tile); opaqueMaterials.add(f05_ceiling_air_space_resistance); opaqueMaterials.add(m11_100mm_lightweight_concrete); var interiorFloor = new openstudio.model.Construction(model); interiorFloor.setName("Interior Floor"); interiorSurfaceConstructions.setFloorConstruction(interiorFloor); opaqueMaterials.clear(); console.log("Finished Interior Floor Construction"); // Air Wall var airWallMaterial = new openstudio.model.AirWallMaterial(model); airWallMaterial.setName("Air Wall Material"); var airWall = new openstudio.model.Construction(openstudio.model.toModelPartitionMaterial(airWallMaterial).get()); airWall.setName("Air Wall"); interiorSurfaceConstructions.setWallConstruction(airWall); console.log("Finished Air Wall Construction"); // Interior Ceiling opaqueMaterials.add(m11_100mm_lightweight_concrete); opaqueMaterials.add(f05_ceiling_air_space_resistance); opaqueMaterials.add(f16_acoustic_tile); var interiorCeiling = new openstudio.model.Construction(model); interiorCeiling.setName("Interior Ceiling"); interiorSurfaceConstructions.setRoofCeilingConstruction(interiorCeiling); opaqueMaterials.clear(); console.log("Finished Interior Ceiling Construction"); // Slab var mat_cc05_8_hw_concrete = new openstudio.model.StandardOpaqueMaterial(model); mat_cc05_8_hw_concrete.setName("MAT-CC05 8 HW CONCRETE"); mat_cc05_8_hw_concrete.setRoughness("Rough"); mat_cc05_8_hw_concrete.setThickness(0.2032); mat_cc05_8_hw_concrete.setThermalConductivity(1.3110); mat_cc05_8_hw_concrete.setDensity(2240.0); mat_cc05_8_hw_concrete.setSpecificHeat(836.8); mat_cc05_8_hw_concrete.setThermalAbsorptance(0.9); mat_cc05_8_hw_concrete.setSolarAbsorptance(0.7); mat_cc05_8_hw_concrete.setVisibleAbsorptance(0.7); opaqueMaterials.add(mat_cc05_8_hw_concrete); var cp02_carpet_pad = new openstudio.model.MasslessOpaqueMaterial(model); cp02_carpet_pad.setName("CP02 CARPET PAD"); cp02_carpet_pad.setRoughness("VeryRough"); cp02_carpet_pad.setThermalResistance(0.2165); cp02_carpet_pad.setThermalAbsorptance(0.9); cp02_carpet_pad.setSolarAbsorptance(0.7); cp02_carpet_pad.setVisibleAbsorptance(0.8); opaqueMaterials.add(cp02_carpet_pad); var slab = new openstudio.model.Construction(model); slab.setName("Slab"); groundContactSurfaceConstructions.setFloorConstruction(slab); opaqueMaterials.clear(); var fenestrationMaterials = new openstudio.model.FenestrationMaterialVector(); console.log("Finished Slab Construction"); // Exterior Window var simple_glazing = new openstudio.model.SimpleGlazing(model); simple_glazing.setName("Simple Glazing"); simple_glazing.setUFactor(3.23646); simple_glazing.setSolarHeatGainCoefficient(0.39); simple_glazing.setVisibleTransmittance(0.6); var clear_3mm = new openstudio.model.StandardGlazing(model); clear_3mm.setName("Clear 3mm"); clear_3mm.setOpticalDataType("SpectralAverage"); clear_3mm.setThickness(0.003); clear_3mm.setSolarTransmittance(0.837); clear_3mm.setFrontSideSolarReflectanceatNormalIncidence(0.075); clear_3mm.setBackSideSolarReflectanceatNormalIncidence(0.075); clear_3mm.setVisibleTransmittance(0.898); clear_3mm.setFrontSideVisibleReflectanceatNormalIncidence(0.081); clear_3mm.setBackSideVisibleReflectanceatNormalIncidence(0.081); clear_3mm.setInfraredTransmittance(0.0); clear_3mm.setFrontSideInfraredHemisphericalEmissivity(0.084); clear_3mm.setBackSideInfraredHemisphericalEmissivity(0.084); clear_3mm.setThermalConductivity(0.9); var air_13mm = new openstudio.model.Gas(model); air_13mm.setName("Air 13mm"); air_13mm.setGasType("Air"); air_13mm.setThickness(0.0127); // DLM: use simple glazing so we can know window properties without requiring E+ run fenestrationMaterials.add(openstudio.model.toFenestrationMaterial(simple_glazing).get()); var exteriorWindow = new openstudio.model.Construction(model); exteriorWindow.setName("Exterior Window"); exteriorSubSurfaceConstructions.setFixedWindowConstruction(exteriorWindow); exteriorSubSurfaceConstructions.setOperableWindowConstruction(exteriorWindow); exteriorSubSurfaceConstructions.setGlassDoorConstruction(exteriorWindow); exteriorSubSurfaceConstructions.setSkylightConstruction(exteriorWindow); exteriorSubSurfaceConstructions.setTubularDaylightDomeConstruction(exteriorWindow); exteriorSubSurfaceConstructions.setTubularDaylightDiffuserConstruction(exteriorWindow); fenestrationMaterials.clear(); console.log("Finished Exterior Window Construction"); // Interior Window // DLM: use simple glazing so we can know window properties without requiring E+ run fenestrationMaterials.add(openstudio.model.toFenestrationMaterial(simple_glazing).get()); var interiorWindow = new openstudio.model.Construction(model); interiorWindow.setName("Interior Window"); interiorSubSurfaceConstructions.setFixedWindowConstruction(interiorWindow); interiorSubSurfaceConstructions.setOperableWindowConstruction(interiorWindow); interiorSubSurfaceConstructions.setGlassDoorConstruction(interiorWindow); interiorSubSurfaceConstructions.setSkylightConstruction(interiorWindow); interiorSubSurfaceConstructions.setTubularDaylightDomeConstruction(interiorWindow); interiorSubSurfaceConstructions.setTubularDaylightDiffuserConstruction(interiorWindow); fenestrationMaterials.clear(); console.log("Finished Interior Window Construction"); // Interior Door var g05_25mm_wood = new openstudio.model.StandardOpaqueMaterial(model); g05_25mm_wood.setName("G05 25mm wood"); g05_25mm_wood.setRoughness("MediumSmooth"); g05_25mm_wood.setThickness(0.0254); g05_25mm_wood.setThermalConductivity(0.15); g05_25mm_wood.setDensity(608.0); g05_25mm_wood.setSpecificHeat(1630.0); opaqueMaterials.add(g05_25mm_wood); var interiorDoor = new openstudio.model.Construction(model); interiorDoor.setName("Interior Door"); interiorSubSurfaceConstructions.setDoorConstruction(interiorDoor); interiorSubSurfaceConstructions.setOverheadDoorConstruction(interiorDoor); opaqueMaterials.clear(); console.log("Finished Interior Door Construction"); // Interior Partition opaqueMaterials.add(g05_25mm_wood); var interiorPartition = new openstudio.model.Construction(model); interiorPartition.setName("Interior Partition"); defaultConstructions.setInteriorPartitionConstruction(interiorPartition); opaqueMaterials.clear(); console.log("Finished Interior Partition Construction"); }