예제 #1
0
        //========================= Helpers ===================================
        /// <summary>
        /// Get real recalculated HBModel with all geometry data.
        /// </summary>
        public HB.Model GetHBModel()
        {
            //set up all temp locations for resources objects
            InitTemp();

            var model = this.HBObject;

            model.Properties     = model.Properties ?? new HB.ModelProperties(energy: HB.ModelEnergyProperties.Default);
            model.Rooms          = this.RoomEntitiesWithoutHistory.Select(_ => _.TryGetRoomEntity().GetHBRoom()).ToList();
            model.OrphanedShades = this.OrphanedShadesWithoutHistory.SelectMany(_ => _.TryGetShadeEntity().GetHBShades()).ToList();
            //DODO: need to double check
            model.OrphanedApertures = this.OrphanedAperturesWithoutHistory.Select(_ => _.TryGetApertureEntity().HBObject).ToList();
            model.OrphanedDoors     = this.OrphanedDoorsWithoutHistory.Select(_ => _.TryGetDoorEntity().HBObject).ToList();
            model.OrphanedFaces     = this.OrphanedFacesWithoutHistory.Select(_ => _.TryGetOrphanedFaceEntity().HBObject).ToList();

            EnergyLibrary.AddEnergyMaterial(model, EnergyMaterials);
            EnergyLibrary.AddEnergyWindowMaterial(model, EnergyWindowMaterials);

            EnergyLibrary.AddConstructions(model, OpaqueConstructions);
            EnergyLibrary.AddConstructions(model, WindowConstructions);
            EnergyLibrary.AddConstructions(model, AirBoundaryConstructions);
            EnergyLibrary.AddConstructions(model, ShadeConstructions);

            return(model);
        }
        public void Test_GetBuildingVintages()
        {
            sw.Restart();
            var vintages = EnergyLibrary.GetBuildingVintages();

            sw.Stop();
            var ms = sw.Elapsed.TotalMilliseconds;

            TestContext.WriteLine($"Runtime: {ms} ms");

            Assert.IsTrue(vintages.Any(_ => _.EndsWith("2013_registry.json")));
        }
        public void Test_LoadBuildingVintage()
        {
            TestContext.WriteLine($"Testing: {nameof(Test_LoadBuildingVintage)}");

            sw.Restart();
            var vintages = EnergyLibrary.GetBuildingVintages();
            var vintage  = vintages.FirstOrDefault(_ => _.EndsWith("2013_registry.json"));
            var dics     = EnergyLibrary.LoadBuildingVintage(vintage);

            sw.Stop();
            var ms = sw.Elapsed.TotalMilliseconds;

            TestContext.WriteLine($"Runtime: {ms} ms");
            Assert.IsTrue(dics["LargeOffice"].Contains("OpenOffice"));
        }
        public void Test_GetOrLoadStandardsConstructionSets()
        {
            TestContext.WriteLine($"Testing: {nameof(Test_GetOrLoadStandardsConstructionSets)}");

            sw.Restart();
            var programTypes = EnergyLibrary.GetOrLoadStandardsConstructionSets(Path.Combine(EnergyLibrary.ConstructionSetFolder, "2013_data.json"));

            sw.Stop();
            var ms = sw.Elapsed.TotalMilliseconds;

            TestContext.WriteLine($"Runtime: {ms} ms");

            var programType = programTypes.Where(_ => _.Name == "2013::ClimateZone1::SteelFramed").FirstOrDefault();

            Assert.IsTrue(programType.ApertureSet.WindowConstruction == "U 0.60 SHGC 0.25 Dbl 2.5mm air");
        }
        public void Test_GetOrLoadProgramTypesFromJson()
        {
            TestContext.WriteLine($"Testing: {nameof(Test_GetOrLoadProgramTypesFromJson)}");

            sw.Restart();
            var programTypes = EnergyLibrary.GetOrLoadProgramTypesFromJson(Path.Combine(EnergyLibrary.BuildingProgramTypesFolder, "2013_data.json"));

            sw.Stop();
            var ms = sw.Elapsed.TotalMilliseconds;

            TestContext.WriteLine($"Runtime: {ms} ms");

            var programType = programTypes.Where(_ => _.Name == "2013::Courthouse::Courtroom").FirstOrDefault();

            Assert.IsTrue(programType.Ventilation.FlowPerPerson == 0.00471947);
        }
예제 #6
0
        protected static void CheckResourceForWindowConstruction(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return;
            }

            var cLib = ModelEntity.WindowConstructions;

            if (cLib == null)
            {
                return;
            }

            //check Resource object
            var cName = name;

            if (cLib.Any(_ => _.Name == cName))
            {
                return;
            }

            var c = EnergyLibrary.GetWindowConstructionByName(cName);

            cLib.Add(c);

            var materials = EnergyLibrary.GetConstructionMaterials(c);
            var mLib      = ModelEntity.EnergyWindowMaterials;

            foreach (var m in materials)
            {
                if (mLib.Any(_ => _ == m))
                {
                    continue;
                }
                mLib.Add(m);
            }
        }