Пример #1
0
 /// <summary>袖壁(無限長)を作成する</summary>
 /// <param name="windowWidth">窓幅[m]</param>
 /// <param name="windowHeight">窓高[m]</param>
 /// <param name="overhang">張り出し幅[m]</param>
 /// <param name="sideMargin">横側マージン[m]</param>
 /// <param name="incline">傾斜面</param>
 /// <returns>袖壁(無限長)</returns>
 public static SunShade MakeVerticalSunShade(double windowWidth, double windowHeight, double overhang,
     double sideMargin, ImmutableIncline incline)
 {
     SunShade ss = new SunShade();
     ss.windowWidth = windowWidth;
     ss.windowHeight = windowHeight;
     ss.overhang = overhang;
     ss.ssShape = Shape.LongVerticalBoth;
     ss.leftMargin = sideMargin;
     ss.rightMargin = sideMargin;
     ss.incline.Copy(incline);
     return ss;
 }
Пример #2
0
 /// <summary>水平庇(無限大長)を作成する</summary>
 /// <param name="windowWidth">窓幅[m]</param>
 /// <param name="windowHeight">窓高[m]</param>
 /// <param name="overhang">張り出し幅[m]</param>
 /// <param name="topMargin">上部マージン[m]</param>
 /// <param name="incline">傾斜面</param>
 /// <returns>水平庇(無限大長)</returns>
 public static SunShade MakeHorizontalSunShade(double windowWidth, double windowHeight, double overhang,
     double topMargin, ImmutableIncline incline)
 {
     SunShade ss = new SunShade();
     ss.ssShape = Shape.LongHorizontal;
     ss.windowWidth = windowWidth;
     ss.windowHeight = windowHeight;
     ss.overhang = overhang;
     ss.topMargin = topMargin;
     ss.incline.Copy(incline);
     return ss;
 }
Пример #3
0
 /// <summary>袖壁を作成する</summary>
 /// <param name="windowWidth">窓幅[m]</param>
 /// <param name="windowHeight">窓高[m]</param>
 /// <param name="overhang">張り出し幅[m]</param>
 /// <param name="sideMargin">横側マージン[m]</param>
 /// <param name="isLeftSide">左側か否か(右の場合はfalse)</param>
 /// <param name="topMargin">上部マージン[m]</param>
 /// <param name="bottomMargin">下部マージン[m]</param>
 /// <param name="incline">傾斜面</param>
 /// <returns>袖壁</returns>
 public static SunShade MakeVerticalSunShade(double windowWidth, double windowHeight, double overhang,
     double sideMargin, bool isLeftSide, double topMargin, double bottomMargin, ImmutableIncline incline)
 {
     SunShade ss = new SunShade();
     ss.windowWidth = windowWidth;
     ss.windowHeight = windowHeight;
     ss.overhang = overhang;
     if (isLeftSide)
     {
         ss.ssShape = Shape.VerticalLeft;
         ss.leftMargin = sideMargin;
     }
     else
     {
         ss.ssShape = Shape.VerticalRight;
         ss.rightMargin = sideMargin;
     }
     ss.topMargin = topMargin;
     ss.bottomMargin = bottomMargin;
     ss.incline.Copy(incline);
     return ss;
 }
Пример #4
0
        /// <summary>斜面に入射する放射量[W/m2]を計算する</summary>
        /// <param name="incline">斜面</param>
        /// <param name="albedo">アルベド[-]</param>
        /// <param name="shadingRate">日影率[-]</param>
        /// <returns>斜面に入射する放射量[W/m2]</returns>
        public double GetRadiationToIncline(ImmutableIncline incline, double albedo, double shadingRate)
        {
            //直達成分
            double dsRate = incline.GetDirectSolarRadiationRate(sun);
            //日影部分に関しては直達日射は0
            dsRate *= sun.DirectNormalRadiation * (1d - shadingRate);
            //拡散成分
            double dfRad = incline.ConfigurationFactorToSky * sun.DiffuseHorizontalRadiation;
            //地表面反射成分
            double alRad = (1 - incline.ConfigurationFactorToSky) * albedo * sun.GlobalHorizontalRadiation;

            return dsRate + dfRad + alRad;
        }
Пример #5
0
 /// <summary>ルーバーを作成する</summary>
 /// <param name="windowWidth">窓幅[m]</param>
 /// <param name="windowHeight">窓高[m]</param>
 /// <param name="overhang">張り出し幅[m]</param>
 /// <param name="leftMargin">左側マージン[m]</param>
 /// <param name="rightMargin">右側マージン[m]</param>
 /// <param name="topMargin">上部マージン[m]</param>
 /// <param name="bottomMargin">下部マージン[m]</param>
 /// <param name="incline">傾斜面</param>
 /// <returns>ルーバー</returns>
 public static SunShade MakeGridSunShade(double windowWidth, double windowHeight, double overhang,
     double leftMargin, double rightMargin, double topMargin, double bottomMargin, ImmutableIncline incline)
 {
     SunShade ss = new SunShade();
     ss.ssShape = Shape.Grid;
     ss.windowWidth = windowWidth;
     ss.windowHeight = windowHeight;
     ss.overhang = overhang;
     ss.leftMargin = leftMargin;
     ss.rightMargin = rightMargin;
     ss.topMargin = topMargin;
     ss.bottomMargin = bottomMargin;
     ss.incline.Copy(incline);
     return ss;
 }
