//========================= 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); }
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); } }