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);
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); }
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); }
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); }
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); }
public static Dictionary <string, double[]> YearlyValues(this CoolingDesignData coolingDesignData, tsdZoneArray tSDZoneArray) { return(YearlyValues(coolingDesignData, new tsdZoneArray[] { tSDZoneArray })?[tSDZoneArray]); }
public static Dictionary <string, double[]> YearlyValues(this BuildingData buildingData, tsdZoneArray tSDZoneArray) { return(YearlyValues(buildingData, new tsdZoneArray[] { tSDZoneArray })?[tSDZoneArray]); }