public static GasType?GasType(this GasMaterial gasMaterial) { if (gasMaterial == null) { return(null); } string name_gasMaterial = gasMaterial.Name; name_gasMaterial = name_gasMaterial?.ToUpper().Trim(); List <GasType> gasTypes = new List <GasType>(); foreach (GasType gasType in Enum.GetValues(typeof(GasType))) { string name_GasType = gasType.ToString().ToUpper().Trim(); if (name_gasMaterial.Contains(name_GasType)) { gasTypes.Add(gasType); } } if (gasTypes.Count == 0) { return(null); } if (gasTypes.Count != 1) { gasTypes.Sort((x, y) => y.ToString().Length.CompareTo(x.ToString().Length)); } return(gasTypes[0]); }
public static EnergyMaterialNoMass ToLadybugTools(this GasMaterial gasMaterial, double angle, double thickness = double.NaN) { if (gasMaterial == null || string.IsNullOrEmpty(gasMaterial.Name)) { return(null); } GasType?gasType = gasMaterial.GasType(); if (gasType == null || !gasType.HasValue || gasType != GasType.Air) { return(null); } double thickness_Temp = thickness; if (double.IsNaN(thickness_Temp)) { thickness_Temp = gasMaterial.GetValue <double>(MaterialParameter.DefaultThickness); } double airspaceThermalResistance = Analytical.Query.AirspaceThermalResistance(angle, thickness_Temp); if (double.IsNaN(airspaceThermalResistance)) { return(null); } return(new EnergyMaterialNoMass(identifier: gasMaterial.Name, rValue: airspaceThermalResistance, displayName: gasMaterial.DisplayName)); }
public static EnergyMaterialNoMass ToLadybugTools(this GasMaterial gasMaterial) { if (gasMaterial == null || string.IsNullOrEmpty(gasMaterial.Name)) { return(null); } return(new EnergyMaterialNoMass(identifier: gasMaterial.Name, rValue: gasMaterial.GetValue <double>(GasMaterialParameter.HeatTransferCoefficient), displayName: gasMaterial.DisplayName)); }
public static IEnergyPlusClass ToEnergyPlus(this GasMaterial gasMaterial, double thickness) { Material bhomMaterial = new Material(); bhomMaterial.Properties.Add(gasMaterial); string materialName = gasMaterial.Name == "" ? gasMaterial.BHoM_Guid.ToString() : gasMaterial.Name; EPMaterialWindowGas eplusMaterial = new EPMaterialWindowGas(); eplusMaterial.Name = materialName; eplusMaterial.GasType = gasMaterial.Gas.ToEnergyPlus(); eplusMaterial.Thickness = thickness; return(eplusMaterial); }
public static bool UpdateMaterial(this TBD.material material, GasMaterial gasMaterial) { if (!string.IsNullOrWhiteSpace(gasMaterial.Name) && !gasMaterial.Name.Equals(material.name)) { material.name = gasMaterial.Name; } material.type = (int)TBD.MaterialTypes.tcdGasLayer; material.description = gasMaterial.Description; material.width = System.Convert.ToSingle(gasMaterial.GetValue <double>(MaterialParameter.DefaultThickness)); material.convectionCoefficient = System.Convert.ToSingle(gasMaterial.GetValue <double>(GasMaterialParameter.HeatTransferCoefficient)); material.vapourDiffusionFactor = System.Convert.ToSingle(gasMaterial.GetValue <double>(MaterialParameter.VapourDiffusionFactor)); return(true); }
public static Material GasMaterial(string name = "", double density = 0.0, double conductivity = 0.0, double specificHeat = 0.0, double vapourResistivity = 0.0, string description = "", Roughness roughness = Roughness.Undefined, double refraction = 0.0, double convectionCoefficient = 0.0, Gas gas = Gas.Undefined) { GasMaterial gasProperties = new GasMaterial { Name = name, Density = density, Conductivity = conductivity, SpecificHeat = specificHeat, VapourResistivity = vapourResistivity, Description = description, Roughness = roughness, Refraction = refraction, ConvectionCoefficient = convectionCoefficient, Gas = gas, }; return(BH.Engine.Physical.Create.Material(name, new List <IMaterialProperties> { gasProperties })); }
public static BHX.Gap ToGBXGap(this BHC.Layer layer) { if (layer == null || layer.Material == null) { return(null); } GasMaterial gasProperties = layer.FindMaterial <GasMaterial>(typeof(GasMaterial)); if (gasProperties == null) { return(null); } BHX.Gap gap = new BHX.Gap(); gap.ID = "gap-" + layer.Material.Name.Replace(" ", "-").Replace(",", "") + layer.Material.BHoM_Guid.ToString().Substring(0, 5); gap.Name = layer.Material.Name; gap.Thickness.Value = Math.Round(layer.Thickness, 4).ToString(); gap.Conductivity.Value = Math.Round(gasProperties.Conductivity, 3).ToString(); switch (gasProperties.Gas) { case Gas.Air: gap.Gas = "Air"; break; case Gas.Argon: gap.Gas = "Argon"; break; case Gas.Krypton: gap.Gas = "Krypton"; break; default: gap.Gas = "Custom"; break; } return(gap); }
public static EnergyWindowMaterialGas ToLadybugTools_EnergyWindowMaterialGas(this GasMaterial gasMaterial) { if (gasMaterial == null || string.IsNullOrEmpty(gasMaterial.Name)) { return(null); } GasType?gasType = gasMaterial.GasType(); if (gasType == null || !gasType.HasValue) { return(null); } return(new EnergyWindowMaterialGas( identifier: gasMaterial.Name, displayName: gasMaterial.DisplayName, userData: null, thickness: gasMaterial.GetValue <double>(MaterialParameter.DefaultThickness), gasType: gasType.Value)); }
public static Material ToSAM(this Autodesk.Revit.DB.Material material, ConvertSettings convertSettings) { if (material == null) { return(null); } Material result = convertSettings?.GetObject <Material>(material.Id); if (result != null) { return(result); } Document document = material.Document; double density = double.NaN; double thermalConductivity = double.NaN; ThermalMaterialType thermalMaterialType = ThermalMaterialType.Undefined; bool transmitsLight = false; ElementId elementId = material.ThermalAssetId; if (elementId != null && elementId != ElementId.InvalidElementId) { PropertySetElement propertySetElement = document.GetElement(elementId) as PropertySetElement; if (propertySetElement != null) { ThermalAsset thermalAsset = propertySetElement.GetThermalAsset(); if (thermalAsset != null) { density = thermalAsset.Density; thermalConductivity = thermalAsset.ThermalConductivity; thermalMaterialType = thermalAsset.ThermalMaterialType; transmitsLight = thermalAsset.TransmitsLight; } } } string description = material.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION)?.AsString(); if (thermalMaterialType != ThermalMaterialType.Undefined) { switch (thermalMaterialType) { case ThermalMaterialType.Gas: result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case ThermalMaterialType.Liquid: result = new LiquidMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case ThermalMaterialType.Solid: if (transmitsLight) { result = new TransparentMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else { result = new OpaqueMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } break; } } if (result == null) { string materialClass = material.MaterialClass?.Trim(); if (string.IsNullOrWhiteSpace(materialClass)) { switch (materialClass.ToLower()) { case "glass": result = new TransparentMaterial(material.Name, materialClass, material.Name, description, thermalConductivity, double.NaN, density); break; case "gas": result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case "ceramic": case "earth": case "brass": case "metal": case "wood": case "concrete": case "masonry": case "paint": case "paint/coating": case "plastic": case "stone": case "textile": result = new OpaqueMaterial(material.Name, materialClass, material.Name, description, thermalConductivity, double.NaN, density); break; case "liquid": result = new LiquidMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; } } } if (result == null) { int transparency = material.Transparency; if (transparency < 10) { result = new OpaqueMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else if (transparency < 100) { result = new TransparentMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else { result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, double.NaN, density, double.NaN); } } if (result != null) { convertSettings?.Add(material.Id, result); } return(result); }