示例#1
0
        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));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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
            }));
        }
示例#7
0
        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));
        }
示例#9
0
        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);
        }