示例#1
0
        public static List <T> AnnualZoneResult <T>(this ZoneData zoneData, tsdZoneArray tsdZoneArray)
        {
            if (zoneData == null)
            {
                return(null);
            }

            IEnumerable enumerable = zoneData.GetAnnualZoneResult((int)tsdZoneArray) as IEnumerable;

            if (enumerable == null)
            {
                return(null);
            }

            List <T> result = new List <T>();

            foreach (object @object in enumerable)
            {
                if (@object == null)
                {
                    result.Add(default);
示例#2
0
        public static Dictionary <string, Tuple <double, int> > ValueDictionary(this BuildingData buildingData, tsdZoneArray tsdZoneArray)
        {
            if (buildingData == null)
            {
                return(null);
            }

            List <ZoneData> zoneDatas = buildingData.ZoneDatas();

            if (zoneDatas == null || zoneDatas.Count == 0)
            {
                return(null);
            }

            object[,] values = buildingData.GetPeakZoneGains(new short[1] {
                (short)tsdZoneArray
            });

            Dictionary <string, Tuple <double, int> > dictionary = new Dictionary <string, Tuple <double, int> >();

            for (int i = 0; i < zoneDatas.Count; i++)
            {
                dictionary[zoneDatas[i].zoneGUID] = new Tuple <double, int> ((float)values[1, i], (int)values[2, i]);
            }

            return(dictionary);
        }
示例#3
0
        public static Dictionary <string, Tuple <double, int, CoolingDesignData> > MaxValueDictionary(this IEnumerable <CoolingDesignData> coolingDesignDatas, tsdZoneArray tsdZoneArray)
        {
            if (coolingDesignDatas == null)
            {
                return(null);
            }

            Dictionary <string, Tuple <double, int, CoolingDesignData> > result = new Dictionary <string, Tuple <double, int, CoolingDesignData> >();

            if (coolingDesignDatas.Count() == 0)
            {
                return(result);
            }

            CoolingDesignData coolingDesignData = coolingDesignDatas.ElementAt(0);

            if (coolingDesignData == null)
            {
                return(result);
            }


            List <ZoneData> zoneDatas = coolingDesignData.ZoneDatas();

            if (zoneDatas == null || zoneDatas.Count == 0)
            {
                return(result);
            }

            object[,] values = coolingDesignData.GetPeakZoneGains(new short[1] {
                (short)tsdZoneArray
            });

            for (int i = 0; i < zoneDatas.Count; i++)
            {
                string id    = zoneDatas[i].zoneGUID;
                double value = (float)values[1, i];
                int    index = (int)values[2, i];

                result[id] = new Tuple <double, int, CoolingDesignData>(value, index, coolingDesignData);
            }

            for (int i = 1; i < coolingDesignDatas.Count(); i++)
            {
                values = coolingDesignDatas.ElementAt(i).GetPeakZoneGains(new short[1] {
                    (short)tsdZoneArray
                });
                for (int j = 0; j < zoneDatas.Count; j++)
                {
                    string id    = zoneDatas[j].zoneGUID;
                    double value = (float)values[1, j];
                    int    index = (int)values[2, j];

                    if (!result.TryGetValue(id, out Tuple <double, int, CoolingDesignData> tuple))
                    {
                        result[id] = new Tuple <double, int, CoolingDesignData>(value, index, coolingDesignData);
                    }
                    else if (tuple.Item1 < value)
                    {
                        tuple      = new Tuple <double, int, CoolingDesignData>(value, index, coolingDesignDatas.ElementAt(i));
                        result[id] = tuple;
                    }
                }
            }

            return(result);
        }
示例#4
0
        public static bool TryGetMax(this BuildingData buildingData, IEnumerable <string> references, tsdZoneArray tSDZoneArray, out int index, out double max)
        {
            index = -1;
            max   = double.NaN;

            if (buildingData == null || references == null || references.Count() == 0)
            {
                return(false);
            }

            object @object = buildingData.GetPeakZoneGroupGains(new string[] { "Name:" + string.Join(":", references) }, new int[] { (int)tSDZoneArray });

            if (@object is object[, ])
            {
                object[,] table = (object[, ])@object;
                if (table.GetLength(0) == 3)
                {
                    index = System.Convert.ToInt32(table[2, 0]);
                    max   = System.Convert.ToDouble(table[1, 0]);
                    return(true);
                }
            }
            return(false);
        }
示例#5
0
        public static Dictionary <string, List <int> > UnmetHours(this BuildingData buildingData, tsdZoneArray tSDZoneArray, bool filterByExternalTemperature, bool workingHours, double temperatureLimit = 26, double margin = 0.5)
        {
            if (buildingData == null)
            {
                return(null);
            }

            Dictionary <tsdZoneArray, Dictionary <string, double[]> > yearlyValues = YearlyValues(buildingData, new tsdZoneArray[] { tSDZoneArray, tsdZoneArray.occupantSensibleGain });

            if (yearlyValues == null)
            {
                return(null);
            }

            Dictionary <string, List <int> > result = new Dictionary <string, List <int> >();

            foreach (KeyValuePair <string, double[]> keyValuePair in yearlyValues[tsdZoneArray.occupantSensibleGain])
            {
                for (int i = 0; i < keyValuePair.Value.Length; i++)
                {
                    if (workingHours && keyValuePair.Value[i] <= 0)
                    {
                        continue;
                    }

                    if (!workingHours && keyValuePair.Value[i] > 0)
                    {
                        continue;
                    }

                    double temperature = yearlyValues[tSDZoneArray][keyValuePair.Key][i];

                    if (temperature <= temperatureLimit + margin)
                    {
                        continue;
                    }

                    List <int> indexes = null;
                    if (!result.TryGetValue(keyValuePair.Key, out indexes))
                    {
                        indexes = new List <int>();
                        result[keyValuePair.Key] = indexes;
                    }
                    indexes.Add(i);
                }
            }

            if (filterByExternalTemperature)
            {
                foreach (KeyValuePair <string, List <int> > aKeyValuePair in result)
                {
                    List <int> indexes = new List <int>();
                    foreach (int aIndex in result[aKeyValuePair.Key])
                    {
                        float aTemperature = buildingData.GetHourlyBuildingResult(aIndex, (int)tsdBuildingArray.externalTemperature);
                        if (aTemperature < yearlyValues[tSDZoneArray][aKeyValuePair.Key][aIndex])
                        {
                            indexes.Add(aIndex);
                        }
                    }

                    result[aKeyValuePair.Key] = indexes;
                }
            }

            return(result);
        }
示例#6
0
 public static Dictionary <string, double[]> YearlyValues(this CoolingDesignData coolingDesignData, tsdZoneArray tSDZoneArray)
 {
     return(YearlyValues(coolingDesignData, new tsdZoneArray[] { tSDZoneArray })?[tSDZoneArray]);
 }
示例#7
0
 public static Dictionary <string, double[]> YearlyValues(this BuildingData buildingData, tsdZoneArray tSDZoneArray)
 {
     return(YearlyValues(buildingData, new tsdZoneArray[] { tSDZoneArray })?[tSDZoneArray]);
 }