Пример #6
0
 /// <summary>傾斜面情報をコピーする</summary>
 /// <param name="incline">傾斜面オブジェクト</param>
 public void Copy(ImmutableIncline incline)
 {
     Initialize(incline.HorizontalAngle, incline.VerticalAngle);
 }
Пример #7
0
 /// <summary>傾斜を設定する</summary>
 /// <param name="incline">傾斜面</param>
 /// <param name="isSide1">1側か否か</param>
 /// <remarks>裏面は自動で設定される</remarks>
 public void SetIncline(ImmutableIncline incline, bool isSide1)
 {
     if (isSide1)
     {
         incline1 = incline;
         Incline ic = new Incline(incline1);
         ic.Reverse();
         incline2 = ic;
     }
     else
     {
         incline2 = incline;
         Incline ic = new Incline(incline2);
         ic.Reverse();
         incline1 = ic;
     }
 }
Пример #8
0
 /// <summary>傾斜面の法線に対する太陽光線入射角の余弦cosθ[-]を計算する</summary>
 /// <param name="sun">太陽</param>
 /// <param name="incline">傾斜面</param>
 /// <returns>傾斜面に対する太陽光線入射角の余弦cosθ[-]</returns>
 public static double GetDirectSolarRadiationRateToIncline(ImmutableSun sun, ImmutableIncline incline)
 {
     return GetDirectSolarRadiationRateToIncline(incline.DirectionCosineZ, incline.DirectionCosineSN, incline.DirectionCosineWE,
         sun.Altitude, sun.Orientation);
 }
Пример #9
0
 /// <summary>初期化する</summary>
 /// <param name="glassPanes">ガラス層</param>
 /// <param name="incline">屋外側の傾斜面情報</param>
 /// <param name="sunShade">日除け</param>
 /// <param name="name">窓名称</param>
 private void initialize(ImmutableGlassPanes glassPanes, ImmutableIncline incline, ImmutableSunShade sunShade, string name)
 {
     this.glassPanes.Copy(glassPanes);
     FO = glassPanes.ThermalTransmittance /
             glassPanes.InsideFilmCoefficient;
     if(incline != null) this.incline.Copy(incline);
     if (sunShade != null)
     {
         SunShade ss = SunShade.EmptySunShade;
         ss.Copy(sunShade);
         this.sunShade = ss;
     }
     if(name != null) Name = name;
     hasChanged = true;
     makeSurface();
 }
Пример #10
0
 /// <summary>Constructor</summary>
 /// <param name="glassPanes">ガラス層</param>
 /// <param name="incline">屋外側の傾斜面情報</param>
 /// <param name="sunShade">日除け</param>
 /// <param name="name">窓名称</param>
 public Window(ImmutableGlassPanes glassPanes, ImmutableIncline incline, ImmutableSunShade sunShade, string name)
 {
     initialize(glassPanes, incline, sunShade, name);
 }
Пример #11
0
 /// <summary>Constructor</summary>
 /// <param name="glassPanes">ガラス層</param>
 /// <param name="incline">屋外側の傾斜面</param>
 public Window(ImmutableGlassPanes glassPanes, ImmutableIncline incline)
 {
     initialize(glassPanes, incline, null, null);
 }
Пример #12
0
        /// <summary>Constructor</summary>
        /// <param name="interiorGlassPane">glass pane of interior side</param>
        /// <param name="interiorAirGap">interior side air gap thickness[m]</param>
        /// <param name="exteriorGlassPane">glass pnae of exterior side</param>
        /// <param name="exteriorAirGap">exterior side air gap thickness[m]</param>
        /// <param name="windowWidth">width [m] of the air flow window</param>
        /// <param name="windowHeight">height [m] of the air flow window</param>
        /// <param name="outsideIncline"></param>
        public AirFlowWindow(GlassPanes.Pane interiorGlassPane, double interiorAirGap,
            GlassPanes.Pane exteriorGlassPane, double exteriorAirGap,double windowWidth, double windowHeight,
            ImmutableIncline outsideIncline)
        {
            //initialize temperatures.
            tVector.SetValue(25);

            this.interiorGlassPane = interiorGlassPane;
            this.exteriorGlassPane = exteriorGlassPane;
            this.ExteriorAirGap = exteriorAirGap;
            this.InteriorAirGap = interiorAirGap;
            this.WindowWidth = windowWidth;
            this.WindowHeight = windowHeight;

            SetBlind(0.75, 0.07);

            this.OutSideIncline = outsideIncline;
        }