public static TBD.InternalCondition AddInternalCondition_HDD(this TBD.Building building, Space space, ProfileLibrary profileLibrary) { if (building == null || space == null || profileLibrary == null) { return(null); } TBD.InternalCondition internalCondition = building.AddIC(null); if (internalCondition == null) { return(null); } List <TBD.dayType> dayTypes = building.DayTypes(); if (dayTypes != null) { dayTypes.RemoveAll(x => !x.name.Equals("HDD")); foreach (TBD.dayType dayType in dayTypes) { internalCondition.SetDayType(dayType, true); } } UpdateInternalCondition_HDD(internalCondition, space, profileLibrary); return(internalCondition); }
/// <summary> /// Adds TAS Building zone group /// </summary> /// <param name="Building">TAS Building</param> /// <param name="Name">Name</param> /// <param name="Description">Description</param> /// <returns name="InternalCondition">Internal Condition</returns> /// <search> /// TAS, Building, Internal Condition, Add Internal Condition, tas, builidng, internal condition, add internal condition /// </search> public static InternalCondition AddInternalCondition(Building Building, string Name, string Description) { TBD.InternalCondition aInternalCondition = Building.pBuilding.AddIC(null); aInternalCondition.name = Name; aInternalCondition.description = Description; return(new InternalCondition(aInternalCondition)); }
/// <summary> /// Gets TAS Zone Internal Conditions /// </summary> /// <param name="Zone">TAS Zone</param> /// <returns name="InternalConditions">Internal Condition List</returns> /// <search> /// TAS, Zone, InternalConditions, Internal Conditions, internalconditions, internal conditions /// </search> public static List <InternalCondition> InternalConditions(Zone Zone) { List <InternalCondition> aInternalConditionList = new List <InternalCondition>(); int aIndex = 0; TBD.InternalCondition aInternalCondition = Zone.pZone.GetIC(aIndex); while (aInternalCondition != null) { aInternalConditionList.Add(new InternalCondition(aInternalCondition)); aIndex++; aInternalCondition = Zone.pZone.GetIC(aIndex); } return(aInternalConditionList); }
/// <summary> /// Gets TAS Building Internal Conditions /// </summary> /// <param name="Building">TAS Building</param> /// <returns name="InternalConditions">Building Internal Conditions</returns> /// <search> /// TAS, Building, Zones, Get Internal Conditions, tas, builidng, zones, get internalcondition, InternalCondition, internalcondition /// </search> public static List <InternalCondition> InternalConditions(Building Building) { List <InternalCondition> aZoneList = new List <InternalCondition>(); int aIndex = 0; TBD.InternalCondition aInternalCondition = Building.pBuilding.GetIC(aIndex); while (aInternalCondition != null) { aZoneList.Add(new InternalCondition(aInternalCondition)); aIndex++; aInternalCondition = Building.pBuilding.GetIC(aIndex); } return(aZoneList); }
public static TBD.zone UpdateZone_HDD(this TBD.Building building, TBD.zone zone, Space space, ProfileLibrary profileLibrary) { if (space == null || profileLibrary == null || zone == null || building == null) { return(null); } TBD.InternalCondition internalCondition_TBD = AddInternalCondition_HDD(building, space, profileLibrary); if (internalCondition_TBD == null) { return(null); } zone.AssignIC(internalCondition_TBD, true); return(zone); }
public static List <TBD.zone> Zones(this TBD.InternalCondition internalCondition) { if (internalCondition == null) { return(null); } List <TBD.zone> result = new List <TBD.zone>(); TBD.zone zone = internalCondition.GetZone(result.Count); while (zone != null) { result.Add(zone); zone = internalCondition.GetZone(result.Count); } return(result); }
public static List <TBD.dayType> DayTypes(this TBD.InternalCondition internalCondition) { if (internalCondition == null) { return(null); } List <TBD.dayType> result = new List <TBD.dayType>(); TBD.dayType dayType = internalCondition.GetDayType(result.Count); while (dayType != null) { result.Add(dayType); dayType = internalCondition.GetDayType(result.Count); } return(result); }
private static bool HasDayType(TBD.InternalCondition internalCondition, TBD.dayType dayType) { int aIndex = 0; TBD.dayType aDayType = internalCondition.GetDayType(aIndex); while (aDayType != null) { if (aDayType.name == dayType.name) { return(true); } aIndex++; aDayType = internalCondition.GetDayType(aIndex); } return(false); }
public static bool UpdateInternalCondition_HDD(this TBD.InternalCondition internalCondition_TBD, Space space, ProfileLibrary profileLibrary) { if (internalCondition_TBD == null || space == null) { return(false); } InternalCondition internalCondition = space.InternalCondition; if (internalCondition == null) { return(false); } internalCondition_TBD.name = space.Name + " - HDD"; return(UpdateInternalCondition_HDD(internalCondition_TBD, internalCondition, profileLibrary)); }
public static List <bool> RemoveInternalConditions(this TBD.Building building, IEnumerable <string> names) { if (building == null || names == null) { return(null); } HashSet <string> hashSet = new HashSet <string>(); foreach (string name in names) { hashSet.Add(name); } List <int> indexes = new List <int>(); List <bool> result = new List <bool>(); int index = 0; TBD.InternalCondition internalCondition = building.GetIC(index); while (internalCondition != null) { string name = internalCondition.name; bool contains = hashSet.Contains(name); result.Add(contains); if (contains) { indexes.Add(index); } index++; internalCondition = building.GetIC(index); } for (int i = indexes.Count - 1; i >= 0; i--) { building.RemoveIC(indexes[i]); } return(result); }
public static TBD.zone UpdateZone(this TBD.Building building, TBD.zone zone, Space space, ProfileLibrary profileLibrary) { if (space == null || profileLibrary == null || building == null || zone == null) { return(null); } TBD.InternalCondition internalCondition_TBD = AddInternalCondition(building, space, profileLibrary); if (internalCondition_TBD == null) { return(null); } zone.AssignIC(internalCondition_TBD, true); List <string> values = new List <string>(); //TODO: Update [Id] to [Element Id] if (space.TryGetValue("Element Id", out string id)) { if (!string.IsNullOrWhiteSpace(id)) { values.Add(string.Format("[Id]={0}", id)); } } //TODO: Update [LevelName] to [Level Name] if (space.TryGetValue(SpaceParameter.LevelName, out string levelName)) { if (!string.IsNullOrWhiteSpace(levelName)) { values.Add(string.Format("[LevelName]={0}", levelName)); } } if (values != null && values.Count > 0) { zone.description = string.Join("; ", values); } return(zone); }
public static List <TBD.InternalCondition> InternalConditions(this TBD.zone zone) { if (zone == null) { return(null); } List <TBD.InternalCondition> result = new List <TBD.InternalCondition>(); int count = 0; TBD.InternalCondition internalCondition = zone.GetIC(count); while (internalCondition != null) { result.Add(internalCondition); count++; internalCondition = zone.GetIC(count); } return(result); }
public static List <TBD.InternalCondition> InternalConditions(this TBD.Building building) { if (building == null) { return(null); } List <TBD.InternalCondition> result = new List <TBD.InternalCondition>(); int count = 0; TBD.InternalCondition internalCondition = building.GetIC(count); while (internalCondition != null) { result.Add(internalCondition); count++; internalCondition = building.GetIC(count); } return(result); }
public static TBD.InternalCondition InternalCondition(this TBD.zone zone, TBD.dayType dayType) { if (zone == null) { return(null); } int index = 0; TBD.InternalCondition internalCondition = zone.GetIC(index); while (internalCondition != null) { if (HasDayType(internalCondition, dayType)) { return(internalCondition); } index++; internalCondition = zone.GetIC(index); } return(null); }
private static TBD.InternalCondition GetInternalCondition(TBD.zone zone, TBD.dayType dayType) { if (zone == null) { return(null); } int aIndex = 0; TBD.InternalCondition aInternalCondition = zone.GetIC(aIndex); while (aInternalCondition != null) { if (HasDayType(aInternalCondition, dayType)) { return(aInternalCondition); } aIndex++; aInternalCondition = zone.GetIC(aIndex); } return(null);; }
internal InternalCondition(TBD.InternalCondition InternalCondition) { pInternalCondition = InternalCondition; }
public static bool UpdateInternalCondition_HDD(this TBD.InternalCondition internalCondition_TBD, InternalCondition internalCondition, ProfileLibrary profileLibrary) { if (internalCondition_TBD == null || internalCondition == null) { return(false); } internalCondition_TBD.description = internalCondition.Name + " - HDD"; internalCondition_TBD.includeSolarInMRT = 0; TBD.Emitter emitter = null; double value = double.NaN; emitter = internalCondition_TBD.GetHeatingEmitter(); if (emitter != null) { if (internalCondition.TryGetValue(InternalConditionParameter.HeatingEmitterRadiantProportion, out value)) { emitter.radiantProportion = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.HeatingEmitterCoefficient, out value)) { emitter.viewCoefficient = System.Convert.ToSingle(value); } } emitter = internalCondition_TBD.GetCoolingEmitter(); if (emitter != null) { if (internalCondition.TryGetValue(InternalConditionParameter.CoolingEmitterRadiantProportion, out value)) { emitter.radiantProportion = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.CoolingEmitterCoefficient, out value)) { emitter.viewCoefficient = System.Convert.ToSingle(value); } } TBD.InternalGain internalGain = internalCondition_TBD.GetInternalGain(); internalGain.name = internalCondition.Name + " - HDD"; Profile profile = null; profile = internalCondition.GetProfile(ProfileType.Infiltration, profileLibrary); if (profile != null) { if (internalCondition.TryGetValue(InternalConditionParameter.InfiltrationAirChangesPerHour, out value)) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticI); if (profile_TBD != null) { profile_TBD.name = profile.Name; profile_TBD.type = TBD.ProfileTypes.ticValueProfile; profile_TBD.factor = 1; profile_TBD.value = System.Convert.ToSingle(value); } } } TBD.Thermostat thermostat = internalCondition_TBD.GetThermostat(); if (thermostat != null) { thermostat.controlRange = 0; thermostat.proportionalControl = 0; profile = internalCondition.GetProfile(ProfileType.Heating, profileLibrary); if (profile != null) { thermostat.name = profile.Name; TBD.profile profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticLL); if (profile_TBD != null) { value = profile.MaxValue; if (!double.IsNaN(value)) { profile_TBD.name = profile.Name; profile_TBD.type = TBD.ProfileTypes.ticValueProfile; profile_TBD.factor = 1; profile_TBD.value = System.Convert.ToSingle(value); } } } } return(true); }
public static List <Profile> ToSAM_Profiles(this TBD.InternalCondition internalCondition) { if (internalCondition == null) { return(null); } List <Profile> result = new List <Profile>(); TBD.InternalGain internalGain = internalCondition.GetInternalGain(); if (internalGain != null) { Profile profile = null; profile = ToSAM(internalGain, TBD.Profiles.ticI, ProfileType.Infiltration, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticLG, ProfileType.Lighting, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticOLG, ProfileType.Occupancy, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticOSG, ProfileType.Occupancy, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticESG, ProfileType.EquipmentSensible, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticELG, ProfileType.EquipmentLatent, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(internalGain, TBD.Profiles.ticCOG, ProfileType.Pollutant, internalCondition.name); if (profile != null) { result.Add(profile); } } TBD.Thermostat thermostat = internalCondition.GetThermostat(); if (thermostat != null) { Profile profile = null; profile = ToSAM(thermostat, TBD.Profiles.ticUL, ProfileType.Cooling, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(thermostat, TBD.Profiles.ticLL, ProfileType.Heating, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(thermostat, TBD.Profiles.ticHLL, ProfileType.Humidification, internalCondition.name); if (profile != null) { result.Add(profile); } profile = ToSAM(thermostat, TBD.Profiles.ticHUL, ProfileType.Dehumidification, internalCondition.name); if (profile != null) { result.Add(profile); } } return(result); }
public static bool UpdateInternalCondition(this TBD.InternalCondition internalCondition_TBD, Space space, ProfileLibrary profileLibrary) { if (space == null || internalCondition_TBD == null) { return(false); } InternalCondition internalCondition = space.InternalCondition; if (internalCondition == null) { return(false); } internalCondition_TBD.name = space.Name; internalCondition_TBD.description = internalCondition.Name; internalCondition_TBD.includeSolarInMRT = 1; TBD.Emitter emitter = null; double value = double.NaN; emitter = internalCondition_TBD.GetHeatingEmitter(); if (emitter != null) { emitter.name = internalCondition.GetSystemTypeName <HeatingSystemType>(); if (internalCondition.TryGetValue(InternalConditionParameter.HeatingEmitterRadiantProportion, out value)) { emitter.radiantProportion = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.HeatingEmitterCoefficient, out value)) { emitter.viewCoefficient = System.Convert.ToSingle(value); } } emitter = internalCondition_TBD.GetCoolingEmitter(); if (emitter != null) { emitter.name = internalCondition.GetSystemTypeName <CoolingSystemType>(); if (internalCondition.TryGetValue(InternalConditionParameter.CoolingEmitterRadiantProportion, out value)) { emitter.radiantProportion = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.CoolingEmitterCoefficient, out value)) { emitter.viewCoefficient = System.Convert.ToSingle(value); } } TBD.InternalGain internalGain = internalCondition_TBD.GetInternalGain(); if (internalCondition.TryGetValue(InternalConditionParameter.LightingRadiantProportion, out value)) { internalGain.lightingRadProp = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.OccupancyRadiantProportion, out value)) { internalGain.occupantRadProp = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.EquipmentRadiantProportion, out value)) { internalGain.equipmentRadProp = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.LightingViewCoefficient, out value)) { internalGain.lightingViewCoefficient = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.OccupancyViewCoefficient, out value)) { internalGain.occupantViewCoefficient = System.Convert.ToSingle(value); } if (internalCondition.TryGetValue(InternalConditionParameter.EquipmentViewCoefficient, out value)) { internalGain.equipmentViewCoefficient = System.Convert.ToSingle(value); } internalGain.domesticHotWater = (float)0.197; internalGain.name = internalCondition.Name; internalGain.description = internalCondition.GetSystemTypeName <VentilationSystemType>(); if (internalCondition.TryGetValue(InternalConditionParameter.LightingLevel, out value)) { internalGain.targetIlluminance = System.Convert.ToSingle(value); } internalGain.personGain = 0; double occupancyGainPerPerson = Analytical.Query.OccupancyGainPerPerson(space); if (!double.IsNaN(occupancyGainPerPerson)) { internalGain.personGain = System.Convert.ToSingle(occupancyGainPerPerson); } Profile profile = null; profile = internalCondition.GetProfile(ProfileType.Infiltration, profileLibrary); if (profile != null) { if (internalCondition.TryGetValue(InternalConditionParameter.InfiltrationAirChangesPerHour, out value)) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticI); if (profile_TBD != null) { Update(profile_TBD, profile, value); } } } double area = double.NaN; if (!space.TryGetValue(SpaceParameter.Area, out area)) { area = double.NaN; } profile = internalCondition.GetProfile(ProfileType.Lighting, profileLibrary); if (profile != null) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticLG); if (profile_TBD != null) { double gain = Analytical.Query.CalculatedLightingGain(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(gain)) { gain = 0; } else { gain = gain / area; } Update(profile_TBD, profile, gain); } } profile = internalCondition.GetProfile(ProfileType.Occupancy, profileLibrary); if (profile != null) { TBD.profile profile_TBD = null; profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticOLG); if (profile_TBD != null) { double gain = Analytical.Query.OccupancyLatentGain(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(gain)) { gain = 0; } else { gain = gain / area; } Update(profile_TBD, profile, gain); } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticOSG); if (profile_TBD != null) { double gain = Analytical.Query.OccupancySensibleGain(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(gain)) { gain = 0; } else { gain = gain / area; } Update(profile_TBD, profile, gain); } } profile = internalCondition.GetProfile(ProfileType.EquipmentSensible, profileLibrary); if (profile != null) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticESG); if (profile_TBD != null) { double gain = Analytical.Query.CalculatedEquipmentSensibleGain(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(gain)) { gain = 0; } else { gain = gain / area; } Update(profile_TBD, profile, gain); } } profile = internalCondition.GetProfile(ProfileType.EquipmentLatent, profileLibrary); if (profile != null) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticELG); if (profile_TBD != null) { double gain = Analytical.Query.CalculatedEquipmentLatentGain(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(gain)) { gain = 0; } else { gain = gain / area; } Update(profile_TBD, profile, gain); } } profile = internalCondition.GetProfile(ProfileType.Pollutant, profileLibrary); if (profile != null) { TBD.profile profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticCOG); if (profile_TBD != null) { double generation = Analytical.Query.CalculatedPollutantGeneration(space); if (double.IsNaN(area) || area == 0 || double.IsNaN(generation)) { generation = 0; } else { generation = generation / area; } Update(profile_TBD, profile, generation); } } TBD.Thermostat thermostat = internalCondition_TBD.GetThermostat(); if (thermostat != null) { List <string> names = new List <string>(); thermostat.controlRange = 0; thermostat.proportionalControl = 0; profile = internalCondition.GetProfile(ProfileType.Cooling, profileLibrary); if (profile != null) { names.Add(profile.Name); TBD.profile profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticUL); if (profile_TBD != null) { Update(profile_TBD, profile, 1); } } profile = internalCondition.GetProfile(ProfileType.Heating, profileLibrary); if (profile != null) { names.Add(profile.Name); TBD.profile profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticLL); if (profile_TBD != null) { Update(profile_TBD, profile, 1); } } profile = internalCondition.GetProfile(ProfileType.Humidification, profileLibrary); if (profile != null) { names.Add(profile.Name); TBD.profile profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticHLL); if (profile_TBD != null) { Update(profile_TBD, profile, 1); } } profile = internalCondition.GetProfile(ProfileType.Dehumidification, profileLibrary); if (profile != null) { names.Add(profile.Name); TBD.profile profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticHUL); if (profile_TBD != null) { Update(profile_TBD, profile, 1); } } names.RemoveAll(x => string.IsNullOrWhiteSpace(x)); if (names.Count != 0) { thermostat.name = string.Join(" & ", names); } } return(true); }
public static InternalCondition ToSAM(this TBD.InternalCondition internalCondition, double area = double.NaN) { if (internalCondition == null) { return(null); } InternalCondition result = new InternalCondition(internalCondition.name); TBD.Emitter emitter = null; emitter = internalCondition.GetHeatingEmitter(); if (emitter != null) { result.SetValue(InternalConditionParameter.HeatingEmitterRadiantProportion, emitter.radiantProportion); result.SetValue(InternalConditionParameter.HeatingEmitterCoefficient, emitter.viewCoefficient); } emitter = internalCondition.GetCoolingEmitter(); if (emitter != null) { result.SetValue(InternalConditionParameter.CoolingEmitterRadiantProportion, emitter.radiantProportion); result.SetValue(InternalConditionParameter.CoolingEmitterCoefficient, emitter.viewCoefficient); } TBD.InternalGain internalGain = internalCondition.GetInternalGain(); if (internalGain != null) { result.SetValue(InternalConditionParameter.LightingRadiantProportion, internalGain.lightingRadProp); result.SetValue(InternalConditionParameter.OccupancyRadiantProportion, internalGain.occupantRadProp); result.SetValue(InternalConditionParameter.EquipmentRadiantProportion, internalGain.equipmentRadProp); result.SetValue(InternalConditionParameter.LightingViewCoefficient, internalGain.lightingViewCoefficient); result.SetValue(InternalConditionParameter.OccupancyViewCoefficient, internalGain.occupantViewCoefficient); result.SetValue(InternalConditionParameter.EquipmentViewCoefficient, internalGain.equipmentViewCoefficient); TBD.profile profile_TBD = null; profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticI); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.InfiltrationProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.InfiltrationAirChangesPerHour, profile_TBD.GetExtremeValue(true)); } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticLG); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.LightingProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.LightingGainPerArea, profile_TBD.GetExtremeValue(true)); result.SetValue(InternalConditionParameter.LightingLevel, internalGain.targetIlluminance); } double personGain = internalGain.personGain; double gain = 0; profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticOSG); if (profile_TBD != null) { double value = profile_TBD.GetExtremeValue(true); result.SetValue(InternalConditionParameter.OccupancySensibleGainPerPerson, value); gain += value; } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticOLG); if (profile_TBD != null) { double value = profile_TBD.GetExtremeValue(true); result.SetValue(InternalConditionParameter.OccupancyProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.OccupancyLatentGainPerPerson, value); gain += value; } if (!double.IsNaN(area) && !double.IsNaN(gain)) { double occupancy = (gain * area) / personGain; result.SetValue(InternalConditionParameter.AreaPerPerson, area / occupancy); } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticESG); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.EquipmentSensibleProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.EquipmentSensibleGainPerArea, profile_TBD.GetExtremeValue(true)); } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticELG); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.EquipmentLatentProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.EquipmentLatentGainPerArea, profile_TBD.GetExtremeValue(true)); } profile_TBD = internalGain.GetProfile((int)TBD.Profiles.ticCOG); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.PollutantProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); result.SetValue(InternalConditionParameter.PollutantGenerationPerArea, profile_TBD.GetExtremeValue(true)); } } TBD.Thermostat thermostat = internalCondition.GetThermostat(); if (internalGain != null) { TBD.profile profile_TBD = null; profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticUL); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.CoolingProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); } profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticLL); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.HeatingProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); } profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticHLL); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.HumidificationProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); } profile_TBD = thermostat.GetProfile((int)TBD.Profiles.ticHUL); if (profile_TBD != null) { result.SetValue(InternalConditionParameter.DehumidificationProfileName, string.Format("{0} [{1}]", internalCondition.name, profile_TBD.name)); } } return(result); }
public static Dictionary <TBD.Profiles, Dictionary <string, double[]> > TemperatureSetPointDictionary(this TBD.Building building, params TBD.Profiles[] profiles) { List <TBD.zone> zones = building?.Zones(); if (zones == null) { return(null); } List <TBD.dayType> dayTypes = building.DayTypes(); if (dayTypes == null) { return(null); } Dictionary <TBD.Profiles, Dictionary <string, Dictionary <string, double[]> > > dictionary_DayType = new Dictionary <TBD.Profiles, Dictionary <string, Dictionary <string, double[]> > >(); foreach (TBD.Profiles profiles_Enum in profiles) { dictionary_DayType[profiles_Enum] = new Dictionary <string, Dictionary <string, double[]> >(); foreach (TBD.dayType dayType in dayTypes) { Dictionary <string, double[]> dictionary_Zone = new Dictionary <string, double[]>(); dictionary_DayType[profiles_Enum][dayType.name] = dictionary_Zone; foreach (TBD.zone zone in zones) { TBD.InternalCondition internalCondition = InternalCondition(zone, dayType); if (internalCondition == null) { continue; } TBD.Thermostat thermostat = internalCondition.GetThermostat(); TBD.profile profile = thermostat.GetProfile((int)profiles_Enum); double[] dailyValues = DailyValues(profile); dictionary_Zone.Add(zone.GUID, dailyValues); } } } dayTypes = building.DayTypes(0, 365); Dictionary <TBD.Profiles, Dictionary <string, double[]> > result = new Dictionary <TBD.Profiles, Dictionary <string, double[]> >(); foreach (KeyValuePair <TBD.Profiles, Dictionary <string, Dictionary <string, double[]> > > keyValuePair in dictionary_DayType) { Dictionary <string, double[]> dictionary_Zone = new Dictionary <string, double[]>(); foreach (TBD.zone zone in zones) { bool exists = true; double[] yearlyValues = new double[8760]; int aCount = 0; for (int i = 0; i < 365; i++) { TBD.dayType dayType = dayTypes[i]; if (!keyValuePair.Value.ContainsKey(dayType.name) || !keyValuePair.Value[dayType.name].ContainsKey(zone.GUID)) { exists = false; break; } double[] dailyValues = keyValuePair.Value[dayType.name][zone.GUID]; for (int j = 0; j < 24; j++) { yearlyValues[aCount] = dailyValues[j]; aCount++; } } if (exists) { dictionary_Zone.Add(zone.GUID, yearlyValues); } } result[keyValuePair.Key] = dictionary_Zone; } return(result); }
public static double[] GetNumberOfPeople(TBD.TBDDocument tbdDocument, TBD.zone tbdZone) { if (tbdDocument == null) { return(null); } TBD.dayType[] aDayTypeArray = GetDayTypeArray(tbdDocument); List <TBD.dayType> aDayTypeList_Unique = GetUnique(aDayTypeArray); double[] aHourlyValues = null; double[] aHourlyValuesLatent = null; double aTotalPersonGain = 0; Dictionary <string, double[]> aDictionary_DayType = new Dictionary <string, double[]>(); Dictionary <string, double[]> aDictionary_DayTypeLatent = new Dictionary <string, double[]>(); foreach (TBD.dayType aDayType in aDayTypeList_Unique) { TBD.InternalCondition aInternalCondition = GetInternalCondition(tbdZone, aDayType); if (aInternalCondition == null) { continue; } TBD.IInternalGain aInternalGain = aInternalCondition.GetInternalGain(); aTotalPersonGain = aInternalGain.personGain; TBD.profile aProfile = aInternalGain.GetProfile((int)TBD.Profiles.ticOSG); TBD.profile aProfileLatent = aInternalGain.GetProfile((int)TBD.Profiles.ticOLG); //check if profile hourly or yearly if yearly take it and skip next step aHourlyValues = GetHourlyValues(aProfile); aHourlyValuesLatent = GetHourlyValues(aProfileLatent); //double[] result = x.Select(r => r * factor).ToArray(); aHourlyValues = MultiplyByFactor(aHourlyValues, aProfile.factor); aHourlyValuesLatent = MultiplyByFactor(aHourlyValuesLatent, aProfile.factor); aDictionary_DayType.Add(aDayType.name, aHourlyValues); aDictionary_DayTypeLatent.Add(aDayType.name, aHourlyValuesLatent); } double[] aYearlyValues = new double[8760]; int aCount = 0; for (int i = 0; i < 365; i++) { TBD.dayType aDayType = aDayTypeArray[i]; if (!aDictionary_DayType.ContainsKey(aDayType.name)) { break; } aHourlyValues = aDictionary_DayType[aDayType.name]; for (int j = 0; j < 24; j++) { aYearlyValues[aCount] = aHourlyValues[j]; aCount++; } } double[] aYearlyValuesLatent = new double[8760]; aCount = 0; for (int i = 0; i < 365; i++) { TBD.dayType aDayType = aDayTypeArray[i]; if (!aDictionary_DayType.ContainsKey(aDayType.name)) { break; } aHourlyValuesLatent = aDictionary_DayTypeLatent[aDayType.name]; for (int j = 0; j < 24; j++) { aYearlyValuesLatent[aCount] = aHourlyValuesLatent[j]; aCount++; } } double[] aNumberOfPeople = new double[7]; double aMaxSpecificSensibleGain = aYearlyValues.Max();//Unit W/m2 sensible gain aNumberOfPeople[0] = aMaxSpecificSensibleGain; double aMaxSpecificLatentGain = aYearlyValuesLatent.Max();//Unit W/m2 latent gain aNumberOfPeople[1] = aMaxSpecificLatentGain; double aPeopleDesity = (aMaxSpecificLatentGain + aMaxSpecificSensibleGain) / aTotalPersonGain; //Unit people/m2 aNumberOfPeople[2] = aPeopleDesity; double aPeople = tbdZone.floorArea * aPeopleDesity; aNumberOfPeople[3] = aPeople; double aPersonSensibleGain = aMaxSpecificSensibleGain / aPeopleDesity; //sensible gain per person aNumberOfPeople[4] = aPersonSensibleGain; double aPersonLatenteGain = aMaxSpecificLatentGain / aPeopleDesity; //sensible gain per person aNumberOfPeople[5] = aPersonLatenteGain; double aMetabolicRateCheck = aPersonSensibleGain + aPersonLatenteGain; aNumberOfPeople[6] = aMetabolicRateCheck; return(aYearlyValues); }