/// <summary>ゾーン間換気量[m3/h]を取得する</summary>
        /// <param name="zone1">ゾーン1</param>
        /// <param name="zone2">ゾーン2</param>
        /// <returns>ゾーン間換気量[m3/h]</returns>
        public double GetAirExchangeVolume(ImmutableZone zone1, ImmutableZone zone2)
        {
            if (!zones.ContainsKey(zone1) || !zones.ContainsKey(zone2)) return 0;

            Dictionary<ImmutableZone, double> val = zones[zone1];
            if (val.ContainsKey(zone2)) return val[zone2];
            else return 0;
        }
        /// <summary>ゾーンへ流入する空気の状態と体積[m3/h]を取得する</summary>
        /// <param name="zone">ゾーン</param>
        /// <param name="airState">空気状態</param>
        /// <param name="volume">空気体積[m3/h]</param>
        public void GetExchangeAir(ImmutableZone zone, out ImmutableMoistAir airState, out double volume)
        {
            Dictionary<ImmutableZone, double> val = zones[zone];
            volume = 0;
            int cnt = val.Keys.Count;

            double[] dbt = new double[cnt];
            double[] ahd = new double[cnt];
            double[] vol = new double[cnt];
            int index = 0;
            foreach (ImmutableZone zn in val.Keys)
            {
                dbt[index] = zn.CurrentDrybulbTemperature;
                ahd[index] = zn.CurrentHumidityRatio;
                vol[index] = val[zn];
                volume += vol[index];
                index++;
            }

            //混合
            airState = MoistAir.BlendAir(dbt, ahd, vol);
        }
        /// <summary>ゾーン間換気量[m3/h]を設定する</summary>
        /// <param name="zone1">ゾーン1</param>
        /// <param name="zone2">ゾーン2</param>
        /// <param name="airExchangeVolume">ゾーン間換気量[m3/h]</param>
        /// <returns>設定成功の真偽</returns>
        public bool SetAirExchangeVolume(ImmutableZone zone1, ImmutableZone zone2, double airExchangeVolume)
        {
            if (!zones.ContainsKey(zone1) || !zones.ContainsKey(zone2)) return false;

            Dictionary<ImmutableZone, double> val = zones[zone1];
            if (airExchangeVolume <= 0) val.Remove(zone2);
            else val[zone2] = airExchangeVolume;

            val = zones[zone2];
            if (airExchangeVolume <= 0) val.Remove(zone1);
            else val[zone1] = airExchangeVolume;

            return true;
        }
 /// <summary>Constructor</summary>
 /// <param name="zones">ゾーン間換気を行うゾーンリスト</param>
 public InterZoneAirExchange(ImmutableZone[] zones)
 {
     //初期化
     for (int i = 0; i < zones.Length; i++) this.zones.Add(zones[i], new Dictionary<ImmutableZone, double>());
 }
Beispiel #5
0
 /// <summary>熱取得[W]の内、放射成分を取得する</summary>
 /// <param name="zone">発熱要素が属するゾーン</param>
 /// <returns>熱取得の放射成分[W]</returns>
 public double GetRadiativeHeatGain(ImmutableZone zone)
 {
     return RadiativeHeatGain;
 }
Beispiel #6
0
 /// <summary>潜熱負荷[W]を取得する</summary>
 /// <param name="zone">発熱要素が属するゾーン</param>
 /// <returns>潜熱負荷[W]</returns>
 public double GetLatentHeatGain(ImmutableZone zone)
 {
     return LatentHeatGain;
 }
Beispiel #7
0
 /// <summary>熱取得[W]の内、対流成分を取得する</summary>
 /// <param name="zone">発熱要素が属するゾーン</param>
 /// <returns>熱取得の対流成分[W]</returns>
 public double GetConvectiveHeatGain(ImmutableZone zone)
 {
     return ConvectiveHeatGain;
 }
Beispiel #8
0
 /// <summary>室間換気量[m3/h]を設定する</summary>
 /// <param name="upstreamZone">上流(空気が吹き出す側)の室</param>
 /// <param name="downstreamZone">下流(空気が吹き込む側)の室</param>
 /// <param name="airFlow">室間換気量[m3/h]</param>
 public void SetAirFlow(ImmutableZone upstreamZone, ImmutableZone downstreamZone, double airFlow)
 {
     Dictionary<ImmutableZone, double> af = this.airFlowToZone[downstreamZone];
     if (af.ContainsKey(upstreamZone))
     {
         if (airFlow == 0) af.Remove(upstreamZone);
         else af[upstreamZone] = airFlow;
     }
     else if (airFlow != 0) af.Add(upstreamZone, airFlow);
 }
Beispiel #9
0
 /// <summary>室間換気量[m3/h]を取得する</summary>
 /// <param name="upstreamZone">上流(空気が吹き出す側)の室</param>
 /// <param name="downstreamZone">下流(空気が吹き込む側)の室</param>
 /// <returns>室間換気量[m3/h]</returns>
 public double GetAirFlow(ImmutableZone upstreamZone, ImmutableZone downstreamZone)
 {
     Dictionary<ImmutableZone, double> af = this.airFlowToZone[downstreamZone];
     if (af.ContainsKey(upstreamZone)) return af[upstreamZone];
     else return 0;
 }