Пример #1
0
        public static global::OpenStudio.Model CreateModel(List <List <BHE.Panel> > panelsAsSpaces, global::OpenStudio.Model modelReference)
        {
            List <BHC.Construction> uniqueConstructions = panelsAsSpaces.UniqueConstructions();

            //Create a curtain wall construction
            BHC.Construction curtainWallConstruction = new BHC.Construction();
            curtainWallConstruction.Name = "Curtain Wall Construction Replacement";

            BHC.Layer curtainWallLayer = new BHC.Layer();
            curtainWallLayer.Thickness = 0.1;

            BHM.Material curtainWallMaterial = new BHM.Material();
            curtainWallMaterial.Name = "Curtain Wall Construction Replacement";

            BHEM.SolidMaterial curtainWallMaterialProperties = new BHEM.SolidMaterial();
            curtainWallMaterialProperties.Roughness                = BHEM.Roughness.VerySmooth;
            curtainWallMaterialProperties.SpecificHeat             = 101;
            curtainWallMaterialProperties.Conductivity             = 0.1;
            curtainWallMaterialProperties.EmissivityExternal       = 0.1;
            curtainWallMaterialProperties.SolarReflectanceExternal = 0.1;
            curtainWallMaterialProperties.LightReflectanceExternal = 0.1;
            curtainWallMaterialProperties.Density = 0.1;

            curtainWallMaterial.Properties.Add(curtainWallMaterialProperties);
            curtainWallLayer.Material = curtainWallMaterial;
            curtainWallConstruction.Layers.Add(curtainWallLayer);

            Dictionary <string, Construction> osmConstructions = new Dictionary <string, Construction>();

            foreach (BHC.Construction c in uniqueConstructions)
            {
                osmConstructions.Add(c.UniqueConstructionName(), c.ToOSM(modelReference));
            }

            osmConstructions.Add("CurtainWallReplacementConstruction", curtainWallConstruction.ToOSM(modelReference));

            foreach (List <BHE.Panel> space in panelsAsSpaces)
            {
                ThermalZone osmZone  = new ThermalZone(modelReference);
                Space       osmSpace = new Space(modelReference);
                osmSpace.setThermalZone(osmZone);

                foreach (BHE.Panel be in space)
                {
                    string conName = be.Construction.UniqueConstructionName();

                    //be.ToOSM(modelReference, osmSpace, (conName == "" ? null : osmConstructions[conName]));
                    Surface host = be.ToOSM(modelReference, osmSpace, osmConstructions, be.OutsideBoundaryCondition(be.AdjacentSpaces(panelsAsSpaces)));

                    foreach (BHE.Opening o in be.Openings)
                    {
                        conName = o.OpeningConstruction.UniqueConstructionName();

                        o.ToOSM(host, (conName == "" ? null : osmConstructions[conName]), modelReference);
                    }
                }
            }

            return(modelReference);
        }
Пример #2
0
        public static global::OpenStudio.OpaqueMaterial ToOSMOpaqueMaterial(this BHM.Material material, BHEM.Roughness roughness, double thickness, global::OpenStudio.Model modelReference)
        {
            BHEM.SolidMaterial matProp = material.Properties.Where(x => x.GetType() == typeof(BHEM.SolidMaterial)).FirstOrDefault() as BHEM.SolidMaterial;

            StandardOpaqueMaterial osmMaterial = new StandardOpaqueMaterial(modelReference);

            osmMaterial.setName(material.Name);
            osmMaterial.setRoughness(roughness.ToOSM());
            osmMaterial.setThickness(thickness);

            if (matProp != null)
            {
                osmMaterial.setConductivity(matProp.Conductivity);
                osmMaterial.setDensity(matProp.Density);
                osmMaterial.setSpecificHeat(matProp.SpecificHeat);
                osmMaterial.setThermalAbsorptance(1 - matProp.EmissivityExternal);       //ToDo Review for external and internal as appropriate at some point
                osmMaterial.setSolarAbsorptance(1 - matProp.SolarReflectanceExternal);   //ToDo Review for external and internal as appropriate at some point
                osmMaterial.setVisibleAbsorptance(1 - matProp.LightReflectanceExternal); //ToDo Review for external and internal as appropriate at some point
            }

            return(osmMaterial);
        }
Пример #3
0
        public static global::OpenStudio.StandardGlazing ToOSMGlazing(this BHM.Material material, double thickness, global::OpenStudio.Model modelReference)
        {
            BHEM.SolidMaterial matProp = material.Properties.Where(x => x.GetType() == typeof(BHEM.SolidMaterial)).FirstOrDefault() as BHEM.SolidMaterial;

            StandardGlazing glazing = new StandardGlazing(modelReference);

            //ToDo: Front and back side checks and inclusion when required - issue raised
            glazing.setName(material.Name);
            glazing.setOpticalDataType("SpectralAverage");
            glazing.setThickness(thickness);
            glazing.setSolarTransmittance(matProp.SolarTransmittance);
            glazing.setFrontSideSolarReflectanceatNormalIncidence(0);
            glazing.setBackSideSolarReflectanceatNormalIncidence(0);
            glazing.setVisibleTransmittance(matProp.LightTransmittance);
            glazing.setFrontSideVisibleReflectanceatNormalIncidence(0);
            glazing.setBackSideVisibleReflectanceatNormalIncidence(0);
            //ToDo: Figure out infrared transmittance if required
            glazing.setFrontSideInfraredHemisphericalEmissivity(0);
            glazing.setBackSideInfraredHemisphericalEmissivity(0);
            glazing.setConductivity(matProp.Conductivity);
            glazing.setSolarDiffusing(false);

            return(glazing);
        